<?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>224820</bug_id>
          
          <creation_ts>2021-04-20 10:07:18 -0700</creation_ts>
          <short_desc>Rename WebCore::SelectionRect to WebCore::SelectionGeometry</short_desc>
          <delta_ts>2021-04-23 01:59:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</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>1752315</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 10:07:18 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752325</commentid>
    <comment_count>1</comment_count>
      <attachid>426567</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 10:32:37 -0700</bug_when>
    <thetext>Created attachment 426567
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752355</commentid>
    <comment_count>2</comment_count>
      <attachid>426567</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 11:35:53 -0700</bug_when>
    <thetext>Comment on attachment 426567
For EWS

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

&gt; Source/WebCore/platform/ios/SelectionGeometry.cpp:88
&gt; +SelectionGeometry::SelectionGeometry()
&gt; +    : m_direction(TextDirection::LTR)
&gt; +    , m_minX(0)
&gt; +    , m_maxX(0)
&gt; +    , m_maxY(0)
&gt; +    , m_lineNumber(0)
&gt; +    , m_isLineBreak(false)
&gt; +    , m_isFirstOnLine(false)
&gt; +    , m_isLastOnLine(false)
&gt; +    , m_containsStart(false)
&gt; +    , m_containsEnd(false)
&gt; +    , m_isHorizontal(true)
&gt; +    , m_isInFixedPosition(false)
&gt; +    , m_isRubyText(false)
&gt; +    , m_pageNumber(0)
&gt; +{
&gt; +}

Apparently this was just moved code, but I suggest we initialize all of these in the class definition instead, and just have the default constructor be &quot;= default&quot; or something like that.

Relying on this should cut down the length of at least one of the other constructors, too, and make it harder to accidentally leave anything uninitialized.

&gt; Source/WebCore/platform/ios/SelectionGeometry.h:98
&gt; +    void setLogicalLeft(int left)
&gt; +    {
&gt; +        if (m_isHorizontal)
&gt; +            m_rect.setX(left);
&gt; +        else
&gt; +            m_rect.setY(left);
&gt; +    }
&gt; +
&gt; +    void setLogicalWidth(int width)
&gt; +    {
&gt; +        if (m_isHorizontal)
&gt; +            m_rect.setWidth(width);
&gt; +        else
&gt; +            m_rect.setHeight(width);
&gt; +    }
&gt; +
&gt; +    void setLogicalTop(int top)
&gt; +    {
&gt; +        if (m_isHorizontal)
&gt; +            m_rect.setY(top);
&gt; +        else
&gt; +            m_rect.setX(top);
&gt; +    }
&gt; +
&gt; +    void setLogicalHeight(int height)
&gt; +    {
&gt; +        if (m_isHorizontal)
&gt; +            m_rect.setHeight(height);
&gt; +        else
&gt; +            m_rect.setWidth(height);
&gt; +    }

Also not new: I suggest moving these inline function bodies out of the class definition, to make it easier to read it and get an overview.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752371</commentid>
    <comment_count>3</comment_count>
      <attachid>426567</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 12:14:53 -0700</bug_when>
    <thetext>Comment on attachment 426567
For EWS

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

&gt;&gt; Source/WebCore/platform/ios/SelectionGeometry.cpp:88
&gt;&gt; +}
&gt; 
&gt; Apparently this was just moved code, but I suggest we initialize all of these in the class definition instead, and just have the default constructor be &quot;= default&quot; or something like that.
&gt; 
&gt; Relying on this should cut down the length of at least one of the other constructors, too, and make it harder to accidentally leave anything uninitialized.

Ah, so my next patch coming up does exactly this; I&apos;ll move that change into part of this patch instead.

&gt;&gt; Source/WebCore/platform/ios/SelectionGeometry.h:98
&gt;&gt; +    }
&gt; 
&gt; Also not new: I suggest moving these inline function bodies out of the class definition, to make it easier to read it and get an overview.

Sounds good! Will move these implementations into the cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752390</commentid>
    <comment_count>4</comment_count>
      <attachid>426583</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 13:02:03 -0700</bug_when>
    <thetext>Created attachment 426583
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752518</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-20 17:04:03 -0700</bug_when>
    <thetext>Committed r276331 (236811@main): &lt;https://commits.webkit.org/236811@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426583.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753502</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-23 01:59:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/77062455&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426567</attachid>
            <date>2021-04-20 10:32:37 -0700</date>
            <delta_ts>2021-04-20 13:02:00 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-224820-20210420103236.patch</filename>
            <type>text/plain</type>
            <size>123804</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY2OWU3YTAyYmRkMWFj
ZDU4MGE3YTRjY2Y3ZDQwNTVjYmY5Yjg1Ni4uNDMwYjE1YzE4ZGY4NzYyOWM3NTVhZjQwYThkNmQ1
YjVjZTA0NDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTA0LTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXZWJD
b3JlOjpTZWxlY3Rpb25SZWN0IHRvIFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ4MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmVwYXJlIGZvciBy
ZW5kZXJpbmcgbm9uLXJlY3RpbGluZWFyIHNlbGVjdGlvbiBxdWFkcyBvbiBpT1MgdXNpbmcgVUlL
aXQsIHJlbmFtZSBgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdGAgdG8KKyAgICAgICAgYFdlYkNvcmU6
OlNlbGVjdGlvbkdlb21ldHJ5YC4gSW4gYSBzdWJzZXF1ZW50IHBhdGNoLCB0aGlzIGNsYXNzIHdp
bGwgYmUgYmFja2VkIGJ5IGEgYEZsb2F0UXVhZGAgaW5zdGVhZCBvZiBhbgorICAgICAgICBgSW50
UmVjdGAsIGFuZCB3aWxsIGFkZGl0aW9uYWxseSBjb250YWluIGEgZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgaXQgc2hvdWxkIHJlbmRlciB1c2luZyB0aGUgYm91bmRpbmcgcmVjdCBvZgorICAgICAg
ICB0aGUgcXVhZCAoYW5kIHNob3VsZCBhZGRpdGlvbmFsbHkgYmUgY29hbGVzY2VkIHdpdGggc3Vy
cm91bmRpbmcgc2VsZWN0aW9uIHJlY3RzKSwgb3IgaWYgaXQgc2hvdWxkIHJlbmRlciB0aGUKKyAg
ICAgICAgc2VsZWN0aW9uIHF1YWQgd2l0aG91dCBjb2FsZXNjaW5nLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0UmVjdHNGcm9tTWFya2Vyczp3aXRo
VGV4dDpdKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBw
YWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUluZGlj
YXRvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1NlbGVjdGlvbkdlb21ldHJ5LmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpTZWxlY3Rpb25HZW9tZXRyeSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
U2VsZWN0aW9uR2VvbWV0cnkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9TZWxlY3Rpb25SZWN0LmguCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eTo6cmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6bG9n
aWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6Omxv
Z2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6
bG9naWNhbFRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6
bG9naWNhbEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eTo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5
OjptaW5YIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjptYXhY
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjptYXhZIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpsaW5lTnVtYmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojppc0xpbmVCcmVhayBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6aXNGaXJzdE9uTGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6aXNMYXN0T25MaW5l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojpjb250YWluc1N0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojpjb250YWlu
c0VuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6aXNIb3Jp
em9udGFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojppc0lu
Rml4ZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eTo6aXNSdWJ5VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eTo6cGFnZU51bWJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eTo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6c2V0TG9n
aWNhbExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OnNldExvZ2lj
YWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6c2V0TG9naWNh
bFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6c2V0TG9naWNhbEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6c2V0RGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXRNaW5YKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXRNYXhYKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXRNYXhZKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvbkdlb21ldHJ5OjpzZXRMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlv
bkdlb21ldHJ5OjpzZXRJc0xpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25H
ZW9tZXRyeTo6c2V0SXNGaXJzdE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25H
ZW9tZXRyeTo6c2V0SXNMYXN0T25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5OjpzZXRDb250YWluc1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5OjpzZXRDb250YWluc0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9t
ZXRyeTo6c2V0SXNIb3Jpem9udGFsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25HZW9t
ZXRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9u
UmVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJyZWFrOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyk6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpj
b2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RMaW5l
SGVpZ2h0T2ZTZWxlY3Rpb25HZW9tZXRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvYWxlc2Nl
U2VsZWN0aW9uR2VvbWV0cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNv
bGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9u
UmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TGluZUhlaWdodE9mU2Vs
ZWN0aW9uUmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29hbGVzY2VTZWxlY3Rp
b25SZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbGxl
Y3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRVbmlvbkludGVyaW9yTGluZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNJbnRlcm5h
bCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNlbGVjdGlvbkluZm86OlJlbmRlclNlbGVjdGlvbkluZm8pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNv
bGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzRm9yTGluZUJveGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisKIDIwMjEtMDQt
MTkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVu
YW1lIEZsb2F0UXVhZDo6aXNFbXB0eSgpIHRvIGJvdW5kaW5nQm94SXNFbXB0eSgpIGFuZCByZWlt
cGxlbWVudCBpc0VtcHR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGYzOTNkYWVmOWFlM2YxZWEwMGJlNjFiNzBi
MWUyY2JhNjRkMTVkNy4uNWVkNzQ2ODFhODdjYjZjODc5OGE4NTYyODRiNzhkYTljNmYzNGQyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAyMS0wNC0yMCAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2ViQ29yZTo6U2VsZWN0aW9u
UmVjdCB0byBXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBTaGFyZWQvRWRp
dG9yU3RhdGUuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25HZW9tZXRyeT46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uR2VvbWV0cnk+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvblJlY3Q+OjplbmNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvblJlY3Q+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0Ondp
dGhUZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoV2ViS2l0OjpXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVjdGlvbkRy
YXdpbmdJbmZvKToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJL
aXQ6Om9wZXJhdG9yPDwpOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wb2ludElzSW5zaWRl
U2VsZWN0aW9uUmVjdDpvdXRCb3VuZGluZ1JlY3Q6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3Nob3VsZFRvZ2dsZVNlbGVjdGlvbkNvbW1hbmRzQWZ0ZXJUYXBBdDpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB3ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvbkdlb21ldHJpZXM6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgd2ViU2VsZWN0aW9uUmVjdHNdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfbG9va3VwRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF90cmFuc2xhdGVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGRT
aG9ydGN1dEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3dEaWN0
aW9uYXJ5Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hY2Nlc3NpYmlsaXR5UmV0cmll
dmVSZWN0c0VuY2xvc2luZ1NlbGVjdGlvbk9mZnNldDp3aXRoR3JhbnVsYXJpdHk6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rp
b25PZmZzZXQ6d2l0aFRleHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgc2VsZWN0ZWRUZXh0UmFuZ2VdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB3
ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvblJlY3RzOl0pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbToKKyAgICAgICAgKC1bV0tUZXh0U2VsZWN0aW9u
UmVjdCBpbml0V2l0aENHUmVjdDpdKToKKyAgICAgICAgKC1bV0tUZXh0U2VsZWN0aW9uUmVjdCBp
bml0V2l0aFNlbGVjdGlvbkdlb21ldHJ5Ol0pOgorICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25S
ZWN0IHJlY3RdKToKKyAgICAgICAgKC1bV0tUZXh0U2VsZWN0aW9uUmVjdCB3cml0aW5nRGlyZWN0
aW9uXSk6CisgICAgICAgICgtW1dLVGV4dFNlbGVjdGlvblJlY3QgY29udGFpbnNTdGFydF0pOgor
ICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25SZWN0IGNvbnRhaW5zRW5kXSk6CisgICAgICAgICgt
W1dLVGV4dFNlbGVjdGlvblJlY3QgaXNWZXJ0aWNhbF0pOgorICAgICAgICAoLVtXS1RleHRTZWxl
Y3Rpb25SZWN0IGluaXRXaXRoU2VsZWN0aW9uUmVjdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zm
c2V0V2l0aFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkJv
dW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRDb250ZW50VG9Sb290Vmlldyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVj
dGlvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rp
b25PZmZzZXRXaXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdXRv
Y29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0Q29udGVudFRvUm9vdFZp
ZXdTZWxlY3Rpb25SZWN0cyk6IERlbGV0ZWQuCisKIDIwMjEtMDQtMTkgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWVkaWEgcGxheWJhY2sgY29udGlu
dWVzIGFmdGVyIGJhY2tncm91bmRpbmcgaG9zdGluZyBhcHBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvQ2hhbmdlTG9nCmluZGV4IDI3M2EzNTNhOGFmNjdhMTEwN2FkNWY5MzEyYzNhNWQ1NzQ5ZWFl
YTMuLmIwZTI4YmZmYmMwODFkYzY3MmRkMjIxZDE3ZWY5ZGUxMTBiNGIxYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNC0yMCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2ViQ29yZTo6
U2VsZWN0aW9uUmVjdCB0byBXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0ODIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUlPUy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgc2VsZWN0aW9uUmVjdHNGb3JDb3JlUmFu
Z2U6XSk6CisKIDIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCAyYTI0YzJjNzRjMWY2OTg1OTVmNTJhNWNmM2MzOWM2
ZjQ5Zjc3MzMzLi4zMzRhOGM5NDBlODhlMzYxY2ZiMzE1ZDdiYzg5ODViNTM0MDk4NmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ1Myw3ICs0NTMsNyBAQCBwbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tCiBwbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KIHBsYXRmb3JtL2lv
cy9TY3JvbGxWaWV3SU9TLm1tCiBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW0KLXBs
YXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAorcGxhdGZvcm0vaW9zL1NlbGVjdGlvbkdlb21l
dHJ5LmNwcAogcGxhdGZvcm0vaW9zL1N5c3RlbU1lbW9yeUlPUy5jcHAKIHBsYXRmb3JtL2lvcy9U
aGVtZUlPUy5tbQogcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBjMjkyNTRkZDYyNWQ1OTNhZjI1YzEyNGRmNWQ4MmU3OTFmZThiOTk4Li42ODhhYmJi
ZGYxMzIxMWE0NmQ3MmVjM2E1NmYyNDZkNjQ1NWQyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDQsMTAgKzY0NCw5IEBA
CiAJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNB
RjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDRDgx
NTAyMjMxRjgzRTAwNjVGQzJCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5MDMzMjQwMEJDRUJB
RCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5oICovOyB9OwotCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlz
cGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQ0U4
RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUy
NjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0U4ODY0MTI2
MTA1QkYyMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8q
IEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJ
dGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQx
MkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAz
MjU5M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGli
ICovOyB9OwogCQkxRDAwMjZBNDIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJl
V2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
RDAwMjZBMjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87
IH07CiAJCTFEMDAyNkFBMjM3NEY5RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVy
ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
RDAwMjZBODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5o
ICovOyB9OwpAQCAtNDE5Myw3ICs0MTkyLDcgQEAKIAkJQkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMz
IC8qIEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJFOEVGMDQ5MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0
LmggKi87IH07CiAJCUJFOTEzRDgwMTgxRUY5MjQwMERDQjA5RSAvKiBUcmFja1ByaXZhdGVCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxM0Q3
RjE4MUVGOEU1MDBEQ0IwOUUgLyogVHJhY2tQcml2YXRlQmFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJFOTYxQzU1MThBRDMzOEMwMEQwN0RD
NSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCRTk2MUM1MzE4QUQzMzdDMDBEMDdEQzUgLyogSW5iYW5kRGF0YVRl
eHRUcmFjay5oICovOyB9OwotCQlCRUE4MDdDOTBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9u
UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVB
ODA3QzcwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvblJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCRUE4MDdDOTBGNzE0QTAzMDA1MjQx
OTkgLyogU2VsZWN0aW9uR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFQTgwN0M3MEY3MTRBMDMwMDUyNDE5OSAvKiBTZWxlY3Rpb25HZW9t
ZXRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRTkxNzE1REQwOTAw
QzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVv
VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDQjEx
MThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC02OTU5LDkgKzY5NTgsOSBAQAogCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyog
SW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbk1lbW9yeURpc3Bs
YXlMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0YyNjEwNUE1
RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5NZW1v
cnlEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyNTI2
MTg1QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRl
bWVudEJlaGF2aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQjI2MTg2
MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8q
IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVO
YW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVOYW1lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTE4MTEsOCArMTE4MTAsOCBAQAogCQk5NDZEMzczRDFENkNFMzFBMDA3
NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQ1NTUGFyc2VyVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NT
UGFyc2VyVG9rZW4uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8qIENTU1By
b3BlcnR5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENT
U1Byb3BlcnR5UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAv
KiBDU1NQcm9wZXJ0eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
U1NQcm9wZXJ0eVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzQxMUQ2RDA2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcDsgcGF0aCA9IHBhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NDZEMzc0MjFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0
aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5NDZEMzc0MjFENkQwNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJT
YWZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2Vy
V29ya2VyU2FmZS5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0MzFENkNGNzg4MDA3NzA4NEYg
LyogQ1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENT
U1BhcnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFy
a3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU01hcmt1cC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUxNyw4ICsxNDUxNiw4IEBACiAJ
CUJFOTYxQzUyMThBRDMzN0MwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZERhdGFUZXh0VHJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTk2MUM1MzE4QUQzMzdDMDBEMDdEQzUg
LyogSW5iYW5kRGF0YVRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmJhbmREYXRhVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJF
OTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUtleWJv
YXJkVUlNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwotCQlCRUE4MDdDNjBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uUmVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkVBODA3QzcwRjcxNEEwMzAwNTI0MTk5
IC8qIFNlbGVjdGlvblJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vs
ZWN0aW9uUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRUE4MDdDNjBGNzE0
QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uR2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0aW9uR2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCRUE4MDdDNzBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uR2VvbWV0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uR2VvbWV0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFRjI5
RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5n
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZWRTdHJp
bmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Njk1LDggKzI0Njk0LDgg
QEAKIAkJCQk0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAq
LywKIAkJCQk0NEM5OTE4MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0g
Ki8sCiAJCQkJRTQ1MzkwMzQwRUFGRDYzNzAwMzY5NUM4IC8qIFNjcm9sbFZpZXdJT1MubW0gKi8s
Ci0JCQkJQkVBODA3QzYwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvblJlY3QuY3BwICovLAot
CQkJCUJFQTgwN0M3MEY3MTRBMDMwMDUyNDE5OSAvKiBTZWxlY3Rpb25SZWN0LmggKi8sCisJCQkJ
QkVBODA3QzYwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvbkdlb21ldHJ5LmNwcCAqLywKKwkJ
CQlCRUE4MDdDNzBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uR2VvbWV0cnkuaCAqLywKIAkJ
CQkwRjAzQzA3MzE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggKi8sCiAJCQkJRTQ1
MzkwQUQwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8sCiAJCQkJNDRD
OTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi8sCkBAIC0zNDkzOSw4ICszNDkz
OCw4IEBACiAJCQkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDVCQzQyNzE2Rjg4MkVFMDA3MDQ4RDAgLyogU2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkYwRDAwNkMx
RDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkVBODA3
QzkwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvbkdlb21ldHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDY1RDdCRDI1MzZEMDVFMDAxNjY2NkQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggaW4g
SGVhZGVycyAqLywKLQkJCQlCRUE4MDdDOTBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uUmVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0MDVDODkxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVj
dGlvblJlY3RHYXRoZXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOThDQkM4MDUyNjE4RjY4QzAw
MTU5M0M4IC8qIFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ0QjRCQjQxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDg1ZTIwNmFm
MzM2Yjc0MmFiMDMxMjRhNmQwNjYxZDE5NjkwNTA0YmIuLmJkNzFjZjBkMzUzNjQwYjI1ZWM3ZTY3
NjNlY2JkNjY4MjVlNTE4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCkBAIC01MSw3ICs1MSw3IEBACiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aCIKICNpbXBvcnQgIlNWR05hbWVzLmgiCiAjaW1wb3J0ICJTVkdFbGVtZW50LmgiCi0jaW1wb3J0
ICJTZWxlY3Rpb25SZWN0LmgiCisjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIgogI2ltcG9y
dCAiVGV4dEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJXQUtTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJX
QUtXaW5kb3cuaCIKQEAgLTI4MDIsMTEgKzI4MDIsMTEgQEAgLSAoTlNBcnJheSAqKXRleHRSZWN0
c0Zyb21NYXJrZXJzOihOU0FycmF5ICopbWFya2VycyB3aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0
CiAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+Y29sbGFwc2VkKCkpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBhdXRvIHJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVj
dHNXaXRob3V0VW5pb25JbnRlcmlvckxpbmVzKCpyYW5nZSk7Ci0gICAgaWYgKHJlY3RzLmlzRW1w
dHkoKSkKKyAgICBhdXRvIGdlb21ldHJpZXMgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rp
b25HZW9tZXRyaWVzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5lcygqcmFuZ2UpOworICAgIGlmIChn
ZW9tZXRyaWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShyZWN0cywgWyZdIChhdXRvJiByZWN0KSB7Ci0gICAgICAgIHJldHVybiBbTlNW
YWx1ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpGbG9hdFJlY3QocmVj
dC5yZWN0KCkpIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl1dOwor
ICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGdlb21ldHJpZXMsIFsmXSAoYXV0byYgZ2VvbWV0cnkp
IHsKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6W3NlbGYgY29udmVydFJl
Y3RUb1NwYWNlOkZsb2F0UmVjdChnZW9tZXRyeS5yZWN0KCkpIHNwYWNlOkFjY2Vzc2liaWxpdHlD
b252ZXJzaW9uU3BhY2U6OlNjcmVlbl1dOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNDJiYmUxYWE0NmUwMDFhYTRl
ODI4Y2UxYTRmODliOGE1MjgwZjQxMi4uMzFjYTdhMzNhM2E5ZGFhYjM4OWIzNzZmODZlYzA0Njhh
ZDg0Y2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJT
ZWxlY3Rpb25SZWN0LmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcApp
bmRleCAyZGY4MWVhNzA1NzNiNjc1MTUxZDQxNzY3OTA3ZWY0OGZjNGUyMmQ3Li4wODk1YWIyNDFh
OTkwMzFiZDA0MzYxZThkZTRlMjViOWIxYzY2YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5o
IgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJTZWxlY3Rpb25SZWN0Lmgi
CisjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zMDMsOCArMzAzLDggQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUluZGljYXRv
cihUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICAg
ICAgZGF0YS5vcHRpb25zLmFkZChUZXh0SW5kaWNhdG9yT3B0aW9uOjpQYWludEFsbENvbnRlbnQp
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZWxzZSBpZiAoZGF0YS5vcHRpb25zLmNv
bnRhaW5zKFRleHRJbmRpY2F0b3JPcHRpb246OlVzZVNlbGVjdGlvblJlY3RGb3JTaXppbmcpKSB7
Ci0gICAgICAgIHRleHRSZWN0cyA9IFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3Rz
KHJhbmdlKS5tYXAoWyZdKGF1dG8mIHJlY3QpIC0+IEZsb2F0UmVjdCB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVjdC5yZWN0KCk7CisgICAgICAgIHRleHRSZWN0cyA9IFJlbmRlck9iamVjdDo6Y29s
bGVjdFNlbGVjdGlvbkdlb21ldHJpZXMocmFuZ2UpLm1hcChbJl0oYXV0byYgZ2VvbWV0cnkpIC0+
IEZsb2F0UmVjdCB7CisgICAgICAgICAgICByZXR1cm4gZ2VvbWV0cnkucmVjdCgpOwogICAgICAg
ICB9KTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2VsZWN0aW9uR2VvbWV0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiYmU3YWFiZDA2YWYwOGI2NGI1OGUy
MDdkZmZhNmU0NDlmYTA5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvU2VsZWN0aW9uR2VvbWV0cnkuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0
cnkuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTZWxlY3Rpb25HZW9tZXRyeTo6U2VsZWN0aW9uR2VvbWV0cnkoY29uc3QgSW50
UmVjdCYgcmVjdCwgYm9vbCBpc0hvcml6b250YWwsIGludCBwYWdlTnVtYmVyKQorICAgIDogbV9y
ZWN0KHJlY3QpCisgICAgLCBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCisgICAgLCBt
X21pblgoMCkKKyAgICAsIG1fbWF4WCgwKQorICAgICwgbV9tYXhZKDApCisgICAgLCBtX2xpbmVO
dW1iZXIoMCkKKyAgICAsIG1faXNMaW5lQnJlYWsoZmFsc2UpCisgICAgLCBtX2lzRmlyc3RPbkxp
bmUoZmFsc2UpCisgICAgLCBtX2lzTGFzdE9uTGluZShmYWxzZSkKKyAgICAsIG1fY29udGFpbnNT
dGFydChmYWxzZSkKKyAgICAsIG1fY29udGFpbnNFbmQoZmFsc2UpCisgICAgLCBtX2lzSG9yaXpv
bnRhbChpc0hvcml6b250YWwpCisgICAgLCBtX2lzSW5GaXhlZFBvc2l0aW9uKGZhbHNlKQorICAg
ICwgbV9pc1J1YnlUZXh0KGZhbHNlKQorICAgICwgbV9wYWdlTnVtYmVyKHBhZ2VOdW1iZXIpCit7
Cit9CisKKy8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSBzb21lIG9mIHRoZXNlIGFyZ3VtZW50cyB0
byBhbiBhdXhpbGxhcnkgc3RydWN0LgorU2VsZWN0aW9uR2VvbWV0cnk6OlNlbGVjdGlvbkdlb21l
dHJ5KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgbWlu
WCwgaW50IG1heFgsIGludCBtYXhZLCBpbnQgbGluZU51bWJlciwgYm9vbCBpc0xpbmVCcmVhaywg
Ym9vbCBpc0ZpcnN0T25MaW5lLCBib29sIGlzTGFzdE9uTGluZSwgYm9vbCBjb250YWluc1N0YXJ0
LCBib29sIGNvbnRhaW5zRW5kLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpc0luRml4ZWRQb3Np
dGlvbiwgYm9vbCBpc1J1YnlUZXh0LCBpbnQgcGFnZU51bWJlcikKKyAgICA6IG1fcmVjdChyZWN0
KQorICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAgICwgbV9taW5YKG1pblgpCisgICAg
LCBtX21heFgobWF4WCkKKyAgICAsIG1fbWF4WShtYXhZKQorICAgICwgbV9saW5lTnVtYmVyKGxp
bmVOdW1iZXIpCisgICAgLCBtX2lzTGluZUJyZWFrKGlzTGluZUJyZWFrKQorICAgICwgbV9pc0Zp
cnN0T25MaW5lKGlzRmlyc3RPbkxpbmUpCisgICAgLCBtX2lzTGFzdE9uTGluZShpc0xhc3RPbkxp
bmUpCisgICAgLCBtX2NvbnRhaW5zU3RhcnQoY29udGFpbnNTdGFydCkKKyAgICAsIG1fY29udGFp
bnNFbmQoY29udGFpbnNFbmQpCisgICAgLCBtX2lzSG9yaXpvbnRhbChpc0hvcml6b250YWwpCisg
ICAgLCBtX2lzSW5GaXhlZFBvc2l0aW9uKGlzSW5GaXhlZFBvc2l0aW9uKQorICAgICwgbV9pc1J1
YnlUZXh0KGlzUnVieVRleHQpCisgICAgLCBtX3BhZ2VOdW1iZXIocGFnZU51bWJlcikKK3sKK30K
KworU2VsZWN0aW9uR2VvbWV0cnk6OlNlbGVjdGlvbkdlb21ldHJ5KCkKKyAgICA6IG1fZGlyZWN0
aW9uKFRleHREaXJlY3Rpb246OkxUUikKKyAgICAsIG1fbWluWCgwKQorICAgICwgbV9tYXhYKDAp
CisgICAgLCBtX21heFkoMCkKKyAgICAsIG1fbGluZU51bWJlcigwKQorICAgICwgbV9pc0xpbmVC
cmVhayhmYWxzZSkKKyAgICAsIG1faXNGaXJzdE9uTGluZShmYWxzZSkKKyAgICAsIG1faXNMYXN0
T25MaW5lKGZhbHNlKQorICAgICwgbV9jb250YWluc1N0YXJ0KGZhbHNlKQorICAgICwgbV9jb250
YWluc0VuZChmYWxzZSkKKyAgICAsIG1faXNIb3Jpem9udGFsKHRydWUpCisgICAgLCBtX2lzSW5G
aXhlZFBvc2l0aW9uKGZhbHNlKQorICAgICwgbV9pc1J1YnlUZXh0KGZhbHNlKQorICAgICwgbV9w
YWdlTnVtYmVyKDApCit7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
c3RyZWFtLCBTZWxlY3Rpb25HZW9tZXRyeSByZWN0KQoreworICAgIFRleHRTdHJlYW06Okdyb3Vw
U2NvcGUgZ3JvdXAoc3RyZWFtKTsKKyAgICBzdHJlYW0gPDwgInNlbGVjdGlvbiBnZW9tZXRyeSI7
CisKKyAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyZWN0IiwgcmVjdC5yZWN0KCkpOworICAgIHN0
cmVhbS5kdW1wUHJvcGVydHkoImRpcmVjdGlvbiIsIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24ocmVj
dC5kaXJlY3Rpb24oKSkgPyAibHRyIiA6ICJydGwiKTsKKworICAgIHN0cmVhbS5kdW1wUHJvcGVy
dHkoIm1pbi14IiwgcmVjdC5taW5YKCkpOworICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoIm1heC14
IiwgcmVjdC5tYXhYKCkpOworICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoIm1heC15IiwgcmVjdC5t
YXhZKCkpOworCisgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgibGluZSBudW1iZXIiLCByZWN0Lmxp
bmVOdW1iZXIoKSk7CisgICAgaWYgKHJlY3QuaXNMaW5lQnJlYWsoKSkKKyAgICAgICAgc3RyZWFt
LmR1bXBQcm9wZXJ0eSgiaXMgbGluZSBicmVhayIsIHRydWUpOworICAgIGlmIChyZWN0LmlzRmly
c3RPbkxpbmUoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgZmlyc3Qgb24gbGlu
ZSIsIHRydWUpOworICAgIGlmIChyZWN0LmlzTGFzdE9uTGluZSgpKQorICAgICAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJpcyBsYXN0IG9uIGxpbmUiLCB0cnVlKTsKKworICAgIGlmIChyZWN0LmNv
bnRhaW5zU3RhcnQoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiY29udGFpbnMgc3Rh
cnQiLCB0cnVlKTsKKworICAgIGlmIChyZWN0LmNvbnRhaW5zRW5kKCkpCisgICAgICAgIHN0cmVh
bS5kdW1wUHJvcGVydHkoImNvbnRhaW5zIGVuZCIsIHRydWUpOworCisgICAgaWYgKHJlY3QuaXNI
b3Jpem9udGFsKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImlzIGhvcml6b250YWwi
LCB0cnVlKTsKKworICAgIGlmIChyZWN0LmlzSW5GaXhlZFBvc2l0aW9uKCkpCisgICAgICAgIHN0
cmVhbS5kdW1wUHJvcGVydHkoImlzIGluIGZpeGVkIHBvc2l0aW9uIiwgdHJ1ZSk7CisKKyAgICBp
ZiAocmVjdC5pc1J1YnlUZXh0KCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImlzIHJ1
YnkgdGV4dCIsIHRydWUpOworCisgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicGFnZSBudW1iZXIi
LCByZWN0LnBhZ2VOdW1iZXIoKSk7CisgICAgcmV0dXJuIHN0cmVhbTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Nl
bGVjdGlvbkdlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9u
R2VvbWV0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzEwZjMwNTA4MTIyYWM1ZDEzZmI0ZDkxMTFiMzdlZTIx
YmEzNzc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Nl
bGVjdGlvbkdlb21ldHJ5LmgKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIldyaXRpbmdNb2Rl
LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2VsZWN0aW9uR2VvbWV0cnko
Y29uc3QgSW50UmVjdCYsIGJvb2wgaXNIb3Jpem9udGFsLCBpbnQgY29sdW1uTnVtYmVyKTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSBzb21lIG9mIHRoZXNlIGFyZ3VtZW50cyB0byBh
biBhdXhpbGxhcnkgc3RydWN0LgorICAgIFNlbGVjdGlvbkdlb21ldHJ5KGNvbnN0IEludFJlY3Qm
LCBUZXh0RGlyZWN0aW9uLCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Vs
ZWN0aW9uR2VvbWV0cnkoKTsKKyAgICB+U2VsZWN0aW9uR2VvbWV0cnkoKSA9IGRlZmF1bHQ7CisK
KyAgICBJbnRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKworICAgIGludCBs
b2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIb3Jpem9udGFsID8gbV9yZWN0LngoKSA6
IG1fcmVjdC55KCk7IH0KKyAgICBpbnQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9p
c0hvcml6b250YWwgPyBtX3JlY3Qud2lkdGgoKSA6IG1fcmVjdC5oZWlnaHQoKTsgfQorICAgIGlu
dCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9pc0hvcml6b250YWwgPyBtX3JlY3QueSgp
IDogbV9yZWN0LngoKTsgfQorICAgIGludCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0hvcml6b250YWwgPyBtX3JlY3QuaGVpZ2h0KCkgOiBtX3JlY3Qud2lkdGgoKTsgfQorCisg
ICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsg
fQorICAgIGludCBtaW5YKCkgY29uc3QgeyByZXR1cm4gbV9taW5YOyB9CisgICAgaW50IG1heFgo
KSBjb25zdCB7IHJldHVybiBtX21heFg7IH0KKyAgICBpbnQgbWF4WSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4WTsgfQorICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVt
YmVyOyB9CisgICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faXNMaW5lQnJl
YWs7IH0KKyAgICBib29sIGlzRmlyc3RPbkxpbmUoKSBjb25zdCB7IHJldHVybiBtX2lzRmlyc3RP
bkxpbmU7IH0KKyAgICBib29sIGlzTGFzdE9uTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXN0
T25MaW5lOyB9CisgICAgYm9vbCBjb250YWluc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
YWluc1N0YXJ0OyB9CisgICAgYm9vbCBjb250YWluc0VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGFpbnNFbmQ7IH0KKyAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNI
b3Jpem9udGFsOyB9CisgICAgYm9vbCBpc0luRml4ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNJbkZpeGVkUG9zaXRpb247IH0KKyAgICBib29sIGlzUnVieVRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2lzUnVieVRleHQ7IH0KKyAgICBpbnQgcGFnZU51bWJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZU51bWJlcjsgfQorCisgICAgdm9pZCBzZXRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
IHsgbV9yZWN0ID0gcmVjdDsgfQorCisgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChpbnQgbGVmdCkK
KyAgICB7CisgICAgICAgIGlmIChtX2lzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fcmVjdC5z
ZXRYKGxlZnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlY3Quc2V0WShsZWZ0KTsK
KyAgICB9CisKKyAgICB2b2lkIHNldExvZ2ljYWxXaWR0aChpbnQgd2lkdGgpCisgICAgeworICAg
ICAgICBpZiAobV9pc0hvcml6b250YWwpCisgICAgICAgICAgICBtX3JlY3Quc2V0V2lkdGgod2lk
dGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlY3Quc2V0SGVpZ2h0KHdpZHRoKTsK
KyAgICB9CisKKyAgICB2b2lkIHNldExvZ2ljYWxUb3AoaW50IHRvcCkKKyAgICB7CisgICAgICAg
IGlmIChtX2lzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1fcmVjdC5zZXRZKHRvcCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fcmVjdC5zZXRYKHRvcCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRMb2dpY2FsSGVpZ2h0KGludCBoZWlnaHQpCisgICAgeworICAgICAgICBpZiAobV9pc0hv
cml6b250YWwpCisgICAgICAgICAgICBtX3JlY3Quc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fcmVjdC5zZXRXaWR0aChoZWlnaHQpOworICAgIH0KKworICAg
IHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSB7IG1fZGlyZWN0aW9u
ID0gZGlyZWN0aW9uOyB9CisgICAgdm9pZCBzZXRNaW5YKGludCBtaW5YKSB7IG1fbWluWCA9IG1p
blg7IH0KKyAgICB2b2lkIHNldE1heFgoaW50IG1heFgpIHsgbV9tYXhYID0gbWF4WDsgfQorICAg
IHZvaWQgc2V0TWF4WShpbnQgbWF4WSkgeyBtX21heFkgPSBtYXhZOyB9CisgICAgdm9pZCBzZXRM
aW5lTnVtYmVyKGludCBsaW5lTnVtYmVyKSB7IG1fbGluZU51bWJlciA9IGxpbmVOdW1iZXI7IH0K
KyAgICB2b2lkIHNldElzTGluZUJyZWFrKGJvb2wgaXNMaW5lQnJlYWspIHsgbV9pc0xpbmVCcmVh
ayA9IGlzTGluZUJyZWFrOyB9CisgICAgdm9pZCBzZXRJc0ZpcnN0T25MaW5lKGJvb2wgaXNGaXJz
dE9uTGluZSkgeyBtX2lzRmlyc3RPbkxpbmUgPSBpc0ZpcnN0T25MaW5lOyB9CisgICAgdm9pZCBz
ZXRJc0xhc3RPbkxpbmUoYm9vbCBpc0xhc3RPbkxpbmUpIHsgbV9pc0xhc3RPbkxpbmUgPSBpc0xh
c3RPbkxpbmU7IH0KKyAgICB2b2lkIHNldENvbnRhaW5zU3RhcnQoYm9vbCBjb250YWluc1N0YXJ0
KSB7IG1fY29udGFpbnNTdGFydCA9IGNvbnRhaW5zU3RhcnQ7IH0KKyAgICB2b2lkIHNldENvbnRh
aW5zRW5kKGJvb2wgY29udGFpbnNFbmQpIHsgbV9jb250YWluc0VuZCA9IGNvbnRhaW5zRW5kOyB9
CisgICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV9pc0hvcml6
b250YWwgPSBpc0hvcml6b250YWw7IH0KKworcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fcmVjdDsK
KyAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIGludCBtX21pblg7CisgICAgaW50
IG1fbWF4WDsKKyAgICBpbnQgbV9tYXhZOworICAgIGludCBtX2xpbmVOdW1iZXI7CisgICAgYm9v
bCBtX2lzTGluZUJyZWFrOworICAgIGJvb2wgbV9pc0ZpcnN0T25MaW5lOworICAgIGJvb2wgbV9p
c0xhc3RPbkxpbmU7CisgICAgYm9vbCBtX2NvbnRhaW5zU3RhcnQ7CisgICAgYm9vbCBtX2NvbnRh
aW5zRW5kOworICAgIGJvb2wgbV9pc0hvcml6b250YWw7CisgICAgYm9vbCBtX2lzSW5GaXhlZFBv
c2l0aW9uOworICAgIGJvb2wgbV9pc1J1YnlUZXh0OworICAgIGludCBtX3BhZ2VOdW1iZXI7Cit9
OworCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgU2VsZWN0aW9uR2VvbWV0cnkpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZDE5M2ExZjUxYWU2ZGY5ZTcxYTZhNjc1OWE1OGEzY2Mx
OGNlZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiU2VsZWN0aW9uUmVjdC5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBpc0hvcml6b250YWwsIGludCBwYWdlTnVtYmVyKQot
ICAgIDogbV9yZWN0KHJlY3QpCi0gICAgLCBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIp
Ci0gICAgLCBtX21pblgoMCkKLSAgICAsIG1fbWF4WCgwKQotICAgICwgbV9tYXhZKDApCi0gICAg
LCBtX2xpbmVOdW1iZXIoMCkKLSAgICAsIG1faXNMaW5lQnJlYWsoZmFsc2UpCi0gICAgLCBtX2lz
Rmlyc3RPbkxpbmUoZmFsc2UpCi0gICAgLCBtX2lzTGFzdE9uTGluZShmYWxzZSkKLSAgICAsIG1f
Y29udGFpbnNTdGFydChmYWxzZSkKLSAgICAsIG1fY29udGFpbnNFbmQoZmFsc2UpCi0gICAgLCBt
X2lzSG9yaXpvbnRhbChpc0hvcml6b250YWwpCi0gICAgLCBtX2lzSW5GaXhlZFBvc2l0aW9uKGZh
bHNlKQotICAgICwgbV9pc1J1YnlUZXh0KGZhbHNlKQotICAgICwgbV9wYWdlTnVtYmVyKHBhZ2VO
dW1iZXIpCi17Ci19Ci0KLS8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSBzb21lIG9mIHRoZXNlIGFy
Z3VtZW50cyB0byBhbiBhdXhpbGxhcnkgc3RydWN0LgotU2VsZWN0aW9uUmVjdDo6U2VsZWN0aW9u
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IG1p
blgsIGludCBtYXhYLCBpbnQgbWF4WSwKLSAgICBpbnQgbGluZU51bWJlciwgYm9vbCBpc0xpbmVC
cmVhaywgYm9vbCBpc0ZpcnN0T25MaW5lLCBib29sIGlzTGFzdE9uTGluZSwgYm9vbCBjb250YWlu
c1N0YXJ0LCBib29sIGNvbnRhaW5zRW5kLAotICAgIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGlz
SW5GaXhlZFBvc2l0aW9uLCBib29sIGlzUnVieVRleHQsIGludCBwYWdlTnVtYmVyKQotICAgIDog
bV9yZWN0KHJlY3QpCi0gICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCi0gICAgLCBtX21pblgo
bWluWCkKLSAgICAsIG1fbWF4WChtYXhYKQotICAgICwgbV9tYXhZKG1heFkpCi0gICAgLCBtX2xp
bmVOdW1iZXIobGluZU51bWJlcikKLSAgICAsIG1faXNMaW5lQnJlYWsoaXNMaW5lQnJlYWspCi0g
ICAgLCBtX2lzRmlyc3RPbkxpbmUoaXNGaXJzdE9uTGluZSkKLSAgICAsIG1faXNMYXN0T25MaW5l
KGlzTGFzdE9uTGluZSkKLSAgICAsIG1fY29udGFpbnNTdGFydChjb250YWluc1N0YXJ0KQotICAg
ICwgbV9jb250YWluc0VuZChjb250YWluc0VuZCkKLSAgICAsIG1faXNIb3Jpem9udGFsKGlzSG9y
aXpvbnRhbCkKLSAgICAsIG1faXNJbkZpeGVkUG9zaXRpb24oaXNJbkZpeGVkUG9zaXRpb24pCi0g
ICAgLCBtX2lzUnVieVRleHQoaXNSdWJ5VGV4dCkKLSAgICAsIG1fcGFnZU51bWJlcihwYWdlTnVt
YmVyKQotewotfQotCi1TZWxlY3Rpb25SZWN0OjpTZWxlY3Rpb25SZWN0KCkKLSAgICA6IG1fZGly
ZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUikKLSAgICAsIG1fbWluWCgwKQotICAgICwgbV9tYXhY
KDApCi0gICAgLCBtX21heFkoMCkKLSAgICAsIG1fbGluZU51bWJlcigwKQotICAgICwgbV9pc0xp
bmVCcmVhayhmYWxzZSkKLSAgICAsIG1faXNGaXJzdE9uTGluZShmYWxzZSkKLSAgICAsIG1faXNM
YXN0T25MaW5lKGZhbHNlKQotICAgICwgbV9jb250YWluc1N0YXJ0KGZhbHNlKQotICAgICwgbV9j
b250YWluc0VuZChmYWxzZSkKLSAgICAsIG1faXNIb3Jpem9udGFsKHRydWUpCi0gICAgLCBtX2lz
SW5GaXhlZFBvc2l0aW9uKGZhbHNlKQotICAgICwgbV9pc1J1YnlUZXh0KGZhbHNlKQotICAgICwg
bV9wYWdlTnVtYmVyKDApCi17Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgc3RyZWFtLCBTZWxlY3Rpb25SZWN0IHJlY3QpCi17Ci0gICAgVGV4dFN0cmVhbTo6R3JvdXBT
Y29wZSBncm91cChzdHJlYW0pOwotICAgIHN0cmVhbSA8PCAic2VsZWN0aW9uIHJlY3QiOwotCi0g
ICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicmVjdCIsIHJlY3QucmVjdCgpKTsKLSAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJkaXJlY3Rpb24iLCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKHJlY3QuZGly
ZWN0aW9uKCkpID8gImx0ciIgOiAicnRsIik7Ci0KLSAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJt
aW4teCIsIHJlY3QubWluWCgpKTsKLSAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJtYXgteCIsIHJl
Y3QubWF4WCgpKTsKLSAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJtYXgteSIsIHJlY3QubWF4WSgp
KTsKLQotICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImxpbmUgbnVtYmVyIiwgcmVjdC5saW5lTnVt
YmVyKCkpOwotICAgIGlmIChyZWN0LmlzTGluZUJyZWFrKCkpCi0gICAgICAgIHN0cmVhbS5kdW1w
UHJvcGVydHkoImlzIGxpbmUgYnJlYWsiLCB0cnVlKTsKLSAgICBpZiAocmVjdC5pc0ZpcnN0T25M
aW5lKCkpCi0gICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImlzIGZpcnN0IG9uIGxpbmUiLCB0
cnVlKTsKLSAgICBpZiAocmVjdC5pc0xhc3RPbkxpbmUoKSkKLSAgICAgICAgc3RyZWFtLmR1bXBQ
cm9wZXJ0eSgiaXMgbGFzdCBvbiBsaW5lIiwgdHJ1ZSk7Ci0KLSAgICBpZiAocmVjdC5jb250YWlu
c1N0YXJ0KCkpCi0gICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImNvbnRhaW5zIHN0YXJ0Iiwg
dHJ1ZSk7Ci0KLSAgICBpZiAocmVjdC5jb250YWluc0VuZCgpKQotICAgICAgICBzdHJlYW0uZHVt
cFByb3BlcnR5KCJjb250YWlucyBlbmQiLCB0cnVlKTsKLQotICAgIGlmIChyZWN0LmlzSG9yaXpv
bnRhbCgpKQotICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJpcyBob3Jpem9udGFsIiwgdHJ1
ZSk7Ci0KLSAgICBpZiAocmVjdC5pc0luRml4ZWRQb3NpdGlvbigpKQotICAgICAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJpcyBpbiBmaXhlZCBwb3NpdGlvbiIsIHRydWUpOwotCi0gICAgaWYgKHJl
Y3QuaXNSdWJ5VGV4dCgpKQotICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJpcyBydWJ5IHRl
eHQiLCB0cnVlKTsKLQotICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInBhZ2UgbnVtYmVyIiwgcmVj
dC5wYWdlTnVtYmVyKCkpOwotICAgIHJldHVybiBzdHJlYW07Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rp
b25SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTgyYzYzYTAwMzNmNTc1NGNlMzc5MmU4NjEy
Yzc3YjdmODEwZmJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2VsZWN0aW9uUmVj
dF9oCi0jZGVmaW5lIFNlbGVjdGlvblJlY3RfaAotCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2lu
Y2x1ZGUgIldyaXRpbmdNb2RlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZWxlY3Rpb25SZWN0IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTZWxl
Y3Rpb25SZWN0KGNvbnN0IEludFJlY3QmLCBib29sIGlzSG9yaXpvbnRhbCwgaW50IGNvbHVtbk51
bWJlcik7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1vdmUgc29tZSBvZiB0aGVzZSBhcmd1
bWVudHMgdG8gYW4gYXV4aWxsYXJ5IHN0cnVjdC4KLSAgICBTZWxlY3Rpb25SZWN0KGNvbnN0IElu
dFJlY3QmLCBUZXh0RGlyZWN0aW9uLCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGludCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU2VsZWN0aW9uUmVjdCgpOwotICAgIH5TZWxlY3Rpb25SZWN0KCkgPSBkZWZhdWx0OwotCi0g
ICAgSW50UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9Ci0KLSAgICBpbnQgbG9n
aWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBtX2lzSG9yaXpvbnRhbCA/IG1fcmVjdC54KCkgOiBt
X3JlY3QueSgpOyB9Ci0gICAgaW50IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faXNI
b3Jpem9udGFsID8gbV9yZWN0LndpZHRoKCkgOiBtX3JlY3QuaGVpZ2h0KCk7IH0KLSAgICBpbnQg
bG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIb3Jpem9udGFsID8gbV9yZWN0LnkoKSA6
IG1fcmVjdC54KCk7IH0KLSAgICBpbnQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNIb3Jpem9udGFsID8gbV9yZWN0LmhlaWdodCgpIDogbV9yZWN0LndpZHRoKCk7IH0KLQotICAg
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0K
LSAgICBpbnQgbWluWCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluWDsgfQotICAgIGludCBtYXhYKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXhYOyB9Ci0gICAgaW50IG1heFkoKSBjb25zdCB7IHJldHVybiBt
X21heFk7IH0KLSAgICBpbnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJl
cjsgfQotICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2lzTGluZUJyZWFr
OyB9Ci0gICAgYm9vbCBpc0ZpcnN0T25MaW5lKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZpcnN0T25M
aW5lOyB9Ci0gICAgYm9vbCBpc0xhc3RPbkxpbmUoKSBjb25zdCB7IHJldHVybiBtX2lzTGFzdE9u
TGluZTsgfQotICAgIGJvb2wgY29udGFpbnNTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFp
bnNTdGFydDsgfQotICAgIGJvb2wgY29udGFpbnNFbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRh
aW5zRW5kOyB9Ci0gICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX2lzSG9y
aXpvbnRhbDsgfQotICAgIGJvb2wgaXNJbkZpeGVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2lzSW5GaXhlZFBvc2l0aW9uOyB9Ci0gICAgYm9vbCBpc1J1YnlUZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pc1J1YnlUZXh0OyB9Ci0gICAgaW50IHBhZ2VOdW1iZXIoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VOdW1iZXI7IH0KLQotICAgIHZvaWQgc2V0UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7
IG1fcmVjdCA9IHJlY3Q7IH0KLQotICAgIHZvaWQgc2V0TG9naWNhbExlZnQoaW50IGxlZnQpCi0g
ICAgewotICAgICAgICBpZiAobV9pc0hvcml6b250YWwpCi0gICAgICAgICAgICBtX3JlY3Quc2V0
WChsZWZ0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZWN0LnNldFkobGVmdCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoaW50IHdpZHRoKQotICAgIHsKLSAgICAg
ICAgaWYgKG1faXNIb3Jpem9udGFsKQotICAgICAgICAgICAgbV9yZWN0LnNldFdpZHRoKHdpZHRo
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZWN0LnNldEhlaWdodCh3aWR0aCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzZXRMb2dpY2FsVG9wKGludCB0b3ApCi0gICAgewotICAgICAgICBp
ZiAobV9pc0hvcml6b250YWwpCi0gICAgICAgICAgICBtX3JlY3Quc2V0WSh0b3ApOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3JlY3Quc2V0WCh0b3ApOwotICAgIH0KLQotICAgIHZvaWQg
c2V0TG9naWNhbEhlaWdodChpbnQgaGVpZ2h0KQotICAgIHsKLSAgICAgICAgaWYgKG1faXNIb3Jp
em9udGFsKQotICAgICAgICAgICAgbV9yZWN0LnNldEhlaWdodChoZWlnaHQpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3JlY3Quc2V0V2lkdGgoaGVpZ2h0KTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikgeyBtX2RpcmVjdGlvbiA9
IGRpcmVjdGlvbjsgfQotICAgIHZvaWQgc2V0TWluWChpbnQgbWluWCkgeyBtX21pblggPSBtaW5Y
OyB9Ci0gICAgdm9pZCBzZXRNYXhYKGludCBtYXhYKSB7IG1fbWF4WCA9IG1heFg7IH0KLSAgICB2
b2lkIHNldE1heFkoaW50IG1heFkpIHsgbV9tYXhZID0gbWF4WTsgfQotICAgIHZvaWQgc2V0TGlu
ZU51bWJlcihpbnQgbGluZU51bWJlcikgeyBtX2xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOyB9Ci0g
ICAgdm9pZCBzZXRJc0xpbmVCcmVhayhib29sIGlzTGluZUJyZWFrKSB7IG1faXNMaW5lQnJlYWsg
PSBpc0xpbmVCcmVhazsgfQotICAgIHZvaWQgc2V0SXNGaXJzdE9uTGluZShib29sIGlzRmlyc3RP
bkxpbmUpIHsgbV9pc0ZpcnN0T25MaW5lID0gaXNGaXJzdE9uTGluZTsgfQotICAgIHZvaWQgc2V0
SXNMYXN0T25MaW5lKGJvb2wgaXNMYXN0T25MaW5lKSB7IG1faXNMYXN0T25MaW5lID0gaXNMYXN0
T25MaW5lOyB9Ci0gICAgdm9pZCBzZXRDb250YWluc1N0YXJ0KGJvb2wgY29udGFpbnNTdGFydCkg
eyBtX2NvbnRhaW5zU3RhcnQgPSBjb250YWluc1N0YXJ0OyB9Ci0gICAgdm9pZCBzZXRDb250YWlu
c0VuZChib29sIGNvbnRhaW5zRW5kKSB7IG1fY29udGFpbnNFbmQgPSBjb250YWluc0VuZDsgfQot
ICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1faXNIb3Jpem9u
dGFsID0gaXNIb3Jpem9udGFsOyB9Ci0KLXByaXZhdGU6Ci0gICAgSW50UmVjdCBtX3JlY3Q7Ci0g
ICAgVGV4dERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKLSAgICBpbnQgbV9taW5YOwotICAgIGludCBt
X21heFg7Ci0gICAgaW50IG1fbWF4WTsKLSAgICBpbnQgbV9saW5lTnVtYmVyOwotICAgIGJvb2wg
bV9pc0xpbmVCcmVhazsKLSAgICBib29sIG1faXNGaXJzdE9uTGluZTsKLSAgICBib29sIG1faXNM
YXN0T25MaW5lOwotICAgIGJvb2wgbV9jb250YWluc1N0YXJ0OwotICAgIGJvb2wgbV9jb250YWlu
c0VuZDsKLSAgICBib29sIG1faXNIb3Jpem9udGFsOwotICAgIGJvb2wgbV9pc0luRml4ZWRQb3Np
dGlvbjsKLSAgICBib29sIG1faXNSdWJ5VGV4dDsKLSAgICBpbnQgbV9wYWdlTnVtYmVyOwotfTsK
LQotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFNlbGVjdGlvblJlY3QpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBTZWxlY3Rpb25SZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IDc4MzAxZTYwYzkxNTE3ZTc0N2I5YzhmMThkOGJiYmQ0NzhhNTc0OTEuLjMyNTEw
Y2Q0NWJiM2IwMDQzYjM4NTIyMDJhNWI2ODA5YjhiNmY5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNjMsNyArNjMsNyBAQAogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCi0j
aW5jbHVkZSAiU2VsZWN0aW9uUmVjdC5oIgorI2luY2x1ZGUgIlNlbGVjdGlvbkdlb21ldHJ5Lmgi
CiAjZW5kaWYKIAogI2lmIFVTRShDRykKQEAgLTgwLDEyICs4MCwxMiBAQCBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoUmVuZGVySW1hZ2UpOwogLy8gZHVyaW5nIHNlbGVjdGlvbiBjcmVhdGlv
biB5ZXQgYW55d2F5LgogLy8gRklYTUU6IFdlIGNhbid0IHRlbGwgd2hldGhlciBvciBub3Qgd2Ug
Y29udGFpbiB0aGUgc3RhcnQgb3IgZW5kIG9mIHRoZSBzZWxlY3RlZCBSYW5nZSB1c2luZyBvbmx5
IHRoZSBvZmZzZXRzCiAvLyBvZiB0aGUgc3RhcnQgYW5kIGVuZCwgd2UgbmVlZCB0byBrbm93IHRo
ZSB3aG9sZSBQb3NpdGlvbi4KLXZvaWQgUmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0
cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzLCB1bnNpZ25lZCwgdW5zaWduZWQpCit2b2lk
IFJlbmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9u
R2VvbWV0cnk+JiBnZW9tZXRyaWVzLCB1bnNpZ25lZCwgdW5zaWduZWQpCiB7CiAgICAgUmVuZGVy
QmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwogCiAgICAg
SW50UmVjdCBpbWFnZVJlY3Q7Ci0gICAgLy8gRklYTUU6IEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0
byBwYWNrYWdlIGxpbmUgYm91bmRzIGludG8gU2VsZWN0aW9uUmVjdHMuIFdlIHNob3VsZCBmaW5k
CisgICAgLy8gRklYTUU6IEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBwYWNrYWdlIGxpbmUgYm91
bmRzIGludG8gU2VsZWN0aW9uR2VvbWV0cnkuIFdlIHNob3VsZCBmaW5kCiAgICAgLy8gdGhlIHJp
Z2h0IGFuZCBsZWZ0IGV4dGVudCBvZiB0aGUgc2VsZWN0aW9uIG9uY2UgZm9yIHRoZSBlbnRpcmUg
c2VsZWN0ZWQgUmFuZ2UsIHBlcmhhcHMKICAgICAvLyB1c2luZyB0aGUgUmFuZ2UncyBjb21tb24g
YW5jZXN0b3IuCiAgICAgSW50UmVjdCBsaW5lRXh0ZW50UmVjdDsKQEAgLTEyOCw5ICsxMjgsOSBA
QCB2b2lkIFJlbmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlv
blJlY3Q+JiByZWN0cywgdW5zaWduZWQsCiAgICAgaWYgKCFjb250YWluaW5nQmxvY2stPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIGxpbmVFeHRlbnRCb3VuZHMgPSBsaW5lRXh0
ZW50Qm91bmRzLnRyYW5zcG9zZWRSZWN0KCk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNv
bnNpZGVyIGVpdGhlciBtYWtpbmcgU2VsZWN0aW9uUmVjdCBhIHN0cnVjdCBvciBiZXR0ZXIgb3Jn
YW5pemUgaXRzIG9wdGlvbmFsIGZpZWxkcyBpbnRvCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
b25zaWRlciBlaXRoZXIgbWFraW5nIFNlbGVjdGlvbkdlb21ldHJ5IGEgc3RydWN0IG9yIGJldHRl
ciBvcmdhbml6ZSBpdHMgb3B0aW9uYWwgZmllbGRzIGludG8KICAgICAvLyBhbiBhdXhpbGlhcnkg
c3RydWN0IHRvIHNpbXBsaWZ5IGl0cyBpbml0aWFsaXphdGlvbi4KLSAgICByZWN0cy5hcHBlbmQo
U2VsZWN0aW9uUmVjdChhYnNvbHV0ZUJvdW5kcywgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLmRp
cmVjdGlvbigpLCBsaW5lRXh0ZW50Qm91bmRzLngoKSwgbGluZUV4dGVudEJvdW5kcy5tYXhYKCks
IGxpbmVFeHRlbnRCb3VuZHMubWF4WSgpLCAwLCBmYWxzZSAvKiBsaW5lIGJyZWFrICovLCBpc0Zp
cnN0T25MaW5lLCBpc0xhc3RPbkxpbmUsIGZhbHNlIC8qIGNvbnRhaW5zIHN0YXJ0ICovLCBmYWxz
ZSAvKiBjb250YWlucyBlbmQgKi8sIGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpLCBpc0ZpeGVkLCBmYWxzZSAvKiBydWJ5IHRleHQgKi8sIHZpZXcoKS5w
YWdlTnVtYmVyRm9yQmxvY2tQcm9ncmVzc2lvbk9mZnNldChhYnNvbHV0ZUJvdW5kcy54KCkpKSk7
CisgICAgZ2VvbWV0cmllcy5hcHBlbmQoU2VsZWN0aW9uR2VvbWV0cnkoYWJzb2x1dGVCb3VuZHMs
IGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5kaXJlY3Rpb24oKSwgbGluZUV4dGVudEJvdW5kcy54
KCksIGxpbmVFeHRlbnRCb3VuZHMubWF4WCgpLCBsaW5lRXh0ZW50Qm91bmRzLm1heFkoKSwgMCwg
ZmFsc2UgLyogbGluZSBicmVhayAqLywgaXNGaXJzdE9uTGluZSwgaXNMYXN0T25MaW5lLCBmYWxz
ZSAvKiBjb250YWlucyBzdGFydCAqLywgZmFsc2UgLyogY29udGFpbnMgZW5kICovLCBjb250YWlu
aW5nQmxvY2stPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgaXNGaXhlZCwgZmFs
c2UgLyogcnVieSB0ZXh0ICovLCB2aWV3KCkucGFnZU51bWJlckZvckJsb2NrUHJvZ3Jlc3Npb25P
ZmZzZXQoYWJzb2x1dGVCb3VuZHMueCgpKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggMjU3ZTFjMDA0MjU5YzA5ZGEzMmUyMTM1NTM3ZWRj
N2FmMjM4MTZmMi4uMTI5Njc1OTBiNGMzMzg0ZDNkMTU0MWUzYWQwMDg5Y2NlM2UxMzJhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYXJlYUVsZW1lbnRGb2N1c0NoYW5nZWQoSFRNTEFyZWFFbGVtZW50Kik7
CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIGNvbGxlY3RTZWxlY3Rp
b25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mLCB1bnNpZ25lZCwgdW5zaWduZWQpIG92ZXJy
aWRlOworICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVjdG9yPFNlbGVjdGlv
bkdlb21ldHJ5PiYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAg
IHZvaWQgc2V0SXNHZW5lcmF0ZWRDb250ZW50KGJvb2wgZ2VuZXJhdGVkID0gdHJ1ZSkgeyBtX2lz
R2VuZXJhdGVkQ29udGVudCA9IGdlbmVyYXRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCAzYjIzMGYxYmJmNzEwMWUxYTA0ZjIyNjY0MTli
M2UyMjYyYmQ2OGY0Li5iYjBjOTc3M2IyMjg4YmM4MWEzY2JlNzVjNzBmYTNmMDZlZTljYjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMzks
NyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIKKyNpbmNsdWRlICJT
ZWxlY3Rpb25HZW9tZXRyeS5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE3
OCw3ICsxNzgsNyBAQCB2b2lkIFJlbmRlckxpbmVCcmVhazo6dXBkYXRlRnJvbVN0eWxlKCkKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFJlbmRlckxpbmVCcmVhazo6Y29sbGVj
dFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVjdHMsIHVuc2lnbmVkLCB1
bnNpZ25lZCkKK3ZvaWQgUmVuZGVyTGluZUJyZWFrOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmll
cyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiByZWN0cywgdW5zaWduZWQsIHVuc2lnbmVkKQog
ewogICAgIGF1dG8gcnVuID0gTGF5b3V0SW50ZWdyYXRpb246OnJ1bkZvcigqdGhpcyk7CiAKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIFJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNlbGVjdGlvblJl
Y3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVjdHMsIHVuc2lnbgogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmVjdHMuYXBwZW5kKFNlbGVjdGlvblJlY3QoYWJzUmVjdCwgcnVuLT5kaXJlY3Rp
b24oKSwgZXh0ZW50c1JlY3QueCgpLCBleHRlbnRzUmVjdC5tYXhYKCksIGV4dGVudHNSZWN0Lm1h
eFkoKSwgMCwgcnVuLT5pc0xpbmVCcmVhaygpLCBpc0ZpcnN0T25MaW5lLCBpc0xhc3RPbkxpbmUs
IGZhbHNlLCBmYWxzZSwgYm94SXNIb3Jpem9udGFsLCBpc0ZpeGVkLCBjb250YWluaW5nQmxvY2st
PmlzUnVieVRleHQoKSwgdmlldygpLnBhZ2VOdW1iZXJGb3JCbG9ja1Byb2dyZXNzaW9uT2Zmc2V0
KGFic1JlY3QueCgpKSkpOworICAgIHJlY3RzLmFwcGVuZChTZWxlY3Rpb25HZW9tZXRyeShhYnNS
ZWN0LCBydW4tPmRpcmVjdGlvbigpLCBleHRlbnRzUmVjdC54KCksIGV4dGVudHNSZWN0Lm1heFgo
KSwgZXh0ZW50c1JlY3QubWF4WSgpLCAwLCBydW4tPmlzTGluZUJyZWFrKCksIGlzRmlyc3RPbkxp
bmUsIGlzTGFzdE9uTGluZSwgZmFsc2UsIGZhbHNlLCBib3hJc0hvcml6b250YWwsIGlzRml4ZWQs
IGNvbnRhaW5pbmdCbG9jay0+aXNSdWJ5VGV4dCgpLCB2aWV3KCkucGFnZU51bWJlckZvckJsb2Nr
UHJvZ3Jlc3Npb25PZmZzZXQoYWJzUmVjdC54KCkpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IGU3NTNlNDU1MDBlMGZjOWQy
Y2VkY2ZmMWRlZDk2NWVjNmI0ZTU1OWEuLmIzYTg2ZWVjZjY0OWM3MGI3MjJiZmY1ZmNiOGNlZWI3
ODdkNTUwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdh
c0ZpeGVkID0gbnVsbHB0cikgY29uc3QgZmluYWw7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2b2lkIGNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mLCB1
bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgZmluYWw7CisgICAgdm9pZCBjb2xsZWN0U2VsZWN0
aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpIGZpbmFsOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDRiMDY5NTIzODE2ZDFlYTZhYmY3ZmY3OGE0
NWM2NmQzOGVlODQ3MGIuLmY0YzFjZWVmNjEwMjQ0ZjIwMDVlMDJmNzU4ZTZjMzc5MmUwYzU5YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC03OSw3ICs3
OSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJTZWxlY3Rpb25SZWN0LmgiCisjaW5jbHVkZSAiU2VsZWN0
aW9uR2VvbWV0cnkuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MTcsMTMg
KzcxNywxMyBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogLy8gd2hpY2ggYXJlIGFubm90YXRl
ZCB3aXRoIGFkZGl0aW9uYWwgc3RhdGUgd2hpY2ggaGVscHMgaU9TIGRyYXcgc2VsZWN0aW9ucyBp
biBpdHMgdW5pcXVlIHdheS4KIC8vIE5vIGFubm90YXRpb25zIGFyZSBhZGRlZCBpbiB0aGlzIGNs
YXNzLgogLy8gRklYTUU6IE1vdmUgdG8gUmVuZGVyVGV4dCB3aXRoIGFic29sdXRlUmVjdHNGb3JS
YW5nZSgpPwotdm9pZCBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8
U2VsZWN0aW9uUmVjdD4mIHJlY3RzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQordm9p
ZCBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rp
b25HZW9tZXRyeT4mIGdlb21ldHJpZXMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7
CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CiAKICAgICBpZiAoIWZpcnN0Q2hpbGRTbG93
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlYktpdCdzIHBvc2l0aW9uIGZvciBhbiBlbXB0eSBz
cGFuIGFmdGVyIGEgQlIgaXMgaW5jb3JyZWN0LCBzbyB3ZSBjYW4ndCB0cnVzdCAKLSAgICAgICAg
Ly8gcXVhZHMgZm9yIHRoZW0uIFdlIGRvbid0IG5lZWQgc2VsZWN0aW9uIHJlY3RzIGZvciB0aG9z
ZSBhbnl3YXkgdGhvdWdoLCBzaW5jZSB0aGV5IAorICAgICAgICAvLyBxdWFkcyBmb3IgdGhlbS4g
V2UgZG9uJ3QgbmVlZCBzZWxlY3Rpb24gZ2VvbWV0cmllcyBmb3IgdGhvc2UgYW55d2F5IHRob3Vn
aCwgc2luY2UgdGhleSAKICAgICAgICAgLy8gYXJlIGp1c3QgZW1wdHkgY29udGFpbmVycy4gU2Vl
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNTg+LgogICAgICAg
ICBSZW5kZXJPYmplY3QqIHByZXZpb3VzID0gcHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgIE5v
ZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CkBAIC03MzksNyArNzM5LDcgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3Rz
LCB1bnNpZ25lZAogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZRdWFkcyA9IHF1YWRzLnNpemUoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZRdWFkczsgKytpKQotICAgICAg
ICByZWN0cy5hcHBlbmQoU2VsZWN0aW9uUmVjdChxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0Jv
eCgpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCB2aWV3KCkucGFnZU51bWJlckZvckJsb2Nr
UHJvZ3Jlc3Npb25PZmZzZXQocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKS54KCkpKSk7
CisgICAgICAgIGdlb21ldHJpZXMuYXBwZW5kKFNlbGVjdGlvbkdlb21ldHJ5KHF1YWRzW2ldLmVu
Y2xvc2luZ0JvdW5kaW5nQm94KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCksIHZpZXcoKS5w
YWdlTnVtYmVyRm9yQmxvY2tQcm9ncmVzc2lvbk9mZnNldChxdWFkc1tpXS5lbmNsb3NpbmdCb3Vu
ZGluZ0JveCgpLngoKSkpKTsKIH0KICNlbmRpZgogCkBAIC0yMTE3LDIyICsyMTE3LDIyIEBAIHN0
YXRpYyBib29sIGludGVydmFsc1N1ZmZpY2llbnRseU92ZXJsYXAoaW50IHN0YXJ0QSwgaW50IGVu
ZEEsIGludCBzdGFydEIsIGludCBlCiAgICAgcmV0dXJuIG1pbkVuZCAtIG1heFN0YXJ0ID49IHN1
ZmZpY2llbnRPdmVybGFwICogc3RkOjptaW4obGVuZ3RoQSwgbGVuZ3RoQik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBhZGp1c3RMaW5lSGVpZ2h0T2ZTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2Vs
ZWN0aW9uUmVjdD4mIHJlY3RzLCBzaXplX3QgbnVtYmVyT2ZSZWN0cywgaW50IGxpbmVOdW1iZXIs
IGludCBsaW5lVG9wLCBpbnQgbGluZUhlaWdodCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGp1c3RM
aW5lSGVpZ2h0T2ZTZWxlY3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4m
IGdlb21ldHJpZXMsIHNpemVfdCBudW1iZXJPZkdlb21ldHJpZXMsIGludCBsaW5lTnVtYmVyLCBp
bnQgbGluZVRvcCwgaW50IGxpbmVIZWlnaHQpCiB7Ci0gICAgQVNTRVJUKHJlY3RzLnNpemUoKSA+
PSBudW1iZXJPZlJlY3RzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gbnVtYmVyT2ZSZWN0czsgaTsg
KSB7CisgICAgQVNTRVJUKGdlb21ldHJpZXMuc2l6ZSgpID49IG51bWJlck9mR2VvbWV0cmllcyk7
CisgICAgZm9yIChzaXplX3QgaSA9IG51bWJlck9mR2VvbWV0cmllczsgaTsgKSB7CiAgICAgICAg
IC0taTsKLSAgICAgICAgaWYgKHJlY3RzW2ldLmxpbmVOdW1iZXIoKSkKKyAgICAgICAgaWYgKGdl
b21ldHJpZXNbaV0ubGluZU51bWJlcigpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHJl
Y3RzW2ldLnNldExpbmVOdW1iZXIobGluZU51bWJlcik7Ci0gICAgICAgIHJlY3RzW2ldLnNldExv
Z2ljYWxUb3AobGluZVRvcCk7Ci0gICAgICAgIHJlY3RzW2ldLnNldExvZ2ljYWxIZWlnaHQobGlu
ZUhlaWdodCk7CisgICAgICAgIGdlb21ldHJpZXNbaV0uc2V0TGluZU51bWJlcihsaW5lTnVtYmVy
KTsKKyAgICAgICAgZ2VvbWV0cmllc1tpXS5zZXRMb2dpY2FsVG9wKGxpbmVUb3ApOworICAgICAg
ICBnZW9tZXRyaWVzW2ldLnNldExvZ2ljYWxIZWlnaHQobGluZUhlaWdodCk7CiAgICAgfQogfQog
Ci1zdGF0aWMgU2VsZWN0aW9uUmVjdCBjb2FsZXNjZVNlbGVjdGlvblJlY3RzKGNvbnN0IFNlbGVj
dGlvblJlY3QmIG9yaWdpbmFsLCBjb25zdCBTZWxlY3Rpb25SZWN0JiBwcmV2aW91cykKK3N0YXRp
YyBTZWxlY3Rpb25HZW9tZXRyeSBjb2FsZXNjZVNlbGVjdGlvbkdlb21ldHJpZXMoY29uc3QgU2Vs
ZWN0aW9uR2VvbWV0cnkmIG9yaWdpbmFsLCBjb25zdCBTZWxlY3Rpb25HZW9tZXRyeSYgcHJldmlv
dXMpCiB7Ci0gICAgU2VsZWN0aW9uUmVjdCByZXN1bHQodW5pb25SZWN0KHByZXZpb3VzLnJlY3Qo
KSwgb3JpZ2luYWwucmVjdCgpKSwgb3JpZ2luYWwuaXNIb3Jpem9udGFsKCksIG9yaWdpbmFsLnBh
Z2VOdW1iZXIoKSk7CisgICAgU2VsZWN0aW9uR2VvbWV0cnkgcmVzdWx0KHVuaW9uUmVjdChwcmV2
aW91cy5yZWN0KCksIG9yaWdpbmFsLnJlY3QoKSksIG9yaWdpbmFsLmlzSG9yaXpvbnRhbCgpLCBv
cmlnaW5hbC5wYWdlTnVtYmVyKCkpOwogICAgIHJlc3VsdC5zZXREaXJlY3Rpb24ob3JpZ2luYWwu
Y29udGFpbnNTdGFydCgpIHx8IG9yaWdpbmFsLmNvbnRhaW5zRW5kKCkgPyBvcmlnaW5hbC5kaXJl
Y3Rpb24oKSA6IHByZXZpb3VzLmRpcmVjdGlvbigpKTsKICAgICByZXN1bHQuc2V0Q29udGFpbnNT
dGFydChwcmV2aW91cy5jb250YWluc1N0YXJ0KCkgfHwgb3JpZ2luYWwuY29udGFpbnNTdGFydCgp
KTsKICAgICByZXN1bHQuc2V0Q29udGFpbnNFbmQocHJldmlvdXMuY29udGFpbnNFbmQoKSB8fCBv
cmlnaW5hbC5jb250YWluc0VuZCgpKTsKQEAgLTIxNDEsMTUgKzIxNDEsMTUgQEAgc3RhdGljIFNl
bGVjdGlvblJlY3QgY29hbGVzY2VTZWxlY3Rpb25SZWN0cyhjb25zdCBTZWxlY3Rpb25SZWN0JiBv
cmlnaW5hbCwgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1WZWN0b3I8U2VsZWN0aW9u
UmVjdD4gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNXaXRob3V0VW5pb25JbnRl
cmlvckxpbmVzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKK1ZlY3RvcjxTZWxlY3Rpb25HZW9t
ZXRyeT4gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllc1dpdGhvdXRVbmlv
bkludGVyaW9yTGluZXMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIHJldHVybiBj
b2xsZWN0U2VsZWN0aW9uUmVjdHNJbnRlcm5hbChyYW5nZSkucmVjdHM7CisgICAgcmV0dXJuIGNv
bGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzSW50ZXJuYWwocmFuZ2UpLmdlb21ldHJpZXM7CiB9CiAK
LWF1dG8gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNJbnRlcm5hbChjb25zdCBT
aW1wbGVSYW5nZSYgcmFuZ2UpIC0+IFNlbGVjdGlvblJlY3RzCithdXRvIFJlbmRlck9iamVjdDo6
Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNJbnRlcm5hbChjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UpIC0+IFNlbGVjdGlvbkdlb21ldHJpZXMKIHsKLSAgICBWZWN0b3I8U2VsZWN0aW9uUmVjdD4g
cmVjdHM7Ci0gICAgVmVjdG9yPFNlbGVjdGlvblJlY3Q+IG5ld1JlY3RzOworICAgIFZlY3RvcjxT
ZWxlY3Rpb25HZW9tZXRyeT4gZ2VvbWV0cmllczsKKyAgICBWZWN0b3I8U2VsZWN0aW9uR2VvbWV0
cnk+IG5ld0dlb21ldHJpZXM7CiAgICAgYm9vbCBoYXNGbGlwcGVkV3JpdGluZ01vZGUgPSByYW5n
ZS5zdGFydC5jb250YWluZXItPnJlbmRlcmVyKCkgJiYgcmFuZ2Uuc3RhcnQuY29udGFpbmVyLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CiAgICAgYm9v
bCBjb250YWluc0RpZmZlcmVudFdyaXRpbmdNb2RlcyA9IGZhbHNlOwogICAgIGZvciAoYXV0byYg
bm9kZSA6IGludGVyc2VjdGluZ05vZGVzV2l0aERlcHJlY2F0ZWRaZXJvT2Zmc2V0U3RhcnRRdWly
ayhyYW5nZSkpIHsKQEAgLTIxNjMsMjEgKzIxNjMsMjEgQEAgYXV0byBSZW5kZXJPYmplY3Q6OmNv
bGxlY3RTZWxlY3Rpb25SZWN0c0ludGVybmFsKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkgLT4g
U2UKICAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kaW5nIDAgZm9yIHRoZSBzdGFydE9mZnNldCBp
cyBhIHdlaXJkIHdheSBvZiB0ZWxsaW5nIHRoZSByZW5kZXJlciB0aGF0IHRoZSBzZWxlY3Rpb24K
ICAgICAgICAgICAgIC8vIGRvZXNuJ3Qgc3RhcnQgaW5zaWRlIGl0LCBzaW5jZSB3ZSdsbCBhbHNv
IHNlbmQgMCBpZiB0aGUgc2VsZWN0aW9uICpkb2VzKiBzdGFydCBpbiBpdCwgYXQgb2Zmc2V0IDAu
CiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gRklYTUU6IFNlbGVjdGlvbiBlbmRwb2lu
dHMgYXJlbid0IGFsd2F5cyBpbnNpZGUgbGVhdmVzLCBhbmQgd2Ugb25seSBidWlsZCBTZWxlY3Rp
b25SZWN0cyBmb3IgbGVhdmVzLAotICAgICAgICAgICAgLy8gc28gd2UgY2FuJ3QgYWNjdXJhdGVs
eSBkZXRlcm1pbmUgd2hpY2ggU2VsZWN0aW9uUmVjdHMgY29udGFpbiB0aGUgc2VsZWN0aW9uIHN0
YXJ0IGFuZCBlbmQgdXNpbmcKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTZWxlY3Rpb24gZW5kcG9p
bnRzIGFyZW4ndCBhbHdheXMgaW5zaWRlIGxlYXZlcywgYW5kIHdlIG9ubHkgYnVpbGQgU2VsZWN0
aW9uR2VvbWV0cmllcyBmb3IgbGVhdmVzLAorICAgICAgICAgICAgLy8gc28gd2UgY2FuJ3QgYWNj
dXJhdGVseSBkZXRlcm1pbmUgd2hpY2ggU2VsZWN0aW9uR2VvbWV0cmllcyBjb250YWluIHRoZSBz
ZWxlY3Rpb24gc3RhcnQgYW5kIGVuZCB1c2luZwogICAgICAgICAgICAgLy8gb25seSB0aGUgb2Zm
c2V0cyBvZiB0aGUgc3RhcnQgYW5kIGVuZC4gV2UgbmVlZCB0byBwYXNzIHRoZSB3aG9sZSBSYW5n
ZS4KICAgICAgICAgICAgIGludCBiZWdpblNlbGVjdGlvbk9mZnNldCA9IGlzU3RhcnROb2RlID8g
cmFuZ2Uuc3RhcnQub2Zmc2V0IDogMDsKICAgICAgICAgICAgIGludCBlbmRTZWxlY3Rpb25PZmZz
ZXQgPSBpc0VuZE5vZGUgPyByYW5nZS5lbmQub2Zmc2V0IDogc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKTsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5jb2xsZWN0U2VsZWN0aW9uUmVjdHMo
bmV3UmVjdHMsIGJlZ2luU2VsZWN0aW9uT2Zmc2V0LCBlbmRTZWxlY3Rpb25PZmZzZXQpOwotICAg
ICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3Rpb25SZWN0IDogbmV3UmVjdHMpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5jb250YWluc1N0YXJ0KCkgJiYgIWlzU3RhcnROb2Rl
KQotICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldENvbnRhaW5zU3RhcnQoZmFs
c2UpOwotICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmNvbnRhaW5zRW5kKCkgJiYg
IWlzRW5kTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdC5zZXRDb250YWlu
c0VuZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblJlY3QubG9naWNhbFdp
ZHRoKCkgfHwgc2VsZWN0aW9uUmVjdC5sb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJlY3RzLmFwcGVuZChzZWxlY3Rpb25SZWN0KTsKKyAgICAgICAgICAgIHJlbmRlcmVyLT5j
b2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhuZXdHZW9tZXRyaWVzLCBiZWdpblNlbGVjdGlvbk9m
ZnNldCwgZW5kU2VsZWN0aW9uT2Zmc2V0KTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc2VsZWN0
aW9uR2VvbWV0cnkgOiBuZXdHZW9tZXRyaWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dGlvbkdlb21ldHJ5LmNvbnRhaW5zU3RhcnQoKSAmJiAhaXNTdGFydE5vZGUpCisgICAgICAgICAg
ICAgICAgICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldENvbnRhaW5zU3RhcnQoZmFsc2UpOworICAg
ICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25HZW9tZXRyeS5jb250YWluc0VuZCgpICYmICFpc0Vu
ZE5vZGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldENvbnRhaW5z
RW5kKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uR2VvbWV0cnkubG9naWNh
bFdpZHRoKCkgfHwgc2VsZWN0aW9uR2VvbWV0cnkubG9naWNhbEhlaWdodCgpKQorICAgICAgICAg
ICAgICAgICAgICBnZW9tZXRyaWVzLmFwcGVuZChzZWxlY3Rpb25HZW9tZXRyeSk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBuZXdSZWN0cy5zaHJpbmsoMCk7CisgICAgICAgICAgICBuZXdH
ZW9tZXRyaWVzLnNocmluaygwKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjE4OCwxNiArMjE4
OCwxNiBAQCBhdXRvIFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzSW50ZXJuYWwo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSAtPiBTZQogICAgICAgICAgICAgaGFzRmxpcHBlZFdy
aXRpbmdNb2RlID0gYW5jZXN0b3ItPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tz
V3JpdGluZ01vZGUoKTsKICAgICB9CiAKLSAgICBhdXRvIG51bWJlck9mUmVjdHMgPSByZWN0cy5z
aXplKCk7CisgICAgYXV0byBudW1iZXJPZkdlb21ldHJpZXMgPSBnZW9tZXRyaWVzLnNpemUoKTsK
IAogICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gZW5kcyBpbiBhIEJSLCB0aGVuIGFkZCB0aGUgbGlu
ZSBicmVhayBiaXQgdG8gdGhlIGxhc3QgcmVjdCB3ZSBoYXZlLgogICAgIC8vIFRoaXMgd2lsbCBj
YXVzZSBpdHMgc2VsZWN0aW9uIHJlY3QgdG8gZXh0ZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUu
Ci0gICAgaWYgKG51bWJlck9mUmVjdHMpIHsKKyAgICBpZiAobnVtYmVyT2ZHZW9tZXRyaWVzKSB7
CiAgICAgICAgIC8vIE9ubHkgc2V0IHRoZSBsaW5lIGJyZWFrIGJpdCBpZiB0aGUgZW5kIG9mIHRo
ZSByYW5nZSBhY3R1YWxseQogICAgICAgICAvLyBleHRlbmRzIGFsbCB0aGUgd2F5IHRvIGluY2x1
ZGUgdGhlIDxicj4uIFZpc2libGVQb3NpdGlvbiBoZWxwcyB0bwogICAgICAgICAvLyBmaWd1cmUg
dGhpcyBvdXQuCiAgICAgICAgIGlmIChpczxIVE1MQlJFbGVtZW50PihWaXNpYmxlUG9zaXRpb24o
bWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdlLmVuZCkpLmRlZXBFcXVpdmFsZW50KCku
Zmlyc3ROb2RlKCkpKQotICAgICAgICAgICAgcmVjdHMubGFzdCgpLnNldElzTGluZUJyZWFrKHRy
dWUpOworICAgICAgICAgICAgZ2VvbWV0cmllcy5sYXN0KCkuc2V0SXNMaW5lQnJlYWsodHJ1ZSk7
CiAgICAgfQogCiAgICAgaW50IGxpbmVUb3AgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpOwpAQCAtMjIwNiwxMiArMjIwNiwxMiBAQCBhdXRvIFJlbmRlck9iamVjdDo6Y29sbGVjdFNl
bGVjdGlvblJlY3RzSW50ZXJuYWwoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSAtPiBTZQogICAg
IGludCBsYXN0TGluZUJvdHRvbSA9IGxpbmVCb3R0b207CiAgICAgaW50IGxpbmVOdW1iZXIgPSAw
OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyArK2kpIHsKLSAg
ICAgICAgaW50IGN1cnJlbnRSZWN0VG9wID0gcmVjdHNbaV0ubG9naWNhbFRvcCgpOwotICAgICAg
ICBpbnQgY3VycmVudFJlY3RCb3R0b20gPSBjdXJyZW50UmVjdFRvcCArIHJlY3RzW2ldLmxvZ2lj
YWxIZWlnaHQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mR2VvbWV0cmll
czsgKytpKSB7CisgICAgICAgIGludCBjdXJyZW50UmVjdFRvcCA9IGdlb21ldHJpZXNbaV0ubG9n
aWNhbFRvcCgpOworICAgICAgICBpbnQgY3VycmVudFJlY3RCb3R0b20gPSBjdXJyZW50UmVjdFRv
cCArIGdlb21ldHJpZXNbaV0ubG9naWNhbEhlaWdodCgpOwogCiAgICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gY291bnQgdGhlIHJ1YnkgdGV4dCBhcyBhIHNlcGFyYXRlIGxpbmUuCi0gICAgICAg
IGlmIChpbnRlcnZhbHNTdWZmaWNpZW50bHlPdmVybGFwKGN1cnJlbnRSZWN0VG9wLCBjdXJyZW50
UmVjdEJvdHRvbSwgbGluZVRvcCwgbGluZUJvdHRvbSkgfHwgKGkgJiYgcmVjdHNbaV0uaXNSdWJ5
VGV4dCgpKSkgeworICAgICAgICBpZiAoaW50ZXJ2YWxzU3VmZmljaWVudGx5T3ZlcmxhcChjdXJy
ZW50UmVjdFRvcCwgY3VycmVudFJlY3RCb3R0b20sIGxpbmVUb3AsIGxpbmVCb3R0b20pIHx8IChp
ICYmIGdlb21ldHJpZXNbaV0uaXNSdWJ5VGV4dCgpKSkgewogICAgICAgICAgICAgLy8gR3JvdyB0
aGUgY3VycmVudCBsaW5lIGJvdW5kcy4KICAgICAgICAgICAgIGxpbmVUb3AgPSBzdGQ6Om1pbihs
aW5lVG9wLCBjdXJyZW50UmVjdFRvcCk7CiAgICAgICAgICAgICBsaW5lQm90dG9tID0gc3RkOjpt
YXgobGluZUJvdHRvbSwgY3VycmVudFJlY3RCb3R0b20pOwpAQCAtMjIyMSw3ICsyMjIxLDcgQEAg
YXV0byBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ludGVybmFsKGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSkgLT4gU2UKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBsaW5lQm90dG9tID0gc3RkOjptaW4obGFzdExpbmVUb3AsIGxpbmVCb3R0b20pOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgYWRqdXN0TGluZUhlaWdodE9mU2VsZWN0aW9uUmVjdHMo
cmVjdHMsIGksIGxpbmVOdW1iZXIsIGxpbmVUb3AsIGxpbmVCb3R0b20gLSBsaW5lVG9wKTsKKyAg
ICAgICAgICAgIGFkanVzdExpbmVIZWlnaHRPZlNlbGVjdGlvbkdlb21ldHJpZXMoZ2VvbWV0cmll
cywgaSwgbGluZU51bWJlciwgbGluZVRvcCwgbGluZUJvdHRvbSAtIGxpbmVUb3ApOwogICAgICAg
ICAgICAgaWYgKCFoYXNGbGlwcGVkV3JpdGluZ01vZGUpIHsKICAgICAgICAgICAgICAgICBsYXN0
TGluZVRvcCA9IGxpbmVUb3A7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZWN0Qm90dG9t
ID49IGxhc3RMaW5lVG9wKSB7CkBAIC0yMjM0LDcgKzIyMzQsNyBAQCBhdXRvIFJlbmRlck9iamVj
dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzSW50ZXJuYWwoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
KSAtPiBTZQogICAgICAgICAgICAgICAgIGxpbmVCb3R0b20gPSBjdXJyZW50UmVjdEJvdHRvbTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbGFzdExpbmVCb3R0b20gPSBs
aW5lQm90dG9tOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVjdFRvcCA8PSBsYXN0TGlu
ZUJvdHRvbSAmJiBpICYmIHJlY3RzW2ldLnBhZ2VOdW1iZXIoKSA9PSByZWN0c1tpIC0gMV0ucGFn
ZU51bWJlcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZWN0VG9wIDw9IGxhc3RM
aW5lQm90dG9tICYmIGkgJiYgZ2VvbWV0cmllc1tpXS5wYWdlTnVtYmVyKCkgPT0gZ2VvbWV0cmll
c1tpIC0gMV0ucGFnZU51bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RMaW5lVG9w
ID0gbGluZVRvcDsKICAgICAgICAgICAgICAgICAgICAgbGluZUJvdHRvbSA9IGxhc3RMaW5lVG9w
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjQ4LDM1ICsyMjQ4LDM1IEBAIGF1dG8g
UmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNJbnRlcm5hbChjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UpIC0+IFNlCiAgICAgfQogCiAgICAgLy8gQWRqdXN0IGxpbmUgaGVpZ2h0Lgot
ICAgIGFkanVzdExpbmVIZWlnaHRPZlNlbGVjdGlvblJlY3RzKHJlY3RzLCBudW1iZXJPZlJlY3Rz
LCBsaW5lTnVtYmVyLCBsaW5lVG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7CisgICAgYWRqdXN0
TGluZUhlaWdodE9mU2VsZWN0aW9uR2VvbWV0cmllcyhnZW9tZXRyaWVzLCBudW1iZXJPZkdlb21l
dHJpZXMsIGxpbmVOdW1iZXIsIGxpbmVUb3AsIGxpbmVCb3R0b20gLSBsaW5lVG9wKTsKIAogICAg
IC8vIFNvcnQgdGhlIHJlY3RhbmdsZXMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZ2Fwcy4g
VGhlIHJlY3RhbmdsZXMgY291bGQgYmUgdW5zb3J0ZWQgd2hlbgogICAgIC8vIHRoZXJlIGlzIHJ1
YnkgdGV4dCBhbmQgd2UgY291bGQgaGF2ZSBnYXBzIG9uIHRoZSBsaW5lIHdoZW4gYWRqYWNlbnQg
ZWxlbWVudHMgb24gdGhlIGxpbmUKICAgICAvLyBoYXZlIGEgZGlmZmVyZW50IG9yaWVudGF0aW9u
LgogICAgIHNpemVfdCBmaXJzdFJlY3RXaXRoQ3VycmVudExpbmVOdW1iZXIgPSAwOwotICAgIGZv
ciAoc2l6ZV90IGN1cnJlbnRSZWN0ID0gMTsgY3VycmVudFJlY3QgPCBudW1iZXJPZlJlY3RzOyAr
K2N1cnJlbnRSZWN0KSB7Ci0gICAgICAgIGlmIChyZWN0c1tjdXJyZW50UmVjdF0ubGluZU51bWJl
cigpICE9IHJlY3RzW2N1cnJlbnRSZWN0IC0gMV0ubGluZU51bWJlcigpKSB7CisgICAgZm9yIChz
aXplX3QgY3VycmVudFJlY3QgPSAxOyBjdXJyZW50UmVjdCA8IG51bWJlck9mR2VvbWV0cmllczsg
KytjdXJyZW50UmVjdCkgeworICAgICAgICBpZiAoZ2VvbWV0cmllc1tjdXJyZW50UmVjdF0ubGlu
ZU51bWJlcigpICE9IGdlb21ldHJpZXNbY3VycmVudFJlY3QgLSAxXS5saW5lTnVtYmVyKCkpIHsK
ICAgICAgICAgICAgIGZpcnN0UmVjdFdpdGhDdXJyZW50TGluZU51bWJlciA9IGN1cnJlbnRSZWN0
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlY3RzW2N1
cnJlbnRSZWN0XS5sb2dpY2FsTGVmdCgpID49IHJlY3RzW2N1cnJlbnRSZWN0IC0gMV0ubG9naWNh
bExlZnQoKSkKKyAgICAgICAgaWYgKGdlb21ldHJpZXNbY3VycmVudFJlY3RdLmxvZ2ljYWxMZWZ0
KCkgPj0gZ2VvbWV0cmllc1tjdXJyZW50UmVjdCAtIDFdLmxvZ2ljYWxMZWZ0KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3QgPSBy
ZWN0c1tjdXJyZW50UmVjdF07CisgICAgICAgIGF1dG8gc2VsZWN0aW9uUmVjdCA9IGdlb21ldHJp
ZXNbY3VycmVudFJlY3RdOwogICAgICAgICBzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gY3Vy
cmVudFJlY3Q7IGkgPiBmaXJzdFJlY3RXaXRoQ3VycmVudExpbmVOdW1iZXIgJiYgc2VsZWN0aW9u
UmVjdC5sb2dpY2FsTGVmdCgpIDwgcmVjdHNbaSAtIDFdLmxvZ2ljYWxMZWZ0KCk7IC0taSkKLSAg
ICAgICAgICAgIHJlY3RzW2ldID0gcmVjdHNbaSAtIDFdOwotICAgICAgICByZWN0c1tpXSA9IHNl
bGVjdGlvblJlY3Q7CisgICAgICAgIGZvciAoaSA9IGN1cnJlbnRSZWN0OyBpID4gZmlyc3RSZWN0
V2l0aEN1cnJlbnRMaW5lTnVtYmVyICYmIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSA8IGdl
b21ldHJpZXNbaSAtIDFdLmxvZ2ljYWxMZWZ0KCk7IC0taSkKKyAgICAgICAgICAgIGdlb21ldHJp
ZXNbaV0gPSBnZW9tZXRyaWVzW2kgLSAxXTsKKyAgICAgICAgZ2VvbWV0cmllc1tpXSA9IHNlbGVj
dGlvblJlY3Q7CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaiA9IDE7IGogPCBudW1iZXJPZlJl
Y3RzOyArK2opIHsKLSAgICAgICAgaWYgKHJlY3RzW2pdLmxpbmVOdW1iZXIoKSAhPSByZWN0c1tq
IC0gMV0ubGluZU51bWJlcigpKQorICAgIGZvciAoc2l6ZV90IGogPSAxOyBqIDwgbnVtYmVyT2ZH
ZW9tZXRyaWVzOyArK2opIHsKKyAgICAgICAgaWYgKGdlb21ldHJpZXNbal0ubGluZU51bWJlcigp
ICE9IGdlb21ldHJpZXNbaiAtIDFdLmxpbmVOdW1iZXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBTZWxlY3Rpb25SZWN0JiBwcmV2aW91c1JlY3QgPSByZWN0c1tqIC0gMV07Cisg
ICAgICAgIGF1dG8mIHByZXZpb3VzUmVjdCA9IGdlb21ldHJpZXNbaiAtIDFdOwogICAgICAgICBi
b29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0gKHByZXZpb3VzUmVjdC5kaXJl
Y3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgcHJldmlvdXNSZWN0LmNvbnRhaW5zRW5k
KCkpIHx8IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMICYm
IHByZXZpb3VzUmVjdC5jb250YWluc1N0YXJ0KCkpOwogICAgICAgICBpZiAocHJldmlvdXNSZWN0
TWF5Tm90UmVhY2hSaWdodEVkZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaW50
IGFkanVzdGVkV2lkdGggPSByZWN0c1tqXS5sb2dpY2FsTGVmdCgpIC0gcHJldmlvdXNSZWN0Lmxv
Z2ljYWxMZWZ0KCk7CisgICAgICAgIGludCBhZGp1c3RlZFdpZHRoID0gZ2VvbWV0cmllc1tqXS5s
b2dpY2FsTGVmdCgpIC0gcHJldmlvdXNSZWN0LmxvZ2ljYWxMZWZ0KCk7CiAgICAgICAgIGlmIChh
ZGp1c3RlZFdpZHRoID4gcHJldmlvdXNSZWN0LmxvZ2ljYWxXaWR0aCgpKQogICAgICAgICAgICAg
cHJldmlvdXNSZWN0LnNldExvZ2ljYWxXaWR0aChhZGp1c3RlZFdpZHRoKTsKICAgICB9CkBAIC0y
Mjg0LDc4ICsyMjg0LDc4IEBAIGF1dG8gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVj
dHNJbnRlcm5hbChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpIC0+IFNlCiAgICAgaW50IG1heExp
bmVOdW1iZXIgPSBsaW5lTnVtYmVyOwogCiAgICAgLy8gRXh0ZW5kIHJlY3RzIG91dCB0byBlZGdl
cyBhcyBuZWVkZWQuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyAr
K2kpIHsKLSAgICAgICAgU2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9uUmVjdCA9IHJlY3RzW2ldOwot
ICAgICAgICBpZiAoIXNlbGVjdGlvblJlY3QuaXNMaW5lQnJlYWsoKSAmJiBzZWxlY3Rpb25SZWN0
LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5lTnVtYmVyKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZHZW9tZXRyaWVzOyArK2kpIHsKKyAgICAgICAgYXV0byYgc2VsZWN0aW9uR2Vv
bWV0cnkgPSBnZW9tZXRyaWVzW2ldOworICAgICAgICBpZiAoIXNlbGVjdGlvbkdlb21ldHJ5Lmlz
TGluZUJyZWFrKCkgJiYgc2VsZWN0aW9uR2VvbWV0cnkubGluZU51bWJlcigpID49IG1heExpbmVO
dW1iZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHNlbGVjdGlvblJlY3Qu
ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMICYmIHNlbGVjdGlvblJlY3QuaXNGaXJz
dE9uTGluZSgpKSB7Ci0gICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxXaWR0aChz
ZWxlY3Rpb25SZWN0LmxvZ2ljYWxXaWR0aCgpICsgc2VsZWN0aW9uUmVjdC5sb2dpY2FsTGVmdCgp
IC0gc2VsZWN0aW9uUmVjdC5taW5YKCkpOwotICAgICAgICAgICAgc2VsZWN0aW9uUmVjdC5zZXRM
b2dpY2FsTGVmdChzZWxlY3Rpb25SZWN0Lm1pblgoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2Vs
ZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgc2VsZWN0aW9u
UmVjdC5pc0xhc3RPbkxpbmUoKSkKLSAgICAgICAgICAgIHNlbGVjdGlvblJlY3Quc2V0TG9naWNh
bFdpZHRoKHNlbGVjdGlvblJlY3QubWF4WCgpIC0gc2VsZWN0aW9uUmVjdC5sb2dpY2FsTGVmdCgp
KTsKKyAgICAgICAgaWYgKHNlbGVjdGlvbkdlb21ldHJ5LmRpcmVjdGlvbigpID09IFRleHREaXJl
Y3Rpb246OlJUTCAmJiBzZWxlY3Rpb25HZW9tZXRyeS5pc0ZpcnN0T25MaW5lKCkpIHsKKyAgICAg
ICAgICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldExvZ2ljYWxXaWR0aChzZWxlY3Rpb25HZW9tZXRy
eS5sb2dpY2FsV2lkdGgoKSArIHNlbGVjdGlvbkdlb21ldHJ5LmxvZ2ljYWxMZWZ0KCkgLSBzZWxl
Y3Rpb25HZW9tZXRyeS5taW5YKCkpOworICAgICAgICAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0
TG9naWNhbExlZnQoc2VsZWN0aW9uR2VvbWV0cnkubWluWCgpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChzZWxlY3Rpb25HZW9tZXRyeS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYg
c2VsZWN0aW9uR2VvbWV0cnkuaXNMYXN0T25MaW5lKCkpCisgICAgICAgICAgICBzZWxlY3Rpb25H
ZW9tZXRyeS5zZXRMb2dpY2FsV2lkdGgoc2VsZWN0aW9uR2VvbWV0cnkubWF4WCgpIC0gc2VsZWN0
aW9uR2VvbWV0cnkubG9naWNhbExlZnQoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHsgV1RGTW92
ZShyZWN0cyksIG1heExpbmVOdW1iZXIgfTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKGdlb21ldHJp
ZXMpLCBtYXhMaW5lTnVtYmVyIH07CiB9CiAKLVZlY3RvcjxTZWxlY3Rpb25SZWN0PiBSZW5kZXJP
YmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCitW
ZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+IFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvbkdl
b21ldHJpZXMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIGF1dG8gcmVzdWx0ID0g
UmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNJbnRlcm5hbChyYW5nZSk7Ci0gICAg
YXV0byBudW1iZXJPZlJlY3RzID0gcmVzdWx0LnJlY3RzLnNpemUoKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNJbnRlcm5hbChyYW5n
ZSk7CisgICAgYXV0byBudW1iZXJPZkdlb21ldHJpZXMgPSByZXN1bHQuZ2VvbWV0cmllcy5zaXpl
KCk7CiAKICAgICAvLyBVbmlvbiBhbGwgdGhlIHJlY3RhbmdsZXMgb24gaW50ZXJpb3IgbGluZXMg
KGkuZS4gbm90IGZpcnN0IG9yIGxhc3QpLgogICAgIC8vIE9uIGZpcnN0IGFuZCBsYXN0IGxpbmVz
LCBqdXN0IGF2b2lkIGhhdmluZyBvdmVybGFwcyBieSBtZXJnaW5nIGludGVyc2VjdGluZyByZWN0
YW5nbGVzLgotICAgIFZlY3RvcjxTZWxlY3Rpb25SZWN0PiB1bmlvbmVkUmVjdHM7CisgICAgVmVj
dG9yPFNlbGVjdGlvbkdlb21ldHJ5PiBjb2FsZXNjZWRHZW9tZXRyaWVzOwogICAgIEludFJlY3Qg
aW50ZXJpb3JVbmlvblJlY3Q7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJl
Y3RzOyArK2kpIHsKLSAgICAgICAgU2VsZWN0aW9uUmVjdCYgY3VycmVudFJlY3QgPSByZXN1bHQu
cmVjdHNbaV07Ci0gICAgICAgIGlmIChjdXJyZW50UmVjdC5saW5lTnVtYmVyKCkgPT0gMSkgewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZHZW9tZXRyaWVzOyArK2kpIHsKKyAg
ICAgICAgYXV0byYgY3VycmVudEdlb21ldHJ5ID0gcmVzdWx0Lmdlb21ldHJpZXNbaV07CisgICAg
ICAgIGlmIChjdXJyZW50R2VvbWV0cnkubGluZU51bWJlcigpID09IDEpIHsKICAgICAgICAgICAg
IEFTU0VSVChpbnRlcmlvclVuaW9uUmVjdC5pc0VtcHR5KCkpOwotICAgICAgICAgICAgaWYgKCF1
bmlvbmVkUmVjdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgU2VsZWN0aW9uUmVjdCYg
cHJldmlvdXNSZWN0ID0gdW5pb25lZFJlY3RzLmxhc3QoKTsKLSAgICAgICAgICAgICAgICBpZiAo
cHJldmlvdXNSZWN0LnJlY3QoKS5pbnRlcnNlY3RzKGN1cnJlbnRSZWN0LnJlY3QoKSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNSZWN0ID0gY29hbGVzY2VTZWxlY3Rpb25SZWN0cyhj
dXJyZW50UmVjdCwgcHJldmlvdXNSZWN0KTsKKyAgICAgICAgICAgIGlmICghY29hbGVzY2VkR2Vv
bWV0cmllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwcmV2aW91c1JlY3Qg
PSBjb2FsZXNjZWRHZW9tZXRyaWVzLmxhc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAocHJldmlv
dXNSZWN0LnJlY3QoKS5pbnRlcnNlY3RzKGN1cnJlbnRHZW9tZXRyeS5yZWN0KCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHByZXZpb3VzUmVjdCA9IGNvYWxlc2NlU2VsZWN0aW9uR2VvbWV0cmll
cyhjdXJyZW50R2VvbWV0cnksIHByZXZpb3VzUmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IENvdWxkbid0IG1lcmdlIHdpdGggcHJldmlvdXMgcmVjdCwgc28ganVzdCBhcHBlbmRpbmcuCi0g
ICAgICAgICAgICB1bmlvbmVkUmVjdHMuYXBwZW5kKGN1cnJlbnRSZWN0KTsKLSAgICAgICAgfSBl
bHNlIGlmIChjdXJyZW50UmVjdC5saW5lTnVtYmVyKCkgPCByZXN1bHQubWF4TGluZU51bWJlcikg
eworICAgICAgICAgICAgY29hbGVzY2VkR2VvbWV0cmllcy5hcHBlbmQoY3VycmVudEdlb21ldHJ5
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50R2VvbWV0cnkubGluZU51bWJlcigpIDwgcmVz
dWx0Lm1heExpbmVOdW1iZXIpIHsKICAgICAgICAgICAgIGlmIChpbnRlcmlvclVuaW9uUmVjdC5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBTdGFydCBjb2xsZWN0aW5nIGludGVyaW9y
IHJlY3RzLgotICAgICAgICAgICAgICAgIGludGVyaW9yVW5pb25SZWN0ID0gY3VycmVudFJlY3Qu
cmVjdCgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcmlvclVuaW9uUmVjdC5pbnRlcnNl
Y3RzKGN1cnJlbnRSZWN0LnJlY3QoKSkKLSAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9u
UmVjdC5tYXhYKCkgPT0gY3VycmVudFJlY3QucmVjdCgpLngoKQotICAgICAgICAgICAgICAgIHx8
IGludGVyaW9yVW5pb25SZWN0Lm1heFkoKSA9PSBjdXJyZW50UmVjdC5yZWN0KCkueSgpCi0gICAg
ICAgICAgICAgICAgfHwgaW50ZXJpb3JVbmlvblJlY3QueCgpID09IGN1cnJlbnRSZWN0LnJlY3Qo
KS5tYXhYKCkKLSAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9uUmVjdC55KCkgPT0gY3Vy
cmVudFJlY3QucmVjdCgpLm1heFkoKSkgeworICAgICAgICAgICAgICAgIGludGVyaW9yVW5pb25S
ZWN0ID0gY3VycmVudEdlb21ldHJ5LnJlY3QoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50
ZXJpb3JVbmlvblJlY3QuaW50ZXJzZWN0cyhjdXJyZW50R2VvbWV0cnkucmVjdCgpKQorICAgICAg
ICAgICAgICAgIHx8IGludGVyaW9yVW5pb25SZWN0Lm1heFgoKSA9PSBjdXJyZW50R2VvbWV0cnku
cmVjdCgpLngoKQorICAgICAgICAgICAgICAgIHx8IGludGVyaW9yVW5pb25SZWN0Lm1heFkoKSA9
PSBjdXJyZW50R2VvbWV0cnkucmVjdCgpLnkoKQorICAgICAgICAgICAgICAgIHx8IGludGVyaW9y
VW5pb25SZWN0LngoKSA9PSBjdXJyZW50R2VvbWV0cnkucmVjdCgpLm1heFgoKQorICAgICAgICAg
ICAgICAgIHx8IGludGVyaW9yVW5pb25SZWN0LnkoKSA9PSBjdXJyZW50R2VvbWV0cnkucmVjdCgp
Lm1heFkoKSkgewogICAgICAgICAgICAgICAgIC8vIE9ubHkgdW5pb24gdGhlIGxpbmVzIHRoYXQg
YXJlIGF0dGFjaGVkLgogICAgICAgICAgICAgICAgIC8vIEZvciBpQm9va3MsIHRoZSBpbnRlcmlv
ciBsaW5lcyBtYXkgY3Jvc3MgbXVsdGlwbGUgaG9yaXpvbnRhbCBwYWdlcy4KLSAgICAgICAgICAg
ICAgICBpbnRlcmlvclVuaW9uUmVjdC51bml0ZShjdXJyZW50UmVjdC5yZWN0KCkpOworICAgICAg
ICAgICAgICAgIGludGVyaW9yVW5pb25SZWN0LnVuaXRlKGN1cnJlbnRHZW9tZXRyeS5yZWN0KCkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1bmlvbmVkUmVjdHMuYXBw
ZW5kKFNlbGVjdGlvblJlY3QoaW50ZXJpb3JVbmlvblJlY3QsIGN1cnJlbnRSZWN0LmlzSG9yaXpv
bnRhbCgpLCBjdXJyZW50UmVjdC5wYWdlTnVtYmVyKCkpKTsKLSAgICAgICAgICAgICAgICBpbnRl
cmlvclVuaW9uUmVjdCA9IGN1cnJlbnRSZWN0LnJlY3QoKTsKKyAgICAgICAgICAgICAgICBjb2Fs
ZXNjZWRHZW9tZXRyaWVzLmFwcGVuZChTZWxlY3Rpb25HZW9tZXRyeShpbnRlcmlvclVuaW9uUmVj
dCwgY3VycmVudEdlb21ldHJ5LmlzSG9yaXpvbnRhbCgpLCBjdXJyZW50R2VvbWV0cnkucGFnZU51
bWJlcigpKSk7CisgICAgICAgICAgICAgICAgaW50ZXJpb3JVbmlvblJlY3QgPSBjdXJyZW50R2Vv
bWV0cnkucmVjdCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gUHJvY2Vzc2luZyBsYXN0IGxpbmUuCiAgICAgICAgICAgICBpZiAoIWludGVyaW9yVW5p
b25SZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHVuaW9uZWRSZWN0cy5hcHBlbmQo
U2VsZWN0aW9uUmVjdChpbnRlcmlvclVuaW9uUmVjdCwgY3VycmVudFJlY3QuaXNIb3Jpem9udGFs
KCksIGN1cnJlbnRSZWN0LnBhZ2VOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIGNvYWxlc2Nl
ZEdlb21ldHJpZXMuYXBwZW5kKFNlbGVjdGlvbkdlb21ldHJ5KGludGVyaW9yVW5pb25SZWN0LCBj
dXJyZW50R2VvbWV0cnkuaXNIb3Jpem9udGFsKCksIGN1cnJlbnRHZW9tZXRyeS5wYWdlTnVtYmVy
KCkpKTsKICAgICAgICAgICAgICAgICBpbnRlcmlvclVuaW9uUmVjdCA9IEludFJlY3QoKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgQVNTRVJUKCF1bmlvbmVkUmVjdHMuaXNFbXB0eSgp
KTsKLSAgICAgICAgICAgIFNlbGVjdGlvblJlY3QmIHByZXZpb3VzUmVjdCA9IHVuaW9uZWRSZWN0
cy5sYXN0KCk7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNSZWN0LmxvZ2ljYWxUb3AoKSA9PSBj
dXJyZW50UmVjdC5sb2dpY2FsVG9wKCkgJiYgcHJldmlvdXNSZWN0LnJlY3QoKS5pbnRlcnNlY3Rz
KGN1cnJlbnRSZWN0LnJlY3QoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghY29hbGVzY2VkR2Vv
bWV0cmllcy5pc0VtcHR5KCkpOworICAgICAgICAgICAgYXV0byYgcHJldmlvdXNHZW9tZXRyeSA9
IGNvYWxlc2NlZEdlb21ldHJpZXMubGFzdCgpOworICAgICAgICAgICAgaWYgKHByZXZpb3VzR2Vv
bWV0cnkubG9naWNhbFRvcCgpID09IGN1cnJlbnRHZW9tZXRyeS5sb2dpY2FsVG9wKCkgJiYgcHJl
dmlvdXNHZW9tZXRyeS5yZWN0KCkuaW50ZXJzZWN0cyhjdXJyZW50R2VvbWV0cnkucmVjdCgpKSkg
ewogICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzUmVjdCBpcyBhbHNvIG9uIHRoZSBsYXN0IGxp
bmUsIGFuZCBpbnRlcnNlY3RzIHRoZSBjdXJyZW50IG9uZS4KLSAgICAgICAgICAgICAgICBwcmV2
aW91c1JlY3QgPSBjb2FsZXNjZVNlbGVjdGlvblJlY3RzKGN1cnJlbnRSZWN0LCBwcmV2aW91c1Jl
Y3QpOworICAgICAgICAgICAgICAgIHByZXZpb3VzR2VvbWV0cnkgPSBjb2FsZXNjZVNlbGVjdGlv
bkdlb21ldHJpZXMoY3VycmVudEdlb21ldHJ5LCBwcmV2aW91c0dlb21ldHJ5KTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIENvdWxkbid0
IG1lcmdlIHdpdGggcHJldmlvdXMgcmVjdCwgc28ganVzdCBhcHBlbmRpbmcuCi0gICAgICAgICAg
ICB1bmlvbmVkUmVjdHMuYXBwZW5kKGN1cnJlbnRSZWN0KTsKKyAgICAgICAgICAgIGNvYWxlc2Nl
ZEdlb21ldHJpZXMuYXBwZW5kKGN1cnJlbnRHZW9tZXRyeSk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gdW5pb25lZFJlY3RzOworICAgIHJldHVybiBjb2FsZXNjZWRHZW9tZXRyaWVz
OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRl
eCA3YWYxMzRiMDY3YzA1NWRlOTZkNjIyM2M4ZTU1NTc1ZDRjNTljOGFmLi45NzY0YTQ5NTcxNjg5
MTU3ZjkzMTE3Zjk4YWM1ZmZkNmYwY2E2YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogY2xh
c3MgVmlzaWJsZVBvc2l0aW9uOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLWNsYXNzIFNl
bGVjdGlvblJlY3Q7CitjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeTsKICNlbmRpZgogCiBzdHJ1Y3Qg
SW5saW5lUnVuQW5kT2Zmc2V0OwpAQCAtNTUwLDEwICs1NTAsMTAgQEAgcHVibGljOgogICAgIExh
eW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmKSBjb25z
dDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RT
ZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSk7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKFZl
Y3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2ln
bmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHNGb3JTZWxlY3Rpb24oVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzKSBjb25zdCB7IGFic29sdXRlUXVhZHMocXVhZHMpOyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFZlY3RvcjxTZWxlY3Rpb25SZWN0PiBjb2xsZWN0U2VsZWN0aW9uUmVjdHMo
Y29uc3QgU2ltcGxlUmFuZ2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPFNl
bGVjdGlvblJlY3Q+IGNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRVbmlvbkludGVyaW9yTGlu
ZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9y
PFNlbGVjdGlvbkdlb21ldHJ5PiBjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhjb25zdCBTaW1w
bGVSYW5nZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U2VsZWN0aW9uR2Vv
bWV0cnk+IGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5l
cyhjb25zdCBTaW1wbGVSYW5nZSYpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQpA
QCAtNzcwLDExICs3NzAsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExheWVyTmVlZHNGdWxs
UmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCgpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBzdHJ1Y3QgU2VsZWN0aW9uUmVjdHMgewotICAgICAgICBWZWN0b3I8U2Vs
ZWN0aW9uUmVjdD4gcmVjdHM7CisgICAgc3RydWN0IFNlbGVjdGlvbkdlb21ldHJpZXMgeworICAg
ICAgICBWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+IGdlb21ldHJpZXM7CiAgICAgICAgIGludCBt
YXhMaW5lTnVtYmVyOwogICAgIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNlbGVjdGlv
blJlY3RzIGNvbGxlY3RTZWxlY3Rpb25SZWN0c0ludGVybmFsKGNvbnN0IFNpbXBsZVJhbmdlJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNlbGVjdGlvbkdlb21ldHJpZXMgY29sbGVjdFNl
bGVjdGlvbkdlb21ldHJpZXNJbnRlcm5hbChjb25zdCBTaW1wbGVSYW5nZSYpOwogI2VuZGlmCiAK
ICAgICBOb2RlKiBnZW5lcmF0aW5nUHNldWRvSG9zdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmNwcAppbmRleCBiOWU4
NWM2Y2NiZTZhOTc1YTVkMmFkMzVmNjBjZTBiNDZjYjdiMmE1Li4zNjdmYjNkYjIzN2RmM2ViZjRk
NmQ4Y2JkYTkxOTQ4MWY3NDJjNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VsZWN0aW9uSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlbGVjdGlvbkluZm8uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlbmRlclNlbGVjdGlv
bkluZm86OlJlbmRlclNlbGVjdGlvbkluZm8oUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgYm9vbCBj
bGlwVG9WaXNpCiB7CiAgICAgaWYgKHJlbmRlcmVyLmNhblVwZGF0ZVNlbGVjdGlvbk9uUm9vdExp
bmVCb3hlcygpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCi0gICAg
ICAgICAgICBtX3JlY3QgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikuY29sbGVjdFNl
bGVjdGlvblJlY3RzRm9yTGluZUJveGVzKG1fcmVwYWludENvbnRhaW5lciwgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQsIG1fY29sbGVjdGVkU2VsZWN0aW9uUmVjdHMpOworICAgICAgICAgICAgbV9yZWN0
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRy
aWVzRm9yTGluZUJveGVzKG1fcmVwYWludENvbnRhaW5lciwgY2xpcFRvVmlzaWJsZUNvbnRlbnQs
IG1fY29sbGVjdGVkU2VsZWN0aW9uUmVjdHMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X3JlY3QgPSByZW5kZXJlci5zZWxlY3Rpb25SZWN0Rm9yUmVwYWludChtX3JlcGFpbnRDb250YWlu
ZXIsIGNsaXBUb1Zpc2libGVDb250ZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAKaW5kZXggZmQ1NzNhZGE2MGEwNTkwZDJmZTZmY2M3MWQ2NDc5ODg1OTZj
ZWQ2NS4uOGFjYjEzYmZjMzM4MmMxMTgzYTM0ZDlhZDBmOTNhZDk1MmRmMThlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNjQsNyArNjQsNyBAQAogI2luY2x1
ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNo
ZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2VsZWN0aW9uUmVjdC5oIgorI2lu
Y2x1ZGUgIlNlbGVjdGlvbkdlb21ldHJ5LmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxJbnRSZWN0PiBSZW5kZXJUZXh0OjphYnNvbHV0
ZVJlY3RzRm9yUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwKIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgc2ltaWxhciBpbiBzcGlyaXQgdG8gYWRkTGluZUJveFJlY3RzLCBidXQgcmV0dXJu
cyByZWN0YW5nbGVzCiAvLyB3aGljaCBhcmUgYW5ub3RhdGVkIHdpdGggYWRkaXRpb25hbCBzdGF0
ZSB3aGljaCBoZWxwcyB0aGUgaVBob25lIGRyYXcgc2VsZWN0aW9ucyBpbiBpdHMgdW5pcXVlIHdh
eS4KIC8vIEZ1bGwgYW5ub3RhdGlvbnMgYXJlIGFkZGVkIGluIHRoaXMgY2xhc3MuCi12b2lkIFJl
bmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJl
Y3RzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQordm9pZCBSZW5kZXJUZXh0Ojpjb2xs
ZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiByZWN0cywg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKICAgICBmb3IgKGF1dG8gcnVuID0gTGF5
b3V0SW50ZWdyYXRpb246OmZpcnN0VGV4dFJ1bkZvcigqdGhpcyk7IHJ1bjsgcnVuID0gcnVuLnRy
YXZlcnNlTmV4dFRleHRSdW4oKSkgewogICAgICAgICBMYXlvdXRSZWN0IHJlY3Q7CkBAIC0zODEs
NyArMzgxLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9y
PFNlbGVjdGlvblJlY3Q+JiByZWN0cywgdW5zaWduZWQgc3QKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCi0gICAgICAgIHJlY3RzLmFwcGVuZChTZWxlY3Rpb25SZWN0KGFic1JlY3QsIHJ1bi0+
ZGlyZWN0aW9uKCksIGV4dGVudHNSZWN0LngoKSwgZXh0ZW50c1JlY3QubWF4WCgpLCBleHRlbnRz
UmVjdC5tYXhZKCksIDAsIHJ1bi0+aXNMaW5lQnJlYWsoKSwgaXNGaXJzdE9uTGluZSwgaXNMYXN0
T25MaW5lLCBjb250YWluc1N0YXJ0LCBjb250YWluc0VuZCwgYm94SXNIb3Jpem9udGFsLCBpc0Zp
eGVkLCBjb250YWluaW5nQmxvY2stPmlzUnVieVRleHQoKSwgdmlldygpLnBhZ2VOdW1iZXJGb3JC
bG9ja1Byb2dyZXNzaW9uT2Zmc2V0KGFic1JlY3QueCgpKSkpOworICAgICAgICByZWN0cy5hcHBl
bmQoU2VsZWN0aW9uR2VvbWV0cnkoYWJzUmVjdCwgcnVuLT5kaXJlY3Rpb24oKSwgZXh0ZW50c1Jl
Y3QueCgpLCBleHRlbnRzUmVjdC5tYXhYKCksIGV4dGVudHNSZWN0Lm1heFkoKSwgMCwgcnVuLT5p
c0xpbmVCcmVhaygpLCBpc0ZpcnN0T25MaW5lLCBpc0xhc3RPbkxpbmUsIGNvbnRhaW5zU3RhcnQs
IGNvbnRhaW5zRW5kLCBib3hJc0hvcml6b250YWwsIGlzRml4ZWQsIGNvbnRhaW5pbmdCbG9jay0+
aXNSdWJ5VGV4dCgpLCB2aWV3KCkucGFnZU51bWJlckZvckJsb2NrUHJvZ3Jlc3Npb25PZmZzZXQo
YWJzUmVjdC54KCkpKSk7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xNTkzLDcgKzE1OTMsNyBAQCBM
YXlvdXRSZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplYwogICAgIHJldHVybiByZW5kZXJlclRvUmVwYWludC0+Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiB9CiAKLUxheW91
dFJlY3QgUmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQsIFZlY3RvcjxMYXlvdXRSZWN0PiogcmVjdHMpCitMYXlvdXRSZWN0IFJlbmRl
clRleHQ6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzRm9yTGluZUJveGVzKGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQsIFZlY3RvcjxMYXlvdXRSZWN0PiogcmVjdHMpCiB7CiAgICAgQVNTRVJUKCFuZWVkc0xh
eW91dCgpKTsKIApAQCAtMTY0MiwxNCArMTY0MiwxNCBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6
OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVs
TwogICAgIHJldHVybiBsb2NhbFRvQ29udGFpbmVyUXVhZChGbG9hdFJlY3QocmVzdWx0UmVjdCks
IHJlcGFpbnRDb250YWluZXIpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpCitMYXlvdXRSZWN0IFJlbmRlclRl
eHQ6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzRm9yTGluZUJveGVzKGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRl
bnQsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpCiB7Ci0gICAgcmV0dXJuIGNvbGxlY3RTZWxl
Y3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhyZXBhaW50Q29udGFpbmVyLCBjbGlwVG9WaXNpYmxlQ29u
dGVudCwgJnJlY3RzKTsKKyAgICByZXR1cm4gY29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNGb3JM
aW5lQm94ZXMocmVwYWludENvbnRhaW5lciwgY2xpcFRvVmlzaWJsZUNvbnRlbnQsICZyZWN0cyk7
CiB9CiAKIExheW91dFJlY3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9W
aXNpYmxlQ29udGVudCkKIHsKLSAgICByZXR1cm4gY29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGlu
ZUJveGVzKHJlcGFpbnRDb250YWluZXIsIGNsaXBUb1Zpc2libGVDb250ZW50LCBudWxscHRyKTsK
KyAgICByZXR1cm4gY29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNGb3JMaW5lQm94ZXMocmVwYWlu
dENvbnRhaW5lciwgY2xpcFRvVmlzaWJsZUNvbnRlbnQsIG51bGxwdHIpOwogfQogCiBpbnQgUmVu
ZGVyVGV4dDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKaW5kZXggODllOWZjZTM4YzdlZTMxYTFhNWNjNGU0YzU0NWY2MThmZjI1NjI3NS4u
ZTIwMjA0NDNkYjhjZTU3YzYwNWYwOTUxMDlkOGVkNDUwNTM3NTQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdCBmaW5hbDsKICAgICBWZWN0b3I8SW50UmVjdD4gYWJzb2x1dGVS
ZWN0c0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0
ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0Zp
eGVkID0gbnVsbHB0cikgY29uc3Q7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lk
IGNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mLCB1bnNpZ25lZCBz
dGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkgZmluYWw7CisgICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uR2VvbWV0
cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAw
LCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpIGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3QgZmluYWw7CkBAIC0xMjYsNyArMTI2LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICBMYXlvdXRSZWN0IGNvbGxlY3RTZWxlY3Rpb25SZWN0c0Zv
ckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVjdD4mKTsKKyAgICBM
YXlvdXRSZWN0IGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzRm9yTGluZUJveGVzKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQsIFZlY3RvcjxMYXlvdXRSZWN0PiYpOwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5M
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2lu
TGVmdCgpLCAwKTsgfQogICAgIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVy
biBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5SaWdodCgpLCAwKTsgfQpAQCAt
MjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlY3VyZVRleHQoVUNoYXIgbWFz
ayk7CiAKLSAgICBMYXlvdXRSZWN0IGNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBU
b1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVjdD4qKTsKKyAgICBMYXlvdXRSZWN0IGNv
bGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzRm9yTGluZUJveGVzKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQsIFZl
Y3RvcjxMYXlvdXRSZWN0PiopOwogICAgIGJvb2wgY29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9IGRlbGV0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGM5YzYwMzEwNTdmMzcx
YWQxMGEzY2U4ZDAwNGNiYzdjMGQ0YjJjNTEuLmQ2YWVjODdlZWE5M2RjNzg2NjFkZTE5ZjgzMmZh
MWQzMjZmYmI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtNzUxLDcgKzc1MSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJzogWyc8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50
cy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5JzogWyc8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpXaWxsQ29udGludWVMb2Fk
aW5nJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCi0gICAgICAgICdXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwKKyAgICAgICAgJ1dlYkNvcmU6
OlNlbGVjdGlvbkdlb21ldHJ5JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJzogWyciTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUn
OiBbJyJEb3dubG9hZElELmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5k
ZXggOWQwNmRiNTRlZjhjOWJhOWUzZDk2OGE0NWQ5MmM1NTYzOGRiNGQ3ZS4uYzhkY2ZhNTJiYjA1
NjVjMjM4YTY0NTNmZjlhMWU2MDg0NjdhNmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0
YXRlLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXRE
YXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25DbGlwUmVjdDsKICAgICBlbmNvZGVy
IDw8IGNhcmV0UmVjdEF0RW5kOwotICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uUmVjdHM7CisgICAg
ZW5jb2RlciA8PCBzZWxlY3Rpb25HZW9tZXRyaWVzOwogICAgIGVuY29kZXIgPDwgbWFya2VkVGV4
dFJlY3RzOwogICAgIGVuY29kZXIgPDwgbWFya2VkVGV4dDsKICAgICBlbmNvZGVyIDw8IG1hcmtl
ZFRleHRDYXJldFJlY3RBdFN0YXJ0OwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgRWRpdG9yU3Rh
dGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5
b3V0RGF0YSYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmNhcmV0UmVjdEF0RW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvblJlY3RzKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5zZWxlY3Rpb25HZW9tZXRyaWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1hcmtlZFRleHRSZWN0cykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMwOCw4ICszMDgsOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic2VsZWN0aW9uQ2xpcFJlY3QiLCBlZGl0b3JTdGF0ZS5wb3N0
TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkNsaXBSZWN0KTsKICAgICBpZiAoZWRpdG9yU3RhdGUucG9z
dExheW91dERhdGEoKS5jYXJldFJlY3RBdEVuZCAhPSBJbnRSZWN0KCkpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY2FyZXRSZWN0QXRFbmQiLCBlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgp
LmNhcmV0UmVjdEF0RW5kKTsKLSAgICBpZiAoIWVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCku
c2VsZWN0aW9uUmVjdHMuaXNFbXB0eSgpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNlbGVj
dGlvblJlY3RzIiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0cyk7
CisgICAgaWYgKCFlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkdlb21ldHJp
ZXMuaXNFbXB0eSgpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNlbGVjdGlvbkdlb21ldHJp
ZXMiLCBlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkdlb21ldHJpZXMpOwog
ICAgIGlmICghZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5tYXJrZWRUZXh0UmVjdHMuaXNF
bXB0eSgpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm1hcmtlZFRleHRSZWN0cyIsIGVkaXRv
clN0YXRlLnBvc3RMYXlvdXREYXRhKCkubWFya2VkVGV4dFJlY3RzKTsKICAgICBpZiAoZWRpdG9y
U3RhdGUucG9zdExheW91dERhdGEoKS5tYXJrZWRUZXh0Lmxlbmd0aCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRvclN0YXRlLmgKaW5kZXggZTgyOGU0MWE3MjgyYWJhZWM4ZGQ4NWRlNzg4MTI4Y2ZkYzUy
NDUyNi4uZDk1NjhhY2YxMDQ4YzdhMGU1ZmMyMTM1NTJlZjkwOTI1OTc1NmZmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgPFdl
YkNvcmUvU2VsZWN0aW9uUmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uR2VvbWV0
cnkuaD4KICNlbmRpZgogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCkBAIC05Nyw4
ICs5Nyw4IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25DbGlwUmVjdDsKICAgICAgICAgV2Vi
Q29yZTo6SW50UmVjdCBjYXJldFJlY3RBdEVuZDsKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
bGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzOwotICAgICAgICBWZWN0b3I8V2ViQ29yZTo6U2Vs
ZWN0aW9uUmVjdD4gbWFya2VkVGV4dFJlY3RzOworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6U2Vs
ZWN0aW9uR2VvbWV0cnk+IHNlbGVjdGlvbkdlb21ldHJpZXM7CisgICAgICAgIFZlY3RvcjxXZWJD
b3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4gbWFya2VkVGV4dFJlY3RzOwogICAgICAgICBTdHJpbmcg
bWFya2VkVGV4dDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBtYXJrZWRUZXh0Q2FyZXRSZWN0
QXRTdGFydDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBtYXJrZWRUZXh0Q2FyZXRSZWN0QXRF
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCA4NjAzZTUyZTQ2YzVjMTZmYmEzMTk4YTM4ZmRiM2VkYTU5ODZmODNkLi41NzAxNjUwZTI5
MTE0MDE0OWE3MDExNmY2MGI0NWU0NTE4YmU2NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQAogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0
aW9uR2VvbWV0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKQEAgLTEzMDIsNzggKzEzMDIsNzggQEAgYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVz
b3VyY2VFcnJvciYgcmVzb3UKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgQXJn
dW1lbnRDb2RlcjxTZWxlY3Rpb25SZWN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNlbGVjdGlvblJlY3QmIHNlbGVjdGlvblJlY3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0
aW9uR2VvbWV0cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9uR2Vv
bWV0cnkmIHNlbGVjdGlvbkdlb21ldHJ5KQogewotICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uUmVj
dC5yZWN0KCk7Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc2VsZWN0aW9u
UmVjdC5kaXJlY3Rpb24oKSk7Ci0gICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0Lm1pblgoKTsK
LSAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblJlY3QubWF4WCgpOwotICAgIGVuY29kZXIgPDwgc2Vs
ZWN0aW9uUmVjdC5tYXhZKCk7Ci0gICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0LmxpbmVOdW1i
ZXIoKTsKLSAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblJlY3QuaXNMaW5lQnJlYWsoKTsKLSAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblJlY3QuaXNGaXJzdE9uTGluZSgpOwotICAgIGVuY29kZXIgPDwg
c2VsZWN0aW9uUmVjdC5pc0xhc3RPbkxpbmUoKTsKLSAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblJl
Y3QuY29udGFpbnNTdGFydCgpOwotICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uUmVjdC5jb250YWlu
c0VuZCgpOwotICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uUmVjdC5pc0hvcml6b250YWwoKTsKKyAg
ICBlbmNvZGVyIDw8IHNlbGVjdGlvbkdlb21ldHJ5LnJlY3QoKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQzMl90PihzZWxlY3Rpb25HZW9tZXRyeS5kaXJlY3Rpb24oKSk7CisgICAg
ZW5jb2RlciA8PCBzZWxlY3Rpb25HZW9tZXRyeS5taW5YKCk7CisgICAgZW5jb2RlciA8PCBzZWxl
Y3Rpb25HZW9tZXRyeS5tYXhYKCk7CisgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25HZW9tZXRyeS5t
YXhZKCk7CisgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25HZW9tZXRyeS5saW5lTnVtYmVyKCk7Cisg
ICAgZW5jb2RlciA8PCBzZWxlY3Rpb25HZW9tZXRyeS5pc0xpbmVCcmVhaygpOworICAgIGVuY29k
ZXIgPDwgc2VsZWN0aW9uR2VvbWV0cnkuaXNGaXJzdE9uTGluZSgpOworICAgIGVuY29kZXIgPDwg
c2VsZWN0aW9uR2VvbWV0cnkuaXNMYXN0T25MaW5lKCk7CisgICAgZW5jb2RlciA8PCBzZWxlY3Rp
b25HZW9tZXRyeS5jb250YWluc1N0YXJ0KCk7CisgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25HZW9t
ZXRyeS5jb250YWluc0VuZCgpOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uR2VvbWV0cnkuaXNI
b3Jpem9udGFsKCk7CiB9CiAKLU9wdGlvbmFsPFNlbGVjdGlvblJlY3Q+IEFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uUmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorT3B0aW9uYWw8U2VsZWN0
aW9uR2VvbWV0cnk+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uR2VvbWV0cnk+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3Q7CisgICAg
U2VsZWN0aW9uR2VvbWV0cnkgc2VsZWN0aW9uR2VvbWV0cnk7CiAgICAgSW50UmVjdCByZWN0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRSZWN0KHJlY3QpOworICAgIHNlbGVjdGlvbkdlb21l
dHJ5LnNldFJlY3QocmVjdCk7CiAKICAgICB1aW50MzJfdCBkaXJlY3Rpb247CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkaXJlY3Rpb24pKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIHNlbGVjdGlvblJlY3Quc2V0RGlyZWN0aW9uKChUZXh0RGlyZWN0aW9uKWRpcmVjdGlvbik7
CisgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0RGlyZWN0aW9uKChUZXh0RGlyZWN0aW9uKWRpcmVj
dGlvbik7CiAKICAgICBpbnQgaW50VmFsdWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbnRW
YWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5z
ZXRNaW5YKGludFZhbHVlKTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRNaW5YKGludFZhbHVl
KTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIHNlbGVjdGlvblJlY3Quc2V0TWF4WChpbnRWYWx1ZSk7CisgICAg
c2VsZWN0aW9uR2VvbWV0cnkuc2V0TWF4WChpbnRWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGludFZhbHVlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBzZWxl
Y3Rpb25SZWN0LnNldE1heFkoaW50VmFsdWUpOworICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldE1h
eFkoaW50VmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbnRWYWx1ZSkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRMaW5lTnVtYmVy
KGludFZhbHVlKTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRMaW5lTnVtYmVyKGludFZhbHVl
KTsKIAogICAgIGJvb2wgYm9vbFZhbHVlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYm9vbFZh
bHVlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBzZWxlY3Rpb25SZWN0LnNl
dElzTGluZUJyZWFrKGJvb2xWYWx1ZSk7CisgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0SXNMaW5l
QnJlYWsoYm9vbFZhbHVlKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYm9vbFZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBzZWxlY3Rpb25SZWN0LnNldElzRmly
c3RPbkxpbmUoYm9vbFZhbHVlKTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRJc0ZpcnN0T25M
aW5lKGJvb2xWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRJc0xhc3RP
bkxpbmUoYm9vbFZhbHVlKTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRJc0xhc3RPbkxpbmUo
Ym9vbFZhbHVlKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYm9vbFZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBzZWxlY3Rpb25SZWN0LnNldENvbnRhaW5zU3Rh
cnQoYm9vbFZhbHVlKTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRDb250YWluc1N0YXJ0KGJv
b2xWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRDb250YWluc0VuZChi
b29sVmFsdWUpOworICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldENvbnRhaW5zRW5kKGJvb2xWYWx1
ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRJc0hvcml6b250YWwoYm9vbFZh
bHVlKTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRJc0hvcml6b250YWwoYm9vbFZhbHVlKTsK
IAotICAgIHJldHVybiBzZWxlY3Rpb25SZWN0OworICAgIHJldHVybiBzZWxlY3Rpb25HZW9tZXRy
eTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCmluZGV4IDE1OTFiMDQ4YWE1NzE2MWI2YmE4OWVhMzZjNDM3Zjc3NjQ1Y2U0NGEuLjM0
MTNiZDhlNzM5ZTI1MTdlNzBhODlhMGE1NjQ1YTFkOWIwMWQ3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNzgsNyArMTc4LDcgQEAgc3Ry
dWN0IEtleXByZXNzQ29tbWFuZDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBG
bG9hdFF1YWQ7Ci1jbGFzcyBTZWxlY3Rpb25SZWN0OworY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7
CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owog
I2VuZGlmCkBAIC00NzYsOSArNDc2LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxDR0FmZmluZVRyYW5zZm9ybT4gewogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTZWxl
Y3Rpb25SZWN0Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+
IGRlY29kZShEZWNvZGVyJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlbGVjdGlvbkdlb21ldHJ5PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeSYpOworICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6
SGlnaGxpZ2h0PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDczYmNhYmQzNGY5MDY2NWZh
ZTRlOGRlMTVmN2JiZGIwNzgxNGM4MzguLjVjMTk5NTgyODVmZmE2NWI3Y2ZiN2JjMjA1YTg5MzE4
MDgwYWEwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9p
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9TZWxlY3Rpb25SZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25HZW9tZXRyeS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKaW5kZXgg
MzI2ODU5OWFkZDE1ZTdhNGZhNmU5NWM0Njg2ZTQ2OTM3YjhhYzQyMC4uMmIwNDU4ZTdlODI5YTlj
OGUyMDhhYjcyNTk5YTE4MGM1YTNkZGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1NlbGVjdGlvblJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW0KaW5kZXggZTE4Mzk3YzNkMDhjZDFlY2IxYmQ1YTViMDY5MTQ4YTYxYjE4NDBh
NS4uNzMwYzY1MTgyNzI2ZDdhMjIwMzhmYTc0OTQ4NWZkMjNmODhjYTMyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTMyMjIsNyAr
MzIyMiw3IEBAIC0gKE5TQXJyYXkgKilfZGF0YURldGVjdGlvblJlc3VsdHMKIAogLSAodm9pZClf
YWNjZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9m
ZnNldCB3aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0FycmF5PE5TVmFsdWUgKj4gKnJlY3RzKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFtf
Y29udGVudFZpZXcgX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6
b2Zmc2V0IHdpdGhUZXh0OnRleHQgY29tcGxldGlvbkhhbmRsZXI6W2NhcHR1cmVkQ29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxlY3Rpb25SZWN0cykgeworICAgIFtfY29udGVu
dFZpZXcgX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6b2Zmc2V0
IHdpdGhUZXh0OnRleHQgY29tcGxldGlvbkhhbmRsZXI6W2NhcHR1cmVkQ29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvbkdlb21ldHJ5PiYgc2VsZWN0aW9uUmVjdHMpIHsKICAgICAgICAgaWYgKCFj
YXB0dXJlZENvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
YXB0dXJlZENvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5TQXJyYXkoc2VsZWN0aW9uUmVjdHMsIFtd
IChhdXRvJiByZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGI2YWY2Nzg5OTY2MDYxODZjNWMzMjExMDc4ZDYwMDZiNDc0ZjUxOTEuLjZjYTkyNDAzYmU3MWNj
ODQ3NzcwODI5NTgzNmJiYjg3YzY4NjczZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC04MzgsOCArODM4LDggQEAgcHVibGljOgogICAgIGRvdWJsZSBtaW5pbXVt
RWZmZWN0aXZlRGV2aWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0Q29uZmlndXJh
dGlvbk1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aDsgfQogICAgIHZvaWQgc2V0TWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoV2l0aG91dFZpZXdwb3J0Q29uZmlndXJhdGlvblVwZGF0ZShkb3Vi
bGUgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKSB7IG1fdmlld3BvcnRDb25maWd1cmF0aW9u
TWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoID0gbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRo
OyB9CiAgICAgdm9pZCBzZXRJc1Njcm9sbGluZ09yWm9vbWluZyhib29sKTsKLSAgICB2b2lkIHJl
cXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHksIHVpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0
UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJp
bmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rp
b25SZWN0PiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIHVpbnQzMl90IG9mZnNldCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2Vv
bWV0cnk+Jik+JiYpOworICAgIHZvaWQgcmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRo
VGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+Jik+JiYpOwogICAgIHZv
aWQgYXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzc3dvcmQpOwogICAgIHZvaWQgc3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmls
aXR5KGJvb2wpOwogICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbkluV2luZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCAwZDk1
ZmVhYjNjODFhMGFkY2VkZDJkOWU4M2E0ODA1YWJjZGE0NjlmLi5hNTM3YTIyNzE3NzczYThmY2Vi
ZGViNDA3NzA3OTg2ZTg4YjAxNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0yMDksNyArMjA5LDcgQEAg
c3RydWN0IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8gewogICAgIGV4cGxpY2l0IFdLU2VsZWN0aW9u
RHJhd2luZ0luZm8oY29uc3QgRWRpdG9yU3RhdGUmKTsKICAgICBTZWxlY3Rpb25UeXBlIHR5cGU7
CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3Q7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlNl
bGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzOworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rp
b25HZW9tZXRyeT4gc2VsZWN0aW9uR2VvbWV0cmllczsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHNl
bGVjdGlvbkNsaXBSZWN0OwogfTsKIApAQCAtNjEzLDcgKzYxMyw3IEBAIEZPUl9FQUNIX1BSSVZB
VEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1Jf
V0VCX1ZJRVcpCiAtIChOU0FycmF5PE5TVmFsdWUgKj4gKilfdWlUZXh0U2VsZWN0aW9uUmVjdHM7
CiAtICh2b2lkKWFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudDsKIC0g
KHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzRW5jbG9zaW5nU2VsZWN0aW9uT2Zmc2V0
OihOU0ludGVnZXIpb2Zmc2V0IHdpdGhHcmFudWxhcml0eTooVUlUZXh0R3JhbnVsYXJpdHkpZ3Jh
bnVsYXJpdHk7Ci0tICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0OihOU0ludGVnZXIpb2Zmc2V0IHdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
PiYgcmVjdHMpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfYWNjZXNzaWJpbGl0eVJldHJp
ZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9mZnNldCB3aXRoVGV4dDooTlNT
dHJpbmcgKil0ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+JiByZWN0cykpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2
b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0OihOU0ludGVn
ZXIpb2Zmc2V0IHdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQ7CiAtICh2b2lkKV9hY2Nlc3NpYmls
aXR5U3RvcmVTZWxlY3Rpb247CiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5Q2xlYXJTZWxlY3Rpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCBjNDc3MmU2NzMxOTg1M2E3ZTBlMjMyYTQ5YTI3NjY1NzgzNGI1
YjhkLi5lNTVkM2Y0ODA4YzIwODEzZjEyYjY2ZDQ3NzBhNGQ5NGY4OWY4YTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTIyNiw3ICsyMjYsNyBAQCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVj
dGlvbkRyYXdpbmdJbmZvKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKICAgICB0eXBl
ID0gU2VsZWN0aW9uVHlwZTo6UmFuZ2U7CiAgICAgYXV0byYgcG9zdExheW91dERhdGEgPSBlZGl0
b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpOwogICAgIGNhcmV0UmVjdCA9IHBvc3RMYXlvdXREYXRh
LmNhcmV0UmVjdEF0RW5kOwotICAgIHNlbGVjdGlvblJlY3RzID0gcG9zdExheW91dERhdGEuc2Vs
ZWN0aW9uUmVjdHM7CisgICAgc2VsZWN0aW9uR2VvbWV0cmllcyA9IHBvc3RMYXlvdXREYXRhLnNl
bGVjdGlvbkdlb21ldHJpZXM7CiAgICAgc2VsZWN0aW9uQ2xpcFJlY3QgPSBwb3N0TGF5b3V0RGF0
YS5zZWxlY3Rpb25DbGlwUmVjdDsKIH0KIApAQCAtMjM5LDExICsyMzksMTEgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvJiBhLCBjb25zdCBXS1Nl
bGVjdGlvbkRyYXdpbmcKICAgICAgICAgaWYgKGEuY2FyZXRSZWN0ICE9IGIuY2FyZXRSZWN0KQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChhLnNlbGVjdGlvblJlY3Rz
LnNpemUoKSAhPSBiLnNlbGVjdGlvblJlY3RzLnNpemUoKSkKKyAgICAgICAgaWYgKGEuc2VsZWN0
aW9uR2VvbWV0cmllcy5zaXplKCkgIT0gYi5zZWxlY3Rpb25HZW9tZXRyaWVzLnNpemUoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYS5zZWxlY3Rpb25SZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGEuc2Vs
ZWN0aW9uUmVjdHNbaV0ucmVjdCgpICE9IGIuc2VsZWN0aW9uUmVjdHNbaV0ucmVjdCgpKQorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5zZWxlY3Rpb25HZW9tZXRyaWVzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBpZiAoYS5zZWxlY3Rpb25HZW9tZXRyaWVzW2ldLnJlY3Qo
KSAhPSBiLnNlbGVjdGlvbkdlb21ldHJpZXNbaV0ucmVjdCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3NSw3ICsyNzUsNyBAQCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyYgaW5mbykKICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7
CiAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgidHlwZSIsIGluZm8udHlwZSk7CiAgICAgc3RyZWFt
LmR1bXBQcm9wZXJ0eSgiY2FyZXQgcmVjdCIsIGluZm8uY2FyZXRSZWN0KTsKLSAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJzZWxlY3Rpb24gcmVjdHMiLCBpbmZvLnNlbGVjdGlvblJlY3RzKTsKKyAg
ICBzdHJlYW0uZHVtcFByb3BlcnR5KCJzZWxlY3Rpb24gZ2VvbWV0cmllcyIsIGluZm8uc2VsZWN0
aW9uR2VvbWV0cmllcyk7CiAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgic2VsZWN0aW9uIGNsaXAg
cmVjdCIsIGluZm8uc2VsZWN0aW9uQ2xpcFJlY3QpOwogICAgIHJldHVybiBzdHJlYW07CiB9CkBA
IC02OTUsNyArNjk1LDcgQEAgQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLSW50
ZXJhY3Rpb25Qcml2YXRlKQogLSAodm9pZClhY2Nlc3NpYmlsaXR5U3BlYWtTZWxlY3Rpb25TZXRD
b250ZW50OihOU1N0cmluZyAqKXN0cmluZzsKLS0gKE5TQXJyYXkgKil3ZWJTZWxlY3Rpb25SZWN0
c0ZvclNlbGVjdGlvblJlY3RzOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4m
KXNlbGVjdGlvblJlY3RzOworLSAoTlNBcnJheSAqKXdlYlNlbGVjdGlvblJlY3RzRm9yU2VsZWN0
aW9uR2VvbWV0cmllczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5PiYp
c2VsZWN0aW9uUmVjdHM7CiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5RGlkR2V0U2VsZWN0aW9uUmVj
dHM6KE5TQXJyYXkgKilzZWxlY3Rpb25SZWN0cyB3aXRoR3JhbnVsYXJpdHk6KFVJVGV4dEdyYW51
bGFyaXR5KWdyYW51bGFyaXR5IGF0T2Zmc2V0OihOU0ludGVnZXIpb2Zmc2V0OwogQGVuZAogCkBA
IC0yNTM4LDcgKzI1MzgsNyBAQCAtIChOU0FycmF5PE5TVmFsdWUgKj4gKilfdWlUZXh0U2VsZWN0
aW9uUmVjdHMKIC0gKEJPT0wpX3BvaW50SXNJbnNpZGVTZWxlY3Rpb25SZWN0OihDR1BvaW50KXBv
aW50IG91dEJvdW5kaW5nUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0ICopb3V0Qm91bmRpbmdSZWN0
CiB7CiAgICAgQk9PTCBwb2ludElzSW5TZWxlY3Rpb25SZWN0ID0gTk87Ci0gICAgZm9yIChhdXRv
JiByZWN0SW5mbyA6IF9sYXN0U2VsZWN0aW9uRHJhd2luZ0luZm8uc2VsZWN0aW9uUmVjdHMpIHsK
KyAgICBmb3IgKGF1dG8mIHJlY3RJbmZvIDogX2xhc3RTZWxlY3Rpb25EcmF3aW5nSW5mby5zZWxl
Y3Rpb25HZW9tZXRyaWVzKSB7CiAgICAgICAgIGF1dG8gcmVjdCA9IHJlY3RJbmZvLnJlY3QoKTsK
ICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0y
NTUyLDcgKzI1NTIsNyBAQCAtIChCT09MKV9wb2ludElzSW5zaWRlU2VsZWN0aW9uUmVjdDooQ0dQ
b2ludClwb2ludCBvdXRCb3VuZGluZ1JlY3Q6KFdlYkNvcmU6OkZsbwogCiAtIChCT09MKV9zaG91
bGRUb2dnbGVTZWxlY3Rpb25Db21tYW5kc0FmdGVyVGFwQXQ6KENHUG9pbnQpcG9pbnQKIHsKLSAg
ICBpZiAoX2xhc3RTZWxlY3Rpb25EcmF3aW5nSW5mby5zZWxlY3Rpb25SZWN0cy5pc0VtcHR5KCkp
CisgICAgaWYgKF9sYXN0U2VsZWN0aW9uRHJhd2luZ0luZm8uc2VsZWN0aW9uR2VvbWV0cmllcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBz
ZWxlY3Rpb25Cb3VuZGluZ1JlY3Q7CkBAIC0yODI4LDIyICsyODI4LDIyIEBAIC0gKEJPT0wpdGV4
dEludGVyYWN0aW9uR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmUgc2hvdWxkQmVnaW5B
dFBvaW50OihDR1BvCiAgICAgcmV0dXJuIFlFUzsKIH0KIAotLSAoTlNBcnJheSAqKXdlYlNlbGVj
dGlvblJlY3RzRm9yU2VsZWN0aW9uUmVjdHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rp
b25SZWN0PiYpc2VsZWN0aW9uUmVjdHMKKy0gKE5TQXJyYXkgKil3ZWJTZWxlY3Rpb25SZWN0c0Zv
clNlbGVjdGlvbkdlb21ldHJpZXM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9t
ZXRyeT4mKXNlbGVjdGlvbkdlb21ldHJpZXMKIHsKLSAgICBpZiAoc2VsZWN0aW9uUmVjdHMuaXNF
bXB0eSgpKQorICAgIGlmIChzZWxlY3Rpb25HZW9tZXRyaWVzLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBjcmVhdGVOU0FycmF5KHNlbGVjdGlvblJlY3RzLCBb
XSAoYXV0byYgY29yZVJlY3QpIHsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShzZWxlY3Rpb25H
ZW9tZXRyaWVzLCBbXSAoYXV0byYgZ2VvbWV0cnkpIHsKICAgICAgICAgYXV0byB3ZWJSZWN0ID0g
W1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF07Ci0gICAgICAgIHdlYlJlY3QucmVjdCA9
IGNvcmVSZWN0LnJlY3QoKTsKLSAgICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0gY29y
ZVJlY3QuZGlyZWN0aW9uKCkgPT0gV2ViQ29yZTo6VGV4dERpcmVjdGlvbjo6TFRSID8gV0tXcml0
aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsK
LSAgICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJyZWFrKCk7Ci0g
ICAgICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RPbkxpbmUoKTsK
LSAgICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RPbkxpbmUoKTsK
LSAgICAgICAgd2ViUmVjdC5jb250YWluc1N0YXJ0ID0gY29yZVJlY3QuY29udGFpbnNTdGFydCgp
OwotICAgICAgICB3ZWJSZWN0LmNvbnRhaW5zRW5kID0gY29yZVJlY3QuY29udGFpbnNFbmQoKTsK
LSAgICAgICAgd2ViUmVjdC5pc0luRml4ZWRQb3NpdGlvbiA9IGNvcmVSZWN0LmlzSW5GaXhlZFBv
c2l0aW9uKCk7Ci0gICAgICAgIHdlYlJlY3QuaXNIb3Jpem9udGFsID0gY29yZVJlY3QuaXNIb3Jp
em9udGFsKCk7CisgICAgICAgIHdlYlJlY3QucmVjdCA9IGdlb21ldHJ5LnJlY3QoKTsKKyAgICAg
ICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0gZ2VvbWV0cnkuZGlyZWN0aW9uKCkgPT0gV2Vi
Q29yZTo6VGV4dERpcmVjdGlvbjo6TFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQg
OiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgd2ViUmVjdC5pc0xpbmVC
cmVhayA9IGdlb21ldHJ5LmlzTGluZUJyZWFrKCk7CisgICAgICAgIHdlYlJlY3QuaXNGaXJzdE9u
TGluZSA9IGdlb21ldHJ5LmlzRmlyc3RPbkxpbmUoKTsKKyAgICAgICAgd2ViUmVjdC5pc0xhc3RP
bkxpbmUgPSBnZW9tZXRyeS5pc0xhc3RPbkxpbmUoKTsKKyAgICAgICAgd2ViUmVjdC5jb250YWlu
c1N0YXJ0ID0gZ2VvbWV0cnkuY29udGFpbnNTdGFydCgpOworICAgICAgICB3ZWJSZWN0LmNvbnRh
aW5zRW5kID0gZ2VvbWV0cnkuY29udGFpbnNFbmQoKTsKKyAgICAgICAgd2ViUmVjdC5pc0luRml4
ZWRQb3NpdGlvbiA9IGdlb21ldHJ5LmlzSW5GaXhlZFBvc2l0aW9uKCk7CisgICAgICAgIHdlYlJl
Y3QuaXNIb3Jpem9udGFsID0gZ2VvbWV0cnkuaXNIb3Jpem9udGFsKCk7CiAgICAgICAgIHJldHVy
biB3ZWJSZWN0OwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0yODUyLDggKzI4NTIsOCBA
QCAtIChOU0FycmF5ICopd2ViU2VsZWN0aW9uUmVjdHMKIHsKICAgICBpZiAoX3BhZ2UtPmVkaXRv
clN0YXRlKCkuaXNNaXNzaW5nUG9zdExheW91dERhdGEgfHwgX3BhZ2UtPmVkaXRvclN0YXRlKCku
c2VsZWN0aW9uSXNOb25lKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIGNvbnN0IGF1dG8mIHNl
bGVjdGlvblJlY3RzID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxl
Y3Rpb25SZWN0czsKLSAgICByZXR1cm4gW3NlbGYgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rp
b25SZWN0czpzZWxlY3Rpb25SZWN0c107CisgICAgY29uc3QgYXV0byYgc2VsZWN0aW9uR2VvbWV0
cmllcyA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uR2Vv
bWV0cmllczsKKyAgICByZXR1cm4gW3NlbGYgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25H
ZW9tZXRyaWVzOnNlbGVjdGlvbkdlb21ldHJpZXNdOwogfQogCiAtICh2b2lkKV9oaWdobGlnaHRM
b25nUHJlc3NSZWNvZ25pemVkOihVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlY29nbml6ZXIKQEAgLTMyNzQsOCArMzI3NCw4IEBAIC0gKHZvaWQpX2xvb2t1cEZvcldlYlZp
ZXc6KGlkKXNlbmRlcgogICAgICAgICBhdXRvJiBlZGl0b3JTdGF0ZSA9IHZpZXctPl9wYWdlLT5l
ZGl0b3JTdGF0ZSgpOwogICAgICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IGVkaXRvclN0YXRl
LnBvc3RMYXlvdXREYXRhKCk7CiAgICAgICAgIENHUmVjdCBwcmVzZW50YXRpb25SZWN0OwotICAg
ICAgICBpZiAoZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNSYW5nZSAmJiAhcG9zdExheW91dERhdGEu
c2VsZWN0aW9uUmVjdHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcHJlc2VudGF0aW9uUmVjdCA9
IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKTsKKyAgICAgICAgaWYgKGVk
aXRvclN0YXRlLnNlbGVjdGlvbklzUmFuZ2UgJiYgIXBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkdl
b21ldHJpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcHJlc2VudGF0aW9uUmVjdCA9IHBvc3RM
YXlvdXREYXRhLnNlbGVjdGlvbkdlb21ldHJpZXNbMF0ucmVjdCgpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwcmVzZW50YXRpb25SZWN0ID0gcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRT
dGFydDsKICAgICAgICAgCkBAIC0zMjk0LDExICszMjk0LDExIEBAIC0gKHZvaWQpX3NoYXJlRm9y
V2ViVmlldzooaWQpc2VuZGVyCiAgICAgICAgIGlmICghdmlldy0+X3RleHRJbnRlcmFjdGlvbkFz
c2lzdGFudCB8fCAhc3RyaW5nIHx8IHZpZXctPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8mIHNl
bGVjdGlvblJlY3RzID0gdmlldy0+X3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEo
KS5zZWxlY3Rpb25SZWN0czsKLSAgICAgICAgaWYgKHNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkK
KyAgICAgICAgYXV0byYgc2VsZWN0aW9uR2VvbWV0cmllcyA9IHZpZXctPl9wYWdlLT5lZGl0b3JT
dGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uR2VvbWV0cmllczsKKyAgICAgICAgaWYg
KHNlbGVjdGlvbkdlb21ldHJpZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFt2aWV3LT5fdGV4dEludGVyYWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9y
OnN0cmluZyBmcm9tUmVjdDpzZWxlY3Rpb25SZWN0cy5maXJzdCgpLnJlY3QoKV07CisgICAgICAg
IFt2aWV3LT5fdGV4dEludGVyYWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnN0cmlu
ZyBmcm9tUmVjdDpzZWxlY3Rpb25HZW9tZXRyaWVzLmZpcnN0KCkucmVjdCgpXTsKICAgICB9KTsK
IH0KIApAQCAtMzMxNSwxOCArMzMxNSwxOCBAQCAtICh2b2lkKV90cmFuc2xhdGVGb3JXZWJWaWV3
OihpZClzZW5kZXIKICAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYWdlLT5lZGl0b3JTdGF0ZSgp
LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8mIHNlbGVjdGlvblJlY3RzID0gc3Ryb25nU2VsZi0+X3BhZ2UtPmVkaXRvclN0YXRlKCku
cG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0czsKLSAgICAgICAgaWYgKHNlbGVjdGlvblJl
Y3RzLmlzRW1wdHkoKSkKKyAgICAgICAgYXV0byYgc2VsZWN0aW9uR2VvbWV0cmllcyA9IHN0cm9u
Z1NlbGYtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uR2Vv
bWV0cmllczsKKyAgICAgICAgaWYgKHNlbGVjdGlvbkdlb21ldHJpZXMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChbc3Ryb25nU2VsZi0+X3RleHRJbnRlcmFj
dGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHRyYW5zbGF0ZTpmcm9t
UmVjdDopXSkKLSAgICAgICAgICAgIFtzdHJvbmdTZWxmLT5fdGV4dEludGVyYWN0aW9uQXNzaXN0
YW50IHRyYW5zbGF0ZTpzdHJpbmcgZnJvbVJlY3Q6c2VsZWN0aW9uUmVjdHMuZmlyc3QoKS5yZWN0
KCldOworICAgICAgICAgICAgW3N0cm9uZ1NlbGYtPl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQg
dHJhbnNsYXRlOnN0cmluZyBmcm9tUmVjdDpzZWxlY3Rpb25HZW9tZXRyaWVzLmZpcnN0KCkucmVj
dCgpXTsKICAgICB9KTsKIH0KIAogLSAodm9pZClfYWRkU2hvcnRjdXRGb3JXZWJWaWV3OihpZClz
ZW5kZXIKIHsKLSAgICBbX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCBzaG93VGV4dFNlcnZpY2VG
b3I6W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0
TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKV07CisgICAgW190ZXh0SW50ZXJh
Y3Rpb25Bc3Npc3RhbnQgc2hvd1RleHRTZXJ2aWNlRm9yOltzZWxmIHNlbGVjdGVkVGV4dF0gZnJv
bVJlY3Q6X3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25HZW9t
ZXRyaWVzWzBdLnJlY3QoKV07CiB9CiAKIC0gKE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0CkBAIC0z
ODg1LDcgKzM4ODUsNyBAQCAtICh2b2lkKV9zaG93VGV4dFN0eWxlT3B0aW9uc0ZvcldlYlZpZXc6
KGlkKXNlbmRlcgogCiAtICh2b2lkKV9zaG93RGljdGlvbmFyeTooTlNTdHJpbmcgKil0ZXh0CiB7
Ci0gICAgQ0dSZWN0IHByZXNlbnRhdGlvblJlY3QgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0
TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKTsKKyAgICBDR1JlY3QgcHJlc2Vu
dGF0aW9uUmVjdCA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0
aW9uR2VvbWV0cmllc1swXS5yZWN0KCk7CiAgICAgaWYgKF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3Rh
bnQpCiAgICAgICAgIFtfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50IHNob3dEaWN0aW9uYXJ5Rm9y
OnRleHQgZnJvbVJlY3Q6cHJlc2VudGF0aW9uUmVjdF07CiB9CkBAIC0zOTIwLDkgKzM5MjAsOSBA
QCAtICh2b2lkKWFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudAogCiAt
ICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0VuY2xvc2luZ1NlbGVjdGlvbk9mZnNl
dDooTlNJbnRlZ2VyKW9mZnNldCB3aXRoR3JhbnVsYXJpdHk6KFVJVGV4dEdyYW51bGFyaXR5KWdy
YW51bGFyaXR5CiB7Ci0gICAgX3BhZ2UtPnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldCh0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgb2Zmc2V0LCBb
dmlldyA9IHJldGFpblB0cihzZWxmKSwgb2Zmc2V0LCBncmFudWxhcml0eV0oY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxlY3Rpb25SZWN0cykgeworICAgIF9wYWdlLT5y
ZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodG9XS1RleHRHcmFu
dWxhcml0eShncmFudWxhcml0eSksIG9mZnNldCwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIG9m
ZnNldCwgZ3JhbnVsYXJpdHldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eT4mIHNlbGVjdGlvbkdlb21ldHJpZXMpIHsKICAgICAgICAgaWYgKFt2aWV3IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX2FjY2Vzc2liaWxpdHlEaWRHZXRTZWxlY3Rpb25SZWN0czp3aXRo
R3JhbnVsYXJpdHk6YXRPZmZzZXQ6KV0pCi0gICAgICAgICAgICBbdmlldyBfYWNjZXNzaWJpbGl0
eURpZEdldFNlbGVjdGlvblJlY3RzOlt2aWV3IHdlYlNlbGVjdGlvblJlY3RzRm9yU2VsZWN0aW9u
UmVjdHM6c2VsZWN0aW9uUmVjdHNdIHdpdGhHcmFudWxhcml0eTpncmFudWxhcml0eSBhdE9mZnNl
dDpvZmZzZXRdOworICAgICAgICAgICAgW3ZpZXcgX2FjY2Vzc2liaWxpdHlEaWRHZXRTZWxlY3Rp
b25SZWN0czpbdmlldyB3ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvbkdlb21ldHJpZXM6c2Vs
ZWN0aW9uR2VvbWV0cmllc10gd2l0aEdyYW51bGFyaXR5OmdyYW51bGFyaXR5IGF0T2Zmc2V0Om9m
ZnNldF07CiAgICAgfSk7CiB9CiAKQEAgLTM5MzEsMTUgKzM5MzEsMTUgQEAgLSAodm9pZClfYWNj
ZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9mZnNl
dCB3aXRoVGV4dDoKICAgICBbc2VsZiBfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVj
dGlvbk9mZnNldDpvZmZzZXQgd2l0aFRleHQ6dGV4dCBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwog
fQogCi0tICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0
OihOU0ludGVnZXIpb2Zmc2V0IHdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgcmVj
dHMpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0
c0F0U2VsZWN0aW9uT2Zmc2V0OihOU0ludGVnZXIpb2Zmc2V0IHdpdGhUZXh0OihOU1N0cmluZyAq
KXRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWxlY3Rpb25HZW9tZXRyeT4mIGdlb21ldHJpZXMpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAg
UmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwotICAgIF9wYWdlLT5yZXF1ZXN0
UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgW3ZpZXcsIG9mZnNl
dCwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVj
dHMpIHsKKyAgICBfcGFnZS0+cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChv
ZmZzZXQsIHRleHQsIFt2aWV3LCBvZmZzZXQsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vs
ZWN0aW9uR2VvbWV0cnk+JiBzZWxlY3Rpb25HZW9tZXRyaWVzKSB7CiAgICAgICAgIGlmIChjYXB0
dXJlZENvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uSGFu
ZGxlcihzZWxlY3Rpb25SZWN0cyk7CisgICAgICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25IYW5k
bGVyKHNlbGVjdGlvbkdlb21ldHJpZXMpOwogCiAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9hY2Nlc3NpYmlsaXR5RGlkR2V0U2VsZWN0aW9uUmVjdHM6d2l0
aEdyYW51bGFyaXR5OmF0T2Zmc2V0OildKQotICAgICAgICAgICAgW3ZpZXcgX2FjY2Vzc2liaWxp
dHlEaWRHZXRTZWxlY3Rpb25SZWN0czpbdmlldyB3ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlv
blJlY3RzOnNlbGVjdGlvblJlY3RzXSB3aXRoR3JhbnVsYXJpdHk6VUlUZXh0R3JhbnVsYXJpdHlX
b3JkIGF0T2Zmc2V0Om9mZnNldF07CisgICAgICAgICAgICBbdmlldyBfYWNjZXNzaWJpbGl0eURp
ZEdldFNlbGVjdGlvblJlY3RzOlt2aWV3IHdlYlNlbGVjdGlvblJlY3RzRm9yU2VsZWN0aW9uR2Vv
bWV0cmllczpzZWxlY3Rpb25HZW9tZXRyaWVzXSB3aXRoR3JhbnVsYXJpdHk6VUlUZXh0R3JhbnVs
YXJpdHlXb3JkIGF0T2Zmc2V0Om9mZnNldF07CiAgICAgfSk7CiB9CiAKQEAgLTQ3OTYsMTAgKzQ3
OTYsMTAgQEAgLSAodm9pZClyZXBsYWNlUmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2Ugd2l0aFRl
eHQ6KE5TU3RyaW5nICopdGV4dAogewogfQogCi1zdGF0aWMgTlNBcnJheTxXS1RleHRTZWxlY3Rp
b25SZWN0ICo+ICp3a1RleHRTZWxlY3Rpb25SZWN0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vs
ZWN0aW9uUmVjdD4mIHJlY3RzKQorc3RhdGljIE5TQXJyYXk8V0tUZXh0U2VsZWN0aW9uUmVjdCAq
PiAqd2tUZXh0U2VsZWN0aW9uUmVjdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5PiYgcmVjdHMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkocmVjdHMsIFtdIChh
dXRvJiByZWN0KSB7Ci0gICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tUZXh0U2VsZWN0aW9uUmVj
dCBhbGxvY10gaW5pdFdpdGhTZWxlY3Rpb25SZWN0OnJlY3RdKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0TlMoW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFsbG9jXSBpbml0V2l0aFNlbGVjdGlvbkdlb21l
dHJ5OnJlY3RdKTsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwogfQogCkBAIC00ODUyLDcgKzQ4NTIs
NyBAQCAtIChVSVRleHRSYW5nZSAqKXNlbGVjdGVkVGV4dFJhbmdlCiAKICAgICBhdXRvIGNhcmV0
U3RhcnRSZWN0ID0gW3NlbGYgX3NjYWxlZENhcmV0UmVjdEZvclNlbGVjdGlvblN0YXJ0Ol9wYWdl
LT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRSZWN0QXRTdGFydF07CiAgICAg
YXV0byBjYXJldEVuZFJlY3QgPSBbc2VsZiBfc2NhbGVkQ2FyZXRSZWN0Rm9yU2VsZWN0aW9uRW5k
Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRSZWN0QXRFbmRdOwot
ICAgIGF1dG8gc2VsZWN0aW9uUmVjdHMgPSB3a1RleHRTZWxlY3Rpb25SZWN0cyhfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzKTsKKyAgICBhdXRvIHNl
bGVjdGlvblJlY3RzID0gd2tUZXh0U2VsZWN0aW9uUmVjdHMoX3BhZ2UtPmVkaXRvclN0YXRlKCku
cG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25HZW9tZXRyaWVzKTsKICAgICBhdXRvIHNlbGVjdGVk
VGV4dExlbmd0aCA9IGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0ZWRUZXh0TGVu
Z3RoOwogICAgIF9jYWNoZWRTZWxlY3RlZFRleHRSYW5nZSA9IFtXS1RleHRSYW5nZSB0ZXh0UmFu
Z2VXaXRoU3RhdGU6IWhhc1NlbGVjdGlvbiBpc1JhbmdlOmlzUmFuZ2UgaXNFZGl0YWJsZTppc0Nv
bnRlbnRFZGl0YWJsZSBzdGFydFJlY3Q6Y2FyZXRTdGFydFJlY3QgZW5kUmVjdDpjYXJldEVuZFJl
Y3Qgc2VsZWN0aW9uUmVjdHM6c2VsZWN0aW9uUmVjdHMgc2VsZWN0ZWRUZXh0TGVuZ3RoOnNlbGVj
dGVkVGV4dExlbmd0aF07CiAgICAgcmV0dXJuIF9jYWNoZWRTZWxlY3RlZFRleHRSYW5nZS5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rp
b25SZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5oCmluZGV4IGU2NTY2M2UwMDkwNjI4NTcwZGRkZDVjYTQyNmJlOWYyNWYwMGYyYTkuLjk5YjIy
YzU1MmZlZGU0NjdhNWMwOGI4Zjc2YzE0YWFjYjk1ZmMxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaApAQCAtMjgsMTMgKzI4LDEz
IEBACiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTZWxlY3Rpb25SZWN0OworY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7CiB9CiAKIEBpbnRlcmZh
Y2UgV0tUZXh0U2VsZWN0aW9uUmVjdCA6IFVJVGV4dFNlbGVjdGlvblJlY3QKIAogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ0dSZWN0OihDR1JlY3QpcmVjdDsKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlv
blJlY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25HZW9tZXRyeTooY29uc3Qg
V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnkmKXNlbGVjdGlvblJlY3Q7CiAKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3Qu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQpp
bmRleCA1ODFiN2IzZWMzZjM2MGY3YjZiNjM2MDljYWU3MjE4MDBkNGJlYzBjLi5lYzMwZDhiYjE3
M2IwNmZiNTJmNmFjZDMxZjhjYWU0NDEyMTQwNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQpAQCAtMjgsMzYgKzI4LDM2IEBA
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0IDxXZWJDb3JlL1NlbGVjdGlv
blJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VsZWN0aW9uR2VvbWV0cnkuaD4KIAogQGltcGxl
bWVudGF0aW9uIFdLVGV4dFNlbGVjdGlvblJlY3QgewotICAgIFdlYkNvcmU6OlNlbGVjdGlvblJl
Y3QgX3NlbGVjdGlvblJlY3Q7CisgICAgV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnkgX3NlbGVj
dGlvbkdlb21ldHJ5OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR1JlY3Q6KENHUmVj
dClyZWN0CiB7Ci0gICAgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0OwotICAg
IHNlbGVjdGlvblJlY3Quc2V0UmVjdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsK
LSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhTZWxlY3Rpb25SZWN0OldURk1vdmUoc2VsZWN0aW9u
UmVjdCldOworICAgIFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5IHNlbGVjdGlvbkdlb21ldHJ5
OworICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldFJlY3QoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVj
dChyZWN0KSk7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoU2VsZWN0aW9uR2VvbWV0cnk6V1RG
TW92ZShzZWxlY3Rpb25HZW9tZXRyeSldOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhT
ZWxlY3Rpb25SZWN0Oihjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25HZW9tZXRyeTooY29uc3QgV2ViQ29y
ZTo6U2VsZWN0aW9uR2VvbWV0cnkmKXNlbGVjdGlvblJlY3QKIHsKICAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfc2VsZWN0aW9uUmVjdCA9
IHNlbGVjdGlvblJlY3Q7CisgICAgX3NlbGVjdGlvbkdlb21ldHJ5ID0gc2VsZWN0aW9uUmVjdDsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAoQ0dSZWN0KXJlY3QKIHsKLSAgICByZXR1cm4gX3Nl
bGVjdGlvblJlY3QucmVjdCgpOworICAgIHJldHVybiBfc2VsZWN0aW9uR2VvbWV0cnkucmVjdCgp
OwogfQogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoVUlUZXh0V3Jp
dGluZ0RpcmVjdGlvbil3cml0aW5nRGlyZWN0aW9uCiB7Ci0gICAgcmV0dXJuIF9zZWxlY3Rpb25S
ZWN0LmRpcmVjdGlvbigpID09IFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUiA/IFVJVGV4dFdy
aXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IFVJVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRv
TGVmdDsKKyAgICByZXR1cm4gX3NlbGVjdGlvbkdlb21ldHJ5LmRpcmVjdGlvbigpID09IFdlYkNv
cmU6OlRleHREaXJlY3Rpb246OkxUUiA/IFVJVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdo
dCA6IFVJVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKIH0KIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogCkBAIC02OCwxNyArNjgsMTcgQEAgLSAoVUlUZXh0UmFuZ2Ug
KilyYW5nZQogCiAtIChCT09MKWNvbnRhaW5zU3RhcnQKIHsKLSAgICByZXR1cm4gX3NlbGVjdGlv
blJlY3QuY29udGFpbnNTdGFydCgpOworICAgIHJldHVybiBfc2VsZWN0aW9uR2VvbWV0cnkuY29u
dGFpbnNTdGFydCgpOwogfQogCiAtIChCT09MKWNvbnRhaW5zRW5kCiB7Ci0gICAgcmV0dXJuIF9z
ZWxlY3Rpb25SZWN0LmNvbnRhaW5zRW5kKCk7CisgICAgcmV0dXJuIF9zZWxlY3Rpb25HZW9tZXRy
eS5jb250YWluc0VuZCgpOwogfQogCiAtIChCT09MKWlzVmVydGljYWwKIHsKLSAgICByZXR1cm4g
IV9zZWxlY3Rpb25SZWN0LmlzSG9yaXpvbnRhbCgpOworICAgIHJldHVybiAhX3NlbGVjdGlvbkdl
b21ldHJ5LmlzSG9yaXpvbnRhbCgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwOGEwNGQyNDM2YmI2NWJmNzI0NWEz
YmJiMmY0M2MxYTg2MjEwYmI3Li42N2ZmYzQyM2ViZjg4OWY5NWUzNDY5YjZhNjFmZDQ4ZDExZDhk
NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTY2Nyw3ICs2NjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V29yZEJhY2t3
YXJkKCkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdvcmRC
YWNrd2FyZCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik+JiYgY2FsbGJhY2spCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3Qgb2Zm
c2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rp
b25HZW9tZXRyeT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybiBjYWxsYmFjayh7IH0pOwpAQCAtNjc1LDcgKzY3NSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25P
ZmZzZXQoV2ViQ29yZTo6VGV4dEdyCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChncmFudWxh
cml0eSwgb2Zmc2V0KSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNv
bnN0IFN0cmluZyYgdGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gY2FsbGJhY2soeyB9KTsKQEAgLTExMzgs
OCArMTEzOCw4IEBAIFdlYkNvcmU6OkZsb2F0UmVjdCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkJv
dW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvCiAgICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IGJvdW5kczsKICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IG1fZWRpdG9yU3RhdGUucG9z
dExheW91dERhdGEoKTsKICAgICBpZiAobV9lZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc1JhbmdlKSB7
Ci0gICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblJlY3Rz
KQotICAgICAgICAgICAgYm91bmRzLnVuaXRlKHJlY3QucmVjdCgpKTsKKyAgICAgICAgZm9yIChh
dXRvJiBnZW9tZXRyeSA6IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkdlb21ldHJpZXMpCisgICAg
ICAgICAgICBib3VuZHMudW5pdGUoZ2VvbWV0cnkucmVjdCgpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgYm91bmRzID0gcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGMxOTZhZDgxMzc5MDI2MTQ2
ZGRiOTk4YjRkZmJjNjVlYjYzYTc0OTIuLjUxNDY0OWFiNDRmNGJhNTYyZTNmMWE2YTU5YTc0YzBj
NDAyOWU2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTIwMyw3ICsyMDMsNyBAQCBjbGFzcyBSZW5kZXJJbWFnZTsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xh
c3MgU2VsZWN0aW9uUmVjdDsKK2NsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0
OwpAQCAtNzgxLDggKzc4MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFw
cGVhcmFuY2UoKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKT4mJik7
CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgdWludDY0X3QgcmVx
dWVzdElEKTsKLSAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zm
c2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgaW50MzJfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mKT4mJik7Ci0gICAgdm9p
ZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5n
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mKT4mJik7CisgICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlv
bk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGludDMyX3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5PiYpPiYmKTsK
KyAgICB2b2lkIGdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90LCBjb25z
dCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWxlY3Rpb25HZW9tZXRyeT4mKT4mJik7CiAgICAgdm9pZCBzdG9yZVNlbGVjdGlvbkZvckFjY2Vz
c2liaWxpdHkoYm9vbCk7CiAgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIGNhbmNlbEF1dG9zY3JvbGwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDExNjQ4Yjk2YTU0YzE0ZjBiNzM3ZmNjMWVhM2VlMDQ5MmQ1Y2NkNzQuLjE3NmM0
ZTU1ODkxMGJjYzY1YzIxY2RjZWFkYWVkY2MzNGUyZTFhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTA4LDgg
KzEwOCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFs
bG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAgICBIYW5kbGVU
d29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgdWludDY0X3QgcmVxdWVzdElEKQog
ICAgIFNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxlKQotICAgIEdl
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KGVudW06dWludDhfdCBXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0KSAtPiAoVmVj
dG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHJlY3QpIEFzeW5jCi0gICAgR2V0UmVjdHNBdFNl
bGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJpbmcgdGV4dCkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiByZWN0KSBBc3luYworICAgIEdldFJlY3RzRm9y
R3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0KSAtPiAoVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvbkdlb21ldHJ5PiByZWN0KSBBc3luYworICAgIEdldFJlY3RzQXRTZWxlY3Rp
b25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQpIC0+IChWZWN0b3I8
V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+IHJlY3QpIEFzeW5jCiAgICAgU3RvcmVTZWxlY3Rp
b25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wgc2hvdWxkU3RvcmUpCiAgICAgU3RhcnRBdXRvc2Nyb2xs
QXRQb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvc2l0aW9uSW5XaW5kb3cpCiAgICAgQ2Fu
Y2VsQXV0b3Njcm9sbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGYxYzAxMjQ3NDkwMmRmOTBlMDQ0NDMxYzJhZGJjYTRl
YjYyYmU1MjIuLmFlNWZmZjg2NzRmM2I2MzkzYzFhMjM5ZjQ2ZDQzODQ5ODc2YzJmZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC0yNTgsNyArMjU4LDcgQEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9y
RWRpdG9yU3RhdGUoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25zdAogICAgIHJldHVybiBuZWVkc0xh
eW91dDsKIH0KIAotc3RhdGljIHZvaWQgY29udmVydENvbnRlbnRUb1Jvb3RWaWV3U2VsZWN0aW9u
UmVjdHMoY29uc3QgRnJhbWVWaWV3JiB2aWV3LCBWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3Rz
KQorc3RhdGljIHZvaWQgY29udmVydENvbnRlbnRUb1Jvb3RWaWV3KGNvbnN0IEZyYW1lVmlldyYg
dmlldywgVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiYgcmVjdHMpCiB7CiAgICAgZm9yIChhdXRv
JiByZWN0IDogcmVjdHMpCiAgICAgICAgIHJlY3Quc2V0UmVjdCh2aWV3LmNvbnRlbnRzVG9Sb290
VmlldyhyZWN0LnJlY3QoKSkpOwpAQCAtMjc2LDggKzI3Niw4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNv
bnN0CiAKICAgICBpZiAoZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAg
ICBpZiAoYXV0byBjb21wb3NpdGlvblJhbmdlID0gZnJhbWUuZWRpdG9yKCkuY29tcG9zaXRpb25S
YW5nZSgpKSB7Ci0gICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5tYXJrZWRUZXh0UmVjdHMgPSBS
ZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cygqY29tcG9zaXRpb25SYW5nZSk7Ci0g
ICAgICAgICAgICBjb252ZXJ0Q29udGVudFRvUm9vdFZpZXdTZWxlY3Rpb25SZWN0cyh2aWV3LCBw
b3N0TGF5b3V0RGF0YS5tYXJrZWRUZXh0UmVjdHMpOworICAgICAgICAgICAgcG9zdExheW91dERh
dGEubWFya2VkVGV4dFJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0
cmllcygqY29tcG9zaXRpb25SYW5nZSk7CisgICAgICAgICAgICBjb252ZXJ0Q29udGVudFRvUm9v
dFZpZXcodmlldywgcG9zdExheW91dERhdGEubWFya2VkVGV4dFJlY3RzKTsKIAogICAgICAgICAg
ICAgcG9zdExheW91dERhdGEubWFya2VkVGV4dCA9IHBsYWluVGV4dEZvckNvbnRleHQoKmNvbXBv
c2l0aW9uUmFuZ2UpOwogICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBjb21wb3NpdGlvblNl
bGVjdGlvbigqY29tcG9zaXRpb25SYW5nZSk7CkBAIC0zMTAsOCArMzEwLDggQEAgdm9pZCBXZWJQ
YWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJl
c3VsdCkgY29uc3QKICAgICAgICAgc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6
ZWRSYW5nZSgpOwogICAgICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0OwogICAgICAgICBpZiAoc2Vs
ZWN0ZWRSYW5nZSkgewotICAgICAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uUmVjdHMg
PSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cygqc2VsZWN0ZWRSYW5nZSk7Ci0g
ICAgICAgICAgICBjb252ZXJ0Q29udGVudFRvUm9vdFZpZXdTZWxlY3Rpb25SZWN0cyh2aWV3LCBw
b3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25SZWN0cyk7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS5zZWxlY3Rpb25HZW9tZXRyaWVzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uR2Vv
bWV0cmllcygqc2VsZWN0ZWRSYW5nZSk7CisgICAgICAgICAgICBjb252ZXJ0Q29udGVudFRvUm9v
dFZpZXcodmlldywgcG9zdExheW91dERhdGEuc2VsZWN0aW9uR2VvbWV0cmllcyk7CiAgICAgICAg
ICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRGb3JEaXNwbGF5KCpzZWxlY3RlZFJhbmdlKTsK
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGVkVGV4dExlbmd0aCA9IHNlbGVjdGVk
VGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgIGNvbnN0IGludCBtYXhTZWxlY3RlZFRleHRMZW5n
dGggPSAyMDA7CkBAIC0xOTYzLDcgKzE5NjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RFdmFz
aW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlYwog
ICAgIHJlcGx5KFdURk1vdmUocmVjdHNUb0F2b2lkSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZz
ZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVj
dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFu
dWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIApAQCAtMTk3Niw5ICsxOTc2LDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRSZWN0
c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJp
dHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2VsZWN0aW9uUmVjdHMgPSBS
ZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRVbmlvbkludGVyaW9yTGlu
ZXMoKnJhbmdlKTsKLSAgICBjb252ZXJ0Q29udGVudFRvUm9vdFZpZXdTZWxlY3Rpb25SZWN0cygq
ZnJhbWUudmlldygpLCBzZWxlY3Rpb25SZWN0cyk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoc2Vs
ZWN0aW9uUmVjdHMpOworICAgIGF1dG8gc2VsZWN0aW9uR2VvbWV0cmllcyA9IFJlbmRlck9iamVj
dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNXaXRob3V0VW5pb25JbnRlcmlvckxpbmVzKCpy
YW5nZSk7CisgICAgY29udmVydENvbnRlbnRUb1Jvb3RWaWV3KCpmcmFtZS52aWV3KCksIHNlbGVj
dGlvbkdlb21ldHJpZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlbGVjdGlvbkdlb21ldHJp
ZXMpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShi
b29sIHNob3VsZFN0b3JlKQpAQCAtMjAwMyw3ICsyMDAzLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiByYW5nZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYKICAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQocmFuZ2UsIG1hdGNoVGV4dCwg
eyB9LCBjaGFyYWN0ZXJDb3VudCh7IHJhbmdlLnN0YXJ0LCAqYm91bmRhcnlQb2ludCB9LCBUZXh0
SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90
IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBv
ZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX3N0b3JlZFNlbGVjdGlvbkZv
ckFjY2Vzc2liaWxpdHkuaXNOb25lKCkgPyBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSA6
IG1fc3RvcmVkU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eTsKQEAgLTIwMjIsOSArMjAyMiw5IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qg
b2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHNl
bGVjdGlvblJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNXaXRob3V0
VW5pb25JbnRlcmlvckxpbmVzKCpyYW5nZSk7Ci0gICAgY29udmVydENvbnRlbnRUb1Jvb3RWaWV3
U2VsZWN0aW9uUmVjdHMoKmZyYW1lLnZpZXcoKSwgc2VsZWN0aW9uUmVjdHMpOwotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHNlbGVjdGlvblJlY3RzKTsKKyAgICBhdXRvIHNlbGVjdGlvbkdlb21ldHJp
ZXMgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzV2l0aG91dFVuaW9u
SW50ZXJpb3JMaW5lcygqcmFuZ2UpOworICAgIGNvbnZlcnRDb250ZW50VG9Sb290VmlldygqZnJh
bWUudmlldygpLCBzZWxlY3Rpb25HZW9tZXRyaWVzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihz
ZWxlY3Rpb25HZW9tZXRyaWVzKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIFdlYlBhZ2U6OnZpc2li
bGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IEludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KQpA
QCAtMjM0MSwxMSArMjM0MSwxMyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlv
bkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbQogICAgICAgICB0
ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlKTsKICAgICB9CiAKLSAgICBW
ZWN0b3I8U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHM7CisgICAgVmVjdG9yPFNlbGVjdGlv
bkdlb21ldHJ5PiBzZWxlY3Rpb25HZW9tZXRyaWVzOwogICAgIGlmICh0ZXh0Rm9yUmFuZ2UgPT0g
dGV4dEZvckF1dG9jb3JyZWN0aW9uKQotICAgICAgICBzZWxlY3Rpb25SZWN0cyA9IFJlbmRlck9i
amVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKCpyYW5nZSk7CisgICAgICAgIHNlbGVjdGlvbkdl
b21ldHJpZXMgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKCpyYW5n
ZSk7CiAKLSAgICBhdXRvIHJvb3RWaWV3U2VsZWN0aW9uUmVjdHMgPSBzZWxlY3Rpb25SZWN0cy5t
YXAoWyZdKGNvbnN0IGF1dG8mIHNlbGVjdGlvblJlY3QpIC0+IEZsb2F0UmVjdCB7IHJldHVybiBm
cmFtZS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhzZWxlY3Rpb25SZWN0LnJlY3QoKSk7IH0p
OworICAgIGF1dG8gcm9vdFZpZXdTZWxlY3Rpb25SZWN0cyA9IHNlbGVjdGlvbkdlb21ldHJpZXMu
bWFwKFsmXShjb25zdCBhdXRvJiBzZWxlY3Rpb25HZW9tZXRyeSkgLT4gRmxvYXRSZWN0IHsKKyAg
ICAgICAgcmV0dXJuIGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KHNlbGVjdGlvbkdl
b21ldHJ5LnJlY3QoKSk7CisgICAgfSk7CiAKICAgICBib29sIG11bHRpcGxlRm9udHMgPSBmYWxz
ZTsKICAgICBDVEZvbnRSZWYgZm9udCA9IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KaW5kZXggOTBlOGYxN2QyOTdi
YjczOWIxZDczOTE5YmE1YTVmOTA1NDIwMzgwZi4uODUzZTAwNWE1NGI0YjYwYmMyNTIwMGQ2NDU3
MGY2NmRhZjJmYzA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KQEAgLTUyLDcgKzUyLDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGV4dC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NlbGVj
dGlvblJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VsZWN0aW9uR2VvbWV0cnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEJvdW5kYXJp
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEZsYWdzLmg+CkBAIC0yMDYsMTcgKzIwNiwxNyBA
QCAtICh2b2lkKWV4dGVuZFNlbGVjdGlvbjooQk9PTClzdGFydAogCiAtIChOU0FycmF5ICopc2Vs
ZWN0aW9uUmVjdHNGb3JDb3JlUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZQogewotICAg
IHJldHVybiBjcmVhdGVOU0FycmF5KFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3Rz
KHJhbmdlKSwgW10gKGF1dG8mIGNvcmVSZWN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXko
UmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhyYW5nZSksIFtdIChhdXRv
JiBnZW9tZXRyeSkgewogICAgICAgICBhdXRvIHdlYlJlY3QgPSBbV2ViU2VsZWN0aW9uUmVjdCBz
ZWxlY3Rpb25SZWN0XTsKLSAgICAgICAgd2ViUmVjdC5yZWN0ID0gY29yZVJlY3QucmVjdCgpOwot
ICAgICAgICB3ZWJSZWN0LndyaXRpbmdEaXJlY3Rpb24gPSBjb3JlUmVjdC5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBXS1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdL
V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OwotICAgICAgICB3ZWJSZWN0LmlzTGluZUJyZWFr
ID0gY29yZVJlY3QuaXNMaW5lQnJlYWsoKTsKLSAgICAgICAgd2ViUmVjdC5pc0ZpcnN0T25MaW5l
ID0gY29yZVJlY3QuaXNGaXJzdE9uTGluZSgpOwotICAgICAgICB3ZWJSZWN0LmlzTGFzdE9uTGlu
ZSA9IGNvcmVSZWN0LmlzTGFzdE9uTGluZSgpOwotICAgICAgICB3ZWJSZWN0LmNvbnRhaW5zU3Rh
cnQgPSBjb3JlUmVjdC5jb250YWluc1N0YXJ0KCk7Ci0gICAgICAgIHdlYlJlY3QuY29udGFpbnNF
bmQgPSBjb3JlUmVjdC5jb250YWluc0VuZCgpOwotICAgICAgICB3ZWJSZWN0LmlzSW5GaXhlZFBv
c2l0aW9uID0gY29yZVJlY3QuaXNJbkZpeGVkUG9zaXRpb24oKTsKLSAgICAgICAgd2ViUmVjdC5p
c0hvcml6b250YWwgPSBjb3JlUmVjdC5pc0hvcml6b250YWwoKTsKKyAgICAgICAgd2ViUmVjdC5y
ZWN0ID0gZ2VvbWV0cnkucmVjdCgpOworICAgICAgICB3ZWJSZWN0LndyaXRpbmdEaXJlY3Rpb24g
PSBnZW9tZXRyeS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBXS1dyaXRpbmdE
aXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdLV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OworICAg
ICAgICB3ZWJSZWN0LmlzTGluZUJyZWFrID0gZ2VvbWV0cnkuaXNMaW5lQnJlYWsoKTsKKyAgICAg
ICAgd2ViUmVjdC5pc0ZpcnN0T25MaW5lID0gZ2VvbWV0cnkuaXNGaXJzdE9uTGluZSgpOworICAg
ICAgICB3ZWJSZWN0LmlzTGFzdE9uTGluZSA9IGdlb21ldHJ5LmlzTGFzdE9uTGluZSgpOworICAg
ICAgICB3ZWJSZWN0LmNvbnRhaW5zU3RhcnQgPSBnZW9tZXRyeS5jb250YWluc1N0YXJ0KCk7Cisg
ICAgICAgIHdlYlJlY3QuY29udGFpbnNFbmQgPSBnZW9tZXRyeS5jb250YWluc0VuZCgpOworICAg
ICAgICB3ZWJSZWN0LmlzSW5GaXhlZFBvc2l0aW9uID0gZ2VvbWV0cnkuaXNJbkZpeGVkUG9zaXRp
b24oKTsKKyAgICAgICAgd2ViUmVjdC5pc0hvcml6b250YWwgPSBnZW9tZXRyeS5pc0hvcml6b250
YWwoKTsKICAgICAgICAgcmV0dXJuIHdlYlJlY3Q7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426583</attachid>
            <date>2021-04-20 13:02:03 -0700</date>
            <delta_ts>2021-04-20 17:04:05 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-224820-20210420130202.patch</filename>
            <type>text/plain</type>
            <size>123322</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY2OWU3YTAyYmRkMWFj
ZDU4MGE3YTRjY2Y3ZDQwNTVjYmY5Yjg1Ni4uZjk5MTJlOWE1OTAzNDc4MWFlOTlmMGY2YzI2ZWEw
M2JiZDIxN2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTA0LTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXZWJD
b3JlOjpTZWxlY3Rpb25SZWN0IHRvIFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ4MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBNZWdhbiBHYXJkbmVyLgorCisgICAgICAgIFRvIHByZXBhcmUgZm9yIHJl
bmRlcmluZyBub24tcmVjdGlsaW5lYXIgc2VsZWN0aW9uIHF1YWRzIG9uIGlPUyB1c2luZyBVSUtp
dCwgcmVuYW1lIGBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0YCB0bworICAgICAgICBgV2ViQ29yZTo6
U2VsZWN0aW9uR2VvbWV0cnlgLiBJbiBhIHN1YnNlcXVlbnQgcGF0Y2gsIHRoaXMgY2xhc3Mgd2ls
bCBiZSBiYWNrZWQgYnkgYSBgRmxvYXRRdWFkYCBpbnN0ZWFkIG9mIGFuCisgICAgICAgIGBJbnRS
ZWN0YCwgYW5kIHdpbGwgYWRkaXRpb25hbGx5IGNvbnRhaW4gYSBmbGFnIGluZGljYXRpbmcgd2hl
dGhlciBpdCBzaG91bGQgcmVuZGVyIHVzaW5nIHRoZSBib3VuZGluZyByZWN0IG9mCisgICAgICAg
IHRoZSBxdWFkIChhbmQgc2hvdWxkIGFkZGl0aW9uYWxseSBiZSBjb2FsZXNjZWQgd2l0aCBzdXJy
b3VuZGluZyBzZWxlY3Rpb24gcmVjdHMpLCBvciBpZiBpdCBzaG91bGQgcmVuZGVyIHRoZQorICAg
ICAgICBzZWxlY3Rpb24gcXVhZCB3aXRob3V0IGNvYWxlc2NpbmcuCisKKyAgICAgICAgTm8gY2hh
bmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRSZWN0c0Zyb21NYXJrZXJzOndpdGhU
ZXh0Ol0pOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIHBh
Z2UvVGV4dEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplSW5kaWNh
dG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2VsZWN0aW9uR2VvbWV0cnkuY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OlNlbGVjdGlvbkdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXRMb2dpY2FsTGVmdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6c2V0TG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXRMb2dpY2FsVG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXRMb2dpY2FsSGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rp
b25HZW9tZXRyeS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Nl
bGVjdGlvblJlY3QuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpyZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojpsb2dpY2FsTGVm
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeTo6bG9naWNhbFdp
ZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojpsb2dpY2Fs
VG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojpsb2dpY2Fs
SGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpkaXJl
Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6Om1pblgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6Om1heFggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6Om1heFkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OmxpbmVOdW1iZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OmlzTGluZUJyZWFrIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojppc0ZpcnN0T25MaW5lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojppc0xhc3RPbkxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OmNvbnRhaW5zU3RhcnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OmNvbnRhaW5zRW5kIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojppc0hvcml6b250YWwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OmlzSW5GaXhlZFBv
c2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5Ojppc1J1
YnlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpwYWdl
TnVtYmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXRS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5OjpzZXREaXJlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OnNldE1pblgpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk6OnNldE1heFgpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uR2VvbWV0cnk6OnNldE1heFkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uR2VvbWV0cnk6OnNldExpbmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
R2VvbWV0cnk6OnNldElzTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5OjpzZXRJc0ZpcnN0T25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5OjpzZXRJc0xhc3RPbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2Vv
bWV0cnk6OnNldENvbnRhaW5zU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uR2Vv
bWV0cnk6OnNldENvbnRhaW5zRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkdlb21l
dHJ5OjpzZXRJc0hvcml6b250YWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29sbGVjdFNlbGVjdGlvbkdlb21l
dHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25S
ZWN0cyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNv
bGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdExpbmVI
ZWlnaHRPZlNlbGVjdGlvbkdlb21ldHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29hbGVzY2VT
ZWxlY3Rpb25HZW9tZXRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29s
bGVjdFNlbGVjdGlvbkdlb21ldHJpZXNXaXRob3V0VW5pb25JbnRlcmlvckxpbmVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25S
ZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphZGp1c3RMaW5lSGVpZ2h0T2ZTZWxl
Y3Rpb25SZWN0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2FsZXNjZVNlbGVjdGlv
blJlY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29sbGVj
dFNlbGVjdGlvblJlY3RzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5lcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ludGVybmFs
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2VsZWN0aW9uSW5mbzo6UmVuZGVyU2VsZWN0aW9uSW5mbyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29s
bGVjdFNlbGVjdGlvbkdlb21ldHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNGb3JMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKwogMjAyMS0wNC0x
OSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgRmxvYXRRdWFkOjppc0VtcHR5KCkgdG8gYm91bmRpbmdCb3hJc0VtcHR5KCkgYW5kIHJlaW1w
bGVtZW50IGlzRW1wdHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZjM5M2RhZWY5YWUzZjFlYTAwYmU2MWI3MGIx
ZTJjYmE2NGQxNWQ3Li4xNTA2YzM3NWExZjIxZTEzZmUzMzdiNTA4OGMzOWFhZjNiNTZhZDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTA0LTIwICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0IHRvIFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBN
ZWdhbiBHYXJkbmVyLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
IChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogU2hhcmVkL0VkaXRv
clN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uR2VvbWV0cnk+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkdlb21ldHJ5Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25SZWN0Pjo6ZW5jb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25SZWN0Pjo6ZGVjb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oOgor
ICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDp3aXRo
VGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6V0tTZWxlY3Rpb25EcmF3aW5nSW5mbzo6V0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViS2l0
OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcG9pbnRJc0luc2lkZVNl
bGVjdGlvblJlY3Q6b3V0Qm91bmRpbmdSZWN0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9zaG91bGRUb2dnbGVTZWxlY3Rpb25Db21tYW5kc0FmdGVyVGFwQXQ6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25HZW9tZXRyaWVzOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHdlYlNlbGVjdGlvblJlY3RzXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2xvb2t1cEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3NoYXJlRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
dHJhbnNsYXRlRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWRkU2hv
cnRjdXRGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93RGljdGlv
bmFyeTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eVJldHJpZXZl
UmVjdHNFbmNsb3NpbmdTZWxlY3Rpb25PZmZzZXQ6d2l0aEdyYW51bGFyaXR5Ol0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9hY2Nlc3NpYmlsaXR5UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0OndpdGhUZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHNlbGVjdGVkVGV4dFJhbmdlXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgd2Vi
U2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW06CisgICAgICAgICgtW1dLVGV4dFNlbGVjdGlvblJl
Y3QgaW5pdFdpdGhDR1JlY3Q6XSk6CisgICAgICAgICgtW1dLVGV4dFNlbGVjdGlvblJlY3QgaW5p
dFdpdGhTZWxlY3Rpb25HZW9tZXRyeTpdKToKKyAgICAgICAgKC1bV0tUZXh0U2VsZWN0aW9uUmVj
dCByZWN0XSk6CisgICAgICAgICgtW1dLVGV4dFNlbGVjdGlvblJlY3Qgd3JpdGluZ0RpcmVjdGlv
bl0pOgorICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25SZWN0IGNvbnRhaW5zU3RhcnRdKToKKyAg
ICAgICAgKC1bV0tUZXh0U2VsZWN0aW9uUmVjdCBjb250YWluc0VuZF0pOgorICAgICAgICAoLVtX
S1RleHRTZWxlY3Rpb25SZWN0IGlzVmVydGljYWxdKToKKyAgICAgICAgKC1bV0tUZXh0U2VsZWN0
aW9uUmVjdCBpbml0V2l0aFNlbGVjdGlvblJlY3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Cb3Vu
ZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0Q29udGVudFRvUm9vdFZpZXcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rp
b25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0V2l0aFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydENvbnRlbnRUb1Jvb3RWaWV3
U2VsZWN0aW9uUmVjdHMpOiBEZWxldGVkLgorCiAyMDIxLTA0LTE5ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1lZGlhIHBsYXliYWNrIGNvbnRpbnVl
cyBhZnRlciBiYWNrZ3JvdW5kaW5nIGhvc3RpbmcgYXBwbGljYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwppbmRleCAyNzNhMzUzYThhZjY3YTExMDdhZDVmOTMxMmMzYTVkNTc0OWVhZWEz
Li4zYjBmMDYxODljMjIyNmQ5MGI3YzY2MWQ5MTVmODQ2NzQ3NGI2NDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMjAgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFdlYkNvcmU6OlNl
bGVjdGlvblJlY3QgdG8gV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDgyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE1lZ2FuIEdhcmRuZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgc2VsZWN0aW9uUmVjdHNGb3JDb3JlUmFuZ2U6
XSk6CisKIDIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAppbmRleCAyYTI0YzJjNzRjMWY2OTg1OTVmNTJhNWNmM2MzOWM2ZjQ5
Zjc3MzMzLi4zMzRhOGM5NDBlODhlMzYxY2ZiMzE1ZDdiYzg5ODViNTM0MDk4NmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ1Myw3ICs0NTMsNyBAQCBwbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tCiBwbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KIHBsYXRmb3JtL2lvcy9T
Y3JvbGxWaWV3SU9TLm1tCiBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW0KLXBsYXRm
b3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAorcGxhdGZvcm0vaW9zL1NlbGVjdGlvbkdlb21ldHJ5
LmNwcAogcGxhdGZvcm0vaW9zL1N5c3RlbU1lbW9yeUlPUy5jcHAKIHBsYXRmb3JtL2lvcy9UaGVt
ZUlPUy5tbQogcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjMjkyNTRkZDYyNWQ1OTNhZjI1YzEyNGRmNWQ4MmU3OTFmZThiOTk4Li42ODhhYmJiZGYx
MzIxMWE0NmQ3MmVjM2E1NmYyNDZkNjQ1NWQyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDQsMTAgKzY0NCw5IEBACiAJ
CTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2
RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDRDgxNTAy
MjMxRjgzRTAwNjVGQzJCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5MDMzMjQwMEJDRUJBRCAv
KiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5oICovOyB9OwotCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxh
eUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQ0U4RDEy
NzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4
NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0U4ODY0MTI2MTA1
QkYyMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIElu
TWVtb3J5RGlzcGxheUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMkMy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5
M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICov
OyB9OwogCQkxRDAwMjZBNDIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAw
MjZBMjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07
CiAJCTFEMDAyNkFBMjM3NEY5RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAw
MjZBODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICov
OyB9OwpAQCAtNDE5Myw3ICs0MTkyLDcgQEAKIAkJQkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8q
IEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJFOEVGMDQ5MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0Lmgg
Ki87IH07CiAJCUJFOTEzRDgwMTgxRUY5MjQwMERDQjA5RSAvKiBUcmFja1ByaXZhdGVCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxM0Q3RjE4
MUVGOEU1MDBEQ0IwOUUgLyogVHJhY2tQcml2YXRlQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJFOTYxQzU1MThBRDMzOEMwMEQwN0RDNSAv
KiBJbmJhbmREYXRhVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCRTk2MUM1MzE4QUQzMzdDMDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRU
cmFjay5oICovOyB9OwotCQlCRUE4MDdDOTBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uUmVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVBODA3
QzcwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvblJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCRUE4MDdDOTBGNzE0QTAzMDA1MjQxOTkg
LyogU2VsZWN0aW9uR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJFQTgwN0M3MEY3MTRBMDMwMDUyNDE5OSAvKiBTZWxlY3Rpb25HZW9tZXRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJF
RjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRTkxNzE1REQwOTAwQzRC
NEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJh
Y2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDQjExMThD
OEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2Vu
ZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC02OTU5LDkgKzY5NTgsOSBAQAogCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyogSW5N
ZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlM
aXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0YyNjEwNUE1RjAw
MEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5NZW1vcnlE
aXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyNTI2MTg1
QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVu
dEJlaGF2aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudEJlaGF2aW9y
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQjI2MTg2MTY0
MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNF
OEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8qIFdI
TFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVOYW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTE4MTEsOCArMTE4MTAsOCBAQAogCQk5NDZEMzczRDFENkNFMzFBMDA3NzA4
NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q1NTUGFyc2VyVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFy
c2VyVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFy
c2VyVG9rZW4uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3Bl
cnR5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1By
b3BlcnR5UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQ
cm9wZXJ0eVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzQxMUQ2RDA2MzIwMDc3MDg0RiAvKiBDU1NQ
cm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcDsgcGF0aCA9IHBhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDZEMzc0MjFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9
IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NDZEMzc0MjFENkQwNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VyV29y
a2VyU2FmZS5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0MzFENkNGNzg4MDA3NzA4NEYgLyog
Q1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Bh
cnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFya3Vw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU01hcmt1cC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUxNyw4ICsxNDUxNiw4IEBACiAJCUJF
OTYxQzUyMThBRDMzN0MwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZERhdGFUZXh0VHJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTk2MUM1MzE4QUQzMzdDMDBEMDdEQzUgLyog
SW5iYW5kRGF0YVRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmJhbmREYXRhVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFOTgz
RDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUtleWJvYXJk
VUlNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwotCQlCRUE4MDdDNjBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uUmVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkVBODA3QzcwRjcxNEEwMzAwNTI0MTk5IC8q
IFNlbGVjdGlvblJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0
aW9uUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRUE4MDdDNjBGNzE0QTAz
MDA1MjQxOTkgLyogU2VsZWN0aW9uR2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VsZWN0aW9uR2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCRUE4MDdDNzBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uR2VvbWV0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uR2VvbWV0cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8q
IEF1ZGlvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFRjI5RUVB
MTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZWRTdHJpbmdz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Njk1LDggKzI0Njk0LDggQEAK
IAkJCQk0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLywK
IAkJCQk0NEM5OTE4MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi8s
CiAJCQkJRTQ1MzkwMzQwRUFGRDYzNzAwMzY5NUM4IC8qIFNjcm9sbFZpZXdJT1MubW0gKi8sCi0J
CQkJQkVBODA3QzYwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvblJlY3QuY3BwICovLAotCQkJ
CUJFQTgwN0M3MEY3MTRBMDMwMDUyNDE5OSAvKiBTZWxlY3Rpb25SZWN0LmggKi8sCisJCQkJQkVB
ODA3QzYwRjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvbkdlb21ldHJ5LmNwcCAqLywKKwkJCQlC
RUE4MDdDNzBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uR2VvbWV0cnkuaCAqLywKIAkJCQkw
RjAzQzA3MzE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggKi8sCiAJCQkJRTQ1Mzkw
QUQwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8sCiAJCQkJNDRDOTkx
OUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi8sCkBAIC0zNDkzOSw4ICszNDkzOCw4
IEBACiAJCQkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDVCQzQyNzE2Rjg4MkVFMDA3MDQ4RDAgLyogU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkYwRDAwNkMxRDAw
RUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkVBODA3Qzkw
RjcxNEEwMzAwNTI0MTk5IC8qIFNlbGVjdGlvbkdlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NDY1RDdCRDI1MzZEMDVFMDAxNjY2NkQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlCRUE4MDdDOTBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uUmVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0MDVDODkxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlv
blJlY3RHYXRoZXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOThDQkM4MDUyNjE4RjY4QzAwMTU5
M0M4IC8qIFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0
QjRCQjQxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDg1ZTIwNmFmMzM2
Yjc0MmFiMDMxMjRhNmQwNjYxZDE5NjkwNTA0YmIuLmJkNzFjZjBkMzUzNjQwYjI1ZWM3ZTY3NjNl
Y2JkNjY4MjVlNTE4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CkBAIC01MSw3ICs1MSw3IEBACiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIK
ICNpbXBvcnQgIlNWR05hbWVzLmgiCiAjaW1wb3J0ICJTVkdFbGVtZW50LmgiCi0jaW1wb3J0ICJT
ZWxlY3Rpb25SZWN0LmgiCisjaW1wb3J0ICJTZWxlY3Rpb25HZW9tZXRyeS5oIgogI2ltcG9ydCAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJXQUtTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJXQUtX
aW5kb3cuaCIKQEAgLTI4MDIsMTEgKzI4MDIsMTEgQEAgLSAoTlNBcnJheSAqKXRleHRSZWN0c0Zy
b21NYXJrZXJzOihOU0FycmF5ICopbWFya2VycyB3aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0CiAg
ICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+Y29sbGFwc2VkKCkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBhdXRvIHJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNX
aXRob3V0VW5pb25JbnRlcmlvckxpbmVzKCpyYW5nZSk7Ci0gICAgaWYgKHJlY3RzLmlzRW1wdHko
KSkKKyAgICBhdXRvIGdlb21ldHJpZXMgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25H
ZW9tZXRyaWVzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5lcygqcmFuZ2UpOworICAgIGlmIChnZW9t
ZXRyaWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gY3JlYXRl
TlNBcnJheShyZWN0cywgWyZdIChhdXRvJiByZWN0KSB7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpGbG9hdFJlY3QocmVjdC5y
ZWN0KCkpIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl1dOworICAg
IHJldHVybiBjcmVhdGVOU0FycmF5KGdlb21ldHJpZXMsIFsmXSAoYXV0byYgZ2VvbWV0cnkpIHsK
KyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6W3NlbGYgY29udmVydFJlY3RU
b1NwYWNlOkZsb2F0UmVjdChnZW9tZXRyeS5yZWN0KCkpIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252
ZXJzaW9uU3BhY2U6OlNjcmVlbl1dOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNDJiYmUxYWE0NmUwMDFhYTRlODI4
Y2UxYTRmODliOGE1MjgwZjQxMi4uMzFjYTdhMzNhM2E5ZGFhYjM4OWIzNzZmODZlYzA0NjhhZDg0
Y2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTk3LDcgKzk3
LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJTZWxl
Y3Rpb25SZWN0LmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJ
bmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRl
eCAyZGY4MWVhNzA1NzNiNjc1MTUxZDQxNzY3OTA3ZWY0OGZjNGUyMmQ3Li4wODk1YWIyNDFhOTkw
MzFiZDA0MzYxZThkZTRlMjViOWIxYzY2YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGlj
YXRvci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJTZWxlY3Rpb25SZWN0LmgiCisj
aW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zMDMsOCArMzAzLDggQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUluZGljYXRvcihU
ZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBjb25zdCBTaW0KICAgICAgICAg
ZGF0YS5vcHRpb25zLmFkZChUZXh0SW5kaWNhdG9yT3B0aW9uOjpQYWludEFsbENvbnRlbnQpOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZWxzZSBpZiAoZGF0YS5vcHRpb25zLmNvbnRh
aW5zKFRleHRJbmRpY2F0b3JPcHRpb246OlVzZVNlbGVjdGlvblJlY3RGb3JTaXppbmcpKSB7Ci0g
ICAgICAgIHRleHRSZWN0cyA9IFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKHJh
bmdlKS5tYXAoWyZdKGF1dG8mIHJlY3QpIC0+IEZsb2F0UmVjdCB7Ci0gICAgICAgICAgICByZXR1
cm4gcmVjdC5yZWN0KCk7CisgICAgICAgIHRleHRSZWN0cyA9IFJlbmRlck9iamVjdDo6Y29sbGVj
dFNlbGVjdGlvbkdlb21ldHJpZXMocmFuZ2UpLm1hcChbJl0oYXV0byYgZ2VvbWV0cnkpIC0+IEZs
b2F0UmVjdCB7CisgICAgICAgICAgICByZXR1cm4gZ2VvbWV0cnkucmVjdCgpOwogICAgICAgICB9
KTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9TZWxlY3Rpb25HZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Vs
ZWN0aW9uR2VvbWV0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZTkzY2MwNWRkMDg5OTczYzRhN2U2OWE1
MmRkYjE0MzM1MTAxYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2VsZWN0aW9uR2VvbWV0cnkuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnku
aCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTZWxlY3Rpb25HZW9tZXRyeTo6U2VsZWN0aW9uR2VvbWV0cnkoY29uc3QgSW50UmVj
dCYgcmVjdCwgYm9vbCBpc0hvcml6b250YWwsIGludCBwYWdlTnVtYmVyKQorICAgIDogbV9yZWN0
KHJlY3QpCisgICAgLCBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCisgICAgLCBtX2lz
SG9yaXpvbnRhbChpc0hvcml6b250YWwpCisgICAgLCBtX3BhZ2VOdW1iZXIocGFnZU51bWJlcikK
K3sKK30KKworLy8gRklYTUU6IFdlIHNob3VsZCBtb3ZlIHNvbWUgb2YgdGhlc2UgYXJndW1lbnRz
IHRvIGFuIGF1eGlsbGFyeSBzdHJ1Y3QuCitTZWxlY3Rpb25HZW9tZXRyeTo6U2VsZWN0aW9uR2Vv
bWV0cnkoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGludCBt
aW5YLCBpbnQgbWF4WCwgaW50IG1heFksIGludCBsaW5lTnVtYmVyLCBib29sIGlzTGluZUJyZWFr
LCBib29sIGlzRmlyc3RPbkxpbmUsIGJvb2wgaXNMYXN0T25MaW5lLCBib29sIGNvbnRhaW5zU3Rh
cnQsIGJvb2wgY29udGFpbnNFbmQsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGlzSW5GaXhlZFBv
c2l0aW9uLCBib29sIGlzUnVieVRleHQsIGludCBwYWdlTnVtYmVyKQorICAgIDogbV9yZWN0KHJl
Y3QpCisgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCisgICAgLCBtX21pblgobWluWCkKKyAg
ICAsIG1fbWF4WChtYXhYKQorICAgICwgbV9tYXhZKG1heFkpCisgICAgLCBtX2xpbmVOdW1iZXIo
bGluZU51bWJlcikKKyAgICAsIG1faXNMaW5lQnJlYWsoaXNMaW5lQnJlYWspCisgICAgLCBtX2lz
Rmlyc3RPbkxpbmUoaXNGaXJzdE9uTGluZSkKKyAgICAsIG1faXNMYXN0T25MaW5lKGlzTGFzdE9u
TGluZSkKKyAgICAsIG1fY29udGFpbnNTdGFydChjb250YWluc1N0YXJ0KQorICAgICwgbV9jb250
YWluc0VuZChjb250YWluc0VuZCkKKyAgICAsIG1faXNIb3Jpem9udGFsKGlzSG9yaXpvbnRhbCkK
KyAgICAsIG1faXNJbkZpeGVkUG9zaXRpb24oaXNJbkZpeGVkUG9zaXRpb24pCisgICAgLCBtX2lz
UnVieVRleHQoaXNSdWJ5VGV4dCkKKyAgICAsIG1fcGFnZU51bWJlcihwYWdlTnVtYmVyKQorewor
fQorCit2b2lkIFNlbGVjdGlvbkdlb21ldHJ5OjpzZXRMb2dpY2FsTGVmdChpbnQgbGVmdCkKK3sK
KyAgICBpZiAobV9pc0hvcml6b250YWwpCisgICAgICAgIG1fcmVjdC5zZXRYKGxlZnQpOworICAg
IGVsc2UKKyAgICAgICAgbV9yZWN0LnNldFkobGVmdCk7Cit9CisKK3ZvaWQgU2VsZWN0aW9uR2Vv
bWV0cnk6OnNldExvZ2ljYWxXaWR0aChpbnQgd2lkdGgpCit7CisgICAgaWYgKG1faXNIb3Jpem9u
dGFsKQorICAgICAgICBtX3JlY3Quc2V0V2lkdGgod2lkdGgpOworICAgIGVsc2UKKyAgICAgICAg
bV9yZWN0LnNldEhlaWdodCh3aWR0aCk7Cit9CisKK3ZvaWQgU2VsZWN0aW9uR2VvbWV0cnk6OnNl
dExvZ2ljYWxUb3AoaW50IHRvcCkKK3sKKyAgICBpZiAobV9pc0hvcml6b250YWwpCisgICAgICAg
IG1fcmVjdC5zZXRZKHRvcCk7CisgICAgZWxzZQorICAgICAgICBtX3JlY3Quc2V0WCh0b3ApOwor
fQorCit2b2lkIFNlbGVjdGlvbkdlb21ldHJ5OjpzZXRMb2dpY2FsSGVpZ2h0KGludCBoZWlnaHQp
Cit7CisgICAgaWYgKG1faXNIb3Jpem9udGFsKQorICAgICAgICBtX3JlY3Quc2V0SGVpZ2h0KGhl
aWdodCk7CisgICAgZWxzZQorICAgICAgICBtX3JlY3Quc2V0V2lkdGgoaGVpZ2h0KTsKK30KKwor
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIFNlbGVjdGlvbkdlb21l
dHJ5IHJlY3QpCit7CisgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cChzdHJlYW0pOwor
ICAgIHN0cmVhbSA8PCAic2VsZWN0aW9uIGdlb21ldHJ5IjsKKworICAgIHN0cmVhbS5kdW1wUHJv
cGVydHkoInJlY3QiLCByZWN0LnJlY3QoKSk7CisgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiZGly
ZWN0aW9uIiwgaXNMZWZ0VG9SaWdodERpcmVjdGlvbihyZWN0LmRpcmVjdGlvbigpKSA/ICJsdHIi
IDogInJ0bCIpOworCisgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgibWluLXgiLCByZWN0Lm1pblgo
KSk7CisgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgibWF4LXgiLCByZWN0Lm1heFgoKSk7CisgICAg
c3RyZWFtLmR1bXBQcm9wZXJ0eSgibWF4LXkiLCByZWN0Lm1heFkoKSk7CisKKyAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJsaW5lIG51bWJlciIsIHJlY3QubGluZU51bWJlcigpKTsKKyAgICBpZiAo
cmVjdC5pc0xpbmVCcmVhaygpKQorICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJpcyBsaW5l
IGJyZWFrIiwgdHJ1ZSk7CisgICAgaWYgKHJlY3QuaXNGaXJzdE9uTGluZSgpKQorICAgICAgICBz
dHJlYW0uZHVtcFByb3BlcnR5KCJpcyBmaXJzdCBvbiBsaW5lIiwgdHJ1ZSk7CisgICAgaWYgKHJl
Y3QuaXNMYXN0T25MaW5lKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImlzIGxhc3Qg
b24gbGluZSIsIHRydWUpOworCisgICAgaWYgKHJlY3QuY29udGFpbnNTdGFydCgpKQorICAgICAg
ICBzdHJlYW0uZHVtcFByb3BlcnR5KCJjb250YWlucyBzdGFydCIsIHRydWUpOworCisgICAgaWYg
KHJlY3QuY29udGFpbnNFbmQoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiY29udGFp
bnMgZW5kIiwgdHJ1ZSk7CisKKyAgICBpZiAocmVjdC5pc0hvcml6b250YWwoKSkKKyAgICAgICAg
c3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgaG9yaXpvbnRhbCIsIHRydWUpOworCisgICAgaWYgKHJl
Y3QuaXNJbkZpeGVkUG9zaXRpb24oKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMg
aW4gZml4ZWQgcG9zaXRpb24iLCB0cnVlKTsKKworICAgIGlmIChyZWN0LmlzUnVieVRleHQoKSkK
KyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgcnVieSB0ZXh0IiwgdHJ1ZSk7CisKKyAg
ICBzdHJlYW0uZHVtcFByb3BlcnR5KCJwYWdlIG51bWJlciIsIHJlY3QucGFnZU51bWJlcigpKTsK
KyAgICByZXR1cm4gc3RyZWFtOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uR2VvbWV0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlkNzUzYTM0ZTMzN2Q5ZjQ1OGIwNTc0MGFlMjRmNDVkZDdkMDBmZDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uR2VvbWV0cnkuaApAQCAt
MCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlbGVjdGlvbkdlb21l
dHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTZWxlY3Rpb25HZW9tZXRyeShjb25zdCBJbnRSZWN0JiwgYm9vbCBp
c0hvcml6b250YWwsIGludCBjb2x1bW5OdW1iZXIpOworCisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBtb3ZlIHNvbWUgb2YgdGhlc2UgYXJndW1lbnRzIHRvIGFuIGF1eGlsbGFyeSBzdHJ1Y3QuCisg
ICAgU2VsZWN0aW9uR2VvbWV0cnkoY29uc3QgSW50UmVjdCYsIFRleHREaXJlY3Rpb24sIGludCwg
aW50LCBpbnQsIGludCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgaW50KTsKKyAgICBTZWxlY3Rpb25HZW9tZXRyeSgpID0gZGVmYXVsdDsKKyAgICB+U2Vs
ZWN0aW9uR2VvbWV0cnkoKSA9IGRlZmF1bHQ7CisKKyAgICBJbnRSZWN0IHJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KKworICAgIGludCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNIb3Jpem9udGFsID8gbV9yZWN0LngoKSA6IG1fcmVjdC55KCk7IH0KKyAgICBpbnQgbG9n
aWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pc0hvcml6b250YWwgPyBtX3JlY3Qud2lkdGgo
KSA6IG1fcmVjdC5oZWlnaHQoKTsgfQorICAgIGludCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1
cm4gbV9pc0hvcml6b250YWwgPyBtX3JlY3QueSgpIDogbV9yZWN0LngoKTsgfQorICAgIGludCBs
b2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pc0hvcml6b250YWwgPyBtX3JlY3QuaGVp
Z2h0KCkgOiBtX3JlY3Qud2lkdGgoKTsgfQorCisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIGludCBtaW5YKCkgY29uc3QgeyBy
ZXR1cm4gbV9taW5YOyB9CisgICAgaW50IG1heFgoKSBjb25zdCB7IHJldHVybiBtX21heFg7IH0K
KyAgICBpbnQgbWF4WSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4WTsgfQorICAgIGludCBsaW5lTnVt
YmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisgICAgYm9vbCBpc0xpbmVCcmVh
aygpIGNvbnN0IHsgcmV0dXJuIG1faXNMaW5lQnJlYWs7IH0KKyAgICBib29sIGlzRmlyc3RPbkxp
bmUoKSBjb25zdCB7IHJldHVybiBtX2lzRmlyc3RPbkxpbmU7IH0KKyAgICBib29sIGlzTGFzdE9u
TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXN0T25MaW5lOyB9CisgICAgYm9vbCBjb250YWlu
c1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1N0YXJ0OyB9CisgICAgYm9vbCBjb250
YWluc0VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNFbmQ7IH0KKyAgICBib29sIGlzSG9y
aXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIb3Jpem9udGFsOyB9CisgICAgYm9vbCBpc0lu
Rml4ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNJbkZpeGVkUG9zaXRpb247IH0KKyAg
ICBib29sIGlzUnVieVRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzUnVieVRleHQ7IH0KKyAgICBp
bnQgcGFnZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU51bWJlcjsgfQorCisgICAgdm9p
ZCBzZXRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsgfQorCisgICAg
dm9pZCBzZXRMb2dpY2FsTGVmdChpbnQpOworICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKGludCk7
CisgICAgdm9pZCBzZXRMb2dpY2FsVG9wKGludCk7CisgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0
KGludCk7CisKKyAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikg
eyBtX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjsgfQorICAgIHZvaWQgc2V0TWluWChpbnQgbWluWCkg
eyBtX21pblggPSBtaW5YOyB9CisgICAgdm9pZCBzZXRNYXhYKGludCBtYXhYKSB7IG1fbWF4WCA9
IG1heFg7IH0KKyAgICB2b2lkIHNldE1heFkoaW50IG1heFkpIHsgbV9tYXhZID0gbWF4WTsgfQor
ICAgIHZvaWQgc2V0TGluZU51bWJlcihpbnQgbGluZU51bWJlcikgeyBtX2xpbmVOdW1iZXIgPSBs
aW5lTnVtYmVyOyB9CisgICAgdm9pZCBzZXRJc0xpbmVCcmVhayhib29sIGlzTGluZUJyZWFrKSB7
IG1faXNMaW5lQnJlYWsgPSBpc0xpbmVCcmVhazsgfQorICAgIHZvaWQgc2V0SXNGaXJzdE9uTGlu
ZShib29sIGlzRmlyc3RPbkxpbmUpIHsgbV9pc0ZpcnN0T25MaW5lID0gaXNGaXJzdE9uTGluZTsg
fQorICAgIHZvaWQgc2V0SXNMYXN0T25MaW5lKGJvb2wgaXNMYXN0T25MaW5lKSB7IG1faXNMYXN0
T25MaW5lID0gaXNMYXN0T25MaW5lOyB9CisgICAgdm9pZCBzZXRDb250YWluc1N0YXJ0KGJvb2wg
Y29udGFpbnNTdGFydCkgeyBtX2NvbnRhaW5zU3RhcnQgPSBjb250YWluc1N0YXJ0OyB9CisgICAg
dm9pZCBzZXRDb250YWluc0VuZChib29sIGNvbnRhaW5zRW5kKSB7IG1fY29udGFpbnNFbmQgPSBj
b250YWluc0VuZDsgfQorICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFs
KSB7IG1faXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsOyB9CisKK3ByaXZhdGU6CisgICAgSW50
UmVjdCBtX3JlY3Q7CisgICAgVGV4dERpcmVjdGlvbiBtX2RpcmVjdGlvbiB7IFRleHREaXJlY3Rp
b246OkxUUiB9OworICAgIGludCBtX21pblggeyAwIH07CisgICAgaW50IG1fbWF4WCB7IDAgfTsK
KyAgICBpbnQgbV9tYXhZIHsgMCB9OworICAgIGludCBtX2xpbmVOdW1iZXIgeyAwIH07CisgICAg
Ym9vbCBtX2lzTGluZUJyZWFrIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNGaXJzdE9uTGluZSB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzTGFzdE9uTGluZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2NvbnRhaW5zU3RhcnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9jb250YWluc0VuZCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzSG9yaXpvbnRhbCB7IHRydWUgfTsKKyAgICBib29sIG1faXNJbkZp
eGVkUG9zaXRpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1J1YnlUZXh0IHsgZmFsc2UgfTsK
KyAgICBpbnQgbV9wYWdlTnVtYmVyIHsgMCB9OworfTsKKworV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNlbGVjdGlvbkdlb21ldHJ5
KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1NlbGVjdGlvblJlY3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGQx
OTNhMWY1MWFlNmRmOWU3MWE2YTY3NTlhNThhM2NjMThjZWUyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9T
ZWxlY3Rpb25SZWN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIKLQot
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1TZWxlY3Rpb25SZWN0OjpTZWxlY3Rpb25SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wg
aXNIb3Jpem9udGFsLCBpbnQgcGFnZU51bWJlcikKLSAgICA6IG1fcmVjdChyZWN0KQotICAgICwg
bV9kaXJlY3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKQotICAgICwgbV9taW5YKDApCi0gICAgLCBt
X21heFgoMCkKLSAgICAsIG1fbWF4WSgwKQotICAgICwgbV9saW5lTnVtYmVyKDApCi0gICAgLCBt
X2lzTGluZUJyZWFrKGZhbHNlKQotICAgICwgbV9pc0ZpcnN0T25MaW5lKGZhbHNlKQotICAgICwg
bV9pc0xhc3RPbkxpbmUoZmFsc2UpCi0gICAgLCBtX2NvbnRhaW5zU3RhcnQoZmFsc2UpCi0gICAg
LCBtX2NvbnRhaW5zRW5kKGZhbHNlKQotICAgICwgbV9pc0hvcml6b250YWwoaXNIb3Jpem9udGFs
KQotICAgICwgbV9pc0luRml4ZWRQb3NpdGlvbihmYWxzZSkKLSAgICAsIG1faXNSdWJ5VGV4dChm
YWxzZSkKLSAgICAsIG1fcGFnZU51bWJlcihwYWdlTnVtYmVyKQotewotfQotCi0vLyBGSVhNRTog
V2Ugc2hvdWxkIG1vdmUgc29tZSBvZiB0aGVzZSBhcmd1bWVudHMgdG8gYW4gYXV4aWxsYXJ5IHN0
cnVjdC4KLVNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGludCBtaW5YLCBpbnQgbWF4WCwgaW50IG1heFksCi0g
ICAgaW50IGxpbmVOdW1iZXIsIGJvb2wgaXNMaW5lQnJlYWssIGJvb2wgaXNGaXJzdE9uTGluZSwg
Ym9vbCBpc0xhc3RPbkxpbmUsIGJvb2wgY29udGFpbnNTdGFydCwgYm9vbCBjb250YWluc0VuZCwK
LSAgICBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpc0luRml4ZWRQb3NpdGlvbiwgYm9vbCBpc1J1
YnlUZXh0LCBpbnQgcGFnZU51bWJlcikKLSAgICA6IG1fcmVjdChyZWN0KQotICAgICwgbV9kaXJl
Y3Rpb24oZGlyZWN0aW9uKQotICAgICwgbV9taW5YKG1pblgpCi0gICAgLCBtX21heFgobWF4WCkK
LSAgICAsIG1fbWF4WShtYXhZKQotICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCi0gICAg
LCBtX2lzTGluZUJyZWFrKGlzTGluZUJyZWFrKQotICAgICwgbV9pc0ZpcnN0T25MaW5lKGlzRmly
c3RPbkxpbmUpCi0gICAgLCBtX2lzTGFzdE9uTGluZShpc0xhc3RPbkxpbmUpCi0gICAgLCBtX2Nv
bnRhaW5zU3RhcnQoY29udGFpbnNTdGFydCkKLSAgICAsIG1fY29udGFpbnNFbmQoY29udGFpbnNF
bmQpCi0gICAgLCBtX2lzSG9yaXpvbnRhbChpc0hvcml6b250YWwpCi0gICAgLCBtX2lzSW5GaXhl
ZFBvc2l0aW9uKGlzSW5GaXhlZFBvc2l0aW9uKQotICAgICwgbV9pc1J1YnlUZXh0KGlzUnVieVRl
eHQpCi0gICAgLCBtX3BhZ2VOdW1iZXIocGFnZU51bWJlcikKLXsKLX0KLQotU2VsZWN0aW9uUmVj
dDo6U2VsZWN0aW9uUmVjdCgpCi0gICAgOiBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIp
Ci0gICAgLCBtX21pblgoMCkKLSAgICAsIG1fbWF4WCgwKQotICAgICwgbV9tYXhZKDApCi0gICAg
LCBtX2xpbmVOdW1iZXIoMCkKLSAgICAsIG1faXNMaW5lQnJlYWsoZmFsc2UpCi0gICAgLCBtX2lz
Rmlyc3RPbkxpbmUoZmFsc2UpCi0gICAgLCBtX2lzTGFzdE9uTGluZShmYWxzZSkKLSAgICAsIG1f
Y29udGFpbnNTdGFydChmYWxzZSkKLSAgICAsIG1fY29udGFpbnNFbmQoZmFsc2UpCi0gICAgLCBt
X2lzSG9yaXpvbnRhbCh0cnVlKQotICAgICwgbV9pc0luRml4ZWRQb3NpdGlvbihmYWxzZSkKLSAg
ICAsIG1faXNSdWJ5VGV4dChmYWxzZSkKLSAgICAsIG1fcGFnZU51bWJlcigwKQotewotfQotCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgU2VsZWN0aW9uUmVjdCBy
ZWN0KQotewotICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAoc3RyZWFtKTsKLSAgICBz
dHJlYW0gPDwgInNlbGVjdGlvbiByZWN0IjsKLQotICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJl
Y3QiLCByZWN0LnJlY3QoKSk7Ci0gICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiZGlyZWN0aW9uIiwg
aXNMZWZ0VG9SaWdodERpcmVjdGlvbihyZWN0LmRpcmVjdGlvbigpKSA/ICJsdHIiIDogInJ0bCIp
OwotCi0gICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgibWluLXgiLCByZWN0Lm1pblgoKSk7Ci0gICAg
c3RyZWFtLmR1bXBQcm9wZXJ0eSgibWF4LXgiLCByZWN0Lm1heFgoKSk7Ci0gICAgc3RyZWFtLmR1
bXBQcm9wZXJ0eSgibWF4LXkiLCByZWN0Lm1heFkoKSk7Ci0KLSAgICBzdHJlYW0uZHVtcFByb3Bl
cnR5KCJsaW5lIG51bWJlciIsIHJlY3QubGluZU51bWJlcigpKTsKLSAgICBpZiAocmVjdC5pc0xp
bmVCcmVhaygpKQotICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJpcyBsaW5lIGJyZWFrIiwg
dHJ1ZSk7Ci0gICAgaWYgKHJlY3QuaXNGaXJzdE9uTGluZSgpKQotICAgICAgICBzdHJlYW0uZHVt
cFByb3BlcnR5KCJpcyBmaXJzdCBvbiBsaW5lIiwgdHJ1ZSk7Ci0gICAgaWYgKHJlY3QuaXNMYXN0
T25MaW5lKCkpCi0gICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImlzIGxhc3Qgb24gbGluZSIs
IHRydWUpOwotCi0gICAgaWYgKHJlY3QuY29udGFpbnNTdGFydCgpKQotICAgICAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJjb250YWlucyBzdGFydCIsIHRydWUpOwotCi0gICAgaWYgKHJlY3QuY29u
dGFpbnNFbmQoKSkKLSAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiY29udGFpbnMgZW5kIiwg
dHJ1ZSk7Ci0KLSAgICBpZiAocmVjdC5pc0hvcml6b250YWwoKSkKLSAgICAgICAgc3RyZWFtLmR1
bXBQcm9wZXJ0eSgiaXMgaG9yaXpvbnRhbCIsIHRydWUpOwotCi0gICAgaWYgKHJlY3QuaXNJbkZp
eGVkUG9zaXRpb24oKSkKLSAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgaW4gZml4ZWQg
cG9zaXRpb24iLCB0cnVlKTsKLQotICAgIGlmIChyZWN0LmlzUnVieVRleHQoKSkKLSAgICAgICAg
c3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgcnVieSB0ZXh0IiwgdHJ1ZSk7Ci0KLSAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJwYWdlIG51bWJlciIsIHJlY3QucGFnZU51bWJlcigpKTsKLSAgICByZXR1
cm4gc3RyZWFtOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDk4MmM2M2EwMDMzZjU3NTRjZTM3OTJlODYxMmM3N2I3ZjgxMGZiZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2VsZWN0aW9uUmVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFNlbGVjdGlvblJlY3RfaAotI2RlZmluZSBTZWxlY3Rpb25SZWN0
X2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
U2VsZWN0aW9uUmVjdCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0Jiwg
Ym9vbCBpc0hvcml6b250YWwsIGludCBjb2x1bW5OdW1iZXIpOwotCi0gICAgLy8gRklYTUU6IFdl
IHNob3VsZCBtb3ZlIHNvbWUgb2YgdGhlc2UgYXJndW1lbnRzIHRvIGFuIGF1eGlsbGFyeSBzdHJ1
Y3QuCi0gICAgU2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0JiwgVGV4dERpcmVjdGlvbiwgaW50
LCBpbnQsIGludCwgaW50LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBpbnQpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNlbGVjdGlvblJlY3QoKTsKLSAgICB+
U2VsZWN0aW9uUmVjdCgpID0gZGVmYXVsdDsKLQotICAgIEludFJlY3QgcmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdDsgfQotCi0gICAgaW50IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0hvcml6b250YWwgPyBtX3JlY3QueCgpIDogbV9yZWN0LnkoKTsgfQotICAgIGludCBsb2dp
Y2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2lzSG9yaXpvbnRhbCA/IG1fcmVjdC53aWR0aCgp
IDogbV9yZWN0LmhlaWdodCgpOyB9Ci0gICAgaW50IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVy
biBtX2lzSG9yaXpvbnRhbCA/IG1fcmVjdC55KCkgOiBtX3JlY3QueCgpOyB9Ci0gICAgaW50IGxv
Z2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2lzSG9yaXpvbnRhbCA/IG1fcmVjdC5oZWln
aHQoKSA6IG1fcmVjdC53aWR0aCgpOyB9Ci0KLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9Ci0gICAgaW50IG1pblgoKSBjb25zdCB7IHJl
dHVybiBtX21pblg7IH0KLSAgICBpbnQgbWF4WCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4WDsgfQot
ICAgIGludCBtYXhZKCkgY29uc3QgeyByZXR1cm4gbV9tYXhZOyB9Ci0gICAgaW50IGxpbmVOdW1i
ZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KLSAgICBib29sIGlzTGluZUJyZWFr
KCkgY29uc3QgeyByZXR1cm4gbV9pc0xpbmVCcmVhazsgfQotICAgIGJvb2wgaXNGaXJzdE9uTGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGaXJzdE9uTGluZTsgfQotICAgIGJvb2wgaXNMYXN0T25M
aW5lKCkgY29uc3QgeyByZXR1cm4gbV9pc0xhc3RPbkxpbmU7IH0KLSAgICBib29sIGNvbnRhaW5z
U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zU3RhcnQ7IH0KLSAgICBib29sIGNvbnRh
aW5zRW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc0VuZDsgfQotICAgIGJvb2wgaXNIb3Jp
em9udGFsKCkgY29uc3QgeyByZXR1cm4gbV9pc0hvcml6b250YWw7IH0KLSAgICBib29sIGlzSW5G
aXhlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0luRml4ZWRQb3NpdGlvbjsgfQotICAg
IGJvb2wgaXNSdWJ5VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSdWJ5VGV4dDsgfQotICAgIGlu
dCBwYWdlTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTnVtYmVyOyB9Ci0KLSAgICB2b2lk
IHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9Ci0KLSAgICB2
b2lkIHNldExvZ2ljYWxMZWZ0KGludCBsZWZ0KQotICAgIHsKLSAgICAgICAgaWYgKG1faXNIb3Jp
em9udGFsKQotICAgICAgICAgICAgbV9yZWN0LnNldFgobGVmdCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVjdC5zZXRZKGxlZnQpOwotICAgIH0KLQotICAgIHZvaWQgc2V0TG9naWNh
bFdpZHRoKGludCB3aWR0aCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzSG9yaXpvbnRhbCkKLSAg
ICAgICAgICAgIG1fcmVjdC5zZXRXaWR0aCh3aWR0aCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fcmVjdC5zZXRIZWlnaHQod2lkdGgpOwotICAgIH0KLQotICAgIHZvaWQgc2V0TG9naWNh
bFRvcChpbnQgdG9wKQotICAgIHsKLSAgICAgICAgaWYgKG1faXNIb3Jpem9udGFsKQotICAgICAg
ICAgICAgbV9yZWN0LnNldFkodG9wKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZWN0
LnNldFgodG9wKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoaW50IGhlaWdo
dCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzSG9yaXpvbnRhbCkKLSAgICAgICAgICAgIG1fcmVj
dC5zZXRIZWlnaHQoaGVpZ2h0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZWN0LnNl
dFdpZHRoKGhlaWdodCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJlY3Rpb247IH0KLSAgICB2b2lkIHNl
dE1pblgoaW50IG1pblgpIHsgbV9taW5YID0gbWluWDsgfQotICAgIHZvaWQgc2V0TWF4WChpbnQg
bWF4WCkgeyBtX21heFggPSBtYXhYOyB9Ci0gICAgdm9pZCBzZXRNYXhZKGludCBtYXhZKSB7IG1f
bWF4WSA9IG1heFk7IH0KLSAgICB2b2lkIHNldExpbmVOdW1iZXIoaW50IGxpbmVOdW1iZXIpIHsg
bV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsgfQotICAgIHZvaWQgc2V0SXNMaW5lQnJlYWsoYm9v
bCBpc0xpbmVCcmVhaykgeyBtX2lzTGluZUJyZWFrID0gaXNMaW5lQnJlYWs7IH0KLSAgICB2b2lk
IHNldElzRmlyc3RPbkxpbmUoYm9vbCBpc0ZpcnN0T25MaW5lKSB7IG1faXNGaXJzdE9uTGluZSA9
IGlzRmlyc3RPbkxpbmU7IH0KLSAgICB2b2lkIHNldElzTGFzdE9uTGluZShib29sIGlzTGFzdE9u
TGluZSkgeyBtX2lzTGFzdE9uTGluZSA9IGlzTGFzdE9uTGluZTsgfQotICAgIHZvaWQgc2V0Q29u
dGFpbnNTdGFydChib29sIGNvbnRhaW5zU3RhcnQpIHsgbV9jb250YWluc1N0YXJ0ID0gY29udGFp
bnNTdGFydDsgfQotICAgIHZvaWQgc2V0Q29udGFpbnNFbmQoYm9vbCBjb250YWluc0VuZCkgeyBt
X2NvbnRhaW5zRW5kID0gY29udGFpbnNFbmQ7IH0KLSAgICB2b2lkIHNldElzSG9yaXpvbnRhbChi
b29sIGlzSG9yaXpvbnRhbCkgeyBtX2lzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbDsgfQotCi1w
cml2YXRlOgotICAgIEludFJlY3QgbV9yZWN0OwotICAgIFRleHREaXJlY3Rpb24gbV9kaXJlY3Rp
b247Ci0gICAgaW50IG1fbWluWDsKLSAgICBpbnQgbV9tYXhYOwotICAgIGludCBtX21heFk7Ci0g
ICAgaW50IG1fbGluZU51bWJlcjsKLSAgICBib29sIG1faXNMaW5lQnJlYWs7Ci0gICAgYm9vbCBt
X2lzRmlyc3RPbkxpbmU7Ci0gICAgYm9vbCBtX2lzTGFzdE9uTGluZTsKLSAgICBib29sIG1fY29u
dGFpbnNTdGFydDsKLSAgICBib29sIG1fY29udGFpbnNFbmQ7Ci0gICAgYm9vbCBtX2lzSG9yaXpv
bnRhbDsKLSAgICBib29sIG1faXNJbkZpeGVkUG9zaXRpb247Ci0gICAgYm9vbCBtX2lzUnVieVRl
eHQ7Ci0gICAgaW50IG1fcGFnZU51bWJlcjsKLX07Ci0KLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBTZWxlY3Rpb25SZWN0KTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2VsZWN0aW9uUmVjdF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA3ODMwMWU2MGM5MTUxN2U3
NDdiOWM4ZjE4ZDhiYmJkNDc4YTU3NDkxLi4zMjUxMGNkNDViYjNiMDA0M2IzODUyMjAyYTViNjgw
OWI4YjZmOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiTG9n
aWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgotI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIK
KyNpbmNsdWRlICJTZWxlY3Rpb25HZW9tZXRyeS5oIgogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCkBA
IC04MCwxMiArODAsMTIgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlckltYWdl
KTsKIC8vIGR1cmluZyBzZWxlY3Rpb24gY3JlYXRpb24geWV0IGFueXdheS4KIC8vIEZJWE1FOiBX
ZSBjYW4ndCB0ZWxsIHdoZXRoZXIgb3Igbm90IHdlIGNvbnRhaW4gdGhlIHN0YXJ0IG9yIGVuZCBv
ZiB0aGUgc2VsZWN0ZWQgUmFuZ2UgdXNpbmcgb25seSB0aGUgb2Zmc2V0cwogLy8gb2YgdGhlIHN0
YXJ0IGFuZCBlbmQsIHdlIG5lZWQgdG8ga25vdyB0aGUgd2hvbGUgUG9zaXRpb24uCi12b2lkIFJl
bmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiBy
ZWN0cywgdW5zaWduZWQsIHVuc2lnbmVkKQordm9pZCBSZW5kZXJJbWFnZTo6Y29sbGVjdFNlbGVj
dGlvbkdlb21ldHJpZXMoVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiYgZ2VvbWV0cmllcywgdW5z
aWduZWQsIHVuc2lnbmVkKQogewogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSB0
aGlzLT5jb250YWluaW5nQmxvY2soKTsKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0OwotICAgIC8v
IEZJWE1FOiBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gcGFja2FnZSBsaW5lIGJvdW5kcyBpbnRv
IFNlbGVjdGlvblJlY3RzLiBXZSBzaG91bGQgZmluZAorICAgIC8vIEZJWE1FOiBJdCBkb2Vzbid0
IG1ha2Ugc2Vuc2UgdG8gcGFja2FnZSBsaW5lIGJvdW5kcyBpbnRvIFNlbGVjdGlvbkdlb21ldHJ5
LiBXZSBzaG91bGQgZmluZAogICAgIC8vIHRoZSByaWdodCBhbmQgbGVmdCBleHRlbnQgb2YgdGhl
IHNlbGVjdGlvbiBvbmNlIGZvciB0aGUgZW50aXJlIHNlbGVjdGVkIFJhbmdlLCBwZXJoYXBzCiAg
ICAgLy8gdXNpbmcgdGhlIFJhbmdlJ3MgY29tbW9uIGFuY2VzdG9yLgogICAgIEludFJlY3QgbGlu
ZUV4dGVudFJlY3Q7CkBAIC0xMjgsOSArMTI4LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y29sbGVj
dFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVjdHMsIHVuc2lnbmVkLAog
ICAgIGlmICghY29udGFpbmluZ0Jsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAg
ICAgICBsaW5lRXh0ZW50Qm91bmRzID0gbGluZUV4dGVudEJvdW5kcy50cmFuc3Bvc2VkUmVjdCgp
OwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBlaXRoZXIgbWFraW5nIFNlbGVj
dGlvblJlY3QgYSBzdHJ1Y3Qgb3IgYmV0dGVyIG9yZ2FuaXplIGl0cyBvcHRpb25hbCBmaWVsZHMg
aW50bworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgZWl0aGVyIG1ha2luZyBTZWxl
Y3Rpb25HZW9tZXRyeSBhIHN0cnVjdCBvciBiZXR0ZXIgb3JnYW5pemUgaXRzIG9wdGlvbmFsIGZp
ZWxkcyBpbnRvCiAgICAgLy8gYW4gYXV4aWxpYXJ5IHN0cnVjdCB0byBzaW1wbGlmeSBpdHMgaW5p
dGlhbGl6YXRpb24uCi0gICAgcmVjdHMuYXBwZW5kKFNlbGVjdGlvblJlY3QoYWJzb2x1dGVCb3Vu
ZHMsIGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5kaXJlY3Rpb24oKSwgbGluZUV4dGVudEJvdW5k
cy54KCksIGxpbmVFeHRlbnRCb3VuZHMubWF4WCgpLCBsaW5lRXh0ZW50Qm91bmRzLm1heFkoKSwg
MCwgZmFsc2UgLyogbGluZSBicmVhayAqLywgaXNGaXJzdE9uTGluZSwgaXNMYXN0T25MaW5lLCBm
YWxzZSAvKiBjb250YWlucyBzdGFydCAqLywgZmFsc2UgLyogY29udGFpbnMgZW5kICovLCBjb250
YWluaW5nQmxvY2stPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgaXNGaXhlZCwg
ZmFsc2UgLyogcnVieSB0ZXh0ICovLCB2aWV3KCkucGFnZU51bWJlckZvckJsb2NrUHJvZ3Jlc3Np
b25PZmZzZXQoYWJzb2x1dGVCb3VuZHMueCgpKSkpOworICAgIGdlb21ldHJpZXMuYXBwZW5kKFNl
bGVjdGlvbkdlb21ldHJ5KGFic29sdXRlQm91bmRzLCBjb250YWluaW5nQmxvY2stPnN0eWxlKCku
ZGlyZWN0aW9uKCksIGxpbmVFeHRlbnRCb3VuZHMueCgpLCBsaW5lRXh0ZW50Qm91bmRzLm1heFgo
KSwgbGluZUV4dGVudEJvdW5kcy5tYXhZKCksIDAsIGZhbHNlIC8qIGxpbmUgYnJlYWsgKi8sIGlz
Rmlyc3RPbkxpbmUsIGlzTGFzdE9uTGluZSwgZmFsc2UgLyogY29udGFpbnMgc3RhcnQgKi8sIGZh
bHNlIC8qIGNvbnRhaW5zIGVuZCAqLywgY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCksIGlzRml4ZWQsIGZhbHNlIC8qIHJ1YnkgdGV4dCAqLywgdmlldygp
LnBhZ2VOdW1iZXJGb3JCbG9ja1Byb2dyZXNzaW9uT2Zmc2V0KGFic29sdXRlQm91bmRzLngoKSkp
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4
IDI1N2UxYzAwNDI1OWMwOWRhMzJlMjEzNTUzN2VkYzdhZjIzODE2ZjIuLjEyOTY3NTkwYjRjMzM4
NGQzZDE1NDFlM2FkMDA4OWNjZTNlMTMyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFyZWFFbGVtZW50
Rm9jdXNDaGFuZ2VkKEhUTUxBcmVhRWxlbWVudCopOwogICAgIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJl
Y3Q+JiwgdW5zaWduZWQsIHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTZWxl
Y3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mLCB1bnNpZ25lZCwgdW5z
aWduZWQpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2b2lkIHNldElzR2VuZXJhdGVkQ29udGVu
dChib29sIGdlbmVyYXRlZCA9IHRydWUpIHsgbV9pc0dlbmVyYXRlZENvbnRlbnQgPSBnZW5lcmF0
ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5k
ZXggM2IyMzBmMWJiZjcxMDFlMWEwNGYyMjY2NDE5YjNlMjI2MmJkNjhmNC4uYmIwYzk3NzNiMjI4
OGJjODFhM2NiZTc1YzcwZmEzZjA2ZWU5Y2I5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRl
ICJTZWxlY3Rpb25SZWN0LmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJM
aW5lQnJlYWs6OnVwZGF0ZUZyb21TdHlsZSgpCiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2Vs
ZWN0aW9uUmVjdD4mIHJlY3RzLCB1bnNpZ25lZCwgdW5zaWduZWQpCit2b2lkIFJlbmRlckxpbmVC
cmVhazo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5
PiYgcmVjdHMsIHVuc2lnbmVkLCB1bnNpZ25lZCkKIHsKICAgICBhdXRvIHJ1biA9IExheW91dElu
dGVncmF0aW9uOjpydW5Gb3IoKnRoaXMpOwogCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBSZW5k
ZXJMaW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4m
IHJlY3RzLCB1bnNpZ24KICAgICAgICAgfQogICAgIH0KIAotICAgIHJlY3RzLmFwcGVuZChTZWxl
Y3Rpb25SZWN0KGFic1JlY3QsIHJ1bi0+ZGlyZWN0aW9uKCksIGV4dGVudHNSZWN0LngoKSwgZXh0
ZW50c1JlY3QubWF4WCgpLCBleHRlbnRzUmVjdC5tYXhZKCksIDAsIHJ1bi0+aXNMaW5lQnJlYWso
KSwgaXNGaXJzdE9uTGluZSwgaXNMYXN0T25MaW5lLCBmYWxzZSwgZmFsc2UsIGJveElzSG9yaXpv
bnRhbCwgaXNGaXhlZCwgY29udGFpbmluZ0Jsb2NrLT5pc1J1YnlUZXh0KCksIHZpZXcoKS5wYWdl
TnVtYmVyRm9yQmxvY2tQcm9ncmVzc2lvbk9mZnNldChhYnNSZWN0LngoKSkpKTsKKyAgICByZWN0
cy5hcHBlbmQoU2VsZWN0aW9uR2VvbWV0cnkoYWJzUmVjdCwgcnVuLT5kaXJlY3Rpb24oKSwgZXh0
ZW50c1JlY3QueCgpLCBleHRlbnRzUmVjdC5tYXhYKCksIGV4dGVudHNSZWN0Lm1heFkoKSwgMCwg
cnVuLT5pc0xpbmVCcmVhaygpLCBpc0ZpcnN0T25MaW5lLCBpc0xhc3RPbkxpbmUsIGZhbHNlLCBm
YWxzZSwgYm94SXNIb3Jpem9udGFsLCBpc0ZpeGVkLCBjb250YWluaW5nQmxvY2stPmlzUnVieVRl
eHQoKSwgdmlldygpLnBhZ2VOdW1iZXJGb3JCbG9ja1Byb2dyZXNzaW9uT2Zmc2V0KGFic1JlY3Qu
eCgpKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuaAppbmRleCBlNzUzZTQ1NTAwZTBmYzlkMmNlZGNmZjFkZWQ5NjVlYzZiNGU1NTlhLi5i
M2E4NmVlY2Y2NDljNzBiNzIyYmZmNWZjYjhjZWViNzg3ZDU1MDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0IGZp
bmFsOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9u
UmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1
bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
IGZpbmFsOworICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVjdG9yPFNlbGVj
dGlvbkdlb21ldHJ5PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zm
c2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBmaW5hbDsKICNlbmRp
ZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCA0YjA2OTUyMzgxNmQxZWE2YWJmN2ZmNzhhNDVjNjZkMzhlZTg0NzBiLi5mNGMxY2VlZjYx
MDI0NGYyMDA1ZTAyZjc1OGU2YzM3OTJlMGM1OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNzksNyArNzksNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiU2Vs
ZWN0aW9uUmVjdC5oIgorI2luY2x1ZGUgIlNlbGVjdGlvbkdlb21ldHJ5LmgiCiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzE3LDEzICs3MTcsMTMgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE8KIC8vIHdoaWNoIGFyZSBhbm5vdGF0ZWQgd2l0aCBhZGRpdGlvbmFsIHN0YXRlIHdo
aWNoIGhlbHBzIGlPUyBkcmF3IHNlbGVjdGlvbnMgaW4gaXRzIHVuaXF1ZSB3YXkuCiAvLyBObyBh
bm5vdGF0aW9ucyBhcmUgYWRkZWQgaW4gdGhpcyBjbGFzcy4KIC8vIEZJWE1FOiBNb3ZlIHRvIFJl
bmRlclRleHQgd2l0aCBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoKT8KLXZvaWQgUmVuZGVyT2JqZWN0
Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cywgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2Vs
ZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiBnZW9tZXRyaWVzLCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQogewogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1
YWRzOwogCiAgICAgaWYgKCFmaXJzdENoaWxkU2xvdygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZWJLaXQncyBwb3NpdGlvbiBmb3IgYW4gZW1wdHkgc3BhbiBhZnRlciBhIEJSIGlzIGluY29ycmVj
dCwgc28gd2UgY2FuJ3QgdHJ1c3QgCi0gICAgICAgIC8vIHF1YWRzIGZvciB0aGVtLiBXZSBkb24n
dCBuZWVkIHNlbGVjdGlvbiByZWN0cyBmb3IgdGhvc2UgYW55d2F5IHRob3VnaCwgc2luY2UgdGhl
eSAKKyAgICAgICAgLy8gcXVhZHMgZm9yIHRoZW0uIFdlIGRvbid0IG5lZWQgc2VsZWN0aW9uIGdl
b21ldHJpZXMgZm9yIHRob3NlIGFueXdheSB0aG91Z2gsIHNpbmNlIHRoZXkgCiAgICAgICAgIC8v
IGFyZSBqdXN0IGVtcHR5IGNvbnRhaW5lcnMuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MzU4Pi4KICAgICAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91cyA9
IHByZXZpb3VzU2libGluZygpOwogICAgICAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwpA
QCAtNzM5LDcgKzczOSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVj
dHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cywgdW5zaWduZWQKIAogICAgIHVuc2lnbmVk
IG51bWJlck9mUXVhZHMgPSBxdWFkcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mUXVhZHM7ICsraSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKFNlbGVjdGlvblJl
Y3QocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSwgaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSwgdmlldygpLnBhZ2VOdW1iZXJGb3JCbG9ja1Byb2dyZXNzaW9uT2Zmc2V0KHF1YWRzW2ld
LmVuY2xvc2luZ0JvdW5kaW5nQm94KCkueCgpKSkpOworICAgICAgICBnZW9tZXRyaWVzLmFwcGVu
ZChTZWxlY3Rpb25HZW9tZXRyeShxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpLCB2aWV3KCkucGFnZU51bWJlckZvckJsb2NrUHJvZ3Jlc3Np
b25PZmZzZXQocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKS54KCkpKSk7CiB9CiAjZW5k
aWYKIApAQCAtMjExNywyMiArMjExNywyMiBAQCBzdGF0aWMgYm9vbCBpbnRlcnZhbHNTdWZmaWNp
ZW50bHlPdmVybGFwKGludCBzdGFydEEsIGludCBlbmRBLCBpbnQgc3RhcnRCLCBpbnQgZQogICAg
IHJldHVybiBtaW5FbmQgLSBtYXhTdGFydCA+PSBzdWZmaWNpZW50T3ZlcmxhcCAqIHN0ZDo6bWlu
KGxlbmd0aEEsIGxlbmd0aEIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0TGluZUhl
aWdodE9mU2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cywgc2l6ZV90
IG51bWJlck9mUmVjdHMsIGludCBsaW5lTnVtYmVyLCBpbnQgbGluZVRvcCwgaW50IGxpbmVIZWln
aHQpCitzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0TGluZUhlaWdodE9mU2VsZWN0aW9uR2VvbWV0
cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiBnZW9tZXRyaWVzLCBzaXplX3QgbnVtYmVy
T2ZHZW9tZXRyaWVzLCBpbnQgbGluZU51bWJlciwgaW50IGxpbmVUb3AsIGludCBsaW5lSGVpZ2h0
KQogewotICAgIEFTU0VSVChyZWN0cy5zaXplKCkgPj0gbnVtYmVyT2ZSZWN0cyk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IG51bWJlck9mUmVjdHM7IGk7ICkgeworICAgIEFTU0VSVChnZW9tZXRyaWVz
LnNpemUoKSA+PSBudW1iZXJPZkdlb21ldHJpZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSBudW1i
ZXJPZkdlb21ldHJpZXM7IGk7ICkgewogICAgICAgICAtLWk7Ci0gICAgICAgIGlmIChyZWN0c1tp
XS5saW5lTnVtYmVyKCkpCisgICAgICAgIGlmIChnZW9tZXRyaWVzW2ldLmxpbmVOdW1iZXIoKSkK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICByZWN0c1tpXS5zZXRMaW5lTnVtYmVyKGxpbmVO
dW1iZXIpOwotICAgICAgICByZWN0c1tpXS5zZXRMb2dpY2FsVG9wKGxpbmVUb3ApOwotICAgICAg
ICByZWN0c1tpXS5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVIZWlnaHQpOworICAgICAgICBnZW9tZXRy
aWVzW2ldLnNldExpbmVOdW1iZXIobGluZU51bWJlcik7CisgICAgICAgIGdlb21ldHJpZXNbaV0u
c2V0TG9naWNhbFRvcChsaW5lVG9wKTsKKyAgICAgICAgZ2VvbWV0cmllc1tpXS5zZXRMb2dpY2Fs
SGVpZ2h0KGxpbmVIZWlnaHQpOwogICAgIH0KIH0KIAotc3RhdGljIFNlbGVjdGlvblJlY3QgY29h
bGVzY2VTZWxlY3Rpb25SZWN0cyhjb25zdCBTZWxlY3Rpb25SZWN0JiBvcmlnaW5hbCwgY29uc3Qg
U2VsZWN0aW9uUmVjdCYgcHJldmlvdXMpCitzdGF0aWMgU2VsZWN0aW9uR2VvbWV0cnkgY29hbGVz
Y2VTZWxlY3Rpb25HZW9tZXRyaWVzKGNvbnN0IFNlbGVjdGlvbkdlb21ldHJ5JiBvcmlnaW5hbCwg
Y29uc3QgU2VsZWN0aW9uR2VvbWV0cnkmIHByZXZpb3VzKQogewotICAgIFNlbGVjdGlvblJlY3Qg
cmVzdWx0KHVuaW9uUmVjdChwcmV2aW91cy5yZWN0KCksIG9yaWdpbmFsLnJlY3QoKSksIG9yaWdp
bmFsLmlzSG9yaXpvbnRhbCgpLCBvcmlnaW5hbC5wYWdlTnVtYmVyKCkpOworICAgIFNlbGVjdGlv
bkdlb21ldHJ5IHJlc3VsdCh1bmlvblJlY3QocHJldmlvdXMucmVjdCgpLCBvcmlnaW5hbC5yZWN0
KCkpLCBvcmlnaW5hbC5pc0hvcml6b250YWwoKSwgb3JpZ2luYWwucGFnZU51bWJlcigpKTsKICAg
ICByZXN1bHQuc2V0RGlyZWN0aW9uKG9yaWdpbmFsLmNvbnRhaW5zU3RhcnQoKSB8fCBvcmlnaW5h
bC5jb250YWluc0VuZCgpID8gb3JpZ2luYWwuZGlyZWN0aW9uKCkgOiBwcmV2aW91cy5kaXJlY3Rp
b24oKSk7CiAgICAgcmVzdWx0LnNldENvbnRhaW5zU3RhcnQocHJldmlvdXMuY29udGFpbnNTdGFy
dCgpIHx8IG9yaWdpbmFsLmNvbnRhaW5zU3RhcnQoKSk7CiAgICAgcmVzdWx0LnNldENvbnRhaW5z
RW5kKHByZXZpb3VzLmNvbnRhaW5zRW5kKCkgfHwgb3JpZ2luYWwuY29udGFpbnNFbmQoKSk7CkBA
IC0yMTQxLDE1ICsyMTQxLDE1IEBAIHN0YXRpYyBTZWxlY3Rpb25SZWN0IGNvYWxlc2NlU2VsZWN0
aW9uUmVjdHMoY29uc3QgU2VsZWN0aW9uUmVjdCYgb3JpZ2luYWwsIGNvbnN0CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotVmVjdG9yPFNlbGVjdGlvblJlY3Q+IFJlbmRlck9iamVjdDo6Y29sbGVj
dFNlbGVjdGlvblJlY3RzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5lcyhjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UpCitWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+IFJlbmRlck9iamVjdDo6Y29sbGVj
dFNlbGVjdGlvbkdlb21ldHJpZXNXaXRob3V0VW5pb25JbnRlcmlvckxpbmVzKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKIHsKLSAgICByZXR1cm4gY29sbGVjdFNlbGVjdGlvblJlY3RzSW50ZXJu
YWwocmFuZ2UpLnJlY3RzOworICAgIHJldHVybiBjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllc0lu
dGVybmFsKHJhbmdlKS5nZW9tZXRyaWVzOwogfQogCi1hdXRvIFJlbmRlck9iamVjdDo6Y29sbGVj
dFNlbGVjdGlvblJlY3RzSW50ZXJuYWwoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSAtPiBTZWxl
Y3Rpb25SZWN0cworYXV0byBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVz
SW50ZXJuYWwoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSAtPiBTZWxlY3Rpb25HZW9tZXRyaWVz
CiB7Ci0gICAgVmVjdG9yPFNlbGVjdGlvblJlY3Q+IHJlY3RzOwotICAgIFZlY3RvcjxTZWxlY3Rp
b25SZWN0PiBuZXdSZWN0czsKKyAgICBWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+IGdlb21ldHJp
ZXM7CisgICAgVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiBuZXdHZW9tZXRyaWVzOwogICAgIGJv
b2wgaGFzRmxpcHBlZFdyaXRpbmdNb2RlID0gcmFuZ2Uuc3RhcnQuY29udGFpbmVyLT5yZW5kZXJl
cigpICYmIHJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cmVuZGVyZXIoKS0+c3R5bGUoKS5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpOwogICAgIGJvb2wgY29udGFpbnNEaWZmZXJlbnRXcml0aW5n
TW9kZXMgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBpbnRlcnNlY3RpbmdOb2Rlc1dp
dGhEZXByZWNhdGVkWmVyb09mZnNldFN0YXJ0UXVpcmsocmFuZ2UpKSB7CkBAIC0yMTYzLDIxICsy
MTYzLDIxIEBAIGF1dG8gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNJbnRlcm5h
bChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpIC0+IFNlCiAgICAgICAgICAgICAvLyBGSVhNRTog
U2VuZGluZyAwIGZvciB0aGUgc3RhcnRPZmZzZXQgaXMgYSB3ZWlyZCB3YXkgb2YgdGVsbGluZyB0
aGUgcmVuZGVyZXIgdGhhdCB0aGUgc2VsZWN0aW9uCiAgICAgICAgICAgICAvLyBkb2Vzbid0IHN0
YXJ0IGluc2lkZSBpdCwgc2luY2Ugd2UnbGwgYWxzbyBzZW5kIDAgaWYgdGhlIHNlbGVjdGlvbiAq
ZG9lcyogc3RhcnQgaW4gaXQsIGF0IG9mZnNldCAwLgogICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBTZWxlY3Rpb24gZW5kcG9pbnRzIGFyZW4ndCBhbHdheXMgaW5zaWRlIGxl
YXZlcywgYW5kIHdlIG9ubHkgYnVpbGQgU2VsZWN0aW9uUmVjdHMgZm9yIGxlYXZlcywKLSAgICAg
ICAgICAgIC8vIHNvIHdlIGNhbid0IGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHdoaWNoIFNlbGVjdGlv
blJlY3RzIGNvbnRhaW4gdGhlIHNlbGVjdGlvbiBzdGFydCBhbmQgZW5kIHVzaW5nCisgICAgICAg
ICAgICAvLyBGSVhNRTogU2VsZWN0aW9uIGVuZHBvaW50cyBhcmVuJ3QgYWx3YXlzIGluc2lkZSBs
ZWF2ZXMsIGFuZCB3ZSBvbmx5IGJ1aWxkIFNlbGVjdGlvbkdlb21ldHJpZXMgZm9yIGxlYXZlcywK
KyAgICAgICAgICAgIC8vIHNvIHdlIGNhbid0IGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHdoaWNoIFNl
bGVjdGlvbkdlb21ldHJpZXMgY29udGFpbiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFuZCBlbmQgdXNp
bmcKICAgICAgICAgICAgIC8vIG9ubHkgdGhlIG9mZnNldHMgb2YgdGhlIHN0YXJ0IGFuZCBlbmQu
IFdlIG5lZWQgdG8gcGFzcyB0aGUgd2hvbGUgUmFuZ2UuCiAgICAgICAgICAgICBpbnQgYmVnaW5T
ZWxlY3Rpb25PZmZzZXQgPSBpc1N0YXJ0Tm9kZSA/IHJhbmdlLnN0YXJ0Lm9mZnNldCA6IDA7CiAg
ICAgICAgICAgICBpbnQgZW5kU2VsZWN0aW9uT2Zmc2V0ID0gaXNFbmROb2RlID8gcmFuZ2UuZW5k
Lm9mZnNldCA6IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7Ci0gICAgICAgICAgICBy
ZW5kZXJlci0+Y29sbGVjdFNlbGVjdGlvblJlY3RzKG5ld1JlY3RzLCBiZWdpblNlbGVjdGlvbk9m
ZnNldCwgZW5kU2VsZWN0aW9uT2Zmc2V0KTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc2VsZWN0
aW9uUmVjdCA6IG5ld1JlY3RzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblJlY3Qu
Y29udGFpbnNTdGFydCgpICYmICFpc1N0YXJ0Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0aW9uUmVjdC5zZXRDb250YWluc1N0YXJ0KGZhbHNlKTsKLSAgICAgICAgICAgICAgICBpZiAo
c2VsZWN0aW9uUmVjdC5jb250YWluc0VuZCgpICYmICFpc0VuZE5vZGUpCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGVjdGlvblJlY3Quc2V0Q29udGFpbnNFbmQoZmFsc2UpOwotICAgICAgICAgICAg
ICAgIGlmIChzZWxlY3Rpb25SZWN0LmxvZ2ljYWxXaWR0aCgpIHx8IHNlbGVjdGlvblJlY3QubG9n
aWNhbEhlaWdodCgpKQotICAgICAgICAgICAgICAgICAgICByZWN0cy5hcHBlbmQoc2VsZWN0aW9u
UmVjdCk7CisgICAgICAgICAgICByZW5kZXJlci0+Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMo
bmV3R2VvbWV0cmllcywgYmVnaW5TZWxlY3Rpb25PZmZzZXQsIGVuZFNlbGVjdGlvbk9mZnNldCk7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdGlvbkdlb21ldHJ5IDogbmV3R2VvbWV0cmll
cykgeworICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25HZW9tZXRyeS5jb250YWluc1N0YXJ0
KCkgJiYgIWlzU3RhcnROb2RlKQorICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25HZW9tZXRy
eS5zZXRDb250YWluc1N0YXJ0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9u
R2VvbWV0cnkuY29udGFpbnNFbmQoKSAmJiAhaXNFbmROb2RlKQorICAgICAgICAgICAgICAgICAg
ICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRDb250YWluc0VuZChmYWxzZSk7CisgICAgICAgICAgICAg
ICAgaWYgKHNlbGVjdGlvbkdlb21ldHJ5LmxvZ2ljYWxXaWR0aCgpIHx8IHNlbGVjdGlvbkdlb21l
dHJ5LmxvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cmllcy5hcHBl
bmQoc2VsZWN0aW9uR2VvbWV0cnkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV3UmVj
dHMuc2hyaW5rKDApOworICAgICAgICAgICAgbmV3R2VvbWV0cmllcy5zaHJpbmsoMCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTIxODgsMTYgKzIxODgsMTYgQEAgYXV0byBSZW5kZXJPYmplY3Q6
OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ludGVybmFsKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkg
LT4gU2UKICAgICAgICAgICAgIGhhc0ZsaXBwZWRXcml0aW5nTW9kZSA9IGFuY2VzdG9yLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CiAgICAgfQogCi0g
ICAgYXV0byBudW1iZXJPZlJlY3RzID0gcmVjdHMuc2l6ZSgpOworICAgIGF1dG8gbnVtYmVyT2ZH
ZW9tZXRyaWVzID0gZ2VvbWV0cmllcy5zaXplKCk7CiAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9u
IGVuZHMgaW4gYSBCUiwgdGhlbiBhZGQgdGhlIGxpbmUgYnJlYWsgYml0IHRvIHRoZSBsYXN0IHJl
Y3Qgd2UgaGF2ZS4KICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgaXRzIHNlbGVjdGlvbiByZWN0IHRv
IGV4dGVuZCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgotICAgIGlmIChudW1iZXJPZlJlY3RzKSB7
CisgICAgaWYgKG51bWJlck9mR2VvbWV0cmllcykgewogICAgICAgICAvLyBPbmx5IHNldCB0aGUg
bGluZSBicmVhayBiaXQgaWYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgYWN0dWFsbHkKICAgICAgICAg
Ly8gZXh0ZW5kcyBhbGwgdGhlIHdheSB0byBpbmNsdWRlIHRoZSA8YnI+LiBWaXNpYmxlUG9zaXRp
b24gaGVscHMgdG8KICAgICAgICAgLy8gZmlndXJlIHRoaXMgb3V0LgogICAgICAgICBpZiAoaXM8
SFRNTEJSRWxlbWVudD4oVmlzaWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlv
bihyYW5nZS5lbmQpKS5kZWVwRXF1aXZhbGVudCgpLmZpcnN0Tm9kZSgpKSkKLSAgICAgICAgICAg
IHJlY3RzLmxhc3QoKS5zZXRJc0xpbmVCcmVhayh0cnVlKTsKKyAgICAgICAgICAgIGdlb21ldHJp
ZXMubGFzdCgpLnNldElzTGluZUJyZWFrKHRydWUpOwogICAgIH0KIAogICAgIGludCBsaW5lVG9w
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKQEAgLTIyMDYsMTIgKzIyMDYsMTIg
QEAgYXV0byBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ludGVybmFsKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSkgLT4gU2UKICAgICBpbnQgbGFzdExpbmVCb3R0b20gPSBsaW5l
Qm90dG9tOwogICAgIGludCBsaW5lTnVtYmVyID0gMDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtYmVyT2ZSZWN0czsgKytpKSB7Ci0gICAgICAgIGludCBjdXJyZW50UmVjdFRvcCA9
IHJlY3RzW2ldLmxvZ2ljYWxUb3AoKTsKLSAgICAgICAgaW50IGN1cnJlbnRSZWN0Qm90dG9tID0g
Y3VycmVudFJlY3RUb3AgKyByZWN0c1tpXS5sb2dpY2FsSGVpZ2h0KCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1iZXJPZkdlb21ldHJpZXM7ICsraSkgeworICAgICAgICBpbnQgY3Vy
cmVudFJlY3RUb3AgPSBnZW9tZXRyaWVzW2ldLmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgaW50IGN1
cnJlbnRSZWN0Qm90dG9tID0gY3VycmVudFJlY3RUb3AgKyBnZW9tZXRyaWVzW2ldLmxvZ2ljYWxI
ZWlnaHQoKTsKIAogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvdW50IHRoZSBydWJ5IHRl
eHQgYXMgYSBzZXBhcmF0ZSBsaW5lLgotICAgICAgICBpZiAoaW50ZXJ2YWxzU3VmZmljaWVudGx5
T3ZlcmxhcChjdXJyZW50UmVjdFRvcCwgY3VycmVudFJlY3RCb3R0b20sIGxpbmVUb3AsIGxpbmVC
b3R0b20pIHx8IChpICYmIHJlY3RzW2ldLmlzUnVieVRleHQoKSkpIHsKKyAgICAgICAgaWYgKGlu
dGVydmFsc1N1ZmZpY2llbnRseU92ZXJsYXAoY3VycmVudFJlY3RUb3AsIGN1cnJlbnRSZWN0Qm90
dG9tLCBsaW5lVG9wLCBsaW5lQm90dG9tKSB8fCAoaSAmJiBnZW9tZXRyaWVzW2ldLmlzUnVieVRl
eHQoKSkpIHsKICAgICAgICAgICAgIC8vIEdyb3cgdGhlIGN1cnJlbnQgbGluZSBib3VuZHMuCiAg
ICAgICAgICAgICBsaW5lVG9wID0gc3RkOjptaW4obGluZVRvcCwgY3VycmVudFJlY3RUb3ApOwog
ICAgICAgICAgICAgbGluZUJvdHRvbSA9IHN0ZDo6bWF4KGxpbmVCb3R0b20sIGN1cnJlbnRSZWN0
Qm90dG9tKTsKQEAgLTIyMjEsNyArMjIyMSw3IEBAIGF1dG8gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0
U2VsZWN0aW9uUmVjdHNJbnRlcm5hbChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpIC0+IFNlCiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbGluZUJvdHRvbSA9IHN0ZDo6bWluKGxh
c3RMaW5lVG9wLCBsaW5lQm90dG9tKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFk
anVzdExpbmVIZWlnaHRPZlNlbGVjdGlvblJlY3RzKHJlY3RzLCBpLCBsaW5lTnVtYmVyLCBsaW5l
VG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7CisgICAgICAgICAgICBhZGp1c3RMaW5lSGVpZ2h0
T2ZTZWxlY3Rpb25HZW9tZXRyaWVzKGdlb21ldHJpZXMsIGksIGxpbmVOdW1iZXIsIGxpbmVUb3As
IGxpbmVCb3R0b20gLSBsaW5lVG9wKTsKICAgICAgICAgICAgIGlmICghaGFzRmxpcHBlZFdyaXRp
bmdNb2RlKSB7CiAgICAgICAgICAgICAgICAgbGFzdExpbmVUb3AgPSBsaW5lVG9wOwogICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50UmVjdEJvdHRvbSA+PSBsYXN0TGluZVRvcCkgewpAQCAtMjIz
NCw3ICsyMjM0LDcgQEAgYXV0byBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0lu
dGVybmFsKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkgLT4gU2UKICAgICAgICAgICAgICAgICBs
aW5lQm90dG9tID0gY3VycmVudFJlY3RCb3R0b207CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGxhc3RMaW5lQm90dG9tID0gbGluZUJvdHRvbTsKLSAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudFJlY3RUb3AgPD0gbGFzdExpbmVCb3R0b20gJiYgaSAmJiByZWN0c1tpXS5w
YWdlTnVtYmVyKCkgPT0gcmVjdHNbaSAtIDFdLnBhZ2VOdW1iZXIoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50UmVjdFRvcCA8PSBsYXN0TGluZUJvdHRvbSAmJiBpICYmIGdlb21ldHJp
ZXNbaV0ucGFnZU51bWJlcigpID09IGdlb21ldHJpZXNbaSAtIDFdLnBhZ2VOdW1iZXIoKSkgewog
ICAgICAgICAgICAgICAgICAgICBsYXN0TGluZVRvcCA9IGxpbmVUb3A7CiAgICAgICAgICAgICAg
ICAgICAgIGxpbmVCb3R0b20gPSBsYXN0TGluZVRvcDsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewpAQCAtMjI0OCwzNSArMjI0OCwzNSBAQCBhdXRvIFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVj
dGlvblJlY3RzSW50ZXJuYWwoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSAtPiBTZQogICAgIH0K
IAogICAgIC8vIEFkanVzdCBsaW5lIGhlaWdodC4KLSAgICBhZGp1c3RMaW5lSGVpZ2h0T2ZTZWxl
Y3Rpb25SZWN0cyhyZWN0cywgbnVtYmVyT2ZSZWN0cywgbGluZU51bWJlciwgbGluZVRvcCwgbGlu
ZUJvdHRvbSAtIGxpbmVUb3ApOworICAgIGFkanVzdExpbmVIZWlnaHRPZlNlbGVjdGlvbkdlb21l
dHJpZXMoZ2VvbWV0cmllcywgbnVtYmVyT2ZHZW9tZXRyaWVzLCBsaW5lTnVtYmVyLCBsaW5lVG9w
LCBsaW5lQm90dG9tIC0gbGluZVRvcCk7CiAKICAgICAvLyBTb3J0IHRoZSByZWN0YW5nbGVzIGFu
ZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGdhcHMuIFRoZSByZWN0YW5nbGVzIGNvdWxkIGJlIHVu
c29ydGVkIHdoZW4KICAgICAvLyB0aGVyZSBpcyBydWJ5IHRleHQgYW5kIHdlIGNvdWxkIGhhdmUg
Z2FwcyBvbiB0aGUgbGluZSB3aGVuIGFkamFjZW50IGVsZW1lbnRzIG9uIHRoZSBsaW5lCiAgICAg
Ly8gaGF2ZSBhIGRpZmZlcmVudCBvcmllbnRhdGlvbi4KICAgICBzaXplX3QgZmlyc3RSZWN0V2l0
aEN1cnJlbnRMaW5lTnVtYmVyID0gMDsKLSAgICBmb3IgKHNpemVfdCBjdXJyZW50UmVjdCA9IDE7
IGN1cnJlbnRSZWN0IDwgbnVtYmVyT2ZSZWN0czsgKytjdXJyZW50UmVjdCkgewotICAgICAgICBp
ZiAocmVjdHNbY3VycmVudFJlY3RdLmxpbmVOdW1iZXIoKSAhPSByZWN0c1tjdXJyZW50UmVjdCAt
IDFdLmxpbmVOdW1iZXIoKSkgeworICAgIGZvciAoc2l6ZV90IGN1cnJlbnRSZWN0ID0gMTsgY3Vy
cmVudFJlY3QgPCBudW1iZXJPZkdlb21ldHJpZXM7ICsrY3VycmVudFJlY3QpIHsKKyAgICAgICAg
aWYgKGdlb21ldHJpZXNbY3VycmVudFJlY3RdLmxpbmVOdW1iZXIoKSAhPSBnZW9tZXRyaWVzW2N1
cnJlbnRSZWN0IC0gMV0ubGluZU51bWJlcigpKSB7CiAgICAgICAgICAgICBmaXJzdFJlY3RXaXRo
Q3VycmVudExpbmVOdW1iZXIgPSBjdXJyZW50UmVjdDsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChyZWN0c1tjdXJyZW50UmVjdF0ubG9naWNhbExlZnQoKSA+
PSByZWN0c1tjdXJyZW50UmVjdCAtIDFdLmxvZ2ljYWxMZWZ0KCkpCisgICAgICAgIGlmIChnZW9t
ZXRyaWVzW2N1cnJlbnRSZWN0XS5sb2dpY2FsTGVmdCgpID49IGdlb21ldHJpZXNbY3VycmVudFJl
Y3QgLSAxXS5sb2dpY2FsTGVmdCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
U2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0ID0gcmVjdHNbY3VycmVudFJlY3RdOworICAgICAg
ICBhdXRvIHNlbGVjdGlvblJlY3QgPSBnZW9tZXRyaWVzW2N1cnJlbnRSZWN0XTsKICAgICAgICAg
c2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IGN1cnJlbnRSZWN0OyBpID4gZmlyc3RSZWN0V2l0
aEN1cnJlbnRMaW5lTnVtYmVyICYmIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSA8IHJlY3Rz
W2kgLSAxXS5sb2dpY2FsTGVmdCgpOyAtLWkpCi0gICAgICAgICAgICByZWN0c1tpXSA9IHJlY3Rz
W2kgLSAxXTsKLSAgICAgICAgcmVjdHNbaV0gPSBzZWxlY3Rpb25SZWN0OworICAgICAgICBmb3Ig
KGkgPSBjdXJyZW50UmVjdDsgaSA+IGZpcnN0UmVjdFdpdGhDdXJyZW50TGluZU51bWJlciAmJiBz
ZWxlY3Rpb25SZWN0LmxvZ2ljYWxMZWZ0KCkgPCBnZW9tZXRyaWVzW2kgLSAxXS5sb2dpY2FsTGVm
dCgpOyAtLWkpCisgICAgICAgICAgICBnZW9tZXRyaWVzW2ldID0gZ2VvbWV0cmllc1tpIC0gMV07
CisgICAgICAgIGdlb21ldHJpZXNbaV0gPSBzZWxlY3Rpb25SZWN0OwogICAgIH0KIAotICAgIGZv
ciAoc2l6ZV90IGogPSAxOyBqIDwgbnVtYmVyT2ZSZWN0czsgKytqKSB7Ci0gICAgICAgIGlmIChy
ZWN0c1tqXS5saW5lTnVtYmVyKCkgIT0gcmVjdHNbaiAtIDFdLmxpbmVOdW1iZXIoKSkKKyAgICBm
b3IgKHNpemVfdCBqID0gMTsgaiA8IG51bWJlck9mR2VvbWV0cmllczsgKytqKSB7CisgICAgICAg
IGlmIChnZW9tZXRyaWVzW2pdLmxpbmVOdW1iZXIoKSAhPSBnZW9tZXRyaWVzW2ogLSAxXS5saW5l
TnVtYmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgU2VsZWN0aW9uUmVjdCYg
cHJldmlvdXNSZWN0ID0gcmVjdHNbaiAtIDFdOworICAgICAgICBhdXRvJiBwcmV2aW91c1JlY3Qg
PSBnZW9tZXRyaWVzW2ogLSAxXTsKICAgICAgICAgYm9vbCBwcmV2aW91c1JlY3RNYXlOb3RSZWFj
aFJpZ2h0RWRnZSA9IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6
TFRSICYmIHByZXZpb3VzUmVjdC5jb250YWluc0VuZCgpKSB8fCAocHJldmlvdXNSZWN0LmRpcmVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCAmJiBwcmV2aW91c1JlY3QuY29udGFpbnNTdGFy
dCgpKTsKICAgICAgICAgaWYgKHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGludCBhZGp1c3RlZFdpZHRoID0gcmVjdHNbal0u
bG9naWNhbExlZnQoKSAtIHByZXZpb3VzUmVjdC5sb2dpY2FsTGVmdCgpOworICAgICAgICBpbnQg
YWRqdXN0ZWRXaWR0aCA9IGdlb21ldHJpZXNbal0ubG9naWNhbExlZnQoKSAtIHByZXZpb3VzUmVj
dC5sb2dpY2FsTGVmdCgpOwogICAgICAgICBpZiAoYWRqdXN0ZWRXaWR0aCA+IHByZXZpb3VzUmVj
dC5sb2dpY2FsV2lkdGgoKSkKICAgICAgICAgICAgIHByZXZpb3VzUmVjdC5zZXRMb2dpY2FsV2lk
dGgoYWRqdXN0ZWRXaWR0aCk7CiAgICAgfQpAQCAtMjI4NCw3OCArMjI4NCw3OCBAQCBhdXRvIFJl
bmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzSW50ZXJuYWwoY29uc3QgU2ltcGxlUmFu
Z2UmIHJhbmdlKSAtPiBTZQogICAgIGludCBtYXhMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKIAog
ICAgIC8vIEV4dGVuZCByZWN0cyBvdXQgdG8gZWRnZXMgYXMgbmVlZGVkLgotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZSZWN0czsgKytpKSB7Ci0gICAgICAgIFNlbGVjdGlvblJl
Y3QmIHNlbGVjdGlvblJlY3QgPSByZWN0c1tpXTsKLSAgICAgICAgaWYgKCFzZWxlY3Rpb25SZWN0
LmlzTGluZUJyZWFrKCkgJiYgc2VsZWN0aW9uUmVjdC5saW5lTnVtYmVyKCkgPj0gbWF4TGluZU51
bWJlcikKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mR2VvbWV0cmllczsgKytp
KSB7CisgICAgICAgIGF1dG8mIHNlbGVjdGlvbkdlb21ldHJ5ID0gZ2VvbWV0cmllc1tpXTsKKyAg
ICAgICAgaWYgKCFzZWxlY3Rpb25HZW9tZXRyeS5pc0xpbmVCcmVhaygpICYmIHNlbGVjdGlvbkdl
b21ldHJ5LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5lTnVtYmVyKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rp
b246OlJUTCAmJiBzZWxlY3Rpb25SZWN0LmlzRmlyc3RPbkxpbmUoKSkgewotICAgICAgICAgICAg
c2VsZWN0aW9uUmVjdC5zZXRMb2dpY2FsV2lkdGgoc2VsZWN0aW9uUmVjdC5sb2dpY2FsV2lkdGgo
KSArIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSAtIHNlbGVjdGlvblJlY3QubWluWCgpKTsK
LSAgICAgICAgICAgIHNlbGVjdGlvblJlY3Quc2V0TG9naWNhbExlZnQoc2VsZWN0aW9uUmVjdC5t
aW5YKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblJlY3QuZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6TFRSICYmIHNlbGVjdGlvblJlY3QuaXNMYXN0T25MaW5lKCkpCi0gICAg
ICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxXaWR0aChzZWxlY3Rpb25SZWN0Lm1heFgo
KSAtIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSk7CisgICAgICAgIGlmIChzZWxlY3Rpb25H
ZW9tZXRyeS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgc2VsZWN0aW9uR2Vv
bWV0cnkuaXNGaXJzdE9uTGluZSgpKSB7CisgICAgICAgICAgICBzZWxlY3Rpb25HZW9tZXRyeS5z
ZXRMb2dpY2FsV2lkdGgoc2VsZWN0aW9uR2VvbWV0cnkubG9naWNhbFdpZHRoKCkgKyBzZWxlY3Rp
b25HZW9tZXRyeS5sb2dpY2FsTGVmdCgpIC0gc2VsZWN0aW9uR2VvbWV0cnkubWluWCgpKTsKKyAg
ICAgICAgICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldExvZ2ljYWxMZWZ0KHNlbGVjdGlvbkdlb21l
dHJ5Lm1pblgoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uR2VvbWV0cnkuZGlyZWN0
aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIHNlbGVjdGlvbkdlb21ldHJ5LmlzTGFzdE9u
TGluZSgpKQorICAgICAgICAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0TG9naWNhbFdpZHRoKHNl
bGVjdGlvbkdlb21ldHJ5Lm1heFgoKSAtIHNlbGVjdGlvbkdlb21ldHJ5LmxvZ2ljYWxMZWZ0KCkp
OwogICAgIH0KIAotICAgIHJldHVybiB7IFdURk1vdmUocmVjdHMpLCBtYXhMaW5lTnVtYmVyIH07
CisgICAgcmV0dXJuIHsgV1RGTW92ZShnZW9tZXRyaWVzKSwgbWF4TGluZU51bWJlciB9OwogfQog
Ci1WZWN0b3I8U2VsZWN0aW9uUmVjdD4gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9uUmVj
dHMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiBS
ZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKGNvbnN0IFNpbXBsZVJhbmdl
JiByYW5nZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVj
dGlvblJlY3RzSW50ZXJuYWwocmFuZ2UpOwotICAgIGF1dG8gbnVtYmVyT2ZSZWN0cyA9IHJlc3Vs
dC5yZWN0cy5zaXplKCk7CisgICAgYXV0byByZXN1bHQgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RT
ZWxlY3Rpb25HZW9tZXRyaWVzSW50ZXJuYWwocmFuZ2UpOworICAgIGF1dG8gbnVtYmVyT2ZHZW9t
ZXRyaWVzID0gcmVzdWx0Lmdlb21ldHJpZXMuc2l6ZSgpOwogCiAgICAgLy8gVW5pb24gYWxsIHRo
ZSByZWN0YW5nbGVzIG9uIGludGVyaW9yIGxpbmVzIChpLmUuIG5vdCBmaXJzdCBvciBsYXN0KS4K
ICAgICAvLyBPbiBmaXJzdCBhbmQgbGFzdCBsaW5lcywganVzdCBhdm9pZCBoYXZpbmcgb3Zlcmxh
cHMgYnkgbWVyZ2luZyBpbnRlcnNlY3RpbmcgcmVjdGFuZ2xlcy4KLSAgICBWZWN0b3I8U2VsZWN0
aW9uUmVjdD4gdW5pb25lZFJlY3RzOworICAgIFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4gY29h
bGVzY2VkR2VvbWV0cmllczsKICAgICBJbnRSZWN0IGludGVyaW9yVW5pb25SZWN0OwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZSZWN0czsgKytpKSB7Ci0gICAgICAgIFNlbGVj
dGlvblJlY3QmIGN1cnJlbnRSZWN0ID0gcmVzdWx0LnJlY3RzW2ldOwotICAgICAgICBpZiAoY3Vy
cmVudFJlY3QubGluZU51bWJlcigpID09IDEpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlck9mR2VvbWV0cmllczsgKytpKSB7CisgICAgICAgIGF1dG8mIGN1cnJlbnRHZW9tZXRy
eSA9IHJlc3VsdC5nZW9tZXRyaWVzW2ldOworICAgICAgICBpZiAoY3VycmVudEdlb21ldHJ5Lmxp
bmVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICBBU1NFUlQoaW50ZXJpb3JVbmlvblJlY3Qu
aXNFbXB0eSgpKTsKLSAgICAgICAgICAgIGlmICghdW5pb25lZFJlY3RzLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIFNlbGVjdGlvblJlY3QmIHByZXZpb3VzUmVjdCA9IHVuaW9uZWRSZWN0
cy5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUmVjdC5yZWN0KCkuaW50ZXJz
ZWN0cyhjdXJyZW50UmVjdC5yZWN0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
UmVjdCA9IGNvYWxlc2NlU2VsZWN0aW9uUmVjdHMoY3VycmVudFJlY3QsIHByZXZpb3VzUmVjdCk7
CisgICAgICAgICAgICBpZiAoIWNvYWxlc2NlZEdlb21ldHJpZXMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byYgcHJldmlvdXNSZWN0ID0gY29hbGVzY2VkR2VvbWV0cmllcy5sYXN0
KCk7CisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUmVjdC5yZWN0KCkuaW50ZXJzZWN0cyhj
dXJyZW50R2VvbWV0cnkucmVjdCgpKSkgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1Jl
Y3QgPSBjb2FsZXNjZVNlbGVjdGlvbkdlb21ldHJpZXMoY3VycmVudEdlb21ldHJ5LCBwcmV2aW91
c1JlY3QpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBDb3VsZG4ndCBtZXJnZSB3aXRoIHByZXZp
b3VzIHJlY3QsIHNvIGp1c3QgYXBwZW5kaW5nLgotICAgICAgICAgICAgdW5pb25lZFJlY3RzLmFw
cGVuZChjdXJyZW50UmVjdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJlY3QubGluZU51
bWJlcigpIDwgcmVzdWx0Lm1heExpbmVOdW1iZXIpIHsKKyAgICAgICAgICAgIGNvYWxlc2NlZEdl
b21ldHJpZXMuYXBwZW5kKGN1cnJlbnRHZW9tZXRyeSk7CisgICAgICAgIH0gZWxzZSBpZiAoY3Vy
cmVudEdlb21ldHJ5LmxpbmVOdW1iZXIoKSA8IHJlc3VsdC5tYXhMaW5lTnVtYmVyKSB7CiAgICAg
ICAgICAgICBpZiAoaW50ZXJpb3JVbmlvblJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gU3RhcnQgY29sbGVjdGluZyBpbnRlcmlvciByZWN0cy4KLSAgICAgICAgICAgICAgICBp
bnRlcmlvclVuaW9uUmVjdCA9IGN1cnJlbnRSZWN0LnJlY3QoKTsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoaW50ZXJpb3JVbmlvblJlY3QuaW50ZXJzZWN0cyhjdXJyZW50UmVjdC5yZWN0KCkpCi0g
ICAgICAgICAgICAgICAgfHwgaW50ZXJpb3JVbmlvblJlY3QubWF4WCgpID09IGN1cnJlbnRSZWN0
LnJlY3QoKS54KCkKLSAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9uUmVjdC5tYXhZKCkg
PT0gY3VycmVudFJlY3QucmVjdCgpLnkoKQotICAgICAgICAgICAgICAgIHx8IGludGVyaW9yVW5p
b25SZWN0LngoKSA9PSBjdXJyZW50UmVjdC5yZWN0KCkubWF4WCgpCi0gICAgICAgICAgICAgICAg
fHwgaW50ZXJpb3JVbmlvblJlY3QueSgpID09IGN1cnJlbnRSZWN0LnJlY3QoKS5tYXhZKCkpIHsK
KyAgICAgICAgICAgICAgICBpbnRlcmlvclVuaW9uUmVjdCA9IGN1cnJlbnRHZW9tZXRyeS5yZWN0
KCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGludGVyaW9yVW5pb25SZWN0LmludGVyc2VjdHMo
Y3VycmVudEdlb21ldHJ5LnJlY3QoKSkKKyAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9u
UmVjdC5tYXhYKCkgPT0gY3VycmVudEdlb21ldHJ5LnJlY3QoKS54KCkKKyAgICAgICAgICAgICAg
ICB8fCBpbnRlcmlvclVuaW9uUmVjdC5tYXhZKCkgPT0gY3VycmVudEdlb21ldHJ5LnJlY3QoKS55
KCkKKyAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9uUmVjdC54KCkgPT0gY3VycmVudEdl
b21ldHJ5LnJlY3QoKS5tYXhYKCkKKyAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9uUmVj
dC55KCkgPT0gY3VycmVudEdlb21ldHJ5LnJlY3QoKS5tYXhZKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBPbmx5IHVuaW9uIHRoZSBsaW5lcyB0aGF0IGFyZSBhdHRhY2hlZC4KICAgICAgICAgICAg
ICAgICAvLyBGb3IgaUJvb2tzLCB0aGUgaW50ZXJpb3IgbGluZXMgbWF5IGNyb3NzIG11bHRpcGxl
IGhvcml6b250YWwgcGFnZXMuCi0gICAgICAgICAgICAgICAgaW50ZXJpb3JVbmlvblJlY3QudW5p
dGUoY3VycmVudFJlY3QucmVjdCgpKTsKKyAgICAgICAgICAgICAgICBpbnRlcmlvclVuaW9uUmVj
dC51bml0ZShjdXJyZW50R2VvbWV0cnkucmVjdCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgdW5pb25lZFJlY3RzLmFwcGVuZChTZWxlY3Rpb25SZWN0KGludGVyaW9y
VW5pb25SZWN0LCBjdXJyZW50UmVjdC5pc0hvcml6b250YWwoKSwgY3VycmVudFJlY3QucGFnZU51
bWJlcigpKSk7Ci0gICAgICAgICAgICAgICAgaW50ZXJpb3JVbmlvblJlY3QgPSBjdXJyZW50UmVj
dC5yZWN0KCk7CisgICAgICAgICAgICAgICAgY29hbGVzY2VkR2VvbWV0cmllcy5hcHBlbmQoU2Vs
ZWN0aW9uR2VvbWV0cnkoaW50ZXJpb3JVbmlvblJlY3QsIGN1cnJlbnRHZW9tZXRyeS5pc0hvcml6
b250YWwoKSwgY3VycmVudEdlb21ldHJ5LnBhZ2VOdW1iZXIoKSkpOworICAgICAgICAgICAgICAg
IGludGVyaW9yVW5pb25SZWN0ID0gY3VycmVudEdlb21ldHJ5LnJlY3QoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFByb2Nlc3NpbmcgbGFzdCBsaW5l
LgogICAgICAgICAgICAgaWYgKCFpbnRlcmlvclVuaW9uUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICB1bmlvbmVkUmVjdHMuYXBwZW5kKFNlbGVjdGlvblJlY3QoaW50ZXJpb3JVbmlv
blJlY3QsIGN1cnJlbnRSZWN0LmlzSG9yaXpvbnRhbCgpLCBjdXJyZW50UmVjdC5wYWdlTnVtYmVy
KCkpKTsKKyAgICAgICAgICAgICAgICBjb2FsZXNjZWRHZW9tZXRyaWVzLmFwcGVuZChTZWxlY3Rp
b25HZW9tZXRyeShpbnRlcmlvclVuaW9uUmVjdCwgY3VycmVudEdlb21ldHJ5LmlzSG9yaXpvbnRh
bCgpLCBjdXJyZW50R2VvbWV0cnkucGFnZU51bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgaW50
ZXJpb3JVbmlvblJlY3QgPSBJbnRSZWN0KCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IEFTU0VSVCghdW5pb25lZFJlY3RzLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBTZWxlY3Rpb25S
ZWN0JiBwcmV2aW91c1JlY3QgPSB1bmlvbmVkUmVjdHMubGFzdCgpOwotICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVjdC5sb2dpY2FsVG9wKCkgPT0gY3VycmVudFJlY3QubG9naWNhbFRvcCgpICYm
IHByZXZpb3VzUmVjdC5yZWN0KCkuaW50ZXJzZWN0cyhjdXJyZW50UmVjdC5yZWN0KCkpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoIWNvYWxlc2NlZEdlb21ldHJpZXMuaXNFbXB0eSgpKTsKKyAgICAg
ICAgICAgIGF1dG8mIHByZXZpb3VzR2VvbWV0cnkgPSBjb2FsZXNjZWRHZW9tZXRyaWVzLmxhc3Qo
KTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c0dlb21ldHJ5LmxvZ2ljYWxUb3AoKSA9PSBjdXJy
ZW50R2VvbWV0cnkubG9naWNhbFRvcCgpICYmIHByZXZpb3VzR2VvbWV0cnkucmVjdCgpLmludGVy
c2VjdHMoY3VycmVudEdlb21ldHJ5LnJlY3QoKSkpIHsKICAgICAgICAgICAgICAgICAvLyBwcmV2
aW91c1JlY3QgaXMgYWxzbyBvbiB0aGUgbGFzdCBsaW5lLCBhbmQgaW50ZXJzZWN0cyB0aGUgY3Vy
cmVudCBvbmUuCi0gICAgICAgICAgICAgICAgcHJldmlvdXNSZWN0ID0gY29hbGVzY2VTZWxlY3Rp
b25SZWN0cyhjdXJyZW50UmVjdCwgcHJldmlvdXNSZWN0KTsKKyAgICAgICAgICAgICAgICBwcmV2
aW91c0dlb21ldHJ5ID0gY29hbGVzY2VTZWxlY3Rpb25HZW9tZXRyaWVzKGN1cnJlbnRHZW9tZXRy
eSwgcHJldmlvdXNHZW9tZXRyeSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAvLyBDb3VsZG4ndCBtZXJnZSB3aXRoIHByZXZpb3VzIHJlY3Qs
IHNvIGp1c3QgYXBwZW5kaW5nLgotICAgICAgICAgICAgdW5pb25lZFJlY3RzLmFwcGVuZChjdXJy
ZW50UmVjdCk7CisgICAgICAgICAgICBjb2FsZXNjZWRHZW9tZXRyaWVzLmFwcGVuZChjdXJyZW50
R2VvbWV0cnkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHVuaW9uZWRSZWN0czsK
KyAgICByZXR1cm4gY29hbGVzY2VkR2VvbWV0cmllczsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggN2FmMTM0YjA2N2MwNTVkZTk2ZDYyMjNj
OGU1NTU3NWQ0YzU5YzhhZi4uOTc2NGE0OTU3MTY4OTE1N2Y5MzExN2Y5OGFjNWZmZDZmMGNhNmJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzIsNyArNzIs
NyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi1jbGFzcyBTZWxlY3Rpb25SZWN0OworY2xhc3MgU2VsZWN0
aW9uR2VvbWV0cnk7CiAjZW5kaWYKIAogc3RydWN0IElubGluZVJ1bkFuZE9mZnNldDsKQEAgLTU1
MCwxMCArNTUwLDEwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3Rv
ckNvbnRhaW5lcihSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVj
dGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIHZpcnR1YWwgdm9p
ZCBjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+Jiwg
dW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzRm9yU2VsZWN0aW9uKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QgeyBhYnNvbHV0
ZVF1YWRzKHF1YWRzKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U2VsZWN0
aW9uUmVjdD4gY29sbGVjdFNlbGVjdGlvblJlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxTZWxlY3Rpb25SZWN0PiBjb2xsZWN0U2VsZWN0
aW9uUmVjdHNXaXRob3V0VW5pb25JbnRlcmlvckxpbmVzKGNvbnN0IFNpbXBsZVJhbmdlJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4gY29sbGVj
dFNlbGVjdGlvbkdlb21ldHJpZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiBjb2xsZWN0U2VsZWN0aW9uR2Vv
bWV0cmllc1dpdGhvdXRVbmlvbkludGVyaW9yTGluZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKICNl
bmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IH0KQEAgLTc3MCwxMSArNzcwLDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRMYXllck5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1l
bnRMYXlvdXQoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RydWN0IFNlbGVj
dGlvblJlY3RzIHsKLSAgICAgICAgVmVjdG9yPFNlbGVjdGlvblJlY3Q+IHJlY3RzOworICAgIHN0
cnVjdCBTZWxlY3Rpb25HZW9tZXRyaWVzIHsKKyAgICAgICAgVmVjdG9yPFNlbGVjdGlvbkdlb21l
dHJ5PiBnZW9tZXRyaWVzOwogICAgICAgICBpbnQgbWF4TGluZU51bWJlcjsKICAgICB9OwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTZWxlY3Rpb25SZWN0cyBjb2xsZWN0U2VsZWN0aW9uUmVj
dHNJbnRlcm5hbChjb25zdCBTaW1wbGVSYW5nZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTZWxlY3Rpb25HZW9tZXRyaWVzIGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzSW50ZXJuYWwo
Y29uc3QgU2ltcGxlUmFuZ2UmKTsKICNlbmRpZgogCiAgICAgTm9kZSogZ2VuZXJhdGluZ1BzZXVk
b0hvc3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VsZWN0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VsZWN0aW9uSW5mby5jcHAKaW5kZXggYjllODVjNmNjYmU2YTk3NWE1ZDJhZDM1ZjYwY2Uw
YjQ2Y2I3YjJhNS4uMzY3ZmIzZGIyMzdkZjNlYmY0ZDZkOGNiZGE5MTk0ODFmNzQyYzc0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBSZW5kZXJTZWxlY3Rpb25JbmZvOjpSZW5kZXJTZWxlY3Rpb25JbmZv
KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGJvb2wgY2xpcFRvVmlzaQogewogICAgIGlmIChyZW5k
ZXJlci5jYW5VcGRhdGVTZWxlY3Rpb25PblJvb3RMaW5lQm94ZXMoKSkgewogICAgICAgICBpZiAo
aXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICAgICAgbV9yZWN0ID0gZG93bmNhc3Q8
UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyht
X3JlcGFpbnRDb250YWluZXIsIGNsaXBUb1Zpc2libGVDb250ZW50LCBtX2NvbGxlY3RlZFNlbGVj
dGlvblJlY3RzKTsKKyAgICAgICAgICAgIG1fcmVjdCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJl
bmRlcmVyKS5jb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllc0ZvckxpbmVCb3hlcyhtX3JlcGFpbnRD
b250YWluZXIsIGNsaXBUb1Zpc2libGVDb250ZW50LCBtX2NvbGxlY3RlZFNlbGVjdGlvblJlY3Rz
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9yZWN0ID0gcmVuZGVyZXIuc2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQobV9yZXBhaW50Q29udGFpbmVyLCBjbGlwVG9WaXNpYmxlQ29udGVudCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGZkNTcz
YWRhNjBhMDU5MGQyZmU2ZmNjNzFkNjQ3OTg4NTk2Y2VkNjUuLjhhY2IxM2JmYzMzODJjMTE4M2Ez
NGQ5YWQwZjkzYWQ5NTJkZjE4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNs
dWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25HZW9tZXRyeS5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0
b3I8SW50UmVjdD4gUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBlbmQsCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgaW4gc3Bpcml0
IHRvIGFkZExpbmVCb3hSZWN0cywgYnV0IHJldHVybnMgcmVjdGFuZ2xlcwogLy8gd2hpY2ggYXJl
IGFubm90YXRlZCB3aXRoIGFkZGl0aW9uYWwgc3RhdGUgd2hpY2ggaGVscHMgdGhlIGlQaG9uZSBk
cmF3IHNlbGVjdGlvbnMgaW4gaXRzIHVuaXF1ZSB3YXkuCiAvLyBGdWxsIGFubm90YXRpb25zIGFy
ZSBhZGRlZCBpbiB0aGlzIGNsYXNzLgotdm9pZCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9u
UmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cywgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGVuZCkKK3ZvaWQgUmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVj
dG9yPFNlbGVjdGlvbkdlb21ldHJ5PiYgcmVjdHMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBl
bmQpCiB7CiAgICAgZm9yIChhdXRvIHJ1biA9IExheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRS
dW5Gb3IoKnRoaXMpOyBydW47IHJ1biA9IHJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuKCkpIHsKICAg
ICAgICAgTGF5b3V0UmVjdCByZWN0OwpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgUmVuZGVyVGV4
dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVjdHMsIHVu
c2lnbmVkIHN0CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICByZWN0cy5hcHBl
bmQoU2VsZWN0aW9uUmVjdChhYnNSZWN0LCBydW4tPmRpcmVjdGlvbigpLCBleHRlbnRzUmVjdC54
KCksIGV4dGVudHNSZWN0Lm1heFgoKSwgZXh0ZW50c1JlY3QubWF4WSgpLCAwLCBydW4tPmlzTGlu
ZUJyZWFrKCksIGlzRmlyc3RPbkxpbmUsIGlzTGFzdE9uTGluZSwgY29udGFpbnNTdGFydCwgY29u
dGFpbnNFbmQsIGJveElzSG9yaXpvbnRhbCwgaXNGaXhlZCwgY29udGFpbmluZ0Jsb2NrLT5pc1J1
YnlUZXh0KCksIHZpZXcoKS5wYWdlTnVtYmVyRm9yQmxvY2tQcm9ncmVzc2lvbk9mZnNldChhYnNS
ZWN0LngoKSkpKTsKKyAgICAgICAgcmVjdHMuYXBwZW5kKFNlbGVjdGlvbkdlb21ldHJ5KGFic1Jl
Y3QsIHJ1bi0+ZGlyZWN0aW9uKCksIGV4dGVudHNSZWN0LngoKSwgZXh0ZW50c1JlY3QubWF4WCgp
LCBleHRlbnRzUmVjdC5tYXhZKCksIDAsIHJ1bi0+aXNMaW5lQnJlYWsoKSwgaXNGaXJzdE9uTGlu
ZSwgaXNMYXN0T25MaW5lLCBjb250YWluc1N0YXJ0LCBjb250YWluc0VuZCwgYm94SXNIb3Jpem9u
dGFsLCBpc0ZpeGVkLCBjb250YWluaW5nQmxvY2stPmlzUnVieVRleHQoKSwgdmlldygpLnBhZ2VO
dW1iZXJGb3JCbG9ja1Byb2dyZXNzaW9uT2Zmc2V0KGFic1JlY3QueCgpKSkpOwogICAgIH0KIH0K
ICNlbmRpZgpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWMKICAg
ICByZXR1cm4gcmVuZGVyZXJUb1JlcGFpbnQtPmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KHJlcGFpbnRDb250YWluZXIpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNvbGxlY3RT
ZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0
UmVjdD4qIHJlY3RzKQorTGF5b3V0UmVjdCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uR2Vv
bWV0cmllc0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVjdD4q
IHJlY3RzKQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAKQEAgLTE2NDIsMTQgKzE2
NDIsMTQgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JM
aW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE8KICAgICByZXR1cm4gbG9jYWxUb0NvbnRh
aW5lclF1YWQoRmxvYXRSZWN0KHJlc3VsdFJlY3QpLCByZXBhaW50Q29udGFpbmVyKS5lbmNsb3Np
bmdCb3VuZGluZ0JveCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNvbGxlY3RTZWxl
Y3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVj
dD4mIHJlY3RzKQorTGF5b3V0UmVjdCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0
cmllc0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJl
Y3RzKQogewotICAgIHJldHVybiBjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMocmVw
YWludENvbnRhaW5lciwgY2xpcFRvVmlzaWJsZUNvbnRlbnQsICZyZWN0cyk7CisgICAgcmV0dXJu
IGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzRm9yTGluZUJveGVzKHJlcGFpbnRDb250YWluZXIs
IGNsaXBUb1Zpc2libGVDb250ZW50LCAmcmVjdHMpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlclRl
eHQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCiB7Ci0gICAgcmV0
dXJuIGNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhyZXBhaW50Q29udGFpbmVyLCBj
bGlwVG9WaXNpYmxlQ29udGVudCwgbnVsbHB0cik7CisgICAgcmV0dXJuIGNvbGxlY3RTZWxlY3Rp
b25HZW9tZXRyaWVzRm9yTGluZUJveGVzKHJlcGFpbnRDb250YWluZXIsIGNsaXBUb1Zpc2libGVD
b250ZW50LCBudWxscHRyKTsKIH0KIAogaW50IFJlbmRlclRleHQ6OmNhcmV0TWluT2Zmc2V0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDg5ZTlmY2UzOGM3
ZWUzMWExYTVjYzRlNGM1NDVmNjE4ZmYyNTYyNzUuLmUyMDIwNDQzZGI4Y2U1N2M2MDVmMDk1MTA5
ZDhlZDQ1MDUzNzU0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAt
NzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QgZmluYWw7
CiAgICAgVmVjdG9yPEludFJlY3Q+IGFic29sdXRlUmVjdHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFy
dE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVj
dGlvbkhlaWdodCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0OwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVj
dG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBl
bmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGZpbmFsOwor
ICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVjdG9yPFNlbGVjdGlvbkdlb21l
dHJ5PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBmaW5hbDsKICNlbmRpZgogCiAgICAg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0IGZpbmFsOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuQmVT
ZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgTGF5
b3V0UmVjdCBjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVu
dCwgVmVjdG9yPExheW91dFJlY3Q+Jik7CisgICAgTGF5b3V0UmVjdCBjb2xsZWN0U2VsZWN0aW9u
R2VvbWV0cmllc0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVj
dD4mKTsKIAogICAgIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLm1hcmdpbkxlZnQoKSwgMCk7IH0KICAgICBMYXlvdXRV
bml0IG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCkubWFyZ2luUmlnaHQoKSwgMCk7IH0KQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZWN1cmVUZXh0KFVDaGFyIG1hc2spOwogCi0gICAgTGF5b3V0UmVjdCBjb2xs
ZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCwgVmVjdG9yPExh
eW91dFJlY3Q+Kik7CisgICAgTGF5b3V0UmVjdCBjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllc0Zv
ckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVjdD4qKTsKICAgICBi
b29sIGNvbXB1dGVDYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0OwogCiAgICAg
dm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCBjOWM2MDMxMDU3ZjM3MWFkMTBhM2NlOGQwMDRjYmM3YzBkNGIyYzUx
Li5kNmFlYzg3ZWVhOTNkYzc4NjYxZGUxOWY4MzJmYTFkMzI2ZmJiODc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTc1MSw3ICs3NTEsNyBAQCBkZWYgaGVh
ZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyc6IFsnPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyc6IFsnPFdlYkNvcmUvRnJhbWVMb2Fk
ZXJUeXBlcy5oPiddLAotICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6IFsnIkVkaXRv
clN0YXRlLmgiJ10sCisgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeSc6IFsnIkVk
aXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6
IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpBcHBCb3VuZE5hdmln
YXRpb25UZXN0aW5nRGF0YSc6IFsnIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJRC5oIiddLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCmluZGV4IDlkMDZkYjU0ZWY4YzliYTllM2Q5Njhh
NDVkOTJjNTU2MzhkYjRkN2UuLmM4ZGNmYTUyYmIwNTY1YzIzOGE2NDUzZmY5YTFlNjA4NDY3YTZh
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBA
QCB2b2lkIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwg
c2VsZWN0aW9uQ2xpcFJlY3Q7CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdEVuZDsKLSAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblJlY3RzOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uR2VvbWV0
cmllczsKICAgICBlbmNvZGVyIDw8IG1hcmtlZFRleHRSZWN0czsKICAgICBlbmNvZGVyIDw8IG1h
cmtlZFRleHQ7CiAgICAgZW5jb2RlciA8PCBtYXJrZWRUZXh0Q2FyZXRSZWN0QXRTdGFydDsKQEAg
LTE3NCw3ICsxNzQsNyBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJlY3RBdEVuZCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxl
Y3Rpb25SZWN0cykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0aW9uR2Vv
bWV0cmllcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tYXJrZWRUZXh0UmVjdHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDgs
OCArMzA4LDggQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNlbGVj
dGlvbkNsaXBSZWN0IiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25DbGlw
UmVjdCk7CiAgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRSZWN0QXRF
bmQgIT0gSW50UmVjdCgpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNhcmV0UmVjdEF0RW5k
IiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5jYXJldFJlY3RBdEVuZCk7Ci0gICAgaWYg
KCFlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkK
LSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzZWxlY3Rpb25SZWN0cyIsIGVkaXRvclN0YXRlLnBv
c3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHMpOworICAgIGlmICghZWRpdG9yU3RhdGUucG9z
dExheW91dERhdGEoKS5zZWxlY3Rpb25HZW9tZXRyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzZWxlY3Rpb25HZW9tZXRyaWVzIiwgZWRpdG9yU3RhdGUucG9zdExheW91
dERhdGEoKS5zZWxlY3Rpb25HZW9tZXRyaWVzKTsKICAgICBpZiAoIWVkaXRvclN0YXRlLnBvc3RM
YXlvdXREYXRhKCkubWFya2VkVGV4dFJlY3RzLmlzRW1wdHkoKSkKICAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJtYXJrZWRUZXh0UmVjdHMiLCBlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLm1h
cmtlZFRleHRSZWN0cyk7CiAgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkubWFy
a2VkVGV4dC5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRv
clN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IGU4Mjhl
NDFhNzI4MmFiYWVjOGRkODVkZTc4ODEyOGNmZGM1MjQ1MjYuLmQ5NTY4YWNmMTA0OGM3YTBlNWZj
MjEzNTUyZWY5MDkyNTk3NTZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAt
MzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvblJlY3QuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+CiAjZW5kaWYKIAogI2lmIFVTRShE
SUNUQVRJT05fQUxURVJOQVRJVkVTKQpAQCAtOTcsOCArOTcsOCBAQCBzdHJ1Y3QgRWRpdG9yU3Rh
dGUgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFdlYkNvcmU6OkludFJlY3Qg
c2VsZWN0aW9uQ2xpcFJlY3Q7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRSZWN0QXRF
bmQ7Ci0gICAgICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0
czsKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IG1hcmtlZFRleHRSZWN0
czsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5PiBzZWxlY3Rpb25H
ZW9tZXRyaWVzOworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+IG1h
cmtlZFRleHRSZWN0czsKICAgICAgICAgU3RyaW5nIG1hcmtlZFRleHQ7CiAgICAgICAgIFdlYkNv
cmU6OkludFJlY3QgbWFya2VkVGV4dENhcmV0UmVjdEF0U3RhcnQ7CiAgICAgICAgIFdlYkNvcmU6
OkludFJlY3QgbWFya2VkVGV4dENhcmV0UmVjdEF0RW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggODYwM2U1MmU0NmM1YzE2ZmJhMzE5
OGEzOGZkYjNlZGE1OTg2ZjgzZC4uNTcwMTY1MGUyOTExNDAxNDlhNzAxMTZmNjBiNDVlNDUxOGJl
NjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvblJl
Y3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CkBAIC0xMzAyLDc4ICsxMzAyLDc4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9y
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uUmVjdD46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25SZWN0JiBzZWxlY3Rpb25S
ZWN0KQordm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkdlb21ldHJ5Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNlbGVjdGlvbkdlb21ldHJ5JiBzZWxlY3Rpb25HZW9tZXRyeSkK
IHsKLSAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblJlY3QucmVjdCgpOwotICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNlbGVjdGlvblJlY3QuZGlyZWN0aW9uKCkpOwotICAgIGVu
Y29kZXIgPDwgc2VsZWN0aW9uUmVjdC5taW5YKCk7Ci0gICAgZW5jb2RlciA8PCBzZWxlY3Rpb25S
ZWN0Lm1heFgoKTsKLSAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblJlY3QubWF4WSgpOwotICAgIGVu
Y29kZXIgPDwgc2VsZWN0aW9uUmVjdC5saW5lTnVtYmVyKCk7Ci0gICAgZW5jb2RlciA8PCBzZWxl
Y3Rpb25SZWN0LmlzTGluZUJyZWFrKCk7Ci0gICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0Lmlz
Rmlyc3RPbkxpbmUoKTsKLSAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblJlY3QuaXNMYXN0T25MaW5l
KCk7Ci0gICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0LmNvbnRhaW5zU3RhcnQoKTsKLSAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblJlY3QuY29udGFpbnNFbmQoKTsKLSAgICBlbmNvZGVyIDw8IHNl
bGVjdGlvblJlY3QuaXNIb3Jpem9udGFsKCk7CisgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25HZW9t
ZXRyeS5yZWN0KCk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc2VsZWN0
aW9uR2VvbWV0cnkuZGlyZWN0aW9uKCkpOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uR2VvbWV0
cnkubWluWCgpOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uR2VvbWV0cnkubWF4WCgpOworICAg
IGVuY29kZXIgPDwgc2VsZWN0aW9uR2VvbWV0cnkubWF4WSgpOworICAgIGVuY29kZXIgPDwgc2Vs
ZWN0aW9uR2VvbWV0cnkubGluZU51bWJlcigpOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uR2Vv
bWV0cnkuaXNMaW5lQnJlYWsoKTsKKyAgICBlbmNvZGVyIDw8IHNlbGVjdGlvbkdlb21ldHJ5Lmlz
Rmlyc3RPbkxpbmUoKTsKKyAgICBlbmNvZGVyIDw8IHNlbGVjdGlvbkdlb21ldHJ5LmlzTGFzdE9u
TGluZSgpOworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uR2VvbWV0cnkuY29udGFpbnNTdGFydCgp
OworICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uR2VvbWV0cnkuY29udGFpbnNFbmQoKTsKKyAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvbkdlb21ldHJ5LmlzSG9yaXpvbnRhbCgpOwogfQogCi1PcHRpb25h
bDxTZWxlY3Rpb25SZWN0PiBBcmd1bWVudENvZGVyPFNlbGVjdGlvblJlY3Q+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK09wdGlvbmFsPFNlbGVjdGlvbkdlb21ldHJ5PiBBcmd1bWVudENvZGVy
PFNlbGVjdGlvbkdlb21ldHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgU2Vs
ZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0OworICAgIFNlbGVjdGlvbkdlb21ldHJ5IHNlbGVjdGlv
bkdlb21ldHJ5OwogICAgIEludFJlY3QgcmVjdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
Y3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHNlbGVjdGlvblJlY3Quc2V0
UmVjdChyZWN0KTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRSZWN0KHJlY3QpOwogCiAgICAg
dWludDMyX3QgZGlyZWN0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGlyZWN0aW9uKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBzZWxlY3Rpb25SZWN0LnNldERpcmVj
dGlvbigoVGV4dERpcmVjdGlvbilkaXJlY3Rpb24pOworICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNl
dERpcmVjdGlvbigoVGV4dERpcmVjdGlvbilkaXJlY3Rpb24pOwogCiAgICAgaW50IGludFZhbHVl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIHNlbGVjdGlvblJlY3Quc2V0TWluWChpbnRWYWx1ZSk7CisgICAgc2Vs
ZWN0aW9uR2VvbWV0cnkuc2V0TWluWChpbnRWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGludFZhbHVlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBzZWxlY3Rp
b25SZWN0LnNldE1heFgoaW50VmFsdWUpOworICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldE1heFgo
aW50VmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbnRWYWx1ZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRNYXhZKGludFZhbHVl
KTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRNYXhZKGludFZhbHVlKTsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIHNlbGVjdGlvblJlY3Quc2V0TGluZU51bWJlcihpbnRWYWx1ZSk7CisgICAgc2VsZWN0aW9u
R2VvbWV0cnkuc2V0TGluZU51bWJlcihpbnRWYWx1ZSk7CiAKICAgICBib29sIGJvb2xWYWx1ZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRJc0xpbmVCcmVhayhib29sVmFsdWUpOwor
ICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldElzTGluZUJyZWFrKGJvb2xWYWx1ZSk7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgc2VsZWN0aW9uUmVjdC5zZXRJc0ZpcnN0T25MaW5lKGJvb2xWYWx1ZSk7CisgICAg
c2VsZWN0aW9uR2VvbWV0cnkuc2V0SXNGaXJzdE9uTGluZShib29sVmFsdWUpOwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShib29sVmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgIHNlbGVjdGlvblJlY3Quc2V0SXNMYXN0T25MaW5lKGJvb2xWYWx1ZSk7CisgICAgc2Vs
ZWN0aW9uR2VvbWV0cnkuc2V0SXNMYXN0T25MaW5lKGJvb2xWYWx1ZSk7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgc2VsZWN0aW9uUmVjdC5zZXRDb250YWluc1N0YXJ0KGJvb2xWYWx1ZSk7CisgICAgc2VsZWN0
aW9uR2VvbWV0cnkuc2V0Q29udGFpbnNTdGFydChib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShib29sVmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IHNlbGVjdGlvblJlY3Quc2V0Q29udGFpbnNFbmQoYm9vbFZhbHVlKTsKKyAgICBzZWxlY3Rpb25H
ZW9tZXRyeS5zZXRDb250YWluc0VuZChib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShib29sVmFsdWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHNlbGVj
dGlvblJlY3Quc2V0SXNIb3Jpem9udGFsKGJvb2xWYWx1ZSk7CisgICAgc2VsZWN0aW9uR2VvbWV0
cnkuc2V0SXNIb3Jpem9udGFsKGJvb2xWYWx1ZSk7CiAKLSAgICByZXR1cm4gc2VsZWN0aW9uUmVj
dDsKKyAgICByZXR1cm4gc2VsZWN0aW9uR2VvbWV0cnk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAxNTkxYjA0OGFhNTcx
NjFiNmJhODllYTM2YzQzN2Y3NzY0NWNlNDRhLi4zNDEzYmQ4ZTczOWUyNTE3ZTcwYTg5YTBhNTY0
NWExZDliMDFkN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogY2xhc3MgRmxvYXRRdWFkOwotY2xhc3MgU2VsZWN0aW9u
UmVjdDsKK2NsYXNzIFNlbGVjdGlvbkdlb21ldHJ5Owogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsK
IHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKICNlbmRpZgpAQCAtNDc2LDkgKzQ3Niw5IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q0dBZmZpbmVUcmFuc2Zvcm0+IHsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYpOwotICAgIHN0YXRpYyBP
cHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBkZWNvZGUoRGVjb2RlciYpOwordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4gewor
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9u
R2VvbWV0cnkmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0
cnk+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodD4gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24uaAppbmRleCA3M2JjYWJkMzRmOTA2NjVmYWU0ZThkZTE1ZjdiYmRiMDc4MTRjODM4Li41
YzE5OTU4Mjg1ZmZhNjViN2NmYjdiYzIwNWE4OTMxODA4MGFhMDU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24uaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudENvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxUeXBlcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2VsZWN0aW9uR2VvbWV0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJ
bmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oCmluZGV4IDMyNjg1OTlhZGQxNWU3YTRmYTZlOTVjNDY4
NmU0NjkzN2I4YWM0MjAuLjJiMDQ1OGU3ZTgyOWE5YzhlMjA4YWI3MjU5OWExODBjNWEzZGRmNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdC5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ludFBvaW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25SZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZWxlY3Rpb25HZW9tZXRyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dElu
ZGljYXRvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGUxODM5N2Mz
ZDA4Y2QxZWNiMWJkNWE1YjA2OTE0OGE2MWIxODQwYTUuLjczMGM2NTE4MjcyNmQ3YTIyMDM4ZmE3
NDk0ODVmZDIzZjg4Y2EzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0zMjIyLDcgKzMyMjIsNyBAQCAtIChOU0FycmF5ICopX2Rh
dGFEZXRlY3Rpb25SZXN1bHRzCiAKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3Rz
QXRTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aFRleHQ6KE5TU3RyaW5nICop
dGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1ZhbHVlICo+ICpyZWN0
cykpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBbX2NvbnRlbnRWaWV3IF9hY2Nlc3NpYmlsaXR5
UmV0cmlldmVSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0Om9mZnNldCB3aXRoVGV4dDp0ZXh0IGNvbXBs
ZXRpb25IYW5kbGVyOltjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYg
c2VsZWN0aW9uUmVjdHMpIHsKKyAgICBbX2NvbnRlbnRWaWV3IF9hY2Nlc3NpYmlsaXR5UmV0cmll
dmVSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0Om9mZnNldCB3aXRoVGV4dDp0ZXh0IGNvbXBsZXRpb25I
YW5kbGVyOltjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4mIHNl
bGVjdGlvblJlY3RzKSB7CiAgICAgICAgIGlmICghY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlcihj
cmVhdGVOU0FycmF5KHNlbGVjdGlvblJlY3RzLCBbXSAoYXV0byYgcmVjdCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiNmFmNjc4OTk2NjA2MTg2YzVjMzIxMTA3
OGQ2MDA2YjQ3NGY1MTkxLi42Y2E5MjQwM2JlNzFjYzg0Nzc3MDgyOTU4MzZiYmI4N2M2ODY3M2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODM4LDggKzgzOCw4
IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtRWZmZWN0aXZlRGV2aWNl
V2lkdGg7IH0KICAgICB2b2lkIHNldE1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aFdpdGhvdXRW
aWV3cG9ydENvbmZpZ3VyYXRpb25VcGRhdGUoZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VX
aWR0aCkgeyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0
aCA9IG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aDsgfQogICAgIHZvaWQgc2V0SXNTY3JvbGxp
bmdPclpvb21pbmcoYm9vbCk7Ci0gICAgdm9pZCByZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdp
dGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZz
ZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlv
blJlY3Q+Jik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRo
VGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mKT4mJik7CisgICAgdm9pZCBy
ZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5PiYpPiYmKTsKKyAgICB2b2lkIHJl
cXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
bGVjdGlvbkdlb21ldHJ5PiYpPiYmKTsKICAgICB2b2lkIGF1dG9maWxsTG9naW5DcmVkZW50aWFs
cyhjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKTsKICAgICB2
b2lkIHN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sKTsKICAgICB2b2lkIHN0YXJ0
QXV0b3Njcm9sbEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb25J
bldpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMGQ5NWZlYWIzYzgxYTBhZGNlZGQyZDllODNhNDgw
NWFiY2RhNDY5Zi4uYTUzN2EyMjcxNzc3M2E4ZmNlYmRlYjQwNzcwNzk4NmU4OGIwMTVmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMjA5LDcgKzIwOSw3IEBAIHN0cnVjdCBXS1NlbGVjdGlvbkRyYXdpbmdJ
bmZvIHsKICAgICBleHBsaWNpdCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvKGNvbnN0IEVkaXRvclN0
YXRlJik7CiAgICAgU2VsZWN0aW9uVHlwZSB0eXBlOwogICAgIFdlYkNvcmU6OkludFJlY3QgY2Fy
ZXRSZWN0OwotICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0
czsKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+IHNlbGVjdGlvbkdlb21l
dHJpZXM7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25DbGlwUmVjdDsKIH07CiAKQEAg
LTYxMyw3ICs2MTMsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERF
Q0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAoTlNBcnJheTxOU1Zh
bHVlICo+ICopX3VpVGV4dFNlbGVjdGlvblJlY3RzOwogLSAodm9pZClhY2Nlc3NpYmlsaXR5UmV0
cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnQ7CiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmV0cmll
dmVSZWN0c0VuY2xvc2luZ1NlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9mZnNldCB3aXRoR3Jh
bnVsYXJpdHk6KFVJVGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5OwotLSAodm9pZClfYWNjZXNz
aWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9mZnNldCB3
aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHJlY3RzKSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6
KE5TSW50ZWdlcilvZmZzZXQgd2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5PiYg
cmVjdHMpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJldHJpZXZl
UmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9mZnNldCB3aXRoVGV4dDooTlNTdHJp
bmcgKil0ZXh0OwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVN0b3JlU2VsZWN0aW9uOwogLSAodm9p
ZClfYWNjZXNzaWJpbGl0eUNsZWFyU2VsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYzQ3NzJl
NjczMTk4NTNhN2UwZTIzMmE0OWEyNzY2NTc4MzRiNWI4ZC4uZTU1ZDNmNDgwOGMyMDgxM2YxMmI2
NmQ0NzcwYTRkOTRmODlmOGEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yMjYsNyArMjI2LDcgQEAg
V0tTZWxlY3Rpb25EcmF3aW5nSW5mbzo6V0tTZWxlY3Rpb25EcmF3aW5nSW5mbyhjb25zdCBFZGl0
b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgdHlwZSA9IFNlbGVjdGlvblR5cGU6OlJhbmdlOwog
ICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKTsK
ICAgICBjYXJldFJlY3QgPSBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZDsKLSAgICBzZWxl
Y3Rpb25SZWN0cyA9IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblJlY3RzOworICAgIHNlbGVjdGlv
bkdlb21ldHJpZXMgPSBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25HZW9tZXRyaWVzOwogICAgIHNl
bGVjdGlvbkNsaXBSZWN0ID0gcG9zdExheW91dERhdGEuc2VsZWN0aW9uQ2xpcFJlY3Q7CiB9CiAK
QEAgLTIzOSwxMSArMjM5LDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tTZWxl
Y3Rpb25EcmF3aW5nSW5mbyYgYSwgY29uc3QgV0tTZWxlY3Rpb25EcmF3aW5nCiAgICAgICAgIGlm
IChhLmNhcmV0UmVjdCAhPSBiLmNhcmV0UmVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBpZiAoYS5zZWxlY3Rpb25SZWN0cy5zaXplKCkgIT0gYi5zZWxlY3Rpb25SZWN0
cy5zaXplKCkpCisgICAgICAgIGlmIChhLnNlbGVjdGlvbkdlb21ldHJpZXMuc2l6ZSgpICE9IGIu
c2VsZWN0aW9uR2VvbWV0cmllcy5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGEuc2VsZWN0aW9uUmVjdHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChhLnNlbGVjdGlvblJlY3RzW2ldLnJlY3QoKSAhPSBi
LnNlbGVjdGlvblJlY3RzW2ldLnJlY3QoKSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGEuc2VsZWN0aW9uR2VvbWV0cmllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYg
KGEuc2VsZWN0aW9uR2VvbWV0cmllc1tpXS5yZWN0KCkgIT0gYi5zZWxlY3Rpb25HZW9tZXRyaWVz
W2ldLnJlY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yNzUsNyArMjc1LDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiBzdHJlYW0sIGNvbnN0IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8mIGluZm8pCiAgICAgVGV4dFN0
cmVhbTo6R3JvdXBTY29wZSBncm91cChzdHJlYW0pOwogICAgIHN0cmVhbS5kdW1wUHJvcGVydHko
InR5cGUiLCBpbmZvLnR5cGUpOwogICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoImNhcmV0IHJlY3Qi
LCBpbmZvLmNhcmV0UmVjdCk7Ci0gICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgic2VsZWN0aW9uIHJl
Y3RzIiwgaW5mby5zZWxlY3Rpb25SZWN0cyk7CisgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgic2Vs
ZWN0aW9uIGdlb21ldHJpZXMiLCBpbmZvLnNlbGVjdGlvbkdlb21ldHJpZXMpOwogICAgIHN0cmVh
bS5kdW1wUHJvcGVydHkoInNlbGVjdGlvbiBjbGlwIHJlY3QiLCBpbmZvLnNlbGVjdGlvbkNsaXBS
ZWN0KTsKICAgICByZXR1cm4gc3RyZWFtOwogfQpAQCAtNjk1LDcgKzY5NSw3IEBAIEBlbmQKIAog
QGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS0ludGVyYWN0aW9uUHJpdmF0ZSkKIC0gKHZvaWQp
YWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uU2V0Q29udGVudDooTlNTdHJpbmcgKilzdHJpbmc7
Ci0tIChOU0FycmF5ICopd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czooY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JilzZWxlY3Rpb25SZWN0czsKKy0gKE5TQXJy
YXkgKil3ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvbkdlb21ldHJpZXM6KGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4mKXNlbGVjdGlvblJlY3RzOwogLSAodm9pZClf
YWNjZXNzaWJpbGl0eURpZEdldFNlbGVjdGlvblJlY3RzOihOU0FycmF5ICopc2VsZWN0aW9uUmVj
dHMgd2l0aEdyYW51bGFyaXR5OihVSVRleHRHcmFudWxhcml0eSlncmFudWxhcml0eSBhdE9mZnNl
dDooTlNJbnRlZ2VyKW9mZnNldDsKIEBlbmQKIApAQCAtMjUzOCw3ICsyNTM4LDcgQEAgLSAoTlNB
cnJheTxOU1ZhbHVlICo+ICopX3VpVGV4dFNlbGVjdGlvblJlY3RzCiAtIChCT09MKV9wb2ludElz
SW5zaWRlU2VsZWN0aW9uUmVjdDooQ0dQb2ludClwb2ludCBvdXRCb3VuZGluZ1JlY3Q6KFdlYkNv
cmU6OkZsb2F0UmVjdCAqKW91dEJvdW5kaW5nUmVjdAogewogICAgIEJPT0wgcG9pbnRJc0luU2Vs
ZWN0aW9uUmVjdCA9IE5POwotICAgIGZvciAoYXV0byYgcmVjdEluZm8gOiBfbGFzdFNlbGVjdGlv
bkRyYXdpbmdJbmZvLnNlbGVjdGlvblJlY3RzKSB7CisgICAgZm9yIChhdXRvJiByZWN0SW5mbyA6
IF9sYXN0U2VsZWN0aW9uRHJhd2luZ0luZm8uc2VsZWN0aW9uR2VvbWV0cmllcykgewogICAgICAg
ICBhdXRvIHJlY3QgPSByZWN0SW5mby5yZWN0KCk7CiAgICAgICAgIGlmIChyZWN0LmlzRW1wdHko
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjU1Miw3ICsyNTUyLDcgQEAgLSAoQk9PTClf
cG9pbnRJc0luc2lkZVNlbGVjdGlvblJlY3Q6KENHUG9pbnQpcG9pbnQgb3V0Qm91bmRpbmdSZWN0
OihXZWJDb3JlOjpGbG8KIAogLSAoQk9PTClfc2hvdWxkVG9nZ2xlU2VsZWN0aW9uQ29tbWFuZHNB
ZnRlclRhcEF0OihDR1BvaW50KXBvaW50CiB7Ci0gICAgaWYgKF9sYXN0U2VsZWN0aW9uRHJhd2lu
Z0luZm8uc2VsZWN0aW9uUmVjdHMuaXNFbXB0eSgpKQorICAgIGlmIChfbGFzdFNlbGVjdGlvbkRy
YXdpbmdJbmZvLnNlbGVjdGlvbkdlb21ldHJpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
Tk87CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgc2VsZWN0aW9uQm91bmRpbmdSZWN0OwpAQCAt
MjgyOCwyMiArMjgyOCwyMiBAQCAtIChCT09MKXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6KFVJV0tH
ZXN0dXJlVHlwZSlnZXN0dXJlIHNob3VsZEJlZ2luQXRQb2ludDooQ0dQbwogICAgIHJldHVybiBZ
RVM7CiB9CiAKLS0gKE5TQXJyYXkgKil3ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvblJlY3Rz
Oihjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mKXNlbGVjdGlvblJlY3RzCist
IChOU0FycmF5ICopd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25HZW9tZXRyaWVzOihjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+JilzZWxlY3Rpb25HZW9tZXRyaWVz
CiB7Ci0gICAgaWYgKHNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkKKyAgICBpZiAoc2VsZWN0aW9u
R2VvbWV0cmllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShzZWxlY3Rpb25SZWN0cywgW10gKGF1dG8mIGNvcmVSZWN0KSB7CisgICAg
cmV0dXJuIGNyZWF0ZU5TQXJyYXkoc2VsZWN0aW9uR2VvbWV0cmllcywgW10gKGF1dG8mIGdlb21l
dHJ5KSB7CiAgICAgICAgIGF1dG8gd2ViUmVjdCA9IFtXZWJTZWxlY3Rpb25SZWN0IHNlbGVjdGlv
blJlY3RdOwotICAgICAgICB3ZWJSZWN0LnJlY3QgPSBjb3JlUmVjdC5yZWN0KCk7Ci0gICAgICAg
IHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IFdlYkNv
cmU6OlRleHREaXJlY3Rpb246OkxUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDog
V0tXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7Ci0gICAgICAgIHdlYlJlY3QuaXNMaW5lQnJl
YWsgPSBjb3JlUmVjdC5pc0xpbmVCcmVhaygpOwotICAgICAgICB3ZWJSZWN0LmlzRmlyc3RPbkxp
bmUgPSBjb3JlUmVjdC5pc0ZpcnN0T25MaW5lKCk7Ci0gICAgICAgIHdlYlJlY3QuaXNMYXN0T25M
aW5lID0gY29yZVJlY3QuaXNMYXN0T25MaW5lKCk7Ci0gICAgICAgIHdlYlJlY3QuY29udGFpbnNT
dGFydCA9IGNvcmVSZWN0LmNvbnRhaW5zU3RhcnQoKTsKLSAgICAgICAgd2ViUmVjdC5jb250YWlu
c0VuZCA9IGNvcmVSZWN0LmNvbnRhaW5zRW5kKCk7Ci0gICAgICAgIHdlYlJlY3QuaXNJbkZpeGVk
UG9zaXRpb24gPSBjb3JlUmVjdC5pc0luRml4ZWRQb3NpdGlvbigpOwotICAgICAgICB3ZWJSZWN0
LmlzSG9yaXpvbnRhbCA9IGNvcmVSZWN0LmlzSG9yaXpvbnRhbCgpOworICAgICAgICB3ZWJSZWN0
LnJlY3QgPSBnZW9tZXRyeS5yZWN0KCk7CisgICAgICAgIHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlv
biA9IGdlb21ldHJ5LmRpcmVjdGlvbigpID09IFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUiA/
IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmlnaHRU
b0xlZnQ7CisgICAgICAgIHdlYlJlY3QuaXNMaW5lQnJlYWsgPSBnZW9tZXRyeS5pc0xpbmVCcmVh
aygpOworICAgICAgICB3ZWJSZWN0LmlzRmlyc3RPbkxpbmUgPSBnZW9tZXRyeS5pc0ZpcnN0T25M
aW5lKCk7CisgICAgICAgIHdlYlJlY3QuaXNMYXN0T25MaW5lID0gZ2VvbWV0cnkuaXNMYXN0T25M
aW5lKCk7CisgICAgICAgIHdlYlJlY3QuY29udGFpbnNTdGFydCA9IGdlb21ldHJ5LmNvbnRhaW5z
U3RhcnQoKTsKKyAgICAgICAgd2ViUmVjdC5jb250YWluc0VuZCA9IGdlb21ldHJ5LmNvbnRhaW5z
RW5kKCk7CisgICAgICAgIHdlYlJlY3QuaXNJbkZpeGVkUG9zaXRpb24gPSBnZW9tZXRyeS5pc0lu
Rml4ZWRQb3NpdGlvbigpOworICAgICAgICB3ZWJSZWN0LmlzSG9yaXpvbnRhbCA9IGdlb21ldHJ5
LmlzSG9yaXpvbnRhbCgpOwogICAgICAgICByZXR1cm4gd2ViUmVjdDsKICAgICB9KS5hdXRvcmVs
ZWFzZSgpOwogfQpAQCAtMjg1Miw4ICsyODUyLDggQEAgLSAoTlNBcnJheSAqKXdlYlNlbGVjdGlv
blJlY3RzCiB7CiAgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhIHx8IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzTm9uZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb25SZWN0cyA9IF9wYWdlLT5lZGl0
b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHM7Ci0gICAgcmV0dXJuIFtz
ZWxmIHdlYlNlbGVjdGlvblJlY3RzRm9yU2VsZWN0aW9uUmVjdHM6c2VsZWN0aW9uUmVjdHNdOwor
ICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbkdlb21ldHJpZXMgPSBfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkdlb21ldHJpZXM7CisgICAgcmV0dXJuIFtzZWxm
IHdlYlNlbGVjdGlvblJlY3RzRm9yU2VsZWN0aW9uR2VvbWV0cmllczpzZWxlY3Rpb25HZW9tZXRy
aWVzXTsKIH0KIAogLSAodm9pZClfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25n
UHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCkBAIC0zMjc0LDggKzMy
NzQsOCBAQCAtICh2b2lkKV9sb29rdXBGb3JXZWJWaWV3OihpZClzZW5kZXIKICAgICAgICAgYXV0
byYgZWRpdG9yU3RhdGUgPSB2aWV3LT5fcGFnZS0+ZWRpdG9yU3RhdGUoKTsKICAgICAgICAgYXV0
byYgcG9zdExheW91dERhdGEgPSBlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpOwogICAgICAg
ICBDR1JlY3QgcHJlc2VudGF0aW9uUmVjdDsKLSAgICAgICAgaWYgKGVkaXRvclN0YXRlLnNlbGVj
dGlvbklzUmFuZ2UgJiYgIXBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHByZXNlbnRhdGlvblJlY3QgPSBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25S
ZWN0c1swXS5yZWN0KCk7CisgICAgICAgIGlmIChlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc1Jhbmdl
ICYmICFwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25HZW9tZXRyaWVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHByZXNlbnRhdGlvblJlY3QgPSBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25HZW9tZXRy
aWVzWzBdLnJlY3QoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJlc2VudGF0aW9uUmVj
dCA9IHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQ7CiAgICAgICAgIApAQCAtMzI5NCwx
MSArMzI5NCwxMSBAQCAtICh2b2lkKV9zaGFyZUZvcldlYlZpZXc6KGlkKXNlbmRlcgogICAgICAg
ICBpZiAoIXZpZXctPl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgfHwgIXN0cmluZyB8fCB2aWV3
LT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBhdXRvJiBzZWxlY3Rpb25SZWN0cyA9IHZpZXctPl9wYWdl
LT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHM7Ci0gICAgICAg
IGlmIChzZWxlY3Rpb25SZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGF1dG8mIHNlbGVjdGlvbkdl
b21ldHJpZXMgPSB2aWV3LT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNl
bGVjdGlvbkdlb21ldHJpZXM7CisgICAgICAgIGlmIChzZWxlY3Rpb25HZW9tZXRyaWVzLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBbdmlldy0+X3RleHRJbnRlcmFj
dGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpzdHJpbmcgZnJvbVJlY3Q6c2VsZWN0aW9u
UmVjdHMuZmlyc3QoKS5yZWN0KCldOworICAgICAgICBbdmlldy0+X3RleHRJbnRlcmFjdGlvbkFz
c2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpzdHJpbmcgZnJvbVJlY3Q6c2VsZWN0aW9uR2VvbWV0
cmllcy5maXJzdCgpLnJlY3QoKV07CiAgICAgfSk7CiB9CiAKQEAgLTMzMTUsMTggKzMzMTUsMTgg
QEAgLSAodm9pZClfdHJhbnNsYXRlRm9yV2ViVmlldzooaWQpc2VuZGVyCiAgICAgICAgIGlmIChz
dHJvbmdTZWxmLT5fcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvJiBzZWxlY3Rpb25SZWN0cyA9IHN0
cm9uZ1NlbGYtPl9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9u
UmVjdHM7Ci0gICAgICAgIGlmIChzZWxlY3Rpb25SZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGF1
dG8mIHNlbGVjdGlvbkdlb21ldHJpZXMgPSBzdHJvbmdTZWxmLT5fcGFnZS0+ZWRpdG9yU3RhdGUo
KS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkdlb21ldHJpZXM7CisgICAgICAgIGlmIChzZWxl
Y3Rpb25HZW9tZXRyaWVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAoW3N0cm9uZ1NlbGYtPl90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih0cmFuc2xhdGU6ZnJvbVJlY3Q6KV0pCi0gICAgICAgICAgICBbc3Ry
b25nU2VsZi0+X3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCB0cmFuc2xhdGU6c3RyaW5nIGZyb21S
ZWN0OnNlbGVjdGlvblJlY3RzLmZpcnN0KCkucmVjdCgpXTsKKyAgICAgICAgICAgIFtzdHJvbmdT
ZWxmLT5fdGV4dEludGVyYWN0aW9uQXNzaXN0YW50IHRyYW5zbGF0ZTpzdHJpbmcgZnJvbVJlY3Q6
c2VsZWN0aW9uR2VvbWV0cmllcy5maXJzdCgpLnJlY3QoKV07CiAgICAgfSk7CiB9CiAKIC0gKHZv
aWQpX2FkZFNob3J0Y3V0Rm9yV2ViVmlldzooaWQpc2VuZGVyCiB7Ci0gICAgW190ZXh0SW50ZXJh
Y3Rpb25Bc3Npc3RhbnQgc2hvd1RleHRTZXJ2aWNlRm9yOltzZWxmIHNlbGVjdGVkVGV4dF0gZnJv
bVJlY3Q6X3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0
c1swXS5yZWN0KCldOworICAgIFtfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50IHNob3dUZXh0U2Vy
dmljZUZvcjpbc2VsZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0b3JTdGF0ZSgp
LnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uR2VvbWV0cmllc1swXS5yZWN0KCldOwogfQogCiAt
IChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dApAQCAtMzg4NSw3ICszODg1LDcgQEAgLSAodm9pZClf
c2hvd1RleHRTdHlsZU9wdGlvbnNGb3JXZWJWaWV3OihpZClzZW5kZXIKIAogLSAodm9pZClfc2hv
d0RpY3Rpb25hcnk6KE5TU3RyaW5nICopdGV4dAogewotICAgIENHUmVjdCBwcmVzZW50YXRpb25S
ZWN0ID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0
c1swXS5yZWN0KCk7CisgICAgQ0dSZWN0IHByZXNlbnRhdGlvblJlY3QgPSBfcGFnZS0+ZWRpdG9y
U3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkdlb21ldHJpZXNbMF0ucmVjdCgpOwog
ICAgIGlmIChfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50KQogICAgICAgICBbX3RleHRJbnRlcmFj
dGlvbkFzc2lzdGFudCBzaG93RGljdGlvbmFyeUZvcjp0ZXh0IGZyb21SZWN0OnByZXNlbnRhdGlv
blJlY3RdOwogfQpAQCAtMzkyMCw5ICszOTIwLDkgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UmV0
cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnQKIAogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJldHJp
ZXZlUmVjdHNFbmNsb3NpbmdTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aEdy
YW51bGFyaXR5OihVSVRleHRHcmFudWxhcml0eSlncmFudWxhcml0eQogewotICAgIF9wYWdlLT5y
ZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodG9XS1RleHRHcmFu
dWxhcml0eShncmFudWxhcml0eSksIG9mZnNldCwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIG9m
ZnNldCwgZ3JhbnVsYXJpdHldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYg
c2VsZWN0aW9uUmVjdHMpIHsKKyAgICBfcGFnZS0+cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlX
aXRoU2VsZWN0aW9uT2Zmc2V0KHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCBvZmZz
ZXQsIFt2aWV3ID0gcmV0YWluUHRyKHNlbGYpLCBvZmZzZXQsIGdyYW51bGFyaXR5XShjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+JiBzZWxlY3Rpb25HZW9tZXRyaWVzKSB7
CiAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9hY2Nlc3Np
YmlsaXR5RGlkR2V0U2VsZWN0aW9uUmVjdHM6d2l0aEdyYW51bGFyaXR5OmF0T2Zmc2V0OildKQot
ICAgICAgICAgICAgW3ZpZXcgX2FjY2Vzc2liaWxpdHlEaWRHZXRTZWxlY3Rpb25SZWN0czpbdmll
dyB3ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvblJlY3RzOnNlbGVjdGlvblJlY3RzXSB3aXRo
R3JhbnVsYXJpdHk6Z3JhbnVsYXJpdHkgYXRPZmZzZXQ6b2Zmc2V0XTsKKyAgICAgICAgICAgIFt2
aWV3IF9hY2Nlc3NpYmlsaXR5RGlkR2V0U2VsZWN0aW9uUmVjdHM6W3ZpZXcgd2ViU2VsZWN0aW9u
UmVjdHNGb3JTZWxlY3Rpb25HZW9tZXRyaWVzOnNlbGVjdGlvbkdlb21ldHJpZXNdIHdpdGhHcmFu
dWxhcml0eTpncmFudWxhcml0eSBhdE9mZnNldDpvZmZzZXRdOwogICAgIH0pOwogfQogCkBAIC0z
OTMxLDE1ICszOTMxLDE1IEBAIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRT
ZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0aFRleHQ6CiAgICAgW3NlbGYgX2Fj
Y2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6b2Zmc2V0IHdpdGhUZXh0
OnRleHQgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIAotLSAodm9pZClfYWNjZXNzaWJpbGl0
eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRlZ2VyKW9mZnNldCB3aXRoVGV4
dDooTlNTdHJpbmcgKil0ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHJlY3RzKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZClfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNldDooTlNJbnRl
Z2VyKW9mZnNldCB3aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+JiBnZW9tZXRy
aWVzKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiB2
aWV3ID0gc2VsZjsKLSAgICBfcGFnZS0+cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRo
VGV4dChvZmZzZXQsIHRleHQsIFt2aWV3LCBvZmZzZXQsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzKSB7CisgICAgX3BhZ2UtPnJlcXVlc3RS
ZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBbdmlldywgb2Zmc2V0
LCBjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5PiYgc2VsZWN0aW9u
R2VvbWV0cmllcykgewogICAgICAgICBpZiAoY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlcikKLSAg
ICAgICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIoc2VsZWN0aW9uUmVjdHMpOworICAg
ICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlcihzZWxlY3Rpb25HZW9tZXRyaWVzKTsK
IAogICAgICAgICBpZiAoW3ZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfYWNjZXNz
aWJpbGl0eURpZEdldFNlbGVjdGlvblJlY3RzOndpdGhHcmFudWxhcml0eTphdE9mZnNldDopXSkK
LSAgICAgICAgICAgIFt2aWV3IF9hY2Nlc3NpYmlsaXR5RGlkR2V0U2VsZWN0aW9uUmVjdHM6W3Zp
ZXcgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czpzZWxlY3Rpb25SZWN0c10gd2l0
aEdyYW51bGFyaXR5OlVJVGV4dEdyYW51bGFyaXR5V29yZCBhdE9mZnNldDpvZmZzZXRdOworICAg
ICAgICAgICAgW3ZpZXcgX2FjY2Vzc2liaWxpdHlEaWRHZXRTZWxlY3Rpb25SZWN0czpbdmlldyB3
ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvbkdlb21ldHJpZXM6c2VsZWN0aW9uR2VvbWV0cmll
c10gd2l0aEdyYW51bGFyaXR5OlVJVGV4dEdyYW51bGFyaXR5V29yZCBhdE9mZnNldDpvZmZzZXRd
OwogICAgIH0pOwogfQogCkBAIC00Nzk2LDEwICs0Nzk2LDEwIEBAIC0gKHZvaWQpcmVwbGFjZVJh
bmdlOihVSVRleHRSYW5nZSAqKXJhbmdlIHdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKIH0K
IAotc3RhdGljIE5TQXJyYXk8V0tUZXh0U2VsZWN0aW9uUmVjdCAqPiAqd2tUZXh0U2VsZWN0aW9u
UmVjdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiByZWN0cykKK3N0YXRp
YyBOU0FycmF5PFdLVGV4dFNlbGVjdGlvblJlY3QgKj4gKndrVGV4dFNlbGVjdGlvblJlY3RzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4mIHJlY3RzKQogewogICAgIHJl
dHVybiBjcmVhdGVOU0FycmF5KHJlY3RzLCBbXSAoYXV0byYgcmVjdCkgewotICAgICAgICByZXR1
cm4gYWRvcHROUyhbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGluaXRXaXRoU2VsZWN0aW9u
UmVjdDpyZWN0XSk7CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tUZXh0U2VsZWN0aW9uUmVj
dCBhbGxvY10gaW5pdFdpdGhTZWxlY3Rpb25HZW9tZXRyeTpyZWN0XSk7CiAgICAgfSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIApAQCAtNDg1Miw3ICs0ODUyLDcgQEAgLSAoVUlUZXh0UmFuZ2UgKilzZWxl
Y3RlZFRleHRSYW5nZQogCiAgICAgYXV0byBjYXJldFN0YXJ0UmVjdCA9IFtzZWxmIF9zY2FsZWRD
YXJldFJlY3RGb3JTZWxlY3Rpb25TdGFydDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0
RGF0YSgpLmNhcmV0UmVjdEF0U3RhcnRdOwogICAgIGF1dG8gY2FyZXRFbmRSZWN0ID0gW3NlbGYg
X3NjYWxlZENhcmV0UmVjdEZvclNlbGVjdGlvbkVuZDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0
TGF5b3V0RGF0YSgpLmNhcmV0UmVjdEF0RW5kXTsKLSAgICBhdXRvIHNlbGVjdGlvblJlY3RzID0g
d2tUZXh0U2VsZWN0aW9uUmVjdHMoX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEo
KS5zZWxlY3Rpb25SZWN0cyk7CisgICAgYXV0byBzZWxlY3Rpb25SZWN0cyA9IHdrVGV4dFNlbGVj
dGlvblJlY3RzKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9u
R2VvbWV0cmllcyk7CiAgICAgYXV0byBzZWxlY3RlZFRleHRMZW5ndGggPSBlZGl0b3JTdGF0ZS5w
b3N0TGF5b3V0RGF0YSgpLnNlbGVjdGVkVGV4dExlbmd0aDsKICAgICBfY2FjaGVkU2VsZWN0ZWRU
ZXh0UmFuZ2UgPSBbV0tUZXh0UmFuZ2UgdGV4dFJhbmdlV2l0aFN0YXRlOiFoYXNTZWxlY3Rpb24g
aXNSYW5nZTppc1JhbmdlIGlzRWRpdGFibGU6aXNDb250ZW50RWRpdGFibGUgc3RhcnRSZWN0OmNh
cmV0U3RhcnRSZWN0IGVuZFJlY3Q6Y2FyZXRFbmRSZWN0IHNlbGVjdGlvblJlY3RzOnNlbGVjdGlv
blJlY3RzIHNlbGVjdGVkVGV4dExlbmd0aDpzZWxlY3RlZFRleHRMZW5ndGhdOwogICAgIHJldHVy
biBfY2FjaGVkU2VsZWN0ZWRUZXh0UmFuZ2UuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaAppbmRleCBlNjU2NjNlMDA5MDYyODU3
MGRkZGQ1Y2E0MjZiZTlmMjVmMDBmMmE5Li45OWIyMmM1NTJmZWRlNDY3YTVjMDhiOGY3NmMxNGFh
Y2I5NWZjMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0
U2VsZWN0aW9uUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRT
ZWxlY3Rpb25SZWN0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogI2ltcG9ydCA8VUlLaXQvVUlLaXQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2VsZWN0aW9uUmVjdDsKK2NsYXNzIFNl
bGVjdGlvbkdlb21ldHJ5OwogfQogCiBAaW50ZXJmYWNlIFdLVGV4dFNlbGVjdGlvblJlY3QgOiBV
SVRleHRTZWxlY3Rpb25SZWN0CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDooQ0dS
ZWN0KXJlY3Q7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25SZWN0Oihjb25zdCBX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0OworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoU2VsZWN0aW9uR2VvbWV0cnk6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5
JilzZWxlY3Rpb25SZWN0OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KaW5kZXggNTgxYjdiM2VjM2YzNjBmN2I2YjYz
NjA5Y2FlNzIxODAwZDRiZWMwYy4uZWMzMGQ4YmIxNzNiMDZmYjUyZjZhY2QzMWY4Y2FlNDQxMjE0
MDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QubW0KQEAgLTI4LDM2ICsyOCwzNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAotI2ltcG9ydCA8V2ViQ29yZS9TZWxlY3Rpb25SZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1NlbGVjdGlvbkdlb21ldHJ5Lmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRTZWxlY3Rpb25S
ZWN0IHsKLSAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IF9zZWxlY3Rpb25SZWN0OworICAgIFdl
YkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5IF9zZWxlY3Rpb25HZW9tZXRyeTsKIH0KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0OihDR1JlY3QpcmVjdAogewotICAgIFdlYkNvcmU6OlNl
bGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdDsKLSAgICBzZWxlY3Rpb25SZWN0LnNldFJlY3QoV2Vi
Q29yZTo6ZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRo
U2VsZWN0aW9uUmVjdDpXVEZNb3ZlKHNlbGVjdGlvblJlY3QpXTsKKyAgICBXZWJDb3JlOjpTZWxl
Y3Rpb25HZW9tZXRyeSBzZWxlY3Rpb25HZW9tZXRyeTsKKyAgICBzZWxlY3Rpb25HZW9tZXRyeS5z
ZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aFNlbGVjdGlvbkdlb21ldHJ5OldURk1vdmUoc2VsZWN0aW9uR2VvbWV0cnkpXTsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9uUmVjdDooY29uc3QgV2ViQ29y
ZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
U2VsZWN0aW9uR2VvbWV0cnk6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5JilzZWxl
Y3Rpb25SZWN0CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgX3NlbGVjdGlvblJlY3QgPSBzZWxlY3Rpb25SZWN0OworICAgIF9zZWxl
Y3Rpb25HZW9tZXRyeSA9IHNlbGVjdGlvblJlY3Q7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0g
KENHUmVjdClyZWN0CiB7Ci0gICAgcmV0dXJuIF9zZWxlY3Rpb25SZWN0LnJlY3QoKTsKKyAgICBy
ZXR1cm4gX3NlbGVjdGlvbkdlb21ldHJ5LnJlY3QoKTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KIC0gKFVJVGV4dFdyaXRpbmdEaXJlY3Rpb24pd3JpdGluZ0RpcmVj
dGlvbgogewotICAgIHJldHVybiBfc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBXZWJDb3Jl
OjpUZXh0RGlyZWN0aW9uOjpMVFIgPyBVSVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQg
OiBVSVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgcmV0dXJuIF9zZWxlY3Rp
b25HZW9tZXRyeS5kaXJlY3Rpb24oKSA9PSBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uOjpMVFIgPyBV
SVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBVSVRleHRXcml0aW5nRGlyZWN0aW9u
UmlnaHRUb0xlZnQ7CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIApAQCAt
NjgsMTcgKzY4LDE3IEBAIC0gKFVJVGV4dFJhbmdlICopcmFuZ2UKIAogLSAoQk9PTCljb250YWlu
c1N0YXJ0CiB7Ci0gICAgcmV0dXJuIF9zZWxlY3Rpb25SZWN0LmNvbnRhaW5zU3RhcnQoKTsKKyAg
ICByZXR1cm4gX3NlbGVjdGlvbkdlb21ldHJ5LmNvbnRhaW5zU3RhcnQoKTsKIH0KIAogLSAoQk9P
TCljb250YWluc0VuZAogewotICAgIHJldHVybiBfc2VsZWN0aW9uUmVjdC5jb250YWluc0VuZCgp
OworICAgIHJldHVybiBfc2VsZWN0aW9uR2VvbWV0cnkuY29udGFpbnNFbmQoKTsKIH0KIAogLSAo
Qk9PTClpc1ZlcnRpY2FsCiB7Ci0gICAgcmV0dXJuICFfc2VsZWN0aW9uUmVjdC5pc0hvcml6b250
YWwoKTsKKyAgICByZXR1cm4gIV9zZWxlY3Rpb25HZW9tZXRyeS5pc0hvcml6b250YWwoKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KaW5kZXggMDhhMDRkMjQzNmJiNjViZjcyNDVhM2JiYjJmNDNjMWE4NjIxMGJiNy4uNjdmZmM0
MjNlYmY4ODlmOTVlMzQ2OWI2YTYxZmQ0OGQxMWQ4ZDRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC02NjcsNyArNjY3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXb3JkQmFja3dhcmQoKSwgbV93ZWJQYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2Vs
ZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMy
X3Qgb2Zmc2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWxlY3Rpb25SZWN0PiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RS
ZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+Jik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gY2FsbGJh
Y2soeyB9KTsKQEAgLTY3NSw3ICs2NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJl
Y3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxh
cml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoZ3JhbnVsYXJpdHksIG9mZnNldCksIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mKT4m
JiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9m
ZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5PiYp
PiYmIGNhbGxiYWNrKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKHsgfSk7CkBAIC0xMTM4LDggKzExMzgsOCBAQCBXZWJDb3JlOjpGbG9h
dFJlY3QgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Cb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoKSBjbwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHM7CiAgICAgYXV0byYgcG9z
dExheW91dERhdGEgPSBtX2VkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCk7CiAgICAgaWYgKG1f
ZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNSYW5nZSkgewotICAgICAgICBmb3IgKGF1dG8mIHJlY3Qg
OiBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25SZWN0cykKLSAgICAgICAgICAgIGJvdW5kcy51bml0
ZShyZWN0LnJlY3QoKSk7CisgICAgICAgIGZvciAoYXV0byYgZ2VvbWV0cnkgOiBwb3N0TGF5b3V0
RGF0YS5zZWxlY3Rpb25HZW9tZXRyaWVzKQorICAgICAgICAgICAgYm91bmRzLnVuaXRlKGdlb21l
dHJ5LnJlY3QoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJvdW5kcyA9IHBvc3RMYXlvdXREYXRh
LmNhcmV0UmVjdEF0U3RhcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBjMTk2YWQ4MTM3OTAyNjE0NmRkYjk5OGI0ZGZiYzY1ZWI2M2E3NDkyLi41
MTQ2NDlhYjQ0ZjRiYTU2MmUzZjFhNmE1OWE3NGMwYzQwMjllNmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgY2xhc3Mg
UmVuZGVySW1hZ2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNlbGVjdGlvblJlY3Q7CitjbGFzcyBT
ZWxlY3Rpb25HZW9tZXRyeTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVE
YXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKQEAgLTc4MSw4ICs3ODEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCk7CiAgICAgdm9pZCBnZXRT
ZWxlY3Rpb25Db250ZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgaGFuZGxlVHdvRmluZ2Vy
VGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIE9wdGlvblNldDxXZWJLaXQ6Oldl
YkV2ZW50OjpNb2RpZmllcj4sIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBnZXRSZWN0
c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJp
dHksIGludDMyX3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlbGVjdGlvblJlY3Q+Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik+JiYpOworICAgIHZvaWQgZ2V0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51
bGFyaXR5LCBpbnQzMl90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4mKT4mJik7CisgICAgdm9pZCBnZXRSZWN0c0F0U2VsZWN0
aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+Jik+JiYpOwog
ICAgIHZvaWQgc3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wpOwogICAgIHZvaWQg
c3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAg
ICAgdm9pZCBjYW5jZWxBdXRvc2Nyb2xsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxMTY0OGI5NmE1NGMxNGYw
YjczN2ZjYzFlYTNlZTA0OTJkNWNjZDc0Li4xNzZjNGU1NTg5MTBiY2M2NWMyMWNkY2VhZGFlZGNj
MzRlMmUxYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEwOCw4ICsxMDgsOCBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxh
eWJhY2soYm9vbCBhbGxvd3MpCiAgICAgSGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiBt
b2RpZmllcnMsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFsd2F5c1VzZXJTY2Fs
YWJsZShib29sIHVzZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBpbnQzMl90IG9mZnNldCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
PiByZWN0KSBBc3luYwotICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQz
Ml90IG9mZnNldCwgU3RyaW5nIHRleHQpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVj
dD4gcmVjdCkgQXN5bmMKKyAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9m
ZnNldChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBp
bnQzMl90IG9mZnNldCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4gcmVj
dCkgQXN5bmMKKyAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBv
ZmZzZXQsIFN0cmluZyB0ZXh0KSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5
PiByZWN0KSBBc3luYwogICAgIFN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNo
b3VsZFN0b3JlKQogICAgIFN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCBwb3NpdGlvbkluV2luZG93KQogICAgIENhbmNlbEF1dG9zY3JvbGwoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBm
MWMwMTI0NzQ5MDJkZjkwZTA0NDQzMWMyYWRiY2E0ZWI2MmJlNTIyLi5hZTVmZmY4Njc0ZjNiNjM5
M2MxYTIzOWY0NmQ0Mzg0OTg3NmMyZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjU4LDcgKzI1OCw3IEBAIGJvb2wg
V2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IEZyYW1lJiBm
cmFtZSkgY29uc3QKICAgICByZXR1cm4gbmVlZHNMYXlvdXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGNv
bnZlcnRDb250ZW50VG9Sb290Vmlld1NlbGVjdGlvblJlY3RzKGNvbnN0IEZyYW1lVmlldyYgdmll
dywgVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cykKK3N0YXRpYyB2b2lkIGNvbnZlcnRDb250
ZW50VG9Sb290Vmlldyhjb25zdCBGcmFtZVZpZXcmIHZpZXcsIFZlY3RvcjxTZWxlY3Rpb25HZW9t
ZXRyeT4mIHJlY3RzKQogewogICAgIGZvciAoYXV0byYgcmVjdCA6IHJlY3RzKQogICAgICAgICBy
ZWN0LnNldFJlY3Qodmlldy5jb250ZW50c1RvUm9vdFZpZXcocmVjdC5yZWN0KCkpKTsKQEAgLTI3
Niw4ICsyNzYsOCBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUm
IGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogCiAgICAgaWYgKGZyYW1lLmVkaXRv
cigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgaWYgKGF1dG8gY29tcG9zaXRpb25SYW5n
ZSA9IGZyYW1lLmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKSkgewotICAgICAgICAgICAgcG9z
dExheW91dERhdGEubWFya2VkVGV4dFJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0
aW9uUmVjdHMoKmNvbXBvc2l0aW9uUmFuZ2UpOwotICAgICAgICAgICAgY29udmVydENvbnRlbnRU
b1Jvb3RWaWV3U2VsZWN0aW9uUmVjdHModmlldywgcG9zdExheW91dERhdGEubWFya2VkVGV4dFJl
Y3RzKTsKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLm1hcmtlZFRleHRSZWN0cyA9IFJlbmRl
ck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoKmNvbXBvc2l0aW9uUmFuZ2UpOwor
ICAgICAgICAgICAgY29udmVydENvbnRlbnRUb1Jvb3RWaWV3KHZpZXcsIHBvc3RMYXlvdXREYXRh
Lm1hcmtlZFRleHRSZWN0cyk7CiAKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLm1hcmtlZFRl
eHQgPSBwbGFpblRleHRGb3JDb250ZXh0KCpjb21wb3NpdGlvblJhbmdlKTsKICAgICAgICAgICAg
IFZpc2libGVTZWxlY3Rpb24gY29tcG9zaXRpb25TZWxlY3Rpb24oKmNvbXBvc2l0aW9uUmFuZ2Up
OwpAQCAtMzEwLDggKzMxMCw4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0
ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgICAgIHNlbGVj
dGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgU3RyaW5n
IHNlbGVjdGVkVGV4dDsKICAgICAgICAgaWYgKHNlbGVjdGVkUmFuZ2UpIHsKLSAgICAgICAgICAg
IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2Vs
ZWN0aW9uUmVjdHMoKnNlbGVjdGVkUmFuZ2UpOwotICAgICAgICAgICAgY29udmVydENvbnRlbnRU
b1Jvb3RWaWV3U2VsZWN0aW9uUmVjdHModmlldywgcG9zdExheW91dERhdGEuc2VsZWN0aW9uUmVj
dHMpOworICAgICAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uR2VvbWV0cmllcyA9IFJl
bmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoKnNlbGVjdGVkUmFuZ2UpOwor
ICAgICAgICAgICAgY29udmVydENvbnRlbnRUb1Jvb3RWaWV3KHZpZXcsIHBvc3RMYXlvdXREYXRh
LnNlbGVjdGlvbkdlb21ldHJpZXMpOwogICAgICAgICAgICAgc2VsZWN0ZWRUZXh0ID0gcGxhaW5U
ZXh0Rm9yRGlzcGxheSgqc2VsZWN0ZWRSYW5nZSk7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHQubGVuZ3RoKCk7CiAgICAgICAgICAg
ICBjb25zdCBpbnQgbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoID0gMjAwOwpAQCAtMTk2Myw3ICsxOTYz
LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWMKICAgICByZXBseShXVEZNb3ZlKHJlY3RzVG9B
dm9pZEluUm9vdFZpZXdDb29yZGluYXRlcykpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0
KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdlb21l
dHJ5PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTE5NzYsOSAr
MTk3Niw5IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rp
b25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHNlbGVjdGlvblJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0
aW9uUmVjdHNXaXRob3V0VW5pb25JbnRlcmlvckxpbmVzKCpyYW5nZSk7Ci0gICAgY29udmVydENv
bnRlbnRUb1Jvb3RWaWV3U2VsZWN0aW9uUmVjdHMoKmZyYW1lLnZpZXcoKSwgc2VsZWN0aW9uUmVj
dHMpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlbGVjdGlvblJlY3RzKTsKKyAgICBhdXRvIHNl
bGVjdGlvbkdlb21ldHJpZXMgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRy
aWVzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5lcygqcmFuZ2UpOworICAgIGNvbnZlcnRDb250ZW50
VG9Sb290VmlldygqZnJhbWUudmlldygpLCBzZWxlY3Rpb25HZW9tZXRyaWVzKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihzZWxlY3Rpb25HZW9tZXRyaWVzKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpz
dG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkoYm9vbCBzaG91bGRTdG9yZSkKQEAgLTIwMDMs
NyArMjAwMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VOZWFyUG9zaXRp
b25NYXRjaGVzVGV4dChjb25zdCBWaXNpYmxlUG9zaXRpb24mCiAgICAgcmV0dXJuIGZpbmRDbG9z
ZXN0UGxhaW5UZXh0KHJhbmdlLCBtYXRjaFRleHQsIHsgfSwgY2hhcmFjdGVyQ291bnQoeyByYW5n
ZS5zdGFydCwgKmJvdW5kYXJ5UG9pbnQgfSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNBdFNl
bGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgYXV0byYg
c2VsZWN0aW9uID0gbV9zdG9yZWRTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5LmlzTm9uZSgpID8g
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkgOiBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vz
c2liaWxpdHk7CkBAIC0yMDIyLDkgKzIwMjIsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRT
ZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBzZWxlY3Rpb25SZWN0cyA9IFJlbmRlck9iamVj
dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzV2l0aG91dFVuaW9uSW50ZXJpb3JMaW5lcygqcmFuZ2Up
OwotICAgIGNvbnZlcnRDb250ZW50VG9Sb290Vmlld1NlbGVjdGlvblJlY3RzKCpmcmFtZS52aWV3
KCksIHNlbGVjdGlvblJlY3RzKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzZWxlY3Rpb25SZWN0
cyk7CisgICAgYXV0byBzZWxlY3Rpb25HZW9tZXRyaWVzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0
U2VsZWN0aW9uR2VvbWV0cmllc1dpdGhvdXRVbmlvbkludGVyaW9yTGluZXMoKnJhbmdlKTsKKyAg
ICBjb252ZXJ0Q29udGVudFRvUm9vdFZpZXcoKmZyYW1lLnZpZXcoKSwgc2VsZWN0aW9uR2VvbWV0
cmllcyk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0aW9uR2VvbWV0cmllcyk7CiB9CiAK
IFZpc2libGVQb3NpdGlvbiBXZWJQYWdlOjp2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9y
UG9pbnQoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkKQEAgLTIzNDEsMTEgKzIzNDEsMTMgQEAgdm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uLCBDb20KICAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9y
Q29udGV4dChyYW5nZSk7CiAgICAgfQogCi0gICAgVmVjdG9yPFNlbGVjdGlvblJlY3Q+IHNlbGVj
dGlvblJlY3RzOworICAgIFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4gc2VsZWN0aW9uR2VvbWV0
cmllczsKICAgICBpZiAodGV4dEZvclJhbmdlID09IHRleHRGb3JBdXRvY29ycmVjdGlvbikKLSAg
ICAgICAgc2VsZWN0aW9uUmVjdHMgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0
cygqcmFuZ2UpOworICAgICAgICBzZWxlY3Rpb25HZW9tZXRyaWVzID0gUmVuZGVyT2JqZWN0Ojpj
b2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcygqcmFuZ2UpOwogCi0gICAgYXV0byByb290Vmlld1Nl
bGVjdGlvblJlY3RzID0gc2VsZWN0aW9uUmVjdHMubWFwKFsmXShjb25zdCBhdXRvJiBzZWxlY3Rp
b25SZWN0KSAtPiBGbG9hdFJlY3QgeyByZXR1cm4gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9v
dFZpZXcoc2VsZWN0aW9uUmVjdC5yZWN0KCkpOyB9KTsKKyAgICBhdXRvIHJvb3RWaWV3U2VsZWN0
aW9uUmVjdHMgPSBzZWxlY3Rpb25HZW9tZXRyaWVzLm1hcChbJl0oY29uc3QgYXV0byYgc2VsZWN0
aW9uR2VvbWV0cnkpIC0+IEZsb2F0UmVjdCB7CisgICAgICAgIHJldHVybiBmcmFtZS52aWV3KCkt
PmNvbnRlbnRzVG9Sb290VmlldyhzZWxlY3Rpb25HZW9tZXRyeS5yZWN0KCkpOworICAgIH0pOwog
CiAgICAgYm9vbCBtdWx0aXBsZUZvbnRzID0gZmFsc2U7CiAgICAgQ1RGb250UmVmIGZvbnQgPSBu
aWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lSU9TLm1tCmluZGV4IDkwZThmMTdkMjk3YmI3MzliMWQ3MzkxOWJhNWE1ZjkwNTQyMDM4
MGYuLjg1M2UwMDVhNTRiNGI2MGJjMjUyMDBkNjQ1NzBmNjZkYWYyZmMwNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1t
CkBAIC01Miw3ICs1Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1JlbmRlclRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyZWREb2N1bWVudE1h
cmtlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TZWxlY3Rpb25SZWN0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRCb3VuZGFyaWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Rl
eHRGbGFncy5oPgpAQCAtMjA2LDE3ICsyMDYsMTcgQEAgLSAodm9pZClleHRlbmRTZWxlY3Rpb246
KEJPT0wpc3RhcnQKIAogLSAoTlNBcnJheSAqKXNlbGVjdGlvblJlY3RzRm9yQ29yZVJhbmdlOihj
b25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UKIHsKLSAgICByZXR1cm4gY3JlYXRlTlNBcnJheShSZW5k
ZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhyYW5nZSksIFtdIChhdXRvJiBjb3JlUmVj
dCkgeworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVj
dGlvbkdlb21ldHJpZXMocmFuZ2UpLCBbXSAoYXV0byYgZ2VvbWV0cnkpIHsKICAgICAgICAgYXV0
byB3ZWJSZWN0ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF07Ci0gICAgICAgIHdl
YlJlY3QucmVjdCA9IGNvcmVSZWN0LnJlY3QoKTsKLSAgICAgICAgd2ViUmVjdC53cml0aW5nRGly
ZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gV0tX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dDsKLSAgICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJyZWFrKCk7
Ci0gICAgICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RPbkxpbmUo
KTsKLSAgICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RPbkxpbmUo
KTsKLSAgICAgICAgd2ViUmVjdC5jb250YWluc1N0YXJ0ID0gY29yZVJlY3QuY29udGFpbnNTdGFy
dCgpOwotICAgICAgICB3ZWJSZWN0LmNvbnRhaW5zRW5kID0gY29yZVJlY3QuY29udGFpbnNFbmQo
KTsKLSAgICAgICAgd2ViUmVjdC5pc0luRml4ZWRQb3NpdGlvbiA9IGNvcmVSZWN0LmlzSW5GaXhl
ZFBvc2l0aW9uKCk7Ci0gICAgICAgIHdlYlJlY3QuaXNIb3Jpem9udGFsID0gY29yZVJlY3QuaXNI
b3Jpem9udGFsKCk7CisgICAgICAgIHdlYlJlY3QucmVjdCA9IGdlb21ldHJ5LnJlY3QoKTsKKyAg
ICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0gZ2VvbWV0cnkuZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6TFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dy
aXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9
IGdlb21ldHJ5LmlzTGluZUJyZWFrKCk7CisgICAgICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9
IGdlb21ldHJ5LmlzRmlyc3RPbkxpbmUoKTsKKyAgICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUg
PSBnZW9tZXRyeS5pc0xhc3RPbkxpbmUoKTsKKyAgICAgICAgd2ViUmVjdC5jb250YWluc1N0YXJ0
ID0gZ2VvbWV0cnkuY29udGFpbnNTdGFydCgpOworICAgICAgICB3ZWJSZWN0LmNvbnRhaW5zRW5k
ID0gZ2VvbWV0cnkuY29udGFpbnNFbmQoKTsKKyAgICAgICAgd2ViUmVjdC5pc0luRml4ZWRQb3Np
dGlvbiA9IGdlb21ldHJ5LmlzSW5GaXhlZFBvc2l0aW9uKCk7CisgICAgICAgIHdlYlJlY3QuaXNI
b3Jpem9udGFsID0gZ2VvbWV0cnkuaXNIb3Jpem9udGFsKCk7CiAgICAgICAgIHJldHVybiB3ZWJS
ZWN0OwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>