<?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>180911</bug_id>
          
          <creation_ts>2017-12-16 17:03:23 -0800</creation_ts>
          <short_desc>Add ability to API test Service Workers via a custom protocol</short_desc>
          <delta_ts>2017-12-18 17:18:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1382548</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-16 17:03:23 -0800</bug_when>
    <thetext>Add ability to API test Service Workers via a custom protocol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382549</commentid>
    <comment_count>1</comment_count>
      <attachid>329586</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-16 17:13:13 -0800</bug_when>
    <thetext>Created attachment 329586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382550</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-16 17:14:31 -0800</bug_when>
    <thetext>Attachment 329586 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:81:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:107:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:121:  Missing spaces around /  [whitespace/operators] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:123:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:126:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:131:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:133:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:139:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 8 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382553</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-16 17:18:05 -0800</bug_when>
    <thetext>&gt; ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:107:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]


This style rule should be changed at least for TestWebKitAPI, because such literals + custom scheme handlers are a clear win for tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382570</commentid>
    <comment_count>4</comment_count>
      <attachid>329592</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-16 19:13:57 -0800</bug_when>
    <thetext>Created attachment 329592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382571</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-16 19:16:08 -0800</bug_when>
    <thetext>Attachment 329592 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:80:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:106:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:120:  Missing spaces around /  [whitespace/operators] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:130:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:132:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:138:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 8 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382596</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-17 08:46:19 -0800</bug_when>
    <thetext>It is not clear to me whether the goal here is to add custom protocol service workers as we think applications will use these or if it is mainly for enabling service worker API tests. I guess it is both?

An alternative for SW API tests would be to make run-api-tests start WPT/HTTP/WS servers when a test requires it. This might also be handy in other API test areas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382598</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-17 09:24:38 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; It is not clear to me whether the goal here is to add custom protocol
&gt; service workers as we think applications will use these or if it is mainly
&gt; for enabling service worker API tests. I guess it is both?

Yes it is both.

&gt; An alternative for SW API tests would be to make run-api-tests start
&gt; WPT/HTTP/WS servers when a test requires it. This might also be handy in
&gt; other API test areas.

This is often bandied about every time somebody notices &quot;it would be nice to have httpd during api tests&quot; and then abandoned once somebody looks at it closer.

I&apos;m not saying it wouldn&apos;t be great, or should not happen, but I think it&apos;s a tangent to the goal here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382604</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-17 10:03:48 -0800</bug_when>
    <thetext>&gt; An alternative for SW API tests would be to make run-api-tests start
&gt; WPT/HTTP/WS servers when a test requires it. This might also be handy in
&gt; other API test areas.

I filed bug 180915 for that purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382771</commentid>
    <comment_count>9</comment_count>
      <attachid>329592</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-18 09:36:05 -0800</bug_when>
    <thetext>Comment on attachment 329592
Patch

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

&gt; Source/WebCore/page/NavigatorServiceWorker.idl:31
&gt; +    [SecureContextOrServiceWorkerScheme, SameObject] readonly attribute ServiceWorkerContainer serviceWorker;

This makes our IDL diverge from the spec, which is the opposite of what we&apos;re going for these days. I would be fine adding an *extra* extended Attribute to get special behavior, but I do not think it is OK to replace the standard [SecureContext] with something else.
Maybe [SecureContext, AllowServiceWorkerScheme]. Or since it is only used in one place, we could just add a special case to the bindings generator, instead of using a new IDL extended attribute.

Sam may have an opinion on this.

Or maybe simply override isSecureContext() in ServiceWorkerGlobalScope? Then we would not need any bindings change, right? Any reason we should not do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382779</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-18 09:55:20 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Comment on attachment 329592 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329592&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/NavigatorServiceWorker.idl:31
&gt; &gt; +    [SecureContextOrServiceWorkerScheme, SameObject] readonly attribute ServiceWorkerContainer serviceWorker;
&gt; 
&gt; This makes our IDL diverge from the spec, which is the opposite of what
&gt; we&apos;re going for these days. I would be fine adding an *extra* extended
&gt; Attribute to get special behavior, but I do not think it is OK to replace
&gt; the standard [SecureContext] with something else. Maybe [SecureContext, AllowServiceWorkerScheme].

That&apos;s the first thing I tried - The bindings generator only appends these as &amp;&amp; clauses, so adding the second clause doesn&apos;t help when you can&apos;t pass the first clause.

&gt; Or maybe simply override isSecureContext() in ServiceWorkerGlobalScope? Then
&gt; we would not need any bindings change, right? Any reason we should not do
&gt; that?

It has to pass on Documents/Workers as well.

&gt; Or since it is only used in
&gt; one place, we could just add a special case to the bindings generator,
&gt; instead of using a new IDL extended attribute.

I guess I&apos;ll do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382826</commentid>
    <comment_count>11</comment_count>
      <attachid>329659</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-18 12:22:40 -0800</bug_when>
    <thetext>Created attachment 329659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382827</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-18 12:24:17 -0800</bug_when>
    <thetext>Attachment 329659 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:80:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:106:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:120:  Missing spaces around /  [whitespace/operators] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:130:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:132:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:138:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 8 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382990</commentid>
    <comment_count>13</comment_count>
      <attachid>329659</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-18 17:17:01 -0800</bug_when>
    <thetext>Comment on attachment 329659
Patch

Clearing flags on attachment: 329659

Committed r226088: &lt;https://trac.webkit.org/changeset/226088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382991</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-18 17:17:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382992</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-18 17:18:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/36120769&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329586</attachid>
            <date>2017-12-16 17:13:13 -0800</date>
            <delta_ts>2017-12-16 19:13:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42772</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDBiMzhjZDdiYi4uN2RjZTJjOTIwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNy0xMi0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gQVBJIHRlc3QgU2VydmljZSBXb3JrZXJzIHZpYSBh
IGN1c3RvbSBwcm90b2NvbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3QgU2VydmljZVdvcmtlcnMuQmFzaWMKKworICAg
ICAgICBUaGlzIGFkZHMgYSBzZXQgb2YgIlNlcnZpY2UgV29ya2VycyBjYW4gaGFuZGxlIHRoaXMi
IHNjaGVtZXMgdG8gdGhlIHNjaGVtZSByZWdpc3RyeQorICAgICAgICBhbmQgdXNlcyBpdCBmb3Ig
U1cgZGVjaXNpb25zIGluc3RlYWQgb2YgYSBoYW5kZnVsIG9mIHByZXZpb3VzIHRlY2huaXF1ZXMu
CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoTmVlZHNSdW50aW1lQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uOgorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNTZWN1cmVD
b250ZXh0T3JTZXJ2aWNlV29ya2VyU2NoZW1lKToKKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0Lmg6CisKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIu
aWRsOgorCisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2VydmljZVdvcmtlclNjaGVtZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
cnZpY2VXb3JrZXJTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Q3VzdG9tU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorCisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToK
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisK
IDIwMTctMTItMTUgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNTk2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYTgyODk1NjcwY2Iu
LjM4ZWE2MmU3NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTY5Niw3ICsxNjk2LDggQEAgc3ViIE5lZWRzUnVudGlt
ZUNoZWNrCiAgICAgcmV0dXJuICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVk
QXRSdW50aW1lfQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEZvcldvcmxkfQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RW5hYmxlZEJ5U2V0dGluZ30KLSAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e1NlY3VyZUNvbnRleHR9OworICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57U2VjdXJlQ29udGV4dH0KKyAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1NlY3VyZUNvbnRleHRPclNlcnZpY2VXb3JrZXJTY2hlbWV9OwogfQogCiAjIGh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLW9wZXJhdGlvbnMKQEAgLTM2NTIsNiArMzY1
MywxMiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcKICAgICAg
ICAgcHVzaChAY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpIik7CiAg
ICAgfQogCisgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZWN1cmVDb250
ZXh0T3JTZXJ2aWNlV29ya2VyU2NoZW1lfSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CisKKyAgICAgICAgcHVzaChAY29uanVuY3RzLCAi
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dE9yU2VydmljZVdvcmtlclNjaGVtZSgpIik7Cisg
ICAgfQorCiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkg
ewogICAgICAgICBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9z
ZWQoJGludGVyZmFjZSwgJGNvbnRleHQsIFxAY29uanVuY3RzKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IDdj
ZTQ4ZTYxZjBlLi5iYTI0ZTYyZTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KQEAgLTQxMCw2ICs0MTAsOSBAQAogICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jU2VjdXJl
Q29udGV4dCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKKyAgICAgICAgIlNlY3VyZUNvbnRl
eHRPclNlcnZpY2VXb3JrZXJTY2hlbWUiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJhdHRyaWJ1dGUiXQorICAgICAgICB9LAogICAgICAgICAiU2V0dGVyQ2FsbFdpdGgiOiB7
CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKICAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiU2NyaXB0U3RhdGUiLCAi
R2xvYmFsT2JqZWN0IiwgIkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyJdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMDIzZTQ0Yjk1N2Qu
LmNiZGQwNzk2ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFu
YWdlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmgiCkBAIC01MzgsNiArNTM5LDE1IEBAIEpTQzo6RXhlY1N0YXRlKiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUoKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCitib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmlzU2VjdXJlQ29udGV4dE9yU2Vy
dmljZVdvcmtlclNjaGVtZSgpCit7CisgICAgaWYgKGlzU2VjdXJlQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIEFTU0VSVChzZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1
cm4gU2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNjaGVtZShz
ZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKTsKK30KKwogU2VydmljZVdvcmtlciogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6YWN0aXZlU2VydmljZVdvcmtlcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fYWN0aXZlU2VydmljZVdvcmtlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDFjMTU3NzI1N2I1Li42YjRlYmY2MzExOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMzgsNiAr
MjM4LDcgQEAgcHVibGljOgogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBib29sIGlzU2VjdXJlQ29udGV4dE9yU2Vydmlj
ZVdvcmtlclNjaGVtZSgpOwogICAgIFNlcnZpY2VXb3JrZXIqIGFjdGl2ZVNlcnZpY2VXb3JrZXIo
KSBjb25zdDsKICAgICB2b2lkIHNldEFjdGl2ZVNlcnZpY2VXb3JrZXIoUmVmUHRyPFNlcnZpY2VX
b3JrZXI+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNl
cnZpY2VXb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29y
a2VyLmlkbAppbmRleCA0YWNiZjI2ODRlOS4uZGVkMzc2ODJiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbApAQCAtMjgsNSArMjgsNSBAQAog
ICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2Vy
dmljZVdvcmtlcgogXSBpbnRlcmZhY2UgTmF2aWdhdG9yU2VydmljZVdvcmtlciB7Ci0gICAgW1Nl
Y3VyZUNvbnRleHQsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyIHNlcnZpY2VXb3JrZXI7CisgICAgW1NlY3VyZUNvbnRleHRPclNlcnZpY2VXb3Jr
ZXJTY2hlbWUsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyIHNlcnZpY2VXb3JrZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1l
UmVnaXN0cnkuY3BwCmluZGV4IDlkNDg0MjFmYzUyLi5jYjkzYTc4OGY3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2lu
Y2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAKICNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0yNTIs
NiArMjU0LDE5IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVt
ZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCitzdGF0aWMgTG9jayYgc2VydmljZVdvcmtl
clNjaGVtZXNMb2NrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4gbG9jazsK
KyAgICByZXR1cm4gbG9jazsKK30KKworc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlcnZpY2VXb3Jr
ZXJTY2hlbWVzKCkKK3sKKyAgICBBU1NFUlQoc2VydmljZVdvcmtlclNjaGVtZXNMb2NrKCkuaXNI
ZWxkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVz
OworICAgIHJldHVybiBzY2hlbWVzOworfQorCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgYWx3YXlz
UmV2YWxpZGF0ZWRTY2hlbWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2No
ZW1lc01hcD4gc2NoZW1lczsKQEAgLTQzMCw2ICs0NDUsMzcgQEAgYm9vbCBTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
CiAgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVz
KCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAordm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJV
UkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sK
KyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNlcnZpY2VXb3JrZXJTY2hlbWVzTG9jaygpKTsKKyAgICBzZXJ2aWNlV29y
a2VyU2NoZW1lcygpLmFkZChzY2hlbWUpOworfQorCitib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5T
ZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
c2NoZW1lLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShBU0NJSUxpdGVyYWwoImh0dHAiKSkp
IHsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgoKSA9PSA0KQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGlmIChzY2hlbWUubGVuZ3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2VydmljZVdvcmtlclNjaGVtZXNMb2Nr
KCkpOworICAgIHJldHVybiBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7
Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3Rv
bVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KHNlcnZpY2VXb3JrZXJTY2hlbWVzTG9jaygpKTsKKyAgICByZXR1cm4gIXNjaGVtZS5pc051bGwo
KSAmJiBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIGJvb2wg
U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIHsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuaAppbmRleCA5YzBhNjBhN2YyZi4uNjJiZTNjNDU5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaApAQCAtOTksNiArOTksMTEgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRp
dGlvbmVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXJ0
aXRpb25DYWNoZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKKyAgICAvLyBT
Y2hlbWVzIGJlc2lkZXMgaHR0cChzKSB0aGF0IHNlcnZpY2Ugd29ya2VycyBhcmUgYWxsb3dlZCB0
byBoYW5kbGUKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShj
b25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgc3RhdGljIGJvb2wgaXNTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyQ3VzdG9tU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKwogICAgIHN0YXRpYyBi
b29sIGlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKaW5kZXggYzllMTkxMTRjNGIuLmIwZmU5Zjg2ZjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVk
ZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgi
CkBAIC0xMjksOCArMTMwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdp
c3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBkaXNhbGxvd3Mgc2NyaXB0cyBv
dXRzaWRlIG9mIEhUVFAoUyksIGJ1dCB3ZSdsbCBsaWtlbHkgc3VwcG9ydCBhcHAgY3VzdG9tIFVS
TCBzY2hlbWVzIGluIFdlYktpdC4KLSAgICBpZiAoIWpvYkRhdGEuc2NyaXB0VVJMLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICghU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VX
b3JrZXJzSGFuZGxlVVJMU2NoZW1lKGpvYkRhdGEuc2NyaXB0VVJMLnByb3RvY29sKCkudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoInNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBtdXN0
IGJlIGNhbGxlZCB3aXRoIGEgc2NyaXB0IFVSTCB3aG9zZSBwcm90b2NvbCBpcyBlaXRoZXIgSFRU
UCBvciBIVFRQUyIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0
cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgaWYgKCFzY29wZS5pc0VtcHR5KCkpCiAg
ICAgICAgIGpvYkRhdGEuc2NvcGVVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChzY29wZSk7CiAK
LSAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpvYkRhdGEuc2NvcGVVUkwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCFqb2JEYXRhLnNjb3BlVVJMLmlz
TnVsbCgpICYmICFTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hl
bWUoam9iRGF0YS5zY29wZVVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
IHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJTY29wZSBVUkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11
c3QgYmUgZWl0aGVyIEhUVFAgb3IgSFRUUFMiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IGViMmRiNWJhNjg4Li5iMTE3OWRjMGZhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0
YS5oIgogI2luY2x1ZGUgIlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIK
KyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKQEAgLTIzMSw3ICsyMzIsNyBAQCB2b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2IpCiB7CiAgICAgQVNTRVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdp
c3Rlcik7CiAKLSAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpv
Yi5zY3JpcHRVUkwpKQorICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoam9iLnNjcmlwdFVSTCkgJiYgIVNjaGVtZVJlZ2lzdHJ5Ojppc1NlcnZpY2VXb3JrZXJDb250
YWluZXJDdXN0b21TY2hlbWUoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRh
dGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlwdCBVUkwgaXMgbm90IHBvdGVu
dGlhbGx5IHRydXN0d29ydGh5IikgfSk7CiAKICAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidz
IHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkNTYwYzY0M2Q1Yy4uNmMxNjQ3ZTljN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTctMTItMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhYmlsaXR5IHRvIEFQSSB0ZXN0IFNlcnZpY2UgV29ya2VycyB2aWEgYSBjdXN0b20gcHJv
dG9jb2wuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODA5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBzZXQgb2YgIlNlcnZpY2UgV29ya2VycyBjYW4gaGFuZGxlIHRoaXMiIHNjaGVt
ZXMgdG8gdGhlIHNjaGVtZSByZWdpc3RyeQorICAgICAgICBhbmQgbW9zdCBvZiB0aGVzZSBXZWJL
aXQgY2hhbmdlcyBhcmUgdG8gc3VwcG9ydCBnZXR0aW5nIHRob3NlIHZhbHVlcyBvdXQgdG8gYWxs
IHByb2Nlc3Nlcy4KKyAgICAgICAgCisgICAgICAgIEFkZGl0aW9uYWxseSwgV2Vic2l0ZURhdGFS
ZWNvcmRzIHVzZWQgdG8gYmUgZmlsZS9odHRwKHMpLW9ubHkuIFRoYXQgc2VlbXMgYml6YXJyZSBh
bmQgZGVmaW5pdGVseQorICAgICAgICBnb3QgaW4gdGhlIHdheSBvZiB0ZXN0aW5nLiBTbyBJIGFs
c28gYWRkZWQgYSB3YXkgdG8gYWxsb3cgYW55IHNjaGVtZSB0byByZXN1bHQgaW4gYSB2YWxpZCBy
ZWNvcmQuCisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3MuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAKKyAgICAg
ICAgKiBTaGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgCisgICAgICAgICogU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6
aW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFJlZ2lzdGVyVVJMU2No
ZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpoYW5kbGVGZXRjaCk6CisgICAgICAgIAorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAxNy0xMi0xNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgdXBkYXRpbmcgYSBzZXJ2aWNlIHdv
cmtlciByZWdpc3RyYXRpb24ncyB1cGRhdGVWaWFDYWNoZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q2hpbGRQcm9jZXNzLmNwcAppbmRleCAyYzAyMjhjNWZmOC4uNWIwYjVkN2Q3ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCkBAIC0xOTEsNiArMTkyLDExIEBAIHZv
aWQgQ2hpbGRQcm9jZXNzOjpzaHV0RG93bigpCiAgICAgdGVybWluYXRlKCk7CiB9CiAKK3ZvaWQg
Q2hpbGRQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNv
bnN0IFN0cmluZyYgdXJsU2NoZW1lKSBjb25zdAoreworICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHVybFNjaGVtZSk7
Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIENoaWxkUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKaW5kZXggZjFhMzJl
YzJhNmYuLmNlOThkNzM1ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGls
ZFByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuaApAQCAt
MTA0LDYgKzEwNCw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJikgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQ5ZGZiMDUwYzVjLi4w
NjI2OTFmZDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMjIsNCArMjIsNSBAQAogCiBtZXNzYWdlcyAtPiBDaGlsZFByb2Nlc3Mgewog
ICAgIFNodXREb3duKCkKKyAgICBSZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlKFN0cmluZyBzY2hlbWUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
dG9yYWdlL1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGQyM2VmYjBlNDhiLi42ZTVlYWJlMjkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA8PCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
ZW5jb2RlciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IDw8IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8
PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5IDw8IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPDwgdXJsU2NoZW1lc1NlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlOwogI2VuZGlmCiB9CiAKQEAgLTY4LDYgKzY4LDkgQEAgYm9vbCBTdG9yYWdl
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
U3RvcmFnZVByb2MKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFn
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBmNjBiNTAzYzcwZC4uNjc2ODBkZjEy
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTUzLDYgKzUzLDcgQEAgc3Ry
dWN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1Nl
cnZpY2VXb3JrZXJzQ2FuSGFuZGxlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDcwMGMx
NGUxMjk5Li44MTNhNGJiYTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVk
OwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Fsd2F5c1JldmFsaWRhdGVk
OwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQ7
CisgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGU7CiAgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKGNhY2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgc2hvdWxkQWx3
YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aDsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZU1l
bW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZzsKQEAgLTI3MSw2ICsyNzIsOCBAQCBib29sIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdl
YlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy5jYWNoZU1vZGVsKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiY2I0MGFk
OTg1NC4uMDdiZTQ3MmU5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkOwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNS
ZWdpc3RlcmVkQXNBbHdheXNSZXZhbGlkYXRlZDsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZDsKKyAgICBWZWN0b3I8U3RyaW5nPiB1cmxT
Y2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGU7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBmb250
V2hpdGVsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggMTcyZTJhYzM3ZTQu
LjdmMmJjMWI0NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcApAQCAtMTkxLDYgKzE5MSw5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6Omlu
aXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKGNvbnN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJh
CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAg
ICAgICBwb3N0U3RvcmFnZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU3RvcmFn
ZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSkpOwogICAgIH0KKworICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFy
YW1ldGVycy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpCisgICAgICAgIHJlZ2lz
dGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoc2NoZW1lKTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBhZjg0
YmYyNmEwZC4uNDRjMzQ5M2VkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcApAQCAtMzk1LDYgKzM5NSwxMSBAQCB2b2lkIFdLQ29udGV4dFJlZ2lzdGVy
VVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0
cgogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0
aW9uZWQodG9JbXBsKHVybFNjaGVtZSktPnN0cmluZygpKTsKIH0KIAordm9pZCBXS0NvbnRleHRS
ZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1N0cmluZ1JlZiB1cmxTY2hlbWUpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYp
LT5yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHRvSW1wbCh1cmxTY2hl
bWUpLT5zdHJpbmcoKSk7Cit9CisKIHZvaWQgV0tDb250ZXh0U2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYg
dXJsU2NoZW1lKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG9tYWluUmVsYXhhdGlv
bkZvcmJpZGRlbkZvclVSTFNjaGVtZSh0b0ltcGwodXJsU2NoZW1lKS0+c3RyaW5nKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4
IGEwZmMxYzIzZGI4Li5mMzc1N2UwODIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtNjMsNiArNjMsOCBAQCBXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5
UG9saWN5KFdLQ29udAogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVt
ZUFzQ2FjaGVQYXJ0aXRpb25lZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgdXJs
U2NoZW1lKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVTZXJ2
aWNlV29ya2Vyc0NhbkhhbmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgdXJs
U2NoZW1lKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgdXJs
U2NoZW1lKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNTZXJ2
ZXJUcnVzdEV2YWx1YXRpb24oV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgdmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KaW5kZXggMzFlOTY1YTY5NzUuLmM2YTBmYjFiNWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
QEAgLTU5MCw2ICs1OTAsMTEgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
c3RpbmdDYWxsYmFjazoodm9pZCAoXikoV0tXZWJzaXRlRGF0YVN0b3JlICoKICAgICBzdG9yZS0+
c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhudWxscHRyKTsKIH0KIAorKyAodm9pZClfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zCit7CisgICAgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjphbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMoKTsKK30KKwog
QGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
CmluZGV4IDY2NGYyZDg2ZjE3Li4yY2IzY2I3YzQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oCkBAIC04Myw3ICs4Myw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tX
ZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyczoo
dW5zaWduZWQpaG91cnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkp
OwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXiko
V0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICopKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKLQorKyAodm9pZClfYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBjODJhZGIyYTAxYS4u
NTM1MjYxMWMxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR2FtZXBhZERhdGEuaCIKQEAgLTU1Nyw2ICs1NTgsOSBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRh
U3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcgogICAgICAgICAgICAgcGFyYW1ldGVycy5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSA9IGNvcHlUb1Zl
Y3RvcihtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSk7CiAjZW5kaWYKIAogICAgICAg
ICBtX3N0b3JhZ2VQcm9jZXNzID0gU3RvcmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzKTsK
QEAgLTc3Nyw2ICs3ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYQogICAgIHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1fc2No
ZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNS
ZWdpc3RlcmVkQXNBbHdheXNSZXZhbGlkYXRlZCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZCk7CiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lz
dGVyQXNDYWNoZVBhcnRpdGlvbmVkKTsKKyAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNTZXJ2aWNl
V29ya2Vyc0NhbkhhbmRsZSA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0Nh
bkhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29k
ZVBhdGggPSBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIHBhcmFtZXRlcnMu
c2hvdWxkVXNlRm9udFNtb290aGluZyA9IG1fc2hvdWxkVXNlRm9udFNtb290aGluZzsKQEAgLTEy
OTAsNiArMTI5NSwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFz
Q2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZQogICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFy
dGl0aW9uZWQodXJsU2NoZW1lKSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVy
VVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUp
Cit7CisgICAgbV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUuYWRkKHVybFNjaGVtZSk7
CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpDaGlsZFByb2Nlc3M6OlJlZ2lzdGVy
VVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUodXJsU2NoZW1lKSk7CisgICAgaWYgKG1f
c3RvcmFnZVByb2Nlc3MpCisgICAgICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OkNoaWxkUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSh1
cmxTY2hlbWUpLCAwKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbChD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7CiAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRDYWNoZU1v
ZGVsKGNhY2hlTW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggMDdlZjExMDQ4OTQuLmVlNjMzNTliNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKQEAgLTIxOCw2ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJik7Cisg
ICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgcHJlY29ubmVjdFRvU2VydmVyKGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwogCiAgICAgVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSgpIHsgcmV0dXJuIG1f
dmlzaXRlZExpbmtTdG9yZS5nZXQoKTsgfQpAQCAtNTM4LDYgKzUzOSw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkOwogICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZDsK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQ2FjaGVQYXJ0aXRpb25l
ZDsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGU7
CiAKICAgICBib29sIG1fYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGggeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9zaG91bGRVc2VGb250U21vb3RoaW5nIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAppbmRleCBmYmJjNGI0ZmUwZS4uMjA5ZGFkYzI5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC01
NSw2ICs1NSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIGJvb2wgYWxsb3dz
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luczsKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
YWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKCkKK3sKKyAgICBhbGxvd3NXZWJz
aXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zID0gdHJ1ZTsKK30KKwogc3RhdGljIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFdlYnNpdGVEYXRhU3RvcmUqPiYgbm9uRGVmYXVsdERhdGFTdG9yZXMo
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTIzOCw4ICsyNDQs
MTIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KIAogICAgICAgICAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IHdlYnNpdGVEYXRhLmVudHJpZXMpIHsKICAgICAgICAgICAgICAgICBhdXRvIGRpc3Bs
YXlOYW1lID0gV2Vic2l0ZURhdGFSZWNvcmQ6OmRpc3BsYXlOYW1lRm9yT3JpZ2luKGVudHJ5Lm9y
aWdpbik7Ci0gICAgICAgICAgICAgICAgaWYgKCFkaXNwbGF5TmFtZSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFkaXNwbGF5TmFtZSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWFsbG93c1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnMpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZSA9IG1ha2VTdHJpbmcoZW50cnkub3JpZ2luLnByb3RvY29sLCAiICIs
IGVudHJ5Lm9yaWdpbi5ob3N0KTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBhdXRvJiByZWNvcmQgPSBtX3dlYnNpdGVEYXRhUmVjb3Jkcy5hZGQoZGlzcGxheU5hbWUsIFdl
YnNpdGVEYXRhUmVjb3JkIHsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlm
ICghcmVjb3JkLmRpc3BsYXlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDFkY2EzMWQ4N2E2Li5mZjY2
ZDY4ZWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTU1LDYgKzE1NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFsbG93c0NlbGx1bGFyQWNjZXNzKEFsbG93c0NlbGx1bGFyQWNjZXNzIGFsbG93cykg
eyBtX2FsbG93c0NlbGx1bGFyQWNjZXNzID0gYWxsb3dzOyB9CiAgICAgQWxsb3dzQ2VsbHVsYXJB
Y2Nlc3MgYWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSB7IHJldHVybiBtX2FsbG93c0NlbGx1bGFyQWNj
ZXNzOyB9CiAKKyAgICBzdGF0aWMgdm9pZCBhbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9y
aWdpbnMoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6
U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24s
IFBBTDo6U2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCmluZGV4IDQ2YjU1MjNm
MjRiLi5hZmY4YzJiYjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Db2RlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckpvYi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxLDcgKzcyLDcgQEAgc3RhdGljIGlubGluZSBib29s
IHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykK
IAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBpZiAo
IWxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8ICFzaG91
bGRIYW5kbGVGZXRjaChsb2FkZXIub3B0aW9ucygpKSkgeworICAgIGlmICghU2NoZW1lUmVnaXN0
cnk6OmNhblNlcnZpY2VXb3JrZXJzSGFuZGxlVVJMU2NoZW1lKGxvYWRlci5yZXF1ZXN0KCkudXJs
KCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpIHx8ICFzaG91bGRIYW5kbGVG
ZXRjaChsb2FkZXIub3B0aW9ucygpKSkgewogICAgICAgICBjYWxsYmFjayhTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBhNjA5ZmI5OGRmNi4u
YjFhMjMyMmFhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTM2Nyw2ICszNjcsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGZvciAoYXV0byYg
c2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25l
ZCkKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoc2NoZW1lKTsK
IAorICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzU2VydmljZVdv
cmtlcnNDYW5IYW5kbGUpCisgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnND
YW5IYW5kbGUoc2NoZW1lKTsKKwogICAgIHNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFs
KHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpOwogCiAgICAgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggOTRkY2IzMDZjYWUuLmUzODY1ODlkZDQ5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTItMTYg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhYmlsaXR5
IHRvIEFQSSB0ZXN0IFNlcnZpY2UgV29ya2VycyB2aWEgYSBjdXN0b20gcHJvdG9jb2wuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5MTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgdmVyeSBi
YXNpYyBTVyB0ZXN0OgorICAgICAgICAtIFZlcmlmeSBXZWJzaXRlRGF0YVN0b3JlIGNhbiB3aXBl
IGFsbCBTVyByZWdpc3RyYXRpb24gZGF0YS4KKyAgICAgICAgLSBGaXJlIHVwIGEgd2ViIHBhZ2Ug
d2l0aCBhIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIC0gVmVyaWZ5IFNXIHJlZ2lzdHJhdGlvbiBk
YXRhIGZvciB0aGF0IHBhZ2UgZXhpc3RzIGluIHRoZSBXZWJzaXRlRGF0YVN0b3JlLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW06IEFkZGVkLgorCiAyMDE3LTEyLTE1ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRf
cXVlc2FkYUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRkaW5nIG15c2VsZiB0
byBjb250cmlidXRvcnMuanNvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODE4NjNjMTNh
YS4uMzEwYzA1MzI1OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTYsNiArMTk2LDcg
QEAKIAkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU3ODAzNzE5MTlB
RkY4MDAxODI5QTIgLyogc2ltcGxlMy5odG1sICovOyB9OwogCQk1MUU2QTg5NDFEMkYxQzBBMDBD
MDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU2QTg5MjFEMkYxQkVDMDBDMDA0QjYgLyogTG9jYWxTdG9y
YWdlQ2xlYXIubW0gKi87IH07CiAJCTUxRTZBODk2MUQyRjFDQTcwMEMwMDRCNiAvKiBMb2NhbFN0
b3JhZ2VDbGVhci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRTZBODk1MUQyRjFDNzcwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVh
ci5odG1sICovOyB9OworCQk1MUVCMTI5NDFGREYwNTI1MDBBNUExQkQgLyogU2VydmljZVdvcmtl
ckJhc2ljLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5tbSAqLzsgfTsK
IAkJNTFGQ0Y3QTExNTM0QjJBMDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW1fQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTIwQkNGNEMxNDFFQjA5RTAwOTM3RUE4IC8qIFdl
YkFyY2hpdmVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyMEJDRjRBMTQxRUIwOUUwMDkzN0VBOCAvKiBXZWJBcmNoaXZlX0J1bmRsZS5j
cHAgKi87IH07CiAJCTUyNEJCQzlFMTlERjcyQzAwMDJGMUFGMSAvKiBmaWxlLXdpdGgtdmlkZW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MjRCQkM5QjE5REYzNzE0MDAyRjFBRjEgLyogZmlsZS13aXRoLXZpZGVvLmh0bWwgKi87IH07
CkBAIC0xMzM3LDYgKzEzMzgsNyBAQAogCQk1MUU3ODAzNjE5MTlBRkY4MDAxODI5QTIgLyogc2lt
cGxlMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gc2ltcGxlMi5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU3ODAzNzE5MTlBRkY4MDAxODI5QTIgLyogc2lt
cGxlMy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gc2ltcGxlMy5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU5MzAxNjE1NkIxM0UxMDA0Qzk5REYgLyogV0tQ
YWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLUGFnZUdldFNjYWxlRmFjdG9yTm90WmVyby5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRUIxMjkzMUZERjA1MDUwMEE1QTFCRCAvKiBTZXJ2aWNlV29ya2Vy
QmFzaWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQmFzaWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkJCQjRDMTUx
M0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3Q2FuUGFzdGVVUkwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRkNGNzk3MTUzNEFDNkQwMDEwNDQ5MSAvKiBTaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQ0Y3OTgxNTM0QUM2RDAwMTA0NDkxIC8qIFNo
b3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTYsNiArMjA5OCw3IEBACiAJCQkJQTE4MEMwRjkxRUU2
N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLywKIAkJCQkzN0JDQTYxQjFCNTk2QkE5
MDAyMDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93QWN0aW9ucy5tbSAq
LywKIAkJCQkyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0gKi8sCisJ
CQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5tbSAqLywK
IAkJCQkyREZGN0I2QzFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSAqLywKIAkJ
CQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLywK
IAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywKQEAgLTM0
MTEsNiArMzQxNCw3IEBACiAJCQkJNUMwQkY4OTMxREQ1OTlCRDAwQjAwMzI4IC8qIElzTmF2aWdh
dGlvbkFjdGlvblRydXN0ZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzY5QkRENTFGODJBN0VG
MDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VBRDFBNDExQTM0MDA0NDdDNEMgLyogSmF2YVNjcmlwdFRlc3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFFQjEyOTQxRkRGMDUyNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJC
YXNpYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE1MUE0MTFBMDgwMDQ0N0M0QyAvKiBK
YXZhU2NyaXB0VGVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM0MUE0MTFBN0Uw
MDQ0N0M0QyAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjA2MUE0MTFBRTYwMDQ0N0M0QyAvKiBMYXlvdXRNaWxlc3RvbmVzV2l0aEFsbENv
bnRlbnRJbkZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjlmNWU3MmY5YWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxl
ci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CisjaW1wb3J0IDx3dGYv
RGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworc3RydWN0IFJlc291cmNlSW5mbyB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtaW1l
VHlwZTsKKyAgICBjb25zdCBjaGFyKiBkYXRhOworfTsKKworc3RhdGljIGJvb2wgZG9uZTsKKwor
c3RhdGljIERlcXVlPFN0cmluZz4gZXhwZWN0ZWRNZXNzYWdlczsKKworQGludGVyZmFjZSBTV01l
c3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBTV01lc3NhZ2VIYW5kbGVyCistICh2b2lkKXVzZXJDb250ZW50Q29u
dHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIg
ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAg
ICBFWFBFQ1RfVFJVRShbW21lc3NhZ2UgYm9keV0gaXNFcXVhbFRvU3RyaW5nOkAiTWVzc2FnZSBm
cm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSB0aGUgd2ViIHBh
Z2UiXSk7CisgICAgZG9uZSA9IHRydWU7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgU1dTY2hlbWVz
IDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4geworQHB1YmxpYworICAgIEhhc2hNYXA8
U3RyaW5nLCBSZXNvdXJjZUluZm8+IHJlc291cmNlczsKK30KKworLShzaXplX3QpaGFuZGxlZFJl
cXVlc3RzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU1dTY2hlbWVzIHsKKyAgICBzaXplX3Qg
X2hhbmRsZWRSZXF1ZXN0czsKK30KKworLShzaXplX3QpaGFuZGxlZFJlcXVlc3RzCit7CisgICAg
cmV0dXJuIF9oYW5kbGVkUmVxdWVzdHM7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sK
K3sKKyAgICBhdXRvIGVudHJ5ID0gcmVzb3VyY2VzLmZpbmQoW3Rhc2sucmVxdWVzdC5VUkwgYWJz
b2x1dGVTdHJpbmddKTsKKyAgICBpZiAoZW50cnkgPT0gcmVzb3VyY2VzLmVuZCgpKSB7CisgICAg
ICAgIE5TTG9nKEAiRGlkIG5vdCBmaW5kIHJlc291cmNlIGVudHJ5IGZvciBVUkwgJUAiLCB0YXNr
LnJlcXVlc3QuVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICsrX2hhbmRsZWRS
ZXF1ZXN0czsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTplbnRyeS0+dmFsdWUubWltZVR5cGUuZ2V0KCkgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjEg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UuZ2V0KCldOworCisgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzTm9Db3B5Oih2b2lkKillbnRyeS0+dmFsdWUuZGF0YSBsZW5ndGg6c3RybGVuKGVudHJ5
LT52YWx1ZS5kYXRhKSBmcmVlV2hlbkRvbmU6Tk9dXTsKKyAgICBbdGFzayBkaWRGaW5pc2hdOwor
fQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRh
c2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKworQGVuZAorCitzdGF0aWMgY29u
c3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KKworZnVuY3Rpb24g
bG9nKG1zZykKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5wb3N0TWVz
c2FnZShtc2cpOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coIk1lc3NhZ2UgZnJvbSB3b3Jr
ZXI6ICIgKyBldmVudC5kYXRhKTsKK30pOworCit0cnkgeworCituYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKKyAgICByZWcuaW5z
dGFsbGluZy5wb3N0TWVzc2FnZSgiSGVsbG8gZnJvbSB0aGUgd2ViIHBhZ2UiKTsKK30pLmNhdGNo
KGZ1bmN0aW9uKGVycm9yKSB7CisgICAgbG9nKCJSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICIg
KyBlcnJvcik7Cit9KTsKK30gY2F0Y2goZSkgeworICAgIGxvZygiRXhjZXB0aW9uOiAiICsgZSk7
Cit9CisKKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc2Ny
aXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIChldmVudCkgPT4geworICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiU2VydmljZVdv
cmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworfSk7CisKKylTV1JFU09VUkNFIjsKKwor
VEVTVChTZXJ2aWNlV29ya2VycywgQmFzaWMpCit7CisgICAgQVNTRVJUKG1haW5CeXRlcyk7Cisg
ICAgQVNTRVJUKHNjcmlwdEJ5dGVzKTsKKworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxTV01l
c3NhZ2VIYW5kbGVyPiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3
Il07CisKKyAgICBSZXRhaW5QdHI8U1dTY2hlbWVzPiBoYW5kbGVyID0gYWRvcHROUyhbW1NXU2No
ZW1lcyBhbGxvY10gaW5pdF0pOworICAgIGhhbmRsZXItPnJlc291cmNlcy5zZXQoInN3Oi8vaG9z
dC9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsK
KyAgICBoYW5kbGVyLT5yZXNvdXJjZXMuc2V0KCJzdzovL2hvc3Qvc3cuanMiLCBSZXNvdXJjZUlu
Zm8geyBAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAiU1ciXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHdrU2NoZW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJzdyIpKTsKKyAgICBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJz
Q2FuSGFuZGxlKChXS0NvbnRleHRSZWYpd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nl
c3NQb29sLCB3a1NjaGVtZS5nZXQoKSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3c6Ly9o
b3N0L21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgd2ViVmlldyA9IG51bGxwdHI7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVj
dDpXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXSBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqd2Vic2l0ZURhdGFSZWNv
cmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgW3dlYnNpdGVEYXRhUmVjb3JkcyBjb3VudF0p
OworICAgICAgICBFWFBFQ1RfVFJVRShbd2Vic2l0ZURhdGFSZWNvcmRzWzBdLmRpc3BsYXlOYW1l
IGlzRXF1YWxUb1N0cmluZzpAInN3IGhvc3QiXSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUg
PSBmYWxzZTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329592</attachid>
            <date>2017-12-16 19:13:57 -0800</date>
            <delta_ts>2017-12-18 12:22:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42810</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDBiMzhjZDdiYi4uN2RjZTJjOTIwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNy0xMi0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gQVBJIHRlc3QgU2VydmljZSBXb3JrZXJzIHZpYSBh
IGN1c3RvbSBwcm90b2NvbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3QgU2VydmljZVdvcmtlcnMuQmFzaWMKKworICAg
ICAgICBUaGlzIGFkZHMgYSBzZXQgb2YgIlNlcnZpY2UgV29ya2VycyBjYW4gaGFuZGxlIHRoaXMi
IHNjaGVtZXMgdG8gdGhlIHNjaGVtZSByZWdpc3RyeQorICAgICAgICBhbmQgdXNlcyBpdCBmb3Ig
U1cgZGVjaXNpb25zIGluc3RlYWQgb2YgYSBoYW5kZnVsIG9mIHByZXZpb3VzIHRlY2huaXF1ZXMu
CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoTmVlZHNSdW50aW1lQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uOgorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNTZWN1cmVD
b250ZXh0T3JTZXJ2aWNlV29ya2VyU2NoZW1lKToKKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0Lmg6CisKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIu
aWRsOgorCisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2VydmljZVdvcmtlclNjaGVtZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
cnZpY2VXb3JrZXJTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Q3VzdG9tU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorCisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToK
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisK
IDIwMTctMTItMTUgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNTk2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYTgyODk1NjcwY2Iu
LjM4ZWE2MmU3NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTY5Niw3ICsxNjk2LDggQEAgc3ViIE5lZWRzUnVudGlt
ZUNoZWNrCiAgICAgcmV0dXJuICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVk
QXRSdW50aW1lfQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEZvcldvcmxkfQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RW5hYmxlZEJ5U2V0dGluZ30KLSAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e1NlY3VyZUNvbnRleHR9OworICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57U2VjdXJlQ29udGV4dH0KKyAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1NlY3VyZUNvbnRleHRPclNlcnZpY2VXb3JrZXJTY2hlbWV9OwogfQogCiAjIGh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLW9wZXJhdGlvbnMKQEAgLTM2NTIsNiArMzY1
MywxMiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcKICAgICAg
ICAgcHVzaChAY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpIik7CiAg
ICAgfQogCisgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZWN1cmVDb250
ZXh0T3JTZXJ2aWNlV29ya2VyU2NoZW1lfSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CisKKyAgICAgICAgcHVzaChAY29uanVuY3RzLCAi
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dE9yU2VydmljZVdvcmtlclNjaGVtZSgpIik7Cisg
ICAgfQorCiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkg
ewogICAgICAgICBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9z
ZWQoJGludGVyZmFjZSwgJGNvbnRleHQsIFxAY29uanVuY3RzKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IDdj
ZTQ4ZTYxZjBlLi5iYTI0ZTYyZTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KQEAgLTQxMCw2ICs0MTAsOSBAQAogICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jU2VjdXJl
Q29udGV4dCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKKyAgICAgICAgIlNlY3VyZUNvbnRl
eHRPclNlcnZpY2VXb3JrZXJTY2hlbWUiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJhdHRyaWJ1dGUiXQorICAgICAgICB9LAogICAgICAgICAiU2V0dGVyQ2FsbFdpdGgiOiB7
CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKICAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiU2NyaXB0U3RhdGUiLCAi
R2xvYmFsT2JqZWN0IiwgIkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyJdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMDIzZTQ0Yjk1N2Qu
LmNiZGQwNzk2ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFu
YWdlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmgiCkBAIC01MzgsNiArNTM5LDE1IEBAIEpTQzo6RXhlY1N0YXRlKiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUoKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCitib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmlzU2VjdXJlQ29udGV4dE9yU2Vy
dmljZVdvcmtlclNjaGVtZSgpCit7CisgICAgaWYgKGlzU2VjdXJlQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIEFTU0VSVChzZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1
cm4gU2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNjaGVtZShz
ZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKTsKK30KKwogU2VydmljZVdvcmtlciogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6YWN0aXZlU2VydmljZVdvcmtlcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fYWN0aXZlU2VydmljZVdvcmtlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDFjMTU3NzI1N2I1Li42YjRlYmY2MzExOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMzgsNiAr
MjM4LDcgQEAgcHVibGljOgogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBib29sIGlzU2VjdXJlQ29udGV4dE9yU2Vydmlj
ZVdvcmtlclNjaGVtZSgpOwogICAgIFNlcnZpY2VXb3JrZXIqIGFjdGl2ZVNlcnZpY2VXb3JrZXIo
KSBjb25zdDsKICAgICB2b2lkIHNldEFjdGl2ZVNlcnZpY2VXb3JrZXIoUmVmUHRyPFNlcnZpY2VX
b3JrZXI+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNl
cnZpY2VXb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29y
a2VyLmlkbAppbmRleCA0YWNiZjI2ODRlOS4uZGVkMzc2ODJiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbApAQCAtMjgsNSArMjgsNSBAQAog
ICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2Vy
dmljZVdvcmtlcgogXSBpbnRlcmZhY2UgTmF2aWdhdG9yU2VydmljZVdvcmtlciB7Ci0gICAgW1Nl
Y3VyZUNvbnRleHQsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyIHNlcnZpY2VXb3JrZXI7CisgICAgW1NlY3VyZUNvbnRleHRPclNlcnZpY2VXb3Jr
ZXJTY2hlbWUsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyIHNlcnZpY2VXb3JrZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1l
UmVnaXN0cnkuY3BwCmluZGV4IDlkNDg0MjFmYzUyLi5jYjkzYTc4OGY3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2lu
Y2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAKICNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0yNTIs
NiArMjU0LDE5IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVt
ZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCitzdGF0aWMgTG9jayYgc2VydmljZVdvcmtl
clNjaGVtZXNMb2NrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4gbG9jazsK
KyAgICByZXR1cm4gbG9jazsKK30KKworc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlcnZpY2VXb3Jr
ZXJTY2hlbWVzKCkKK3sKKyAgICBBU1NFUlQoc2VydmljZVdvcmtlclNjaGVtZXNMb2NrKCkuaXNI
ZWxkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVz
OworICAgIHJldHVybiBzY2hlbWVzOworfQorCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgYWx3YXlz
UmV2YWxpZGF0ZWRTY2hlbWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2No
ZW1lc01hcD4gc2NoZW1lczsKQEAgLTQzMCw2ICs0NDUsMzcgQEAgYm9vbCBTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
CiAgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVz
KCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAordm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJV
UkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sK
KyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNlcnZpY2VXb3JrZXJTY2hlbWVzTG9jaygpKTsKKyAgICBzZXJ2aWNlV29y
a2VyU2NoZW1lcygpLmFkZChzY2hlbWUpOworfQorCitib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5T
ZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
c2NoZW1lLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShBU0NJSUxpdGVyYWwoImh0dHAiKSkp
IHsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgoKSA9PSA0KQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGlmIChzY2hlbWUubGVuZ3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2VydmljZVdvcmtlclNjaGVtZXNMb2Nr
KCkpOworICAgIHJldHVybiBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7
Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3Rv
bVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KHNlcnZpY2VXb3JrZXJTY2hlbWVzTG9jaygpKTsKKyAgICByZXR1cm4gIXNjaGVtZS5pc051bGwo
KSAmJiBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIGJvb2wg
U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIHsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuaAppbmRleCA5YzBhNjBhN2YyZi4uNjJiZTNjNDU5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaApAQCAtOTksNiArOTksMTEgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRp
dGlvbmVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXJ0
aXRpb25DYWNoZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKKyAgICAvLyBT
Y2hlbWVzIGJlc2lkZXMgaHR0cChzKSB0aGF0IHNlcnZpY2Ugd29ya2VycyBhcmUgYWxsb3dlZCB0
byBoYW5kbGUKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShj
b25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgc3RhdGljIGJvb2wgaXNTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyQ3VzdG9tU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKwogICAgIHN0YXRpYyBi
b29sIGlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKaW5kZXggYzllMTkxMTRjNGIuLmIwZmU5Zjg2ZjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVk
ZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgi
CkBAIC0xMjksOCArMTMwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdp
c3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBkaXNhbGxvd3Mgc2NyaXB0cyBv
dXRzaWRlIG9mIEhUVFAoUyksIGJ1dCB3ZSdsbCBsaWtlbHkgc3VwcG9ydCBhcHAgY3VzdG9tIFVS
TCBzY2hlbWVzIGluIFdlYktpdC4KLSAgICBpZiAoIWpvYkRhdGEuc2NyaXB0VVJMLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICghU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VX
b3JrZXJzSGFuZGxlVVJMU2NoZW1lKGpvYkRhdGEuc2NyaXB0VVJMLnByb3RvY29sKCkudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoInNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBtdXN0
IGJlIGNhbGxlZCB3aXRoIGEgc2NyaXB0IFVSTCB3aG9zZSBwcm90b2NvbCBpcyBlaXRoZXIgSFRU
UCBvciBIVFRQUyIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0
cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgaWYgKCFzY29wZS5pc0VtcHR5KCkpCiAg
ICAgICAgIGpvYkRhdGEuc2NvcGVVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChzY29wZSk7CiAK
LSAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpvYkRhdGEuc2NvcGVVUkwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCFqb2JEYXRhLnNjb3BlVVJMLmlz
TnVsbCgpICYmICFTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hl
bWUoam9iRGF0YS5zY29wZVVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
IHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJTY29wZSBVUkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11
c3QgYmUgZWl0aGVyIEhUVFAgb3IgSFRUUFMiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IGViMmRiNWJhNjg4Li5iMTE3OWRjMGZhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0
YS5oIgogI2luY2x1ZGUgIlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIK
KyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKQEAgLTIzMSw3ICsyMzIsNyBAQCB2b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2IpCiB7CiAgICAgQVNTRVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdp
c3Rlcik7CiAKLSAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpv
Yi5zY3JpcHRVUkwpKQorICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoam9iLnNjcmlwdFVSTCkgJiYgIVNjaGVtZVJlZ2lzdHJ5Ojppc1NlcnZpY2VXb3JrZXJDb250
YWluZXJDdXN0b21TY2hlbWUoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRh
dGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlwdCBVUkwgaXMgbm90IHBvdGVu
dGlhbGx5IHRydXN0d29ydGh5IikgfSk7CiAKICAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidz
IHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkNTYwYzY0M2Q1Yy4uOWU3ZDk3OGNlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTctMTItMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhYmlsaXR5IHRvIEFQSSB0ZXN0IFNlcnZpY2UgV29ya2VycyB2aWEgYSBjdXN0b20gcHJv
dG9jb2wuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODA5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBzZXQgb2YgIlNlcnZpY2UgV29ya2VycyBjYW4gaGFuZGxlIHRoaXMiIHNjaGVt
ZXMgdG8gdGhlIHNjaGVtZSByZWdpc3RyeQorICAgICAgICBhbmQgbW9zdCBvZiB0aGVzZSBXZWJL
aXQgY2hhbmdlcyBhcmUgdG8gc3VwcG9ydCBnZXR0aW5nIHRob3NlIHZhbHVlcyBvdXQgdG8gYWxs
IHByb2Nlc3Nlcy4KKyAgICAgICAgCisgICAgICAgIEFkZGl0aW9uYWxseSwgV2Vic2l0ZURhdGFS
ZWNvcmRzIHVzZWQgdG8gYmUgZmlsZS9odHRwKHMpLW9ubHkuIFRoYXQgc2VlbXMgYml6YXJyZSBh
bmQgZGVmaW5pdGVseQorICAgICAgICBnb3QgaW4gdGhlIHdheSBvZiB0ZXN0aW5nLiBTbyBJIGFs
c28gYWRkZWQgYSB3YXkgdG8gYWxsb3cgYW55IHNjaGVtZSB0byByZXN1bHQgaW4gYSB2YWxpZCBy
ZWNvcmQuCisKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2hpbGRQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6CisgICAgICAgICog
U2hhcmVkL0NoaWxkUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgCisgICAgICAgICogU2hh
cmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgIAorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmluaXRpYWxp
emVXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZWdpc3Rl
clVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgrW1dL
V2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
Lmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdl
YnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlh
bGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVn
aXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6YWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIAorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKToK
KyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE3LTEyLTE1
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCB1cGRh
dGluZyBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbidzIHVwZGF0ZVZpYUNhY2hlIGZsYWcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IDJjMDIyOGM1ZmY4Li41YjBi
NWQ3ZDdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2FuZGJveEluaXRpYWxp
emF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4K
ICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKQEAgLTE5
MSw2ICsxOTIsMTEgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnNodXREb3duKCkKICAgICB0ZXJtaW5h
dGUoKTsKIH0KIAordm9pZCBDaGlsZFByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdv
cmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0Cit7CisgICAgV2Vi
Q29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5I
YW5kbGUodXJsU2NoZW1lKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgQ2hpbGRQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nl
c3MuaAppbmRleCBmMWEzMmVjMmE2Zi4uY2U5OGQ3MzVlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0No
aWxkUHJvY2Vzcy5oCkBAIC0xMDQsNiArMTA0LDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKIAorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShj
b25zdCBTdHJpbmcmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggNDlkZmIwNTBjNWMuLjA2MjY5MWZkMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9DaGlsZFByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMiw0ICsyMiw1IEBACiAKIG1lc3NhZ2VzIC0+
IENoaWxkUHJvY2VzcyB7CiAgICAgU2h1dERvd24oKQorICAgIFJlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGUoU3RyaW5nIHNjaGVtZSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKaW5kZXggZDIzZWZiMGU0OGIuLjZlNWVhYmUyOTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFN0b3JhZ2VQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgIGVuY29kZXIgPDwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5IDw8IGluZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNlbmRpZgogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPDwg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA8PCB1cmxT
Y2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGU7CiAjZW5kaWYKIH0KIApAQCAtNjgsNiArNjgs
OSBAQCBib29sIFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBTdG9yYWdlUHJvYwogICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJlc3VsdC5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlID0gV1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hlbWVzU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGY2MGI1
MDNjNzBkLi42NzY4MGRmMTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU3Rv
cmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAt
NTMsNiArNTMsNyBAQCBzdHJ1Y3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiB1cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGU7CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggNzAwYzE0ZTEyOTkuLjgxM2E0YmJhMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtODQs
NiArODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0
ZXJlZEFzQ09SU0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
QWx3YXlzUmV2YWxpZGF0ZWQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
Q2FjaGVQYXJ0aXRpb25lZDsKKyAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNTZXJ2aWNlV29ya2Vy
c0NhbkhhbmRsZTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIGVuY29kZXIg
PDwgc2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5nOwpAQCAtMjcxLDYgKzI3
Miw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Nh
Y2hlUGFydGl0aW9uZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0
ZXJzLmNhY2hlTW9kZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGJjYjQwYWQ5ODU0Li4wN2JlNDcyZTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTA3LDYgKzEw
Nyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBWZWN0b3I8
U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQ7CiAgICAgVmVjdG9yPFN0
cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Fsd2F5c1JldmFsaWRhdGVkOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkOworICAgIFZl
Y3RvcjxTdHJpbmc+IHVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGZvbnRXaGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApp
bmRleCAxNzJlMmFjMzdlNC4uN2YyYmMxYjQ2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC0xOTEsNiArMTkxLDkgQEAgdm9pZCBT
dG9yYWdlUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUoY29uc3QgU3RvcmFnZVBy
b2Nlc3NDcmVhdGlvblBhcmEKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAgICAgICAgIHBvc3RTdG9yYWdlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRh
c2soKnRoaXMsICZTdG9yYWdlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cywgcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSk7CiAgICAgfQorCisgICAgZm9yIChh
dXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRs
ZSkKKyAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShzY2hl
bWUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggYTM4Y2JhMmUwMDcuLmE5YmNiYWVkNWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bQpAQCAtMTc3LDYgKzE3NywxMSBAQCAtICh2b2lkKV9zZXRBbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGU6KE5TQXJyYXkgKiljZXJ0aWZpY2F0ZUNoYWluIGZvckhvc3Q6KAogICAgIF9wcm9j
ZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYktpdDo6V2Vi
Q2VydGlmaWNhdGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKChDRkFycmF5
UmVmKWNlcnRpZmljYXRlQ2hhaW4pKS5wdHIoKSwgaG9zdCk7CiB9CiAKKy0gKHZvaWQpX3JlZ2lz
dGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6KE5TU3RyaW5nICopc2NoZW1lCit7
CisgICAgX3Byb2Nlc3NQb29sLT5yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlKHNjaGVtZSk7Cit9CisKIC0gKHZvaWQpX3NldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RF
dmFsdWF0aW9uOihCT09MKXZhbHVlCiB7CiAgICAgX3Byb2Nlc3NQb29sLT5zZXRDYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbih2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDUy
MzNiYzZlMjljLi5iOTYzNDNhYWI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTk1LDYgKzk1LDcg
QEAKIAogLy8gVGVzdCBvbmx5LgogLSAodm9pZClfc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVG
b3JTZXJ2aWNlV29ya2VyOihCT09MKWFsbG93cyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGU6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgZ2V0dGVyPV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkLCBzZXR0ZXI9
X3NldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkOikgQk9PTCBfY29va2llU3RvcmFn
ZVBhcnRpdGlvbmluZ0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlv
cygxMC4zKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9pc1N0b3JhZ2VBY2Nlc3NB
UElFbmFibGVkLCBzZXR0ZXI9X3NldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkOikgQk9PTCBfc3Rv
cmFnZUFjY2Vzc0FQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCAzMWU5NjVhNjk3NS4uYzZhMGZi
MWI1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNTkwLDYgKzU5MCwxMSBAQCAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOih2b2lkICheKShXS1dlYnNpdGVE
YXRhU3RvcmUgKgogICAgIHN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxw
dHIpOwogfQogCisrICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMK
K3sKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vic2l0ZURhdGFSZWNvcmRz
Rm9yQWxsT3JpZ2lucygpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggNjY0ZjJkODZmMTcuLjJjYjNjYjdjNDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTgzLDcgKzgzLDcgQEAgdHlwZWRlZiBOU19P
UFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlTW9kaWZpZWRTaW5jZUhvdXJzOih1bnNpZ25lZClob3VycyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlv
cygxMS4wKSk7CiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxi
YWNrOihudWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikp
Y2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwotCisr
ICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKIE5TX0FT
U1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IGM4MmFkYjJhMDFhLi41MzUyNjExYzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkFQ
SUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIK
ICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJHYW1lcGFkRGF0
YS5oIgpAQCAtNTU3LDYgKzU1OCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVN0b3Jh
Z2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByCiAgICAgICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX2Nv
bmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKICAgICAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgICAgIH0KKworICAgICAgICBpZiAoIW1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1NlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlKTsKICNlbmRpZgogCiAgICAgICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpjcmVhdGUoKnRoaXMpOwpAQCAtNzc3LDYgKzc4MSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
V2Vic2l0ZURhCiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJs
ZWQgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQ09SU0VuYWJsZWQpOwogICAg
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Fsd2F5c1JldmFsaWRhdGVkID0gY29w
eVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Fsd2F5c1JldmFsaWRhdGVkKTsKICAgICBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkID0gY29weVRv
VmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhY2hlUGFydGl0aW9uZWQpOworICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKTsKIAogICAgIHBhcmFtZXRlcnMuc2hvdWxk
QWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCA9IG1fYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29k
ZVBhdGg7CiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nID0gbV9zaG91bGRV
c2VGb250U21vb3RoaW5nOwpAQCAtMTI5MCw2ICsxMjk1LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0cmluZyYgdXJs
U2NoZW1lCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdp
c3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZCh1cmxTY2hlbWUpKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShj
b25zdCBTdHJpbmcmIHVybFNjaGVtZSkKK3sKKyAgICBtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0Nh
bkhhbmRsZS5hZGQodXJsU2NoZW1lKTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OkNoaWxkUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSh1
cmxTY2hlbWUpKTsKKyAgICBpZiAobV9zdG9yYWdlUHJvY2VzcykKKyAgICAgICAgbV9zdG9yYWdl
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6Q2hpbGRQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZVNl
cnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHVybFNjaGVtZSksIDApOworfQorCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKICAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwN2VmMTEwNDg5NC4uZWU2MzM1OWI0YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjE4LDYgKzIxOCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRp
b25lZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdv
cmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2
ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVk
TGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOyB9CkBAIC01Mzgs
NiArNTM5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdp
c3RlckFzQ09SU0VuYWJsZWQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0
ZXJBc0Fsd2F5c1JldmFsaWRhdGVkOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNT
ZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTsKIAogICAgIGJvb2wgbV9hbHdheXNVc2VzQ29tcGxleFRl
eHRDb2RlUGF0aCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZFVzZUZvbnRTbW9vdGhpbmcg
eyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGZiYmM0YjRmZTBlLi4yMDlkYWRjMjllOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKQEAgLTU1LDYgKzU1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitzdGF0aWMgYm9vbCBhbGxvd3NXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zOwor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnMoKQoreworICAgIGFsbG93c1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgPSB0cnVl
OworfQorCiBzdGF0aWMgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vic2l0ZURhdGFTdG9yZSo+
JiBub25EZWZhdWx0RGF0YVN0b3JlcygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMjM4LDggKzI0NCwxMiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNo
RGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogCiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogd2Vic2l0ZURhdGEuZW50cmllcykgewogICAg
ICAgICAgICAgICAgIGF1dG8gZGlzcGxheU5hbWUgPSBXZWJzaXRlRGF0YVJlY29yZDo6ZGlzcGxh
eU5hbWVGb3JPcmlnaW4oZW50cnkub3JpZ2luKTsKLSAgICAgICAgICAgICAgICBpZiAoIWRpc3Bs
YXlOYW1lKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWRpc3BsYXlOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb3dzV2Vic2l0
ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gbWFrZVN0cmluZyhlbnRy
eS5vcmlnaW4ucHJvdG9jb2wsICIgIiwgZW50cnkub3JpZ2luLmhvc3QpOworICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIGF1dG8mIHJlY29yZCA9IG1fd2Vic2l0ZURhdGFSZWNv
cmRzLmFkZChkaXNwbGF5TmFtZSwgV2Vic2l0ZURhdGFSZWNvcmQgeyB9KS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgICAgICAgICAgaWYgKCFyZWNvcmQuZGlzcGxheU5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
aW5kZXggMWRjYTMxZDg3YTYuLmZmNjZkNjhlZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xNTUsNiAr
MTU1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoQWxsb3dz
Q2VsbHVsYXJBY2Nlc3MgYWxsb3dzKSB7IG1fYWxsb3dzQ2VsbHVsYXJBY2Nlc3MgPSBhbGxvd3M7
IH0KICAgICBBbGxvd3NDZWxsdWxhckFjY2VzcyBhbGxvd3NDZWxsdWxhckFjY2VzcygpIHsgcmV0
dXJuIG1fYWxsb3dzQ2VsbHVsYXJBY2Nlc3M7IH0KIAorICAgIHN0YXRpYyB2b2lkIGFsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOwogICAgIGV4cGxpY2l0IFdlYnNpdGVE
YXRhU3RvcmUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5jcHAKaW5kZXggNDZiNTUyM2YyNGIuLmFmZjhjMmJiMTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFJl
c291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0V4Y2VwdGlvbkNvZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iLmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzEsNyArNzIs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSGFuZGxlRmV0Y2goY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6
aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYm
IGNhbGxiYWNrKQogewotICAgIGlmICghbG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkgfHwgIXNob3VsZEhhbmRsZUZldGNoKGxvYWRlci5vcHRpb25zKCkpKSB7
CisgICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hl
bWUobG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSkgfHwgIXNob3VsZEhhbmRsZUZldGNoKGxvYWRlci5vcHRpb25zKCkpKSB7CiAgICAgICAg
IGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGE2MDlmYjk4ZGY2Li5iMWEyMzIyYWEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzY3LDYgKzM2Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkKQogICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzQ2Fj
aGVQYXJ0aXRpb25lZChzY2hlbWUpOwogCisgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0
ZXJzLnVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSkKKyAgICAgICAgcmVnaXN0ZXJV
UkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShzY2hlbWUpOworCiAgICAgc2V0RGVmYXVs
dFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJ
bnRlcnZhbCk7CiAKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NGRjYjMwNmNhZS4uZTM4NjU4OWRkNDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0xMi0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gQVBJIHRlc3QgU2VydmljZSBXb3JrZXJzIHZpYSBh
IGN1c3RvbSBwcm90b2NvbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZHMgYSB2ZXJ5IGJhc2ljIFNXIHRlc3Q6CisgICAgICAgIC0gVmVyaWZ5IFdl
YnNpdGVEYXRhU3RvcmUgY2FuIHdpcGUgYWxsIFNXIHJlZ2lzdHJhdGlvbiBkYXRhLgorICAgICAg
ICAtIEZpcmUgdXAgYSB3ZWIgcGFnZSB3aXRoIGEgc2VydmljZSB3b3JrZXIKKyAgICAgICAgLSBW
ZXJpZnkgU1cgcmVnaXN0cmF0aW9uIGRhdGEgZm9yIHRoYXQgcGFnZSBleGlzdHMgaW4gdGhlIFdl
YnNpdGVEYXRhU3RvcmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbTogQWRkZWQuCisKIDIwMTctMTItMTUg
IERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCBhZGRpbmcgbXlzZWxmIHRvIGNvbnRyaWJ1dG9ycy5qc29uCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM4MTg2M2MxM2FhLi4zMTBjMDUzMjU5OCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE5Niw2ICsxOTYsNyBAQAogCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIzRTEgLyog
c2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTc4MDM3MTkxOUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUzLmh0bWwgKi87IH07
CiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTZBODkyMUQyRjFC
RUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAqLzsgfTsKIAkJNTFFNkE4OTYxRDJG
MUNBNzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNkE4OTUxRDJGMUM3NzAwQzAw
NEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi87IH07CisJCTUxRUIxMjk0MUZERjA1MjUw
MEE1QTFCRCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVCMTI5MzFGREYwNTA1MDBBNUExQkQgLyogU2Vydmlj
ZVdvcmtlckJhc2ljLm1tICovOyB9OwogCQk1MUZDRjdBMTE1MzRCMkEwMDAxMDQ0OTEgLyogU2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkNGNzk3MTUzNEFDNkQwMDEwNDQ5MSAvKiBT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwICovOyB9OwogCQk1MjBCQ0Y0
QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2ZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIwQkNGNEExNDFFQjA5RTAwOTM3RUE4
IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTI0QkJDOUUxOURGNzJDMDAwMkYx
QUYxIC8qIGZpbGUtd2l0aC12aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEJCQzlCMTlERjM3MTQwMDJGMUFGMSAvKiBmaWxl
LXdpdGgtdmlkZW8uaHRtbCAqLzsgfTsKQEAgLTEzMzcsNiArMTMzOCw3IEBACiAJCTUxRTc4MDM2
MTkxOUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBzaW1wbGUyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTc4MDM3
MTkxOUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBzaW1wbGUzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTkzMDE2
MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRTY2FsZUZhY3Rvck5vdFplcm8uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3Ra
ZXJvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFQjEyOTMxRkRGMDUwNTAw
QTVBMUJEIC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJCYXNpYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFGQkJCNEMxNTEzRDRFOTAwODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVS
TC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDYW5Q
YXN0ZVVSTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQ0Y3OTcxNTM0QUM2
RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUZDRjc5
ODE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA5Niw2ICsyMDk4
LDcgQEAKIAkJCQlBMTgwQzBGOTFFRTY3REYwMDA0NjhGNDcgLyogUnVuT3BlblBhbmVsLm1tICov
LAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
SW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAogCQkJCTJEOUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAv
KiBTaHJpbmtUb0ZpdC5tbSAqLywKKwkJCQk1MUVCMTI5MzFGREYwNTA1MDBBNUExQkQgLyogU2Vy
dmljZVdvcmtlckJhc2ljLm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBT
bmFwc2hvdFN0b3JlLm1tICovLAogCQkJCTUxNUJFMTcwMUQ0MjhCRDEwMEREN0M2OCAvKiBTdG9y
ZUJsb2JUaGVuRGVsZXRlLm1tICovLAogCQkJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBV
SURlbGVnYXRlLm1tICovLApAQCAtMzQxMSw2ICszNDE0LDcgQEAKIAkJCQk1QzBCRjg5MzFERDU5
OUJEMDBCMDAzMjggLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTVDNjlCREQ1MUY4MkE3RUYwMDBGNEY0QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdh
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUFEMUE0MTFBMzQwMDQ0N0M0QyAvKiBK
YXZhU2NyaXB0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUVCMTI5NDFGREYwNTI1MDBB
NUExQkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QTUxQTQxMUEwODAwNDQ3QzRDIC8qIEphdmFTY3JpcHRUZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFQzQxQTQxMUE3RTAwNDQ3QzRDIC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZy
YW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDYxQTQxMUFFNjAwNDQ3QzRDIC8qIExh
eW91dE1pbGVzdG9uZXNXaXRoQWxsQ29udGVudEluRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43MjcyNDEwMjA5NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0wLDAgKzEsMTg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2No
ZW1lVGFza1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50
YWxGZWF0dXJlLmg+CisjaW1wb3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFw
Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0cnVjdCBSZXNvdXJjZUluZm8geworICAg
IFJldGFpblB0cjxOU1N0cmluZz4gbWltZVR5cGU7CisgICAgY29uc3QgY2hhciogZGF0YTsKK307
CisKK3N0YXRpYyBib29sIGRvbmU7CisKK3N0YXRpYyBEZXF1ZTxTdHJpbmc+IGV4cGVjdGVkTWVz
c2FnZXM7CisKK0BpbnRlcmZhY2UgU1dNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU1dNZXNzYWdlSGFuZGxl
cgorLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVy
ICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1Njcmlw
dE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAgRVhQRUNUX1RSVUUoW1ttZXNzYWdlIGJvZHldIGlz
RXF1YWxUb1N0cmluZzpAIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2
ZWQ6IEhlbGxvIGZyb20gdGhlIHdlYiBwYWdlIl0pOworICAgIGRvbmUgPSB0cnVlOworfQorQGVu
ZAorCitAaW50ZXJmYWNlIFNXU2NoZW1lcyA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+
IHsKK0BwdWJsaWMKKyAgICBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VJbmZvPiByZXNvdXJjZXM7
Cit9CisKKy0oc2l6ZV90KWhhbmRsZWRSZXF1ZXN0czsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFNXU2NoZW1lcyB7CisgICAgc2l6ZV90IF9oYW5kbGVkUmVxdWVzdHM7Cit9CisKKy0oc2l6ZV90
KWhhbmRsZWRSZXF1ZXN0cworeworICAgIHJldHVybiBfaGFuZGxlZFJlcXVlc3RzOworfQorCist
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihp
ZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgYXV0byBlbnRyeSA9IHJlc291cmNlcy5m
aW5kKFt0YXNrLnJlcXVlc3QuVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgaWYgKGVudHJ5ID09
IHJlc291cmNlcy5lbmQoKSkgeworICAgICAgICBOU0xvZyhAIkRpZCBub3QgZmluZCByZXNvdXJj
ZSBlbnRyeSBmb3IgVVJMICVAIiwgdGFzay5yZXF1ZXN0LlVSTCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICArK19oYW5kbGVkUmVxdWVzdHM7CisgICAgUmV0YWluUHRyPE5TVVJMUmVz
cG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6ZW50cnktPnZhbHVlLm1pbWVUeXBlLmdldCgp
IGV4cGVjdGVkQ29udGVudExlbmd0aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKworICAgIFt0YXNrIGRpZFJl
Y2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZW50cnktPnZhbHVl
LmRhdGEgbGVuZ3RoOnN0cmxlbihlbnRyeS0+dmFsdWUuZGF0YSkgZnJlZVdoZW5Eb25lOk5PXV07
CisgICAgW3Rhc2sgZGlkRmluaXNoXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7
Cit9CisKK0BlbmQKKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJD
RSgKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKK30KKworbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgbG9nKCJNZXNzYWdlIGZyb20gd29ya2VyOiAiICsgZXZlbnQuZGF0YSk7Cit9KTsKKwordHJ5
IHsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CisgICAgcmVnLmluc3RhbGxpbmcucG9zdE1lc3NhZ2UoIkhlbGxvIGZyb20g
dGhlIHdlYiBwYWdlIik7Cit9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgIGxvZygiUmVn
aXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsgZXJyb3IpOworfSk7Cit9IGNhdGNoKGUpIHsKKyAg
ICBsb2coIkV4Y2VwdGlvbjogIiArIGUpOworfQorCis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsK
Kworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorCitzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKKyAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsK
K30pOworCispU1dSRVNPVVJDRSI7CisKK1RFU1QoU2VydmljZVdvcmtlcnMsIEJhc2ljKQorewor
ICAgIEFTU0VSVChtYWluQnl0ZXMpOworICAgIEFTU0VSVChzY3JpcHRCeXRlcyk7CisKKyAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAgICBbW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0
ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBk
b25lID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisKKyAgICBSZXRhaW5QdHI8U1dNZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3Nh
Z2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgUmV0YWluUHRyPFNXU2NoZW1lcz4g
aGFuZGxlciA9IGFkb3B0TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKKyAgICBoYW5kbGVy
LT5yZXNvdXJjZXMuc2V0KCJzdzovL2hvc3QvbWFpbi5odG1sIiwgUmVzb3VyY2VJbmZvIHsgQCJ0
ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSk7CisgICAgaGFuZGxlci0+cmVzb3VyY2VzLnNldCgic3c6
Ly9ob3N0L3N3LmpzIiwgUmVzb3VyY2VJbmZvIHsgQCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwg
c2NyaXB0Qnl0ZXMgfSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpo
YW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlNXIl07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdp
c3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAic3ciXTsKKworICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJzdzovL2hvc3QvbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KyAgICBkb25lID0gZmFsc2U7CisKKyAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKKworICAgIFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVz
OltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3Jk
ICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vic2l0
ZURhdGFSZWNvcmRzIGNvdW50XSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJzaXRlRGF0YVJl
Y29yZHNbMF0uZGlzcGxheU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAic3cgaG9zdCJdKTsKKworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329659</attachid>
            <date>2017-12-18 12:22:40 -0800</date>
            <delta_ts>2017-12-18 17:17:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43204</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZGVjYjg1YWY5ZC4uMDg2ZTc2Nzk2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNy0xMi0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gQVBJIHRlc3QgU2VydmljZSBXb3JrZXJzIHZpYSBh
IGN1c3RvbSBwcm90b2NvbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3QgU2VydmljZVdvcmtlcnMuQmFzaWMKKworICAg
ICAgICBUaGlzIGFkZHMgYSBzZXQgb2YgIlNlcnZpY2UgV29ya2VycyBjYW4gaGFuZGxlIHRoaXMi
IHNjaGVtZXMgdG8gdGhlIHNjaGVtZSByZWdpc3RyeQorICAgICAgICBhbmQgdXNlcyBpdCBmb3Ig
U1cgZGVjaXNpb25zIGluc3RlYWQgb2YgYSBoYW5kZnVsIG9mIHByZXZpb3VzIHRlY2huaXF1ZXMu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKE5lZWRzUnVudGltZUNoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlUnVudGltZUVuYWJsZUNv
bmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Omhhc1NlcnZpY2VXb3JrZXJT
Y2hlbWUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisKKyAgICAg
ICAgKiBwYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOgorCisgICAgICAgICogcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VydmljZVdvcmtlclNj
aGVtZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJTY2hlbWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VX
b3JrZXJzQ2FuSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpjYW5T
ZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVS
ZWdpc3RyeTo6aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2NoZW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKworICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisKIDIwMTctMTItMTggIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUGxheWluZyBtZWRpYSBlbGVtZW50cyB3
aGljaCBjYWxsICJwYXVzZSgpOyBwbGF5KCkiIHdpbGwgaGF2ZSB0aGUgcGxheSBwcm9taXNlIHJl
amVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCBhODI4OTU2NzBjYi4uMGNmZjdhODI3OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNjk2
LDcgKzE2OTYsOCBAQCBzdWIgTmVlZHNSdW50aW1lQ2hlY2sKICAgICByZXR1cm4gJGNvbnRleHQt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9CiAgICAgICAgIHx8ICRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9CiAgICAgICAgIHx8ICRj
b250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfQotICAgICAgICB8
fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2VjdXJlQ29udGV4dH07CisgICAgICAg
IHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZWN1cmVDb250ZXh0fQorICAgICAg
ICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29udGV4dEhhc1NlcnZpY2VXb3Jr
ZXJTY2hlbWV9OwogfQogCiAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLW9w
ZXJhdGlvbnMKQEAgLTM2NDksNyArMzY1MCwxNyBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmcKICAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1NlY3VyZUNvbnRleHR9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiKTsKIAotICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNTZWN1cmVDb250ZXh0KCkiKTsKKyAgICAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb250ZXh0SGFzU2VydmljZVdvcmtlclNjaGVtZX0pIHsKKyAgICAgICAgICAg
IHB1c2goQGNvbmp1bmN0cywgIihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgfHwganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hlbWUoKSkiKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRl
eHQoKSIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDb250ZXh0SGFzU2VydmljZVdvcmtlclNjaGVtZX0pIHsKKyAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiKTsK
KworICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VX
b3JrZXJTY2hlbWUoKSIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgppbmRleCA3Y2U0OGU2MWYwZS4uYzMz
MmIxMTFlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCkBAIC04NSw2ICs4NSw5IEBACiAgICAgICAgICJDb25zdHJ1Y3Rvck1h
eVRocm93RXhjZXB0aW9uIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50
ZXJmYWNlIl0KICAgICAgICAgfSwKKyAgICAgICAgIkNvbnRleHRIYXNTZXJ2aWNlV29ya2VyU2No
ZW1lIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KKyAg
ICAgICAgfSwKICAgICAgICAgIkN1c3RvbSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDAyM2U0NGI5NTdkLi5h
OGM5MGJlZTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oIgpAQCAtNTM4LDYgKzUzOSwxMiBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKCkKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAorYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpoYXNTZXJ2aWNlV29ya2VyU2NoZW1l
KCkKK3sKKyAgICBBU1NFUlQoc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIFNjaGVtZVJl
Z2lzdHJ5Ojppc1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0b21TY2hlbWUoc2VjdXJpdHlPcmln
aW4oKS0+cHJvdG9jb2woKSk7Cit9CisKIFNlcnZpY2VXb3JrZXIqIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2FjdGl2
ZVNlcnZpY2VXb3JrZXIuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCAxYzE1NzcyNTdiNS4uYWY4NGNhMDNiNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjM4LDYgKzIzOCw3IEBAIHB1
YmxpYzoKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCk7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyU2NoZW1lKCk7CiAgICAgU2Vy
dmljZVdvcmtlciogYWN0aXZlU2VydmljZVdvcmtlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0QWN0
aXZlU2VydmljZVdvcmtlcihSZWZQdHI8U2VydmljZVdvcmtlcj4mJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsCmluZGV4IDRhY2JmMjY4NGU5
Li4wYzMxMTc4NzVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclNlcnZp
Y2VXb3JrZXIuaWRsCkBAIC0yOCw1ICsyOCw1IEBACiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9X
T1JLRVIsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyCiBdIGludGVyZmFjZSBO
YXZpZ2F0b3JTZXJ2aWNlV29ya2VyIHsKLSAgICBbU2VjdXJlQ29udGV4dCwgU2FtZU9iamVjdF0g
cmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VXb3JrZXJDb250YWluZXIgc2VydmljZVdvcmtlcjsK
KyAgICBbU2VjdXJlQ29udGV4dCwgQ29udGV4dEhhc1NlcnZpY2VXb3JrZXJTY2hlbWUsIFNhbWVP
YmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIHNlcnZpY2VX
b3JrZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCmlu
ZGV4IDlkNDg0MjFmYzUyLi5jYjkzYTc4OGY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIlNjaGVtZVJl
Z2lzdHJ5LmgiCiAKICNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0yNTIsNiArMjU0LDE5IEBAIHN0
YXRpYyBVUkxTY2hlbWVzTWFwJiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMoKQogICAgIHJldHVy
biBzY2hlbWVzOwogfQogCitzdGF0aWMgTG9jayYgc2VydmljZVdvcmtlclNjaGVtZXNMb2NrKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4gbG9jazsKKyAgICByZXR1cm4gbG9j
azsKK30KKworc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlcnZpY2VXb3JrZXJTY2hlbWVzKCkKK3sK
KyAgICBBU1NFUlQoc2VydmljZVdvcmtlclNjaGVtZXNMb2NrKCkuaXNIZWxkKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOworICAgIHJldHVybiBz
Y2hlbWVzOworfQorCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgYWx3YXlzUmV2YWxpZGF0ZWRTY2hl
bWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1l
czsKQEAgLTQzMCw2ICs0NDUsMzcgQEAgYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0
aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAgcmV0dXJuICFz
Y2hlbWUuaXNOdWxsKCkgJiYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkuY29udGFpbnMoc2No
ZW1lKTsKIH0KIAordm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNl
V29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1l
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNl
cnZpY2VXb3JrZXJTY2hlbWVzTG9jaygpKTsKKyAgICBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmFk
ZChzY2hlbWUpOworfQorCitib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hh
bmRsZVVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2NoZW1lLnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShBU0NJSUxpdGVyYWwoImh0dHAiKSkpIHsKKyAgICAgICAgaWYg
KHNjaGVtZS5sZW5ndGgoKSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGlmIChzY2hlbWUubGVuZ3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNj
aGVtZVs0XSwgJ3MnKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIoc2VydmljZVdvcmtlclNjaGVtZXNMb2NrKCkpOworICAgIHJldHVy
biBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKK2Jvb2wgU2No
ZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3RvbVNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNlcnZpY2VXb3JrZXJT
Y2hlbWVzTG9jaygpKTsKKyAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBzZXJ2aWNlV29y
a2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIGJvb2wgU2NoZW1lUmVnaXN0cnk6
OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICNpZiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaAppbmRleCA5
YzBhNjBhN2YyZi4uNjJiZTNjNDU5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NjaGVtZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1l
UmVnaXN0cnkuaApAQCAtOTksNiArOTksMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0
cmluZyYgc2NoZW1lKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXJ0aXRpb25DYWNoZUZvclVS
TFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKKyAgICAvLyBTY2hlbWVzIGJlc2lkZXMg
aHR0cChzKSB0aGF0IHNlcnZpY2Ugd29ya2VycyBhcmUgYWxsb3dlZCB0byBoYW5kbGUKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJz
Q2FuSGFuZGxlKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNj
aGVtZSk7CisgICAgc3RhdGljIGJvb2wgaXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKwogICAgIHN0YXRpYyBib29sIGlzVXNlckV4dGVu
c2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
aW5kZXggYzllMTkxMTRjNGIuLmIwZmU5Zjg2ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJh
c2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCkBAIC0xMjksOCArMTMw
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBkaXNhbGxvd3Mgc2NyaXB0cyBvdXRzaWRlIG9mIEhUVFAo
UyksIGJ1dCB3ZSdsbCBsaWtlbHkgc3VwcG9ydCBhcHAgY3VzdG9tIFVSTCBzY2hlbWVzIGluIFdl
YktpdC4KLSAgICBpZiAoIWpvYkRhdGEuc2NyaXB0VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkgeworICAgIGlmICghU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VXb3JrZXJzSGFuZGxlVVJM
U2NoZW1lKGpvYkRhdGEuc2NyaXB0VVJMLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBB
U0NJSUxpdGVyYWwoInNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBtdXN0IGJlIGNhbGxlZCB3aXRo
IGEgc2NyaXB0IFVSTCB3aG9zZSBwcm90b2NvbCBpcyBlaXRoZXIgSFRUUCBvciBIVFRQUyIpIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVT
Y3JpcHRVUkwsIGNvCiAgICAgaWYgKCFzY29wZS5pc0VtcHR5KCkpCiAgICAgICAgIGpvYkRhdGEu
c2NvcGVVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChzY29wZSk7CiAKLSAgICBpZiAoIWpvYkRh
dGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpvYkRhdGEuc2NvcGVVUkwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKSB7CisgICAgaWYgKCFqb2JEYXRhLnNjb3BlVVJMLmlzTnVsbCgpICYmICFTY2hl
bWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUoam9iRGF0YS5zY29w
ZVVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJTY29wZSBV
UkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3QgYmUgZWl0aGVyIEhU
VFAgb3IgSFRUUFMiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCmluZGV4IDllZGJlMGI4ZGE2Li44ZWJhN2EwZmU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgogI2luY2x1ZGUg
IlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKKyNpbmNsdWRlICJTY2hl
bWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEuaCIKQEAgLTIzOSw3ICsyNDAsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1
blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiB7CiAgICAgQVNT
RVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7CiAKLSAgICBp
ZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpKQor
ICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNjcmlwdFVS
TCkgJiYgIVNjaGVtZVJlZ2lzdHJ5Ojppc1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0b21TY2hl
bWUoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAg
ICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVy
cm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlwdCBVUkwgaXMgbm90IHBvdGVudGlhbGx5IHRydXN0d29y
dGh5IikgfSk7CiAKICAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMg
bm90IGpvYidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MTkzYzk3NGRj
Ny4uZDU0OWFkYzU5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTctMTItMTggIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhYmlsaXR5IHRv
IEFQSSB0ZXN0IFNlcnZpY2UgV29ya2VycyB2aWEgYSBjdXN0b20gcHJvdG9jb2wuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5MTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBzZXQg
b2YgIlNlcnZpY2UgV29ya2VycyBjYW4gaGFuZGxlIHRoaXMiIHNjaGVtZXMgdG8gdGhlIHNjaGVt
ZSByZWdpc3RyeQorICAgICAgICBhbmQgbW9zdCBvZiB0aGVzZSBXZWJLaXQgY2hhbmdlcyBhcmUg
dG8gc3VwcG9ydCBnZXR0aW5nIHRob3NlIHZhbHVlcyBvdXQgdG8gYWxsIHByb2Nlc3Nlcy4KKyAg
ICAgICAgCisgICAgICAgIEFkZGl0aW9uYWxseSwgV2Vic2l0ZURhdGFSZWNvcmRzIHVzZWQgdG8g
YmUgZmlsZS9odHRwKHMpLW9ubHkuIFRoYXQgc2VlbXMgYml6YXJyZSBhbmQgZGVmaW5pdGVseQor
ICAgICAgICBnb3QgaW4gdGhlIHdheSBvZiB0ZXN0aW5nLiBTbyBJIGFsc28gYWRkZWQgYSB3YXkg
dG8gYWxsb3cgYW55IHNjaGVtZSB0byByZXN1bHQgaW4gYSB2YWxpZCByZWNvcmQuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9j
ZXNzOjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6CisgICAgICAgICogU2hhcmVkL0NoaWxkUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgCisgICAgICAgICogU2hhcmVkL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgIAorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVXZWJzaXRlRGF0YVN0
b3JlKToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZp
Y2VXb3JrZXJzQ2FuSGFuZGxlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgIAor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVT
ZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWxsb3dX
ZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKToKKyAgICAgICAgCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE3LTEyLTE4ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU1BJIHRvIHF1ZXJ5IGZvciB0aGUg
Y3VycmVudCBhbmQgbGFzdCBhdXRvIGZpbGwgYnV0dG9uIHR5cGUgYW5kIHBhc3MgdXNlciBkYXRh
IG9iamVjdCB0byBfd2ViVmlldzpmb2N1c1Nob3VsZFN0YXJ0SW5wdXRTZXNzaW9uOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKaW5kZXggMmMwMjI4YzVmZjguLjViMGI1ZDdkN2U1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIApAQCAtMTkxLDYgKzE5
MiwxMSBAQCB2b2lkIENoaWxkUHJvY2Vzczo6c2h1dERvd24oKQogICAgIHRlcm1pbmF0ZSgpOwog
fQogCit2b2lkIENoaWxkUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nh
bkhhbmRsZShjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSh1
cmxTY2hlbWUpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBDaGlsZFByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCmlu
ZGV4IGYxYTMyZWMyYTZmLi5jZTk4ZDczNWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9j
ZXNzLmgKQEAgLTEwNCw2ICsxMDQsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCisg
ICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0
cmluZyYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0OWRm
YjA1MGM1Yy4uMDYyNjkxZmQyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0No
aWxkUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIyLDQgKzIyLDUgQEAKIAogbWVzc2FnZXMgLT4gQ2hpbGRQ
cm9jZXNzIHsKICAgICBTaHV0RG93bigpCisgICAgUmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29y
a2Vyc0NhbkhhbmRsZShTdHJpbmcgc2NoZW1lKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCBkMjNlZmIwZTQ4Yi4uNmU1ZWFiZTI5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPDwgaW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA8
PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAg
IGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA8PCBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlIDw8IHVybFNjaGVtZXNT
ZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTsKICNlbmRpZgogfQogCkBAIC02OCw2ICs2OCw5IEBAIGJv
b2wgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFN0b3JhZ2VQcm9jCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVybFNjaGVtZXNTZXJ2aWNlV29y
a2Vyc0NhbkhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3Jh
Z2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9y
YWdlL1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZjYwYjUwM2M3MGQu
LjY3NjgwZGYxMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01Myw2ICs1
Myw3IEBAIHN0cnVjdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIFZlY3RvcjxTdHJpbmc+IHVy
bFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCA3MDBjMTRlMTI5OS4uODEzYTRiYmEyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04NCw2ICs4NCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXND
T1JTRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNBbHdheXNS
ZXZhbGlkYXRlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBh
cnRpdGlvbmVkOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShjYWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8
IHNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGg7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmc7CkBAIC0yNzEsNiArMjcyLDggQEAg
Ym9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0
aXRpb25lZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMuY2Fj
aGVNb2RlbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggYmNiNDBhZDk4NTQuLjA3YmU0NzJlOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMDcsNiArMTA3LDcgQEAg
c3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxTdHJpbmc+
IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKICAgICBWZWN0b3I8U3RyaW5nPiB1
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQ7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQ7CisgICAgVmVjdG9yPFN0
cmluZz4gdXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOwogCiAgICAgVmVjdG9yPFN0
cmluZz4gZm9udFdoaXRlbGlzdDsKICAgICBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCmluZGV4IDE3
MmUyYWMzN2U0Li43ZjJiYzFiNDYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTE5MSw2ICsxOTEsOSBAQCB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjppbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShjb25zdCBTdG9yYWdlUHJvY2Vzc0Ny
ZWF0aW9uUGFyYQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHko
cGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKICAgICAgICAgcG9zdFN0b3JhZ2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3RzLCBwYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpKTsKICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHNj
aGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKQorICAg
ICAgICByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHNjaGVtZSk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQppbmRleCBhMzhjYmEyZTAwNy4uYTliY2JhZWQ1ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0x
NzcsNiArMTc3LDExIEBAIC0gKHZvaWQpX3NldEFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZTooTlNBcnJheSAqKWNlcnRpZmljYXRlQ2hhaW4gZm9ySG9zdDooCiAgICAgX3Byb2Nlc3NQb29s
LT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV2ViS2l0OjpXZWJDZXJ0aWZp
Y2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oKENGQXJyYXlSZWYpY2Vy
dGlmaWNhdGVDaGFpbikpLnB0cigpLCBob3N0KTsKIH0KIAorLSAodm9pZClfcmVnaXN0ZXJVUkxT
Y2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTooTlNTdHJpbmcgKilzY2hlbWUKK3sKKyAgICBf
cHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoc2No
ZW1lKTsKK30KKwogLSAodm9pZClfc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRp
b246KEJPT0wpdmFsdWUKIHsKICAgICBfcHJvY2Vzc1Bvb2wtPnNldENhbkhhbmRsZUhUVFBTU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggNTIzM2JjNmUy
OWMuLmI5NjM0M2FhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtOTUsNiArOTUsNyBAQAogCiAv
LyBUZXN0IG9ubHkuCiAtICh2b2lkKV9zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXI6KEJPT0wpYWxsb3dzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29y
a2Vyc0NhbkhhbmRsZTooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBn
ZXR0ZXI9X2lzQ29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQsIHNldHRlcj1fc2V0Q29v
a2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQ6KSBCT09MIF9jb29raWVTdG9yYWdlUGFydGl0
aW9uaW5nRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMi4zKSwgaW9zKDEwLjMp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzU3RvcmFnZUFjY2Vzc0FQSUVuYWJs
ZWQsIHNldHRlcj1fc2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQWNj
ZXNzQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDMxZTk2NWE2OTc1Li5jNmEwZmIxYjVmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC01OTAsNiArNTkwLDExIEBAIC0gKHZvaWQpX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6KHZvaWQgKF4pKFdLV2Vic2l0ZURhdGFTdG9y
ZSAqCiAgICAgc3RvcmUtPnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7CiB9
CiAKKysgKHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucworeworICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxP
cmlnaW5zKCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaAppbmRleCA2NjRmMmQ4NmYxNy4uMmNiM2NiN2M0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtODMsNyArODMsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMo
TlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2Rp
ZmllZFNpbmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRv
Q29uc2lzdGVudFN0YXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjAp
KTsKIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6KG51
bGxhYmxlIHZvaWQgKF4pKFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqKSljYWxsYmFj
ayBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7Ci0KKysgKHZvaWQp
X2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBlbmQKIAogTlNfQVNTVU1FX05P
Tk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5k
ZXggYzgyYWRiMmEwMWEuLjUzNTI2MTFjMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQVBJTGVnYWN5
Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkNo
aWxkUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkdhbWVwYWREYXRhLmgiCkBA
IC01NTcsNiArNTU4LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU3RvcmFnZVByb2Nl
c3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUqIHIKICAgICAgICAgICAgIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IG1fY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICAgICAg
fQorCisgICAgICAgIGlmICghbV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5I
YW5kbGUgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpOwog
I2VuZGlmCiAKICAgICAgICAgbV9zdG9yYWdlUHJvY2VzcyA9IFN0b3JhZ2VQcm9jZXNzUHJveHk6
OmNyZWF0ZSgqdGhpcyk7CkBAIC03NzcsNiArNzgxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRl
RGEKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCA9IGNv
cHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZCk7CiAgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQgPSBjb3B5VG9WZWN0
b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQpOwogICAgIHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQgPSBjb3B5VG9WZWN0b3Io
bV9zY2hlbWVzVG9SZWdpc3RlckFzQ2FjaGVQYXJ0aXRpb25lZCk7CisgICAgcGFyYW1ldGVycy51
cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVz
U2VydmljZVdvcmtlcnNDYW5IYW5kbGUpOwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRBbHdheXNV
c2VDb21wbGV4VGV4dENvZGVQYXRoID0gbV9hbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aDsK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBtX3Nob3VsZFVzZUZvbnRT
bW9vdGhpbmc7CkBAIC0xMjkwLDYgKzEyOTUsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUK
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJM
U2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKHVybFNjaGVtZSkpOwogfQogCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0
cmluZyYgdXJsU2NoZW1lKQoreworICAgIG1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxl
LmFkZCh1cmxTY2hlbWUpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6Q2hpbGRQ
cm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHVybFNjaGVt
ZSkpOworICAgIGlmIChtX3N0b3JhZ2VQcm9jZXNzKQorICAgICAgICBtX3N0b3JhZ2VQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpDaGlsZFByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdv
cmtlcnNDYW5IYW5kbGUodXJsU2NoZW1lKSwgMCk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogewogICAgIG1fY29uZmlndXJh
dGlvbi0+c2V0Q2FjaGVNb2RlbChjYWNoZU1vZGVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA3ZWYxMTA0ODk0Li5lZTYzMzU5YjRhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yMTgsNiArMjE4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nh
bkhhbmRsZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHByZWNvbm5lY3RUb1NlcnZlcihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3Rv
cmUoKSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0KQEAgLTUzOCw2ICs1Mzks
NyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXND
T1JTRW5hYmxlZDsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3
YXlzUmV2YWxpZGF0ZWQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJB
c0NhY2hlUGFydGl0aW9uZWQ7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1NlcnZpY2VX
b3JrZXJzQ2FuSGFuZGxlOwogCiAgICAgYm9vbCBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQ
YXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkVXNlRm9udFNtb290aGluZyB7IHRydWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggN2QzYWZlM2ViOTguLjVhMWM0ODc1OTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtNTUsNiArNTUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0
YXRpYyBib29sIGFsbG93c1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnM7Cit2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpCit7
CisgICAgYWxsb3dzV2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucyA9IHRydWU7Cit9CisK
IHN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWJzaXRlRGF0YVN0b3JlKj4mIG5vbkRl
ZmF1bHREYXRhU3RvcmVzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7
CkBAIC0yMzgsOCArMjQ0LDEyIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5k
QXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAKICAgICAgICAg
ICAgIGZvciAoYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0YS5lbnRyaWVzKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBkaXNwbGF5TmFtZSA9IFdlYnNpdGVEYXRhUmVjb3JkOjpkaXNwbGF5TmFtZUZv
ck9yaWdpbihlbnRyeS5vcmlnaW4pOwotICAgICAgICAgICAgICAgIGlmICghZGlzcGxheU5hbWUp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmICghZGlz
cGxheU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxvd3NXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBtYWtlU3RyaW5nKGVudHJ5Lm9yaWdp
bi5wcm90b2NvbCwgIiAiLCBlbnRyeS5vcmlnaW4uaG9zdCk7CisgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbV93ZWJzaXRlRGF0YVJlY29yZHMuYWRk
KGRpc3BsYXlOYW1lLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoIXJlY29yZC5kaXNwbGF5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA3
YTFkZGI5NjRmMi4uNzhlNjU5NWRkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE1Niw2ICsxNTYsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd3NDZWxsdWxhckFjY2VzcyhBbGxvd3NDZWxsdWxh
ckFjY2VzcyBhbGxvd3MpIHsgbV9hbGxvd3NDZWxsdWxhckFjY2VzcyA9IGFsbG93czsgfQogICAg
IEFsbG93c0NlbGx1bGFyQWNjZXNzIGFsbG93c0NlbGx1bGFyQWNjZXNzKCkgeyByZXR1cm4gbV9h
bGxvd3NDZWxsdWxhckFjY2VzczsgfQogCisgICAgc3RhdGljIHZvaWQgYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vic2l0
ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cAppbmRleCA0NmI1NTIzZjI0Yi4uYWZmOGMyYmIxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhj
ZXB0aW9uQ29kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJKb2IuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03MSw3ICs3Miw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRIYW5kbGVGZXRjaChjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMpCiAKIHZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpoYW5kbGVG
ZXRjaChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgaWYgKCFsb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSB8fCAhc2hvdWxkSGFuZGxlRmV0Y2gobG9hZGVyLm9wdGlvbnMoKSkpIHsKKyAgICBp
ZiAoIVNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShsb2Fk
ZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSB8
fCAhc2hvdWxkSGFuZGxlRmV0Y2gobG9hZGVyLm9wdGlvbnMoKSkpIHsKICAgICAgICAgY2FsbGJh
Y2soU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggMzgzMmRmZWU5ODQuLjc0YjUxZGY5NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0zNjcsNiArMzY3LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFs
aXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRB
c0NhY2hlUGFydGl0aW9uZWQpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRp
dGlvbmVkKHNjaGVtZSk7CiAKKyAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRlcnMudXJs
U2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKQorICAgICAgICByZWdpc3RlclVSTFNjaGVt
ZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHNjaGVtZSk7CisKICAgICBzZXREZWZhdWx0UmVxdWVz
dFRpbWVvdXRJbnRlcnZhbChwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFs
KTsKIAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM1ZjRmOWY4Y2M2Li41MzVlY2ViZTAxZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE3LTEyLTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgYWJpbGl0eSB0byBBUEkgdGVzdCBTZXJ2aWNlIFdvcmtlcnMgdmlhIGEgY3VzdG9t
IHByb3RvY29sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwOTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkcyBhIHZlcnkgYmFzaWMgU1cgdGVzdDoKKyAgICAgICAgLSBWZXJpZnkgV2Vic2l0ZURh
dGFTdG9yZSBjYW4gd2lwZSBhbGwgU1cgcmVnaXN0cmF0aW9uIGRhdGEuCisgICAgICAgIC0gRmly
ZSB1cCBhIHdlYiBwYWdlIHdpdGggYSBzZXJ2aWNlIHdvcmtlcgorICAgICAgICAtIFZlcmlmeSBT
VyByZWdpc3RyYXRpb24gZGF0YSBmb3IgdGhhdCBwYWdlIGV4aXN0cyBpbiB0aGUgV2Vic2l0ZURh
dGFTdG9yZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOiBBZGRlZC4KKwogMjAxNy0xMi0xOCAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBCaXRWZWN0b3I6Ok91dE9m
TGluZUJpdHMgaXMgYWx3YXlzIHJlcG9ydGVkIGFzIGEgbGVhawpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA1Nzg5YzI5ZmQwYS4uNzBmZmQ3MTE5YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xOTcsNiArMTk3LDcgQEAKIAkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBs
ZTMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUU3ODAzNzE5MTlBRkY4MDAxODI5QTIgLyogc2ltcGxlMy5odG1sICovOyB9OwogCQk1
MUU2QTg5NDFEMkYxQzBBMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU2QTg5MjFEMkYxQkVDMDBD
MDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gKi87IH07CiAJCTUxRTZBODk2MUQyRjFDQTcw
MEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTZBODk1MUQyRjFDNzcwMEMwMDRCNiAv
KiBMb2NhbFN0b3JhZ2VDbGVhci5odG1sICovOyB9OworCQk1MUVCMTI5NDFGREYwNTI1MDBBNUEx
QkQgLyogU2VydmljZVdvcmtlckJhc2ljLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VXb3Jr
ZXJCYXNpYy5tbSAqLzsgfTsKIAkJNTFGQ0Y3QTExNTM0QjJBMDAwMTA0NDkxIC8qIFNob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZDRjc5NzE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTIwQkNGNEMxNDFF
QjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMEJDRjRBMTQxRUIwOUUwMDkzN0VBOCAvKiBX
ZWJBcmNoaXZlX0J1bmRsZS5jcHAgKi87IH07CiAJCTUyNEJCQzlFMTlERjcyQzAwMDJGMUFGMSAv
KiBmaWxlLXdpdGgtdmlkZW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjRCQkM5QjE5REYzNzE0MDAyRjFBRjEgLyogZmlsZS13aXRo
LXZpZGVvLmh0bWwgKi87IH07CkBAIC0xMzQxLDYgKzEzNDIsNyBAQAogCQk1MUU3ODAzNjE5MTlB
RkY4MDAxODI5QTIgLyogc2ltcGxlMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
c2ltcGxlMi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU3ODAzNzE5MTlB
RkY4MDAxODI5QTIgLyogc2ltcGxlMy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
c2ltcGxlMy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU5MzAxNjE1NkIx
M0UxMDA0Qzk5REYgLyogV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGFnZUdldFNjYWxlRmFjdG9yTm90WmVyby5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRUIxMjkzMUZERjA1MDUwMEE1QTFC
RCAvKiBTZXJ2aWNlV29ya2VyQmFzaWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQmFzaWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxRkJCQjRDMTUxM0Q0RTkwMDgyMjczOCAvKiBXZWJWaWV3Q2FuUGFzdGVVUkwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3Q2FuUGFzdGVV
UkwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkNGNzk3MTUzNEFDNkQwMDEw
NDQ5MSAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW1fQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQ0Y3OTgxNTM0
QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDIsNiArMjEwNCw3IEBA
CiAJCQkJQTE4MEMwRjkxRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSAqLywKIAkJ
CQkzN0JDQTYxQjFCNTk2QkE5MDAyMDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3
V2luZG93QWN0aW9ucy5tbSAqLywKIAkJCQkyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hy
aW5rVG9GaXQubW0gKi8sCisJCQkJNTFFQjEyOTMxRkRGMDUwNTAwQTVBMUJEIC8qIFNlcnZpY2VX
b3JrZXJCYXNpYy5tbSAqLywKIAkJCQkyREZGN0I2QzFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNo
b3RTdG9yZS5tbSAqLywKIAkJCQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9i
VGhlbkRlbGV0ZS5tbSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxl
Z2F0ZS5tbSAqLywKQEAgLTM0MjIsNiArMzQyNSw3IEBACiAJCQkJNUMwQkY4OTMxREQ1OTlCRDAw
QjAwMzI4IC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1QzY5QkRENTFGODJBN0VGMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBRDFBNDExQTM0MDA0NDdDNEMgLyogSmF2YVNj
cmlwdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFQjEyOTQxRkRGMDUyNTAwQTVBMUJE
IC8qIFNlcnZpY2VXb3JrZXJCYXNpYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE1MUE0
MTFBMDgwMDQ0N0M0QyAvKiBKYXZhU2NyaXB0VGVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUM0MUE0MTFBN0UwMDQ0N0M0QyAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA2MUE0MTFBRTYwMDQ0N0M0QyAvKiBMYXlvdXRN
aWxlc3RvbmVzV2l0aEFsbENvbnRlbnRJbkZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzI3
MjQxMDIwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1VSTFNjaGVtZUhhbmRsZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRh
c2tQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVh
dHVyZS5oPgorI2ltcG9ydCA8d3RmL0RlcXVlLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdHJ1Y3QgUmVzb3VyY2VJbmZvIHsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlOworICAgIGNvbnN0IGNoYXIqIGRhdGE7Cit9OworCitz
dGF0aWMgYm9vbCBkb25lOworCitzdGF0aWMgRGVxdWU8U3RyaW5nPiBleHBlY3RlZE1lc3NhZ2Vz
OworCitAaW50ZXJmYWNlIFNXTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNz
YWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNXTWVzc2FnZUhhbmRsZXIKKy0g
KHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVz
ZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNz
YWdlICopbWVzc2FnZQoreworICAgIEVYUEVDVF9UUlVFKFtbbWVzc2FnZSBib2R5XSBpc0VxdWFs
VG9TdHJpbmc6QCJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBI
ZWxsbyBmcm9tIHRoZSB3ZWIgcGFnZSJdKTsKKyAgICBkb25lID0gdHJ1ZTsKK30KK0BlbmQKKwor
QGludGVyZmFjZSBTV1NjaGVtZXMgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CitA
cHVibGljCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlc291cmNlSW5mbz4gcmVzb3VyY2VzOworfQor
CistKHNpemVfdCloYW5kbGVkUmVxdWVzdHM7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTV1Nj
aGVtZXMgeworICAgIHNpemVfdCBfaGFuZGxlZFJlcXVlc3RzOworfQorCistKHNpemVfdCloYW5k
bGVkUmVxdWVzdHMKK3sKKyAgICByZXR1cm4gX2hhbmRsZWRSZXF1ZXN0czsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdL
VVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIGF1dG8gZW50cnkgPSByZXNvdXJjZXMuZmluZChb
dGFzay5yZXF1ZXN0LlVSTCBhYnNvbHV0ZVN0cmluZ10pOworICAgIGlmIChlbnRyeSA9PSByZXNv
dXJjZXMuZW5kKCkpIHsKKyAgICAgICAgTlNMb2coQCJEaWQgbm90IGZpbmQgcmVzb3VyY2UgZW50
cnkgZm9yIFVSTCAlQCIsIHRhc2sucmVxdWVzdC5VUkwpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgKytfaGFuZGxlZFJlcXVlc3RzOworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNl
PiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOmVudHJ5LT52YWx1ZS5taW1lVHlwZS5nZXQoKSBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgIFt0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisKKyAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWVudHJ5LT52YWx1ZS5kYXRh
IGxlbmd0aDpzdHJsZW4oZW50cnktPnZhbHVlLmRhdGEpIGZyZWVXaGVuRG9uZTpOT11dOworICAg
IFt0YXNrIGRpZEZpbmlzaF07Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworfQor
CitAZW5kCisKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8
c2NyaXB0PgorCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1zZyk7Cit9CisKK25hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAgIGxv
ZygiTWVzc2FnZSBmcm9tIHdvcmtlcjogIiArIGV2ZW50LmRhdGEpOworfSk7CisKK3RyeSB7CisK
K25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9u
KHJlZykgeworICAgIHJlZy5pbnN0YWxsaW5nLnBvc3RNZXNzYWdlKCJIZWxsbyBmcm9tIHRoZSB3
ZWIgcGFnZSIpOworfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICBsb2coIlJlZ2lzdHJh
dGlvbiBmYWlsZWQgd2l0aDogIiArIGVycm9yKTsKK30pOworfSBjYXRjaChlKSB7CisgICAgbG9n
KCJFeGNlcHRpb246ICIgKyBlKTsKK30KKworPC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKK3N0
YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKKworc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CisgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7Cit9KTsK
KworKVNXUkVTT1VSQ0UiOworCitURVNUKFNlcnZpY2VXb3JrZXJzLCBCYXNpYykKK3sKKyAgICBB
U1NFUlQobWFpbkJ5dGVzKTsKKyAgICBBU1NFUlQoc2NyaXB0Qnl0ZXMpOworCisgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKwor
ICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9
IGZhbHNlOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
CisgICAgUmV0YWluUHRyPFNXTWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHRO
UyhbW1NXTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFu
ZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKworICAgIFJldGFpblB0cjxTV1NjaGVtZXM+IGhhbmRs
ZXIgPSBhZG9wdE5TKFtbU1dTY2hlbWVzIGFsbG9jXSBpbml0XSk7CisgICAgaGFuZGxlci0+cmVz
b3VyY2VzLnNldCgic3c6Ly9ob3N0L21haW4uaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4dC9o
dG1sIiwgbWFpbkJ5dGVzIH0pOworICAgIGhhbmRsZXItPnJlc291cmNlcy5zZXQoInN3Oi8vaG9z
dC9zdy5qcyIsIFJlc291cmNlSW5mbyB7IEAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlw
dEJ5dGVzIH0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJTVyJdOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJV
UkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpAInN3Il07CisKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAic3c6Ly9ob3N0L21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
ZG9uZSA9IGZhbHNlOworCisgICAgd2ViVmlldyA9IG51bGxwdHI7CisKKyAgICBbW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNT
ZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAq
d2Vic2l0ZURhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgW3dlYnNpdGVEYXRh
UmVjb3JkcyBjb3VudF0pOworICAgICAgICBFWFBFQ1RfVFJVRShbd2Vic2l0ZURhdGFSZWNvcmRz
WzBdLmRpc3BsYXlOYW1lIGlzRXF1YWxUb1N0cmluZzpAInN3IGhvc3QiXSk7CisKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>