<?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>207067</bug_id>
          
          <creation_ts>2020-01-31 13:30:45 -0800</creation_ts>
          <short_desc>Add KVO SPI WKWebView._negotiatedLegacyTLS</short_desc>
          <delta_ts>2020-02-03 14:05:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1613556</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-31 13:30:45 -0800</bug_when>
    <thetext>Add KVO SPI WKWebView._negotiatedLegacyTLS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613557</commentid>
    <comment_count>1</comment_count>
      <attachid>389403</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-31 13:33:31 -0800</bug_when>
    <thetext>Created attachment 389403
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613562</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-31 13:37:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/59072968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613577</commentid>
    <comment_count>3</comment_count>
      <attachid>389412</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-31 14:01:16 -0800</bug_when>
    <thetext>Created attachment 389412
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613580</commentid>
    <comment_count>4</comment_count>
      <attachid>389413</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-31 14:12:49 -0800</bug_when>
    <thetext>Created attachment 389413
patch with SPI documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613585</commentid>
    <comment_count>5</comment_count>
      <attachid>389413</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-01-31 14:28:00 -0800</bug_when>
    <thetext>Comment on attachment 389413
patch with SPI documentation.

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:820
&gt; +        auto tlsVersion = (tls_protocol_version_t)metrics.negotiatedTLSProtocolVersion.unsignedShortValue;

reinterpret_cast?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:821
&gt; +        if (tlsVersion == tls_protocol_version_TLSv10 || tlsVersion == tls_protocol_version_TLSv11)

`tlsVersion &lt; tls_protocol_version_TLSv12`?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:828
&gt; +            if (tlsVersion == kTLSProtocol11 || tlsVersion == kTLSProtocol1)

Ditto?

&gt; Source/WebKit/UIProcess/PageLoadState.h:226
&gt; +        double estimatedProgress { 0.0 };

Our style is to just use 0 here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613587</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-31 14:32:04 -0800</bug_when>
    <thetext>(In reply to Andy Estes from comment #5)
&gt; Comment on attachment 389413 [details]
&gt; patch with SPI documentation.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389413&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:820
&gt; &gt; +        auto tlsVersion = (tls_protocol_version_t)metrics.negotiatedTLSProtocolVersion.unsignedShortValue;
&gt; 
&gt; reinterpret_cast?
Sounds good.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:821
&gt; &gt; +        if (tlsVersion == tls_protocol_version_TLSv10 || tlsVersion == tls_protocol_version_TLSv11)
&gt; 
&gt; `tlsVersion &lt; tls_protocol_version_TLSv12`?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:828
&gt; &gt; +            if (tlsVersion == kTLSProtocol11 || tlsVersion == kTLSProtocol1)
&gt; 
&gt; Ditto?
Strangely enough, we only want to do that with these two particular protocols here.

&gt; &gt; Source/WebKit/UIProcess/PageLoadState.h:226
&gt; &gt; +        double estimatedProgress { 0.0 };
&gt; 
&gt; Our style is to just use 0 here.
I think you&apos;re right, even though I think we should change our style in this wonderfully statically-typed language with typed literals.  I&apos;ll change to 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613588</commentid>
    <comment_count>7</comment_count>
      <attachid>389416</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-31 14:32:58 -0800</bug_when>
    <thetext>Created attachment 389416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613589</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-31 14:34:09 -0800</bug_when>
    <thetext>Also of note: we use c-style casts heavily in WebKit&apos;s ObjC++ code.  Maybe we should go through and change them all to c++-style casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613607</commentid>
    <comment_count>9</comment_count>
      <attachid>389416</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-31 15:16:52 -0800</bug_when>
    <thetext>Comment on attachment 389416
Patch

Clearing flags on attachment: 389416

Committed r255522: &lt;https://trac.webkit.org/changeset/255522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613608</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-31 15:16:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613621</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-01-31 15:36:13 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; Also of note: we use c-style casts heavily in WebKit&apos;s ObjC++ code.  Maybe
&gt; we should go through and change them all to c++-style casts.

I think our rule (or at least the rule I follow) is to use a C-style cast for Objective-C and CF types (e.g., (__bridge CFSStringRef)@&quot;hello&quot;) and C++-style casts otherwise. Or perhaps more generally, use C++ casts for the code that caused you to create the .mm file and C-style casts otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614147</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-03 14:05:16 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/255527/webkit was a build fix after this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389403</attachid>
            <date>2020-01-31 13:33:31 -0800</date>
            <delta_ts>2020-01-31 14:01:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23856</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAxLTMxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEtWTyBTUEkg
V0tXZWJWaWV3Ll9uZWdvdGlhdGVkTGVnYWN5VExTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0NsaWVudDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6bmVnb3RpYXRlZExlZ2Fj
eVRMUyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjp3
aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6ZGlkQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6Om5lZ290aWF0ZWRMZWdhY3lUTFMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6
Y29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6Omhhc05lZ290
aWF0ZWRMZWdhY3lUTFMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpu
ZWdvdGlhdGVkTGVnYWN5VExTKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6ZGlk
Q29tbWl0TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI6OndpbGxDaGFuZ2VOZWdvdGlhdGVk
TGVnYWN5VExTKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI6OmRp
ZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0
YXRlOjpEYXRhOjpEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIwMjAtMDEt
MzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbG9n
Z2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjU1NDgyKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDEyIEBACiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAordm9pZCBOZXR3b3JrRGF0YVRhc2s6Om5lZ290
aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKK30KKwogYm9vbCBOZXR3b3JrRGF0YVRhc2s6
OnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcygpIDogZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcw
LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2FzQmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lk
IG5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC05Miw2ICs5Myw3IEBACiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVBbmRDYW5jZWwoKSA9IDA7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUg
ewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDExIEBACiAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdp
bi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya0xvYWQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0
aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEKTsKK30KKwogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyNTU0ODIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKICAg
ICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWRCeVJlc3Ry
aWN0aW9ucygpIGZpbmFsOworICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IGZp
bmFsOwogCiAgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdGhy
b3R0bGVEZWxheUNvbXBsZXRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24g
MjU1NDgyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDI1IEBACiAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UiLCB0YXNrSWRlbnRpZmll
cik7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpk
YXRhVGFza10pIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAg
ICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyNpZiBIQVZFKFRMU19QUk9UT0NP
TF9WRVJTSU9OX1QpCisgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3Mg
Km1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tNZXRyaWNzLnRyYW5zYWN0aW9uTWV0
cmljcy5sYXN0T2JqZWN0OworICAgICAgICBhdXRvIHRsc1ZlcnNpb24gPSAodGxzX3Byb3RvY29s
X3ZlcnNpb25fdCltZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24udW5zaWduZWRT
aG9ydFZhbHVlOworICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lv
bl9UTFN2MTAgfHwgdGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2MTEpCisg
ICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgVU5VU0VEX1BB
UkFNKG1ldHJpY3MpOworI2Vsc2UgLy8gV2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290
aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90
b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBhdCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3Jl
IHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgIGlmIChbdGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uKV0pIHsKKyAgICAgICAgICAgIFNTTFBy
b3RvY29sIHRsc1ZlcnNpb24gPSBbdGFzayBfVExTTmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbl07
CisgICAgICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSBrVExTUHJvdG9jb2wxMSB8fCB0bHNWZXJz
aW9uID09IGtUTFNQcm90b2NvbDEpCisgICAgICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRM
UyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECisjZW5kaWYKKyAgICAgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMpCisgICAgICAg
ICAgICBuZXR3b3JrRGF0YVRhc2stPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMg
YmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgogICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IFtyZXNw
b25zZSBpc0tpbmRPZkNsYXNzOk5TSFRUUFVSTFJlc3BvbnNlLmNsYXNzXSA/IFsoTlNIVFRQVVJM
UmVzcG9uc2UgKilyZXNwb25zZSBzdGF0dXNDb2RlXSA6IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5jcHAJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0OSw0ICsxNDksOSBAQAogICAgIH0KIH0KIAordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6
Om5lZ290aWF0ZWRMZWdhY3lUTFMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0
Cit7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5l
Z290aWF0ZWRMZWdhY3lUTFMocGFnZUlEKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw2ICs3NSw4IEBACiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik7CiAKKyAgICB2b2lkIG5lZ290
aWF0ZWRMZWdhY3lUTFMoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgc3RydWN0IENoYWxsZW5nZSB7CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlEOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUwLDYgKzE1NTAsMTEg
QEAKICAgICByZXR1cm4gbmlsOwogfQogCistIChCT09MKV9uZWdvdGlhdGVkTGVnYWN5VExTCit7
CisgICAgcmV0dXJuIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuaGFzTmVnb3RpYXRlZExlZ2FjeVRM
UygpOworfQorCiAtIChCT09MKV9pc0VkaXRhYmxlCiB7CiAgICAgcmV0dXJuIF9wYWdlICYmIF9w
YWdlLT5pc0VkaXRhYmxlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE2NCw2ICsxNjQsOCBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0
dGVyPV9pc0VkaXRhYmxlLCBzZXR0ZXI9X3NldEVkaXRhYmxlOikgQk9PTCBfZWRpdGFibGUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKTsKIAorQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF9uZWdvdGlhdGVkTGVnYWN5VExTIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8vIEZJWE1FOiBSZW1v
dmUgdGhlc2Ugb25jZSBub2JvZHkgaXMgdXNpbmcgdGhlbS4KIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNEYXRhICpfc2Vzc2lvblN0YXRlRGF0YTsKIC0gKHZvaWQpX3Jlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShyZXZp
c2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw4IEBACiAgICAgdm9pZCBkaWRD
aGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2Vj
dXJlQ29udGVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNv
bnRlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExT
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExTKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyNTU0ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEzMjEsNiArMTMyMSwxNiBAQAogICAgIFttX3dlYlZpZXcgZGlkQ2hh
bmdlVmFsdWVGb3JLZXk6QCJoYXNPbmx5U2VjdXJlQ29udGVudCJdOwogfQogCit2b2lkIE5hdmln
YXRpb25TdGF0ZTo6d2lsbENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMoKQoreworICAgIFttX3dl
YlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX25lZ290aWF0ZWRMZWdhY3lUTFMiXTsKK30K
Kwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OmRpZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMoKQor
eworICAgIFttX3dlYlZpZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJfbmVnb3RpYXRlZExlZ2Fj
eVRMUyJdOworfQorCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6d2lsbENoYW5nZUVzdGltYXRlZFBy
b2dyZXNzKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImVzdGlt
YXRlZFByb2dyZXNzIl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1NTQ4MikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2OSw2ICszNjksMTUgQEAKICAgICB9KTsKIH0KIAordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZWdvdGlhdGVkTGVnYWN5VExTKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlEKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IG51bGxwdHI7CisgICAg
aWYgKHBhZ2VJRCkKKyAgICAgICAgcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdl
SUQpOworICAgIGlmIChwYWdlKQorICAgICAgICBwYWdlLT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7
Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50
NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYgd2Vic2l0ZURhdGEpCiB7CiAgICAg
TUVTU0FHRV9DSEVDSyhtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmlzVmFsaWRL
ZXkoY2FsbGJhY2tJRCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzYsNiArMjM2LDcgQEAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmLCBib29sLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBu
ZWdvdGlhdGVkTGVnYWN5VExTKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlk
RmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYp
OwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJ
RCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTU0ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAg
ICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgY2hhbGxlbmdlLCBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQorICAgIE5lZ290aWF0ZWRMZWdhY3lUTFMoV2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3Qg
Y2FsbGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAg
RGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShyZXZpc2lvbiAyNTU0ODIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTksNiArOTksNyBAQAogICAgIGJvb2wgaXNMb2FkaW5nQ2hhbmdlZCA9IGlzTG9hZGluZyht
X2NvbW1pdHRlZFN0YXRlKSAhPSBpc0xvYWRpbmcobV91bmNvbW1pdHRlZFN0YXRlKTsKICAgICBi
b29sIGFjdGl2ZVVSTENoYW5nZWQgPSBhY3RpdmVVUkwobV9jb21taXR0ZWRTdGF0ZSkgIT0gYWN0
aXZlVVJMKG1fdW5jb21taXR0ZWRTdGF0ZSk7CiAgICAgYm9vbCBoYXNPbmx5U2VjdXJlQ29udGVu
dENoYW5nZWQgPSBoYXNPbmx5U2VjdXJlQ29udGVudChtX2NvbW1pdHRlZFN0YXRlKSAhPSBoYXNP
bmx5U2VjdXJlQ29udGVudChtX3VuY29tbWl0dGVkU3RhdGUpOworICAgIGJvb2wgbmVnb3RpYXRl
ZExlZ2FjeVRMU0NoYW5nZWQgPSBtX2NvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMg
IT0gbV91bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFM7CiAgICAgYm9vbCBlc3Rp
bWF0ZWRQcm9ncmVzc0NoYW5nZWQgPSBlc3RpbWF0ZWRQcm9ncmVzcyhtX2NvbW1pdHRlZFN0YXRl
KSAhPSBlc3RpbWF0ZWRQcm9ncmVzcyhtX3VuY29tbWl0dGVkU3RhdGUpOwogICAgIGJvb2wgbmV0
d29ya1JlcXVlc3RzSW5Qcm9ncmVzc0NoYW5nZWQgPSBtX2NvbW1pdHRlZFN0YXRlLm5ldHdvcmtS
ZXF1ZXN0c0luUHJvZ3Jlc3MgIT0gbV91bmNvbW1pdHRlZFN0YXRlLm5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3M7CiAgICAgYm9vbCBjZXJ0aWZpY2F0ZUluZm9DaGFuZ2VkID0gbV9jb21taXR0ZWRT
dGF0ZS5jZXJ0aWZpY2F0ZUluZm8gIT0gbV91bmNvbW1pdHRlZFN0YXRlLmNlcnRpZmljYXRlSW5m
bzsKQEAgLTExNSw2ICsxMTYsOCBAQAogICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2Jz
ZXJ2ZXI6OndpbGxDaGFuZ2VBY3RpdmVVUkwpOwogICAgIGlmIChoYXNPbmx5U2VjdXJlQ29udGVu
dENoYW5nZWQpCiAgICAgICAgIGNhbGxPYnNlcnZlckNhbGxiYWNrKCZPYnNlcnZlcjo6d2lsbENo
YW5nZUhhc09ubHlTZWN1cmVDb250ZW50KTsKKyAgICBpZiAobmVnb3RpYXRlZExlZ2FjeVRMU0No
YW5nZWQpCisgICAgICAgIGNhbGxPYnNlcnZlckNhbGxiYWNrKCZPYnNlcnZlcjo6d2lsbENoYW5n
ZU5lZ290aWF0ZWRMZWdhY3lUTFMpOwogICAgIGlmIChlc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWQp
CiAgICAgICAgIGNhbGxPYnNlcnZlckNhbGxiYWNrKCZPYnNlcnZlcjo6d2lsbENoYW5nZUVzdGlt
YXRlZFByb2dyZXNzKTsKICAgICBpZiAobmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzc0NoYW5nZWQp
CkBAIC0xMzUsNiArMTM4LDggQEAKICAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2soJk9ic2Vy
dmVyOjpkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyk7CiAgICAgaWYgKGhhc09ubHlTZWN1cmVD
b250ZW50Q2hhbmdlZCkKICAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2soJk9ic2VydmVyOjpk
aWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lU
TFNDaGFuZ2VkKQorICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2JzZXJ2ZXI6OmRpZENo
YW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMpOwogICAgIGlmIChhY3RpdmVVUkxDaGFuZ2VkKQogICAg
ICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2JzZXJ2ZXI6OmRpZENoYW5nZUFjdGl2ZVVSTCk7
CiAgICAgaWYgKGlzTG9hZGluZ0NoYW5nZWQpCkBAIC0yMjEsNiArMjI2LDE3IEBACiAgICAgcmV0
dXJuIGhhc09ubHlTZWN1cmVDb250ZW50KG1fY29tbWl0dGVkU3RhdGUpOwogfQogCitib29sIFBh
Z2VMb2FkU3RhdGU6Omhhc05lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIHJldHVy
biBtX2NvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFM7Cit9CisKK3ZvaWQgUGFnZUxv
YWRTdGF0ZTo6bmVnb3RpYXRlZExlZ2FjeVRMUyhjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRv
a2VuKQoreworICAgIEFTU0VSVF9VTlVTRUQodG9rZW4sICZ0b2tlbi5tX3BhZ2VMb2FkU3RhdGUg
PT0gdGhpcyk7CisgICAgbV91bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0
cnVlOworfQorCiBkb3VibGUgUGFnZUxvYWRTdGF0ZTo6ZXN0aW1hdGVkUHJvZ3Jlc3MoY29uc3Qg
RGF0YSYgZGF0YSkKIHsKICAgICBpZiAoIWRhdGEucGVuZGluZ0FQSVJlcXVlc3QudXJsLmlzTnVs
bCgpKQpAQCAtMzEyLDYgKzMyOCw3IEBACiAKICAgICBtX3VuY29tbWl0dGVkU3RhdGUudXJsID0g
bV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAgIG1fdW5jb21taXR0ZWRTdGF0
ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOworICAgIG1fdW5jb21taXR0ZWRTdGF0ZS5uZWdv
dGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CiAKICAgICBtX3VuY29tbWl0dGVkU3RhdGUudGl0bGUg
PSBTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3Rh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2Fk
U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOSBAQAogICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSA9IDA7CiAKKyAgICAgICAg
dmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExTKCkgeyB9OworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUygpIHsgfTsKKwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSA9IDA7CiAKQEAg
LTE0MCw2ICsxNDMsOCBAQAogICAgIFN0cmluZyBhY3RpdmVVUkwoKSBjb25zdDsKIAogICAgIGJv
b2wgaGFzT25seVNlY3VyZUNvbnRlbnQoKSBjb25zdDsKKyAgICBib29sIGhhc05lZ290aWF0ZWRM
ZWdhY3lUTFMoKSBjb25zdDsKKyAgICB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMoY29uc3QgVHJh
bnNhY3Rpb246OlRva2VuJik7CiAKICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3MoKSBjb25z
dDsKICAgICBib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBt
X2NvbW1pdHRlZFN0YXRlLm5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3M7IH0KQEAgLTIwMCwxOSAr
MjA1LDEwIEBACiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAKICAgICBzdHJ1
Y3QgRGF0YSB7Ci0gICAgICAgIERhdGEoKQotICAgICAgICAgICAgOiBzdGF0ZShTdGF0ZTo6Rmlu
aXNoZWQpCi0gICAgICAgICAgICAsIGhhc0luc2VjdXJlQ29udGVudChmYWxzZSkKLSAgICAgICAg
ICAgICwgY2FuR29CYWNrKGZhbHNlKQotICAgICAgICAgICAgLCBjYW5Hb0ZvcndhcmQoZmFsc2Up
Ci0gICAgICAgICAgICAsIGVzdGltYXRlZFByb2dyZXNzKDApCi0gICAgICAgICAgICAsIG5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQorICAgICAg
ICBTdGF0ZSBzdGF0ZSB7IFN0YXRlOjpGaW5pc2hlZCB9OworICAgICAgICBib29sIGhhc0luc2Vj
dXJlQ29udGVudCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUyB7
IGZhbHNlIH07CiAKLSAgICAgICAgU3RhdGUgc3RhdGU7Ci0gICAgICAgIGJvb2wgaGFzSW5zZWN1
cmVDb250ZW50OwotCiAgICAgICAgIFBlbmRpbmdBUElSZXF1ZXN0IHBlbmRpbmdBUElSZXF1ZXN0
OwogCiAgICAgICAgIFN0cmluZyBwcm92aXNpb25hbFVSTDsKQEAgLTIyNCwxMSArMjIwLDExIEBA
CiAKICAgICAgICAgVVJMIHJlc291cmNlRGlyZWN0b3J5VVJMOwogCi0gICAgICAgIGJvb2wgY2Fu
R29CYWNrOwotICAgICAgICBib29sIGNhbkdvRm9yd2FyZDsKKyAgICAgICAgYm9vbCBjYW5Hb0Jh
Y2sgeyBmYWxzZSB9OworICAgICAgICBib29sIGNhbkdvRm9yd2FyZCB7IGZhbHNlIH07CiAKLSAg
ICAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNzOwotICAgICAgICBib29sIG5ldHdvcmtSZXF1
ZXN0c0luUHJvZ3Jlc3M7CisgICAgICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVzcyB7IDAuMCB9
OworICAgICAgICBib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MgeyBmYWxzZSB9OwogCiAg
ICAgICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKICAgICB9
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NzIxLDYgKzc3MjEsMTIgQEAKICAgICBtX25hdmlnYXRpb25DbGll
bnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bmVnb3RpYXRlZExl
Z2FjeVRMUygpCit7CisgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFu
c2FjdGlvbigpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTKHRyYW5z
YWN0aW9uKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWlu
dDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90
IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewogICAgIHJlcXVlc3RTdG9yYWdlU3BhY2UoZnJhbWVJRCwgb3JpZ2luSWRlbnRpZmllciwg
ZGF0YWJhc2VOYW1lLCBkaXNwbGF5TmFtZSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNh
Z2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBbcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KV0oYXV0byBxdW90YSkgbXV0YWJsZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMzUsNiArMTMzNSw3IEBA
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLnZhbHVlT3Io
V2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUyk7CisgICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCk7CiAKICAg
ICBTcGVsbERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcoKTsKIApJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NTIwKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAt
MDEtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBBZGQgS1ZPIFNQSSBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToKKyAgICAgICAgKC1bVExTT2JzZXJ2
ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAg
ICAgICAgKC1bVExTT2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWRd
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29uZmlnLmg6CisKIDIwMjAtMDEtMzEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtld3NdIERpc3BsYXkgZmxha3kgdGVzdCBuYW1lcyBpbiBidWls
ZCBzdW1tYXJ5IHdoZW4gUmVSdW5XZWJLaXRUZXN0cyBwYXNzZXMKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5t
bQkocmV2aXNpb24gMjU1NDgyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9UTFNEZXByZWNhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMzEgQEAK
ICNpbXBvcnQgPFdlYktpdC9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIAorI2lmIEhBVkUoVExT
X1BST1RPQ09MX1ZFUlNJT05fVCkKK0BpbnRlcmZhY2UgVExTT2JzZXJ2ZXIgOiBOU09iamVjdAor
LSAodm9pZCl3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZDsKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIFRMU09ic2VydmVyIHsKKyAgICBib29sIF9uZWdvdGlhdGVkTGVnYWN5VExT
Q2hhbmdlZDsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAq
KWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5n
ZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIEVYUEVDVF9XS19TVFJFUShrZXlQYXRo
LCAiX25lZ290aWF0ZWRMZWdhY3lUTFMiKTsKKyAgICBfbmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5n
ZWQgPSB0cnVlOworfQorCistICh2b2lkKXdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFu
Z2VkCit7CisgICAgX25lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkID0gZmFsc2U7CisgICAgd2hp
bGUgKCFfbmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKCk7Cit9CisKK0BlbmQKKyNlbmRpZgorCiBAaW50ZXJmYWNlIFRM
U05hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIC0g
KHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247CiAtICh2b2lkKXdhaXRGb3JEaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwpAQCAtMjAyLDYgKzIyNyw0MyBAQAogICAgIH0KIH0KIAor
I2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKK1RFU1QoVExTVmVyc2lvbiwgTmVnb3Rp
YXRlZExlZ2FjeVRMUykKK3sKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9j
b2w6OkhUVFBTLCBbXSAoU1NMICpzc2wpIHsKKyAgICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0
aE9LKHNzbCk7CisgICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOworICAgIH0s
IHRsczFfMSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
KyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tX
ZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAo
XmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNl
cnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVz
ZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQv
Iiwgc2VydmVyLnBvcnQoKV1dXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtUTFNPYnNlcnZlciBuZXddKTsKKyAgICBb
d2ViVmlldyBhZGRPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0
ZWRMZWdhY3lUTFMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0
Om5pbF07CisgICAgCisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5
VExTXSk7CisgICAgW29ic2VydmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2Vk
XTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworICAg
IFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQ
RUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRl
ZExlZ2FjeVRMU0NoYW5nZWRdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9uZWdvdGlhdGVk
TGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmlldyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQo
KSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdhY3lUTFMiXTsKK30KKyNlbmRpZgorCiAvLyBG
SVhNRTogQWRkIHNvbWUgdGVzdHMgZm9yIFdLV2ViVmlldy5oYXNPbmx5U2VjdXJlQ29udGVudAog
CiB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwzICsxMjIsNyBAQAog
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCBQTEFURk9STShJT1MpCiAjZGVmaW5lIEhBVkVfTkVUV09SS19GUkFNRVdPUksg
MQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIShQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApCisjZGVmaW5lIEhBVkVfVExT
X1BST1RPQ09MX1ZFUlNJT05fVCAxCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389412</attachid>
            <date>2020-01-31 14:01:16 -0800</date>
            <delta_ts>2020-01-31 14:12:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23864</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAxLTMxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEtWTyBTUEkg
V0tXZWJWaWV3Ll9uZWdvdGlhdGVkTGVnYWN5VExTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0NsaWVudDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6bmVnb3RpYXRlZExlZ2Fj
eVRMUyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjp3
aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6ZGlkQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6Om5lZ290aWF0ZWRMZWdhY3lUTFMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6
Y29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6Omhhc05lZ290
aWF0ZWRMZWdhY3lUTFMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpu
ZWdvdGlhdGVkTGVnYWN5VExTKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6ZGlk
Q29tbWl0TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI6OndpbGxDaGFuZ2VOZWdvdGlhdGVk
TGVnYWN5VExTKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI6OmRp
ZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0
YXRlOjpEYXRhOjpEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIwMjAtMDEt
MzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbG9n
Z2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjU1NDgyKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDEyIEBACiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAordm9pZCBOZXR3b3JrRGF0YVRhc2s6Om5lZ290
aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKK30KKwogYm9vbCBOZXR3b3JrRGF0YVRhc2s6
OnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcygpIDogZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcw
LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2FzQmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lk
IG5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC05Miw2ICs5Myw3IEBACiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVBbmRDYW5jZWwoKSA9IDA7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUg
ewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDExIEBACiAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdp
bi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya0xvYWQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0
aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEKTsKK30KKwogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyNTU0ODIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKICAg
ICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWRCeVJlc3Ry
aWN0aW9ucygpIGZpbmFsOworICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IGZp
bmFsOwogCiAgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdGhy
b3R0bGVEZWxheUNvbXBsZXRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24g
MjU1NDgyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDI1IEBACiAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UiLCB0YXNrSWRlbnRpZmll
cik7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpk
YXRhVGFza10pIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAg
ICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyNpZiBIQVZFKFRMU19QUk9UT0NP
TF9WRVJTSU9OX1QpCisgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3Mg
Km1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tNZXRyaWNzLnRyYW5zYWN0aW9uTWV0
cmljcy5sYXN0T2JqZWN0OworICAgICAgICBhdXRvIHRsc1ZlcnNpb24gPSAodGxzX3Byb3RvY29s
X3ZlcnNpb25fdCltZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24udW5zaWduZWRT
aG9ydFZhbHVlOworICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lv
bl9UTFN2MTAgfHwgdGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2MTEpCisg
ICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgVU5VU0VEX1BB
UkFNKG1ldHJpY3MpOworI2Vsc2UgLy8gV2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290
aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90
b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBhdCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3Jl
IHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgIGlmIChbZGF0YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbildKSB7CisgICAgICAgICAgICBT
U0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFUYXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xW
ZXJzaW9uXTsKKyAgICAgICAgICAgIGlmICh0bHNWZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8
IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkKKyAgICAgICAgICAgICAgICBuZWdvdGlhdGVk
TGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKyNlbmRpZgorICAgICAgICBpZiAobmVnb3RpYXRlZExlZ2FjeVRMUykK
KyAgICAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+bmVnb3RpYXRlZExlZ2FjeVRMUygpOwogICAg
ICAgICAKICAgICAgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25z
ZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCiAgICAgICAgIGludCBzdGF0dXNDb2Rl
ID0gW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6TlNIVFRQVVJMUmVzcG9uc2UuY2xhc3NdID8gWyhO
U0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN0YXR1c0NvZGVdIDogMDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ5LDQgKzE0OSw5IEBACiAgICAgfQogfQogCit2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6bmVnb3RpYXRlZExlZ2FjeVRMUyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKK3sKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6TmVnb3RpYXRlZExlZ2FjeVRMUyhwYWdlSUQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMjU1NDgyKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDggQEAKIAogICAgIHZvaWQgY29tcGxldGVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKTsKIAorICAgIHZv
aWQgbmVnb3RpYXRlZExlZ2FjeVRMUyhXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NTAsNiAr
MTU1MCwxMSBAQAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKEJPT0wpX25lZ290aWF0ZWRMZWdh
Y3lUTFMKK3sKKyAgICByZXR1cm4gX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5oYXNOZWdvdGlhdGVk
TGVnYWN5VExTKCk7Cit9CisKIC0gKEJPT0wpX2lzRWRpdGFibGUKIHsKICAgICByZXR1cm4gX3Bh
Z2UgJiYgX3BhZ2UtPmlzRWRpdGFibGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMjU1NDgy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBnZXR0ZXI9X2lzRWRpdGFibGUsIHNldHRlcj1fc2V0RWRpdGFibGU6KSBCT09MIF9lZGl0
YWJsZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpOwogCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX25lZ290aWF0ZWRMZWdhY3lUTFMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLy8gRklY
TUU6IFJlbW92ZSB0aGVzZSBvbmNlIG5vYm9keSBpcyB1c2luZyB0aGVtLgogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKl9zZXNzaW9uU3RhdGVEYXRhOwogLSAodm9pZClf
cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOihOU0RhdGEgKilzZXNzaW9uU3RhdGVEYXRhOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
LmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDggQEAKICAgICB2
b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENoYW5nZUhh
c09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbENoYW5nZU5lZ290aWF0ZWRM
ZWdhY3lUTFMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lU
TFMoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9u
IDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyMSw2ICsxMzIxLDE2IEBACiAgICAgW21fd2ViVmll
dyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAImhhc09ubHlTZWN1cmVDb250ZW50Il07CiB9CiAKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUygpCit7Cisg
ICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJfbmVnb3RpYXRlZExlZ2FjeVRM
UyJdOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6ZGlkQ2hhbmdlTmVnb3RpYXRlZExlZ2Fj
eVRMUygpCit7CisgICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAIl9uZWdvdGlh
dGVkTGVnYWN5VExTIl07Cit9CisKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjp3aWxsQ2hhbmdlRXN0
aW1hdGVkUHJvZ3Jlc3MoKQogewogICAgIFttX3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5
OkAiZXN0aW1hdGVkUHJvZ3Jlc3MiXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjU1
NDgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDYgKzM2OSwxNSBAQAogICAgIH0pOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5lZ290aWF0ZWRMZWdhY3lUTFMoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQpCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gbnVsbHB0
cjsKKyAgICBpZiAocGFnZUlEKQorICAgICAgICBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHBhZ2VJRCk7CisgICAgaWYgKHBhZ2UpCisgICAgICAgIHBhZ2UtPm5lZ290aWF0ZWRMZWdh
Y3lUTFMoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGZXRjaFdlYnNpdGVE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJiB3ZWJzaXRlRGF0YSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3Mu
aXNWYWxpZEtleShjYWxsYmFja0lEKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU1NDgy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsNyBAQAogICAgIC8vIE1lc3NhZ2UgaGFu
ZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIGJvb2wsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAg
ICB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMoV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAgICAg
dm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNp
dGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBj
YWxsYmFja0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50
ZWQgewogICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luLCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywg
dWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgTmVnb3RpYXRlZExlZ2FjeVRMUyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogCiAgICAgRGlkRmV0Y2hXZWJzaXRlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0
YSkKICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJKHJldmlzaW9uIDI1NTQ4
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw2ICs5OSw3IEBACiAgICAgYm9vbCBpc0xvYWRpbmdDaGFuZ2VkID0gaXNM
b2FkaW5nKG1fY29tbWl0dGVkU3RhdGUpICE9IGlzTG9hZGluZyhtX3VuY29tbWl0dGVkU3RhdGUp
OwogICAgIGJvb2wgYWN0aXZlVVJMQ2hhbmdlZCA9IGFjdGl2ZVVSTChtX2NvbW1pdHRlZFN0YXRl
KSAhPSBhY3RpdmVVUkwobV91bmNvbW1pdHRlZFN0YXRlKTsKICAgICBib29sIGhhc09ubHlTZWN1
cmVDb250ZW50Q2hhbmdlZCA9IGhhc09ubHlTZWN1cmVDb250ZW50KG1fY29tbWl0dGVkU3RhdGUp
ICE9IGhhc09ubHlTZWN1cmVDb250ZW50KG1fdW5jb21taXR0ZWRTdGF0ZSk7CisgICAgYm9vbCBu
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZCA9IG1fY29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExl
Z2FjeVRMUyAhPSBtX3VuY29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2FjeVRMUzsKICAgICBi
b29sIGVzdGltYXRlZFByb2dyZXNzQ2hhbmdlZCA9IGVzdGltYXRlZFByb2dyZXNzKG1fY29tbWl0
dGVkU3RhdGUpICE9IGVzdGltYXRlZFByb2dyZXNzKG1fdW5jb21taXR0ZWRTdGF0ZSk7CiAgICAg
Ym9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzQ2hhbmdlZCA9IG1fY29tbWl0dGVkU3RhdGUu
bmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyAhPSBtX3VuY29tbWl0dGVkU3RhdGUubmV0d29ya1Jl
cXVlc3RzSW5Qcm9ncmVzczsKICAgICBib29sIGNlcnRpZmljYXRlSW5mb0NoYW5nZWQgPSBtX2Nv
bW1pdHRlZFN0YXRlLmNlcnRpZmljYXRlSW5mbyAhPSBtX3VuY29tbWl0dGVkU3RhdGUuY2VydGlm
aWNhdGVJbmZvOwpAQCAtMTE1LDYgKzExNiw4IEBACiAgICAgICAgIGNhbGxPYnNlcnZlckNhbGxi
YWNrKCZPYnNlcnZlcjo6d2lsbENoYW5nZUFjdGl2ZVVSTCk7CiAgICAgaWYgKGhhc09ubHlTZWN1
cmVDb250ZW50Q2hhbmdlZCkKICAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2soJk9ic2VydmVy
Ojp3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpOworICAgIGlmIChuZWdvdGlhdGVkTGVn
YWN5VExTQ2hhbmdlZCkKKyAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2soJk9ic2VydmVyOjp3
aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAgaWYgKGVzdGltYXRlZFByb2dyZXNz
Q2hhbmdlZCkKICAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2soJk9ic2VydmVyOjp3aWxsQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MpOwogICAgIGlmIChuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
Q2hhbmdlZCkKQEAgLTEzNSw2ICsxMzgsOCBAQAogICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFj
aygmT2JzZXJ2ZXI6OmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKTsKICAgICBpZiAoaGFzT25s
eVNlY3VyZUNvbnRlbnRDaGFuZ2VkKQogICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2Jz
ZXJ2ZXI6OmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KTsKKyAgICBpZiAobmVnb3RpYXRl
ZExlZ2FjeVRMU0NoYW5nZWQpCisgICAgICAgIGNhbGxPYnNlcnZlckNhbGxiYWNrKCZPYnNlcnZl
cjo6ZGlkQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAgaWYgKGFjdGl2ZVVSTENoYW5n
ZWQpCiAgICAgICAgIGNhbGxPYnNlcnZlckNhbGxiYWNrKCZPYnNlcnZlcjo6ZGlkQ2hhbmdlQWN0
aXZlVVJMKTsKICAgICBpZiAoaXNMb2FkaW5nQ2hhbmdlZCkKQEAgLTIyMSw2ICsyMjYsMTcgQEAK
ICAgICByZXR1cm4gaGFzT25seVNlY3VyZUNvbnRlbnQobV9jb21taXR0ZWRTdGF0ZSk7CiB9CiAK
K2Jvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzTmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2FjeVRMUzsKK30KKwordm9p
ZCBQYWdlTG9hZFN0YXRlOjpuZWdvdGlhdGVkTGVnYWN5VExTKGNvbnN0IFRyYW5zYWN0aW9uOjpU
b2tlbiYgdG9rZW4pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0b2tlbiwgJnRva2VuLm1fcGFnZUxv
YWRTdGF0ZSA9PSB0aGlzKTsKKyAgICBtX3VuY29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2Fj
eVRMUyA9IHRydWU7Cit9CisKIGRvdWJsZSBQYWdlTG9hZFN0YXRlOjplc3RpbWF0ZWRQcm9ncmVz
cyhjb25zdCBEYXRhJiBkYXRhKQogewogICAgIGlmICghZGF0YS5wZW5kaW5nQVBJUmVxdWVzdC51
cmwuaXNOdWxsKCkpCkBAIC0zMTIsNiArMzI4LDcgQEAKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0
ZS51cmwgPSBtX3VuY29tbWl0dGVkU3RhdGUucHJvdmlzaW9uYWxVUkw7CiAgICAgbV91bmNvbW1p
dHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMID0gU3RyaW5nKCk7CisgICAgbV91bmNvbW1pdHRlZFN0
YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0
ZS50aXRsZSA9IFN0cmluZygpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUxvYWRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VM
b2FkU3RhdGUuaAkocmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUxvYWRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw5IEBACiAgICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpID0gMDsKIAor
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMoKSB7IH07
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExTKCkgeyB9
OworCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpID0g
MDsKIApAQCAtMTQwLDYgKzE0Myw4IEBACiAgICAgU3RyaW5nIGFjdGl2ZVVSTCgpIGNvbnN0Owog
CiAgICAgYm9vbCBoYXNPbmx5U2VjdXJlQ29udGVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzTmVn
b3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0OworICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUyhj
b25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKIAogICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVz
cygpIGNvbnN0OwogICAgIGJvb2wgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29tbWl0dGVkU3RhdGUubmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzczsgfQpAQCAt
MjAwLDE5ICsyMDUsMTAgQEAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIAog
ICAgIHN0cnVjdCBEYXRhIHsKLSAgICAgICAgRGF0YSgpCi0gICAgICAgICAgICA6IHN0YXRlKFN0
YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgICwgaGFzSW5zZWN1cmVDb250ZW50KGZhbHNlKQot
ICAgICAgICAgICAgLCBjYW5Hb0JhY2soZmFsc2UpCi0gICAgICAgICAgICAsIGNhbkdvRm9yd2Fy
ZChmYWxzZSkKLSAgICAgICAgICAgICwgZXN0aW1hdGVkUHJvZ3Jlc3MoMCkKLSAgICAgICAgICAg
ICwgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9
CisgICAgICAgIFN0YXRlIHN0YXRlIHsgU3RhdGU6OkZpbmlzaGVkIH07CisgICAgICAgIGJvb2wg
aGFzSW5zZWN1cmVDb250ZW50IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBuZWdvdGlhdGVkTGVn
YWN5VExTIHsgZmFsc2UgfTsKIAotICAgICAgICBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgYm9vbCBo
YXNJbnNlY3VyZUNvbnRlbnQ7Ci0KICAgICAgICAgUGVuZGluZ0FQSVJlcXVlc3QgcGVuZGluZ0FQ
SVJlcXVlc3Q7CiAKICAgICAgICAgU3RyaW5nIHByb3Zpc2lvbmFsVVJMOwpAQCAtMjI0LDExICsy
MjAsMTEgQEAKIAogICAgICAgICBVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CiAKLSAgICAgICAg
Ym9vbCBjYW5Hb0JhY2s7Ci0gICAgICAgIGJvb2wgY2FuR29Gb3J3YXJkOworICAgICAgICBib29s
IGNhbkdvQmFjayB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgY2FuR29Gb3J3YXJkIHsgZmFsc2Ug
fTsKIAotICAgICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3M7Ci0gICAgICAgIGJvb2wgbmV0
d29ya1JlcXVlc3RzSW5Qcm9ncmVzczsKKyAgICAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNz
IHsgMC4wIH07CisgICAgICAgIGJvb2wgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyB7IGZhbHNl
IH07CiAKICAgICAgICAgUmVmUHRyPFdlYkNlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZv
OwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3MjEsNiArNzcyMSwxMiBAQAogICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpuZWdv
dGlhdGVkTGVnYWN5VExTKCkKK3sKKyAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0
YXRlLnRyYW5zYWN0aW9uKCk7CisgICAgbV9wYWdlTG9hZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lU
TFModHJhbnNhY3Rpb24pOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwg
dWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5
JiYgcmVwbHkpCiB7CiAgICAgcmVxdWVzdFN0b3JhZ2VTcGFjZShmcmFtZUlELCBvcmlnaW5JZGVu
dGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIFtyZXBseSA9
IFdURk1vdmUocmVwbHkpXShhdXRvIHF1b3RhKSBtdXRhYmxlIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzNSw2ICsx
MzM1LDcgQEAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMu
dmFsdWVPcihXZWJDb3JlOjpJbnRTaXplKCkpOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
PiYmLCBOZWdvdGlhdGVkTGVnYWN5VExTKTsKKyAgICB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMo
KTsKIAogICAgIFNwZWxsRG9jdW1lbnRUYWcgc3BlbGxEb2N1bWVudFRhZygpOwogCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NTU1MjApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0wMS0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEFkZCBLVk8gU1BJIFdLV2ViVmlldy5fbmVnb3RpYXRlZExlZ2FjeVRMUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDY3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tOgorICAgICAgICAoLVtU
TFNPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0
Ol0pOgorICAgICAgICAoLVtUTFNPYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExT
Q2hhbmdlZF0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb25maWcuaDoKKwogMjAyMC0wMS0zMSAgQWFrYXNoIEphaW4gIDxhYWthc2hf
amFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3c10gRGlzcGxheSBmbGFreSB0ZXN0IG5hbWVz
IGluIGJ1aWxkIHN1bW1hcnkgd2hlbiBSZVJ1bldlYktpdFRlc3RzIHBhc3NlcwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJl
Y2F0aW9uLm1tCShyZXZpc2lvbiAyNTU0ODIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
MywzMSBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYkNvcmVUaHJlYWQuaD4KICNlbmRpZgogCisjaWYg
SEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQorQGludGVyZmFjZSBUTFNPYnNlcnZlciA6IE5T
T2JqZWN0CistICh2b2lkKXdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkOworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gVExTT2JzZXJ2ZXIgeworICAgIGJvb2wgX25lZ290aWF0ZWRM
ZWdhY3lUTFNDaGFuZ2VkOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5T
U3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5
ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgRVhQRUNUX1dLX1NUUkVR
KGtleVBhdGgsICJfbmVnb3RpYXRlZExlZ2FjeVRMUyIpOworICAgIF9uZWdvdGlhdGVkTGVnYWN5
VExTQ2hhbmdlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2FpdFVudGlsTmVnb3RpYXRlZExlZ2Fj
eVRMU0NoYW5nZWQKK3sKKyAgICBfbmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQgPSBmYWxzZTsK
KyAgICB3aGlsZSAoIV9uZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZCkKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKK30KKworQGVuZAorI2VuZGlmCisKIEBpbnRl
cmZhY2UgVExTTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlPgogLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKIC0gKHZvaWQpd2FpdEZv
ckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb247CkBAIC0yMDIsNiArMjI3LDQzIEBACiAgICAg
fQogfQogCisjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQorVEVTVChUTFNWZXJzaW9u
LCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVy
OjpQcm90b2NvbDo6SFRUUFMsIFtdIChTU0wgKnNzbCkgeworICAgICAgICBUQ1BTZXJ2ZXI6OnJl
c3BvbmRXaXRoT0soc3NsKTsKKyAgICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7
CisgICAgfSwgdGxzMV8xKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
LCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9u
TWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4w
LjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOworCisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10p
OworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJf
bmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3
IGNvbnRleHQ6bmlsXTsKKyAgICAKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25lZ290aWF0
ZWRMZWdhY3lUTFNdKTsKKyAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRM
U0NoYW5nZWRdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExT
XSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XV07CisgICAgW29ic2VydmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsK
KyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFtvYnNlcnZlciB3YWl0VW50aWxO
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2Vy
dmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOworfQorI2VuZGlm
CisKIC8vIEZJWE1FOiBBZGQgc29tZSB0ZXN0cyBmb3IgV0tXZWJWaWV3Lmhhc09ubHlTZWN1cmVD
b250ZW50CiAKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAkocmV2aXNpb24gMjU1NDgyKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDMgKzEy
Miw3IEBACiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykKICNkZWZpbmUgSEFWRV9ORVRXT1JLX0ZS
QU1FV09SSyAxCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTUwMCkKKyNkZWZpbmUg
SEFWRV9UTFNfUFJPVE9DT0xfVkVSU0lPTl9UIDEKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389413</attachid>
            <date>2020-01-31 14:12:49 -0800</date>
            <delta_ts>2020-01-31 14:32:56 -0800</delta_ts>
            <desc>patch with SPI documentation.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24100</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAxLTMxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEtWTyBTUEkg
V0tXZWJWaWV3Ll9uZWdvdGlhdGVkTGVnYWN5VExTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0NsaWVudDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6bmVnb3RpYXRlZExlZ2Fj
eVRMUyBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjp3
aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6ZGlkQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6Om5lZ290aWF0ZWRMZWdhY3lUTFMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6
Y29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6Omhhc05lZ290
aWF0ZWRMZWdhY3lUTFMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpu
ZWdvdGlhdGVkTGVnYWN5VExTKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6ZGlk
Q29tbWl0TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI6OndpbGxDaGFuZ2VOZWdvdGlhdGVk
TGVnYWN5VExTKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI6OmRp
ZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0
YXRlOjpEYXRhOjpEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIwMjAtMDEt
MzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbG9n
Z2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNTTwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjU1NDgyKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDEyIEBACiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAordm9pZCBOZXR3b3JrRGF0YVRhc2s6Om5lZ290
aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKK30KKwogYm9vbCBOZXR3b3JrRGF0YVRhc2s6
OnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcygpIDogZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcw
LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2FzQmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lk
IG5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC05Miw2ICs5Myw3IEBACiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVBbmRDYW5jZWwoKSA9IDA7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUg
ewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDExIEBACiAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdp
bi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya0xvYWQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0
aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEKTsKK30KKwogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyNTU0ODIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKICAg
ICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWRCeVJlc3Ry
aWN0aW9ucygpIGZpbmFsOworICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IGZp
bmFsOwogCiAgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdGhy
b3R0bGVEZWxheUNvbXBsZXRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24g
MjU1NDgyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDI1IEBACiAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UiLCB0YXNrSWRlbnRpZmll
cik7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpk
YXRhVGFza10pIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAg
ICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyNpZiBIQVZFKFRMU19QUk9UT0NP
TF9WRVJTSU9OX1QpCisgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3Mg
Km1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tNZXRyaWNzLnRyYW5zYWN0aW9uTWV0
cmljcy5sYXN0T2JqZWN0OworICAgICAgICBhdXRvIHRsc1ZlcnNpb24gPSAodGxzX3Byb3RvY29s
X3ZlcnNpb25fdCltZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24udW5zaWduZWRT
aG9ydFZhbHVlOworICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lv
bl9UTFN2MTAgfHwgdGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2MTEpCisg
ICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgVU5VU0VEX1BB
UkFNKG1ldHJpY3MpOworI2Vsc2UgLy8gV2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290
aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90
b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBhdCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3Jl
IHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgIGlmIChbZGF0YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbildKSB7CisgICAgICAgICAgICBT
U0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFUYXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xW
ZXJzaW9uXTsKKyAgICAgICAgICAgIGlmICh0bHNWZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8
IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkKKyAgICAgICAgICAgICAgICBuZWdvdGlhdGVk
TGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKyNlbmRpZgorICAgICAgICBpZiAobmVnb3RpYXRlZExlZ2FjeVRMUykK
KyAgICAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+bmVnb3RpYXRlZExlZ2FjeVRMUygpOwogICAg
ICAgICAKICAgICAgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25z
ZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCiAgICAgICAgIGludCBzdGF0dXNDb2Rl
ID0gW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6TlNIVFRQVVJMUmVzcG9uc2UuY2xhc3NdID8gWyhO
U0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN0YXR1c0NvZGVdIDogMDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ5LDQgKzE0OSw5IEBACiAgICAgfQogfQogCit2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6bmVnb3RpYXRlZExlZ2FjeVRMUyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKK3sKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6TmVnb3RpYXRlZExlZ2FjeVRMUyhwYWdlSUQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMjU1NDgyKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDggQEAKIAogICAgIHZvaWQgY29tcGxldGVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKTsKIAorICAgIHZv
aWQgbmVnb3RpYXRlZExlZ2FjeVRMUyhXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1NTQ4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NTAsNiAr
MTU1MCwxMSBAQAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKEJPT0wpX25lZ290aWF0ZWRMZWdh
Y3lUTFMKK3sKKyAgICByZXR1cm4gX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5oYXNOZWdvdGlhdGVk
TGVnYWN5VExTKCk7Cit9CisKIC0gKEJPT0wpX2lzRWRpdGFibGUKIHsKICAgICByZXR1cm4gX3Bh
Z2UgJiYgX3BhZ2UtPmlzRWRpdGFibGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMjU1NDgy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwxMyBAQAogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgZ2V0dGVyPV9pc0VkaXRhYmxlLCBzZXR0ZXI9X3NldEVkaXRhYmxlOikgQk9PTCBfZWRp
dGFibGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKTsKIAorLyohIEBh
YnN0cmFjdCBBIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIGFueSByZXNvdXJjZSBv
biB0aGUgcGFnZQoraGFzIGJlZW4gbG9hZGVkIG92ZXIgYSBjb25uZWN0aW9uIHVzaW5nIFRMUyAx
LjAgb3IgVExTIDEuMS4KK0BkaXNjdXNzaW9uIEBsaW5rIFdLV2ViVmlldyBAL2xpbmsgaXMga2V5
LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQKK2ZvciB0aGlzIHByb3BlcnR5LgorKi8K
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfbmVnb3RpYXRlZExlZ2FjeVRM
UyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
CiAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2Ugbm9ib2R5IGlzIHVzaW5nIHRoZW0uCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqX3Nlc3Npb25TdGF0ZURhdGE7CiAt
ICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0
ZURhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaAkocmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsOCBA
QAogICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxs
Q2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5n
ZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdlTmVn
b3RpYXRlZExlZ2FjeVRMUygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlTmVnb3RpYXRl
ZExlZ2FjeVRMUygpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dy
ZXNzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92
ZXJyaWRlOwogICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQko
cmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIxLDYgKzEzMjEsMTYgQEAKICAgICBb
bV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiaGFzT25seVNlY3VyZUNvbnRlbnQiXTsK
IH0KIAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OndpbGxDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExT
KCkKK3sKKyAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAIl9uZWdvdGlhdGVk
TGVnYWN5VExTIl07Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRDaGFuZ2VOZWdvdGlh
dGVkTGVnYWN5VExTKCkKK3sKKyAgICBbbV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAi
X25lZ290aWF0ZWRMZWdhY3lUTFMiXTsKK30KKwogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OndpbGxD
aGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpCiB7CiAgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFs
dWVGb3JLZXk6QCJlc3RpbWF0ZWRQcm9ncmVzcyJdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNiArMzY5LDE1IEBACiAgICAg
fSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmVnb3RpYXRlZExlZ2FjeVRMUyhX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKK3sKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2Ug
PSBudWxscHRyOworICAgIGlmIChwYWdlSUQpCisgICAgICAgIHBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAocGFnZSkKKyAgICAgICAgcGFnZS0+bmVnb3Rp
YXRlZExlZ2FjeVRMUygpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZldGNo
V2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmIHdlYnNp
dGVEYXRhKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNh
bGxiYWNrcy5pc1ZhbGlkS2V5KGNhbGxiYWNrSUQpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lv
biAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDYgKzIzNiw3IEBACiAgICAgLy8gTWVz
c2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCwgdWludDY0X3QgY2hhbGxlbmdl
SUQpOworICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUyhXZWJQYWdlUHJveHlJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29u
c3QgV2Vic2l0ZURhdGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3
IEBACiAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90
UmVmQ291bnRlZCB7CiAgICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW4sIFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVn
YWN5VExTLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKKyAgICBOZWdvdGlhdGVkTGVnYWN5VExTKFdl
YktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNp
dGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdl
YnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAkocmV2aXNp
b24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAKICAgICBib29sIGlzTG9hZGluZ0NoYW5n
ZWQgPSBpc0xvYWRpbmcobV9jb21taXR0ZWRTdGF0ZSkgIT0gaXNMb2FkaW5nKG1fdW5jb21taXR0
ZWRTdGF0ZSk7CiAgICAgYm9vbCBhY3RpdmVVUkxDaGFuZ2VkID0gYWN0aXZlVVJMKG1fY29tbWl0
dGVkU3RhdGUpICE9IGFjdGl2ZVVSTChtX3VuY29tbWl0dGVkU3RhdGUpOwogICAgIGJvb2wgaGFz
T25seVNlY3VyZUNvbnRlbnRDaGFuZ2VkID0gaGFzT25seVNlY3VyZUNvbnRlbnQobV9jb21taXR0
ZWRTdGF0ZSkgIT0gaGFzT25seVNlY3VyZUNvbnRlbnQobV91bmNvbW1pdHRlZFN0YXRlKTsKKyAg
ICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkID0gbV9jb21taXR0ZWRTdGF0ZS5uZWdv
dGlhdGVkTGVnYWN5VExTICE9IG1fdW5jb21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExT
OwogICAgIGJvb2wgZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkID0gZXN0aW1hdGVkUHJvZ3Jlc3Mo
bV9jb21taXR0ZWRTdGF0ZSkgIT0gZXN0aW1hdGVkUHJvZ3Jlc3MobV91bmNvbW1pdHRlZFN0YXRl
KTsKICAgICBib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3NDaGFuZ2VkID0gbV9jb21taXR0
ZWRTdGF0ZS5uZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzICE9IG1fdW5jb21taXR0ZWRTdGF0ZS5u
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzOwogICAgIGJvb2wgY2VydGlmaWNhdGVJbmZvQ2hhbmdl
ZCA9IG1fY29tbWl0dGVkU3RhdGUuY2VydGlmaWNhdGVJbmZvICE9IG1fdW5jb21taXR0ZWRTdGF0
ZS5jZXJ0aWZpY2F0ZUluZm87CkBAIC0xMTUsNiArMTE2LDggQEAKICAgICAgICAgY2FsbE9ic2Vy
dmVyQ2FsbGJhY2soJk9ic2VydmVyOjp3aWxsQ2hhbmdlQWN0aXZlVVJMKTsKICAgICBpZiAoaGFz
T25seVNlY3VyZUNvbnRlbnRDaGFuZ2VkKQogICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygm
T2JzZXJ2ZXI6OndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCk7CisgICAgaWYgKG5lZ290
aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkKQorICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2Jz
ZXJ2ZXI6OndpbGxDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExTKTsKICAgICBpZiAoZXN0aW1hdGVk
UHJvZ3Jlc3NDaGFuZ2VkKQogICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2JzZXJ2ZXI6
OndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyk7CiAgICAgaWYgKG5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3NDaGFuZ2VkKQpAQCAtMTM1LDYgKzEzOCw4IEBACiAgICAgICAgIGNhbGxPYnNlcnZl
ckNhbGxiYWNrKCZPYnNlcnZlcjo6ZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpOwogICAgIGlm
IChoYXNPbmx5U2VjdXJlQ29udGVudENoYW5nZWQpCiAgICAgICAgIGNhbGxPYnNlcnZlckNhbGxi
YWNrKCZPYnNlcnZlcjo6ZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpOworICAgIGlmIChu
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZCkKKyAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2so
Jk9ic2VydmVyOjpkaWRDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExTKTsKICAgICBpZiAoYWN0aXZl
VVJMQ2hhbmdlZCkKICAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2soJk9ic2VydmVyOjpkaWRD
aGFuZ2VBY3RpdmVVUkwpOwogICAgIGlmIChpc0xvYWRpbmdDaGFuZ2VkKQpAQCAtMjIxLDYgKzIy
NiwxNyBAQAogICAgIHJldHVybiBoYXNPbmx5U2VjdXJlQ29udGVudChtX2NvbW1pdHRlZFN0YXRl
KTsKIH0KIAorYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNOZWdvdGlhdGVkTGVnYWN5VExTKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTOwor
fQorCit2b2lkIFBhZ2VMb2FkU3RhdGU6Om5lZ290aWF0ZWRMZWdhY3lUTFMoY29uc3QgVHJhbnNh
Y3Rpb246OlRva2VuJiB0b2tlbikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRva2VuLCAmdG9rZW4u
bV9wYWdlTG9hZFN0YXRlID09IHRoaXMpOworICAgIG1fdW5jb21taXR0ZWRTdGF0ZS5uZWdvdGlh
dGVkTGVnYWN5VExTID0gdHJ1ZTsKK30KKwogZG91YmxlIFBhZ2VMb2FkU3RhdGU6OmVzdGltYXRl
ZFByb2dyZXNzKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhLnBlbmRpbmdBUElS
ZXF1ZXN0LnVybC5pc051bGwoKSkKQEAgLTMxMiw2ICszMjgsNyBAQAogCiAgICAgbV91bmNvbW1p
dHRlZFN0YXRlLnVybCA9IG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTDsKICAgICBt
X3VuY29tbWl0dGVkU3RhdGUucHJvdmlzaW9uYWxVUkwgPSBTdHJpbmcoKTsKKyAgICBtX3VuY29t
bWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2FjeVRMUyA9IGZhbHNlOwogCiAgICAgbV91bmNvbW1p
dHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU0ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDkgQEAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkg
PSAwOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRM
UygpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lU
TFMoKSB7IH07CisKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dy
ZXNzKCkgPSAwOwogCkBAIC0xNDAsNiArMTQzLDggQEAKICAgICBTdHJpbmcgYWN0aXZlVVJMKCkg
Y29uc3Q7CiAKICAgICBib29sIGhhc09ubHlTZWN1cmVDb250ZW50KCkgY29uc3Q7CisgICAgYm9v
bCBoYXNOZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7CisgICAgdm9pZCBuZWdvdGlhdGVkTGVn
YWN5VExTKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCiAgICAgZG91YmxlIGVzdGltYXRl
ZFByb2dyZXNzKCkgY29uc3Q7CiAgICAgYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS5uZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
OyB9CkBAIC0yMDAsMTkgKzIwNSwxMCBAQAogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOwogCiAgICAgc3RydWN0IERhdGEgewotICAgICAgICBEYXRhKCkKLSAgICAgICAgICAgIDog
c3RhdGUoU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgLCBoYXNJbnNlY3VyZUNvbnRlbnQo
ZmFsc2UpCi0gICAgICAgICAgICAsIGNhbkdvQmFjayhmYWxzZSkKLSAgICAgICAgICAgICwgY2Fu
R29Gb3J3YXJkKGZhbHNlKQotICAgICAgICAgICAgLCBlc3RpbWF0ZWRQcm9ncmVzcygwKQotICAg
ICAgICAgICAgLCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKGZhbHNlKQotICAgICAgICB7Ci0g
ICAgICAgIH0KKyAgICAgICAgU3RhdGUgc3RhdGUgeyBTdGF0ZTo6RmluaXNoZWQgfTsKKyAgICAg
ICAgYm9vbCBoYXNJbnNlY3VyZUNvbnRlbnQgeyBmYWxzZSB9OworICAgICAgICBib29sIG5lZ290
aWF0ZWRMZWdhY3lUTFMgeyBmYWxzZSB9OwogCi0gICAgICAgIFN0YXRlIHN0YXRlOwotICAgICAg
ICBib29sIGhhc0luc2VjdXJlQ29udGVudDsKLQogICAgICAgICBQZW5kaW5nQVBJUmVxdWVzdCBw
ZW5kaW5nQVBJUmVxdWVzdDsKIAogICAgICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkw7CkBAIC0y
MjQsMTEgKzIyMCwxMSBAQAogCiAgICAgICAgIFVSTCByZXNvdXJjZURpcmVjdG9yeVVSTDsKIAot
ICAgICAgICBib29sIGNhbkdvQmFjazsKLSAgICAgICAgYm9vbCBjYW5Hb0ZvcndhcmQ7CisgICAg
ICAgIGJvb2wgY2FuR29CYWNrIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBjYW5Hb0ZvcndhcmQg
eyBmYWxzZSB9OwogCi0gICAgICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVzczsKLSAgICAgICAg
Ym9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzOworICAgICAgICBkb3VibGUgZXN0aW1hdGVk
UHJvZ3Jlc3MgeyAwLjAgfTsKKyAgICAgICAgYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
IHsgZmFsc2UgfTsKIAogICAgICAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZp
Y2F0ZUluZm87CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gMjU1NDgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcyMSw2ICs3NzIxLDEyIEBACiAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRo
aXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKQoreworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3Bh
Z2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKKyAgICBtX3BhZ2VMb2FkU3RhdGUubmVnb3RpYXRl
ZExlZ2FjeVRMUyh0cmFuc2FjdGlvbik7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRl
ZERhdGFiYXNlUXVvdGEoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdp
blVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRV
c2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICByZXF1ZXN0U3RvcmFnZVNwYWNlKGZyYW1lSUQsIG9y
aWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRRdW90YSwg
Y3VycmVudE9yaWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwg
W3JlcGx5ID0gV1RGTW92ZShyZXBseSldKGF1dG8gcXVvdGEpIG11dGFibGUgewpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTQ4MikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzM1LDYgKzEzMzUsNyBAQAogICAgIFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cy52YWx1ZU9yKFdlYkNvcmU6OkludFNpemUoKSk7IH0KIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk+JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMpOworICAgIHZvaWQgbmVnb3RpYXRlZExl
Z2FjeVRMUygpOwogCiAgICAgU3BlbGxEb2N1bWVudFRhZyBzcGVsbERvY3VtZW50VGFnKCk7CiAK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NTUyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAxLTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEtWTyBTUEkgV0tXZWJWaWV3Ll9uZWdvdGlhdGVkTGVn
YWN5VExTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDcwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW06CisgICAg
ICAgICgtW1RMU09ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdl
OmNvbnRleHQ6XSk6CisgICAgICAgICgtW1RMU09ic2VydmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRM
ZWdhY3lUTFNDaGFuZ2VkXSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZpZy5oOgorCiAyMDIwLTAxLTMxICBBYWthc2ggSmFpbiAg
PGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBEaXNwbGF5IGZsYWt5IHRl
c3QgbmFtZXMgaW4gYnVpbGQgc3VtbWFyeSB3aGVuIFJlUnVuV2ViS2l0VGVzdHMgcGFzc2VzCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9u
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VExTRGVwcmVjYXRpb24ubW0JKHJldmlzaW9uIDI1NTQ4MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQzLDYgKzQzLDMxIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViQ29yZVRocmVhZC5oPgogI2VuZGlm
CiAKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCitAaW50ZXJmYWNlIFRMU09ic2Vy
dmVyIDogTlNPYmplY3QKKy0gKHZvaWQpd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5n
ZWQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBUTFNPYnNlcnZlciB7CisgICAgYm9vbCBfbmVn
b3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQ7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoa2V5UGF0aCwgIl9uZWdvdGlhdGVkTGVnYWN5VExTIik7CisgICAgX25lZ290aWF0
ZWRMZWdhY3lUTFNDaGFuZ2VkID0gdHJ1ZTsKK30KKworLSAodm9pZCl3YWl0VW50aWxOZWdvdGlh
dGVkTGVnYWN5VExTQ2hhbmdlZAoreworICAgIF9uZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZCA9
IGZhbHNlOworICAgIHdoaWxlICghX25lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkKQorICAgICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworfQorCitAZW5kCisjZW5kaWYK
KwogQGludGVyZmFjZSBUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CiAtICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uOwogLSAodm9p
ZCl3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjsKQEAgLTIwMiw2ICsyMjcsNDMg
QEAKICAgICB9CiB9CiAKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCitURVNUKFRM
U1ZlcnNpb24sIE5lZ290aWF0ZWRMZWdhY3lUTFMpCit7CisgICAgVENQU2VydmVyIHNlcnZlcihU
Q1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10gKFNTTCAqc3NsKSB7CisgICAgICAgIFRDUFNl
cnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOworICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRo
T0soc3NsKTsKKyAgICB9LCB0bHMxXzEpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpj
aGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07
CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBz
Oi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07CisKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2
ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5
UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdP
cHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIAorICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBf
bmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVk
TGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0ZWRM
ZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dXTsKKyAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0No
YW5nZWRdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10p
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgW29ic2VydmVyIHdh
aXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBFQ1RfVFJVRShbd2Vi
VmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2
ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07Cit9
CisjZW5kaWYKKwogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBXS1dlYlZpZXcuaGFzT25s
eVNlY3VyZUNvbnRlbnQKIAogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCShyZXZpc2lvbiAyNTU0
ODIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjIsMyArMTIyLDcgQEAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKQogI2RlZmluZSBIQVZFX05F
VFdPUktfRlJBTUVXT1JLIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICEoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNTAwKQor
I2RlZmluZSBIQVZFX1RMU19QUk9UT0NPTF9WRVJTSU9OX1QgMQorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389416</attachid>
            <date>2020-01-31 14:32:58 -0800</date>
            <delta_ts>2020-01-31 15:16:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207067-20200131143257.patch</filename>
            <type>text/plain</type>
            <size>24770</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU0NjEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAxLTMxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEtWTyBTUEkg
V0tXZWJWaWV3Ll9uZWdvdGlhdGVkTGVnYWN5VExTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5
IEVzdGVzLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQ2xpZW50OjpuZWdvdGlhdGVkTGVnYWN5VExTIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpu
ZWdvdGlhdGVkTGVnYWN5VExTIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpuZWdvdGlhdGVkTGVnYWN5VExT
IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OndpbGxD
aGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExTKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpkaWRDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExTKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6bmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpjb21t
aXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6aGFzTmVnb3RpYXRl
ZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6Om5lZ290
aWF0ZWRMZWdhY3lUTFMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oOgorICAgICAgICAo
V2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpPYnNlcnZlcjo6d2lsbENoYW5nZU5lZ290aWF0ZWRMZWdh
Y3lUTFMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpPYnNlcnZlcjo6ZGlkQ2hh
bmdlTmVnb3RpYXRlZExlZ2FjeVRMUyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6
OkRhdGE6OkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAyMC0wMS0zMCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBXS05hdmlnYXRpb25EZWxlZ2F0ZSBTUEkgdG8gZGlzYWJsZSBUTFMgMS4wIGFuZCAxLjEKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAJKHJldmlzaW9uIDI1NTQ2MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwxMiBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAordm9pZCBOZXR3b3JrRGF0YVRhc2s6
Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKK30KKwogYm9vbCBOZXR3b3JrRGF0
YVRhc2s6OnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcygpIDogZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDI1NTQ2MSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkQnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTkyLDYgKzkzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgPSAwOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAK
ICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTU0NjEpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYg
KzIwNiwxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1CiAgICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRv
cE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExT
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya0xvYWQ6Om5l
Z290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAoreworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhl
bnRpY2F0aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0ZXJzLndlYlBh
Z2VQcm94eUlEKTsKK30KKwogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAy
NTU0NjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdhc0Jsb2Nr
ZWQoKSBmaW5hbDsKICAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lkIHdh
c0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygpIGZpbmFsOworICAgIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpOwpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQkocmV2aXNpb24gMjU1NDYxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEz
LDI1IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBMT0co
TmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSIsIHRhc2tJZGVudGlmaWVy
KTsKICAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOmRh
dGFUYXNrXSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgICAg
IGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IGZhbHNlOworI2lmIEhBVkUoVExTX1BST1RPQ09M
X1ZFUlNJT05fVCkKKyAgICAgICAgTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAq
bWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFza01ldHJpY3MudHJhbnNhY3Rpb25NZXRy
aWNzLmxhc3RPYmplY3Q7CisgICAgICAgIGF1dG8gdGxzVmVyc2lvbiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dGxzX3Byb3RvY29sX3ZlcnNpb25fdD4obWV0cmljcy5uZWdvdGlhdGVkVExTUHJvdG9jb2xW
ZXJzaW9uLnVuc2lnbmVkU2hvcnRWYWx1ZSk7CisgICAgICAgIGlmICh0bHNWZXJzaW9uID09IHRs
c19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNWZXJzaW9uID09IHRsc19wcm90b2NvbF92
ZXJzaW9uX1RMU3YxMSkKKyAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOwor
ICAgICAgICBVTlVTRURfUEFSQU0obWV0cmljcyk7CisjZWxzZSAvLyBXZSBkbyBub3QgbmVlZCB0
byBjaGVjayBfVExTTmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbiBpZiB3ZSBoYXZlIG1ldHJpY3Mu
bmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbiBiZWNhdXNlIGl0IHdvcmtzIGF0IHJlc3BvbnNl
IHRpbWUgZXZlbiBiZWZvcmUgcmRhcjovL3Byb2JsZW0vNTY1MjI2MDEKKyAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgaWYgKFtkYXRhVGFzayByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uKV0p
IHsKKyAgICAgICAgICAgIFNTTFByb3RvY29sIHRsc1ZlcnNpb24gPSBbZGF0YVRhc2sgX1RMU05l
Z290aWF0ZWRQcm90b2NvbFZlcnNpb25dOworICAgICAgICAgICAgaWYgKHRsc1ZlcnNpb24gPT0g
a1RMU1Byb3RvY29sMTEgfHwgdGxzVmVyc2lvbiA9PSBrVExTUHJvdG9jb2wxKQorICAgICAgICAg
ICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorI2VuZGlmCisgICAgICAgIGlmIChuZWdv
dGlhdGVkTGVnYWN5VExTKQorICAgICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5uZWdvdGlhdGVk
TGVnYWN5VExTKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZp
bmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KICAgICAg
ICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpOU0hUVFBVUkxSZXNw
b25zZS5jbGFzc10gPyBbKE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2Ugc3RhdHVzQ29kZV0g
OiAwOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNTU0NjEpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNCArMTQ5LDkgQEAgdm9pZCBBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OmNvbXBsZXRlQXV0aAogICAgIH0KIH0KIAordm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6Om5lZ290aWF0ZWRMZWdhY3lUTFMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQpIGNvbnN0Cit7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6Ok5lZ290aWF0ZWRMZWdhY3lUTFMocGFnZUlEKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDI1NTQ2MSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKTsK
IAorICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUyhXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKICAgICAgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlTG9hZFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlTG9hZFN0YXRlLmNwcAkocmV2aXNpb24gMjU1NDYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAg
dm9pZCBQYWdlTG9hZFN0YXRlOjpjb21taXRDaGFuZ2VzKCkKICAgICBib29sIGlzTG9hZGluZ0No
YW5nZWQgPSBpc0xvYWRpbmcobV9jb21taXR0ZWRTdGF0ZSkgIT0gaXNMb2FkaW5nKG1fdW5jb21t
aXR0ZWRTdGF0ZSk7CiAgICAgYm9vbCBhY3RpdmVVUkxDaGFuZ2VkID0gYWN0aXZlVVJMKG1fY29t
bWl0dGVkU3RhdGUpICE9IGFjdGl2ZVVSTChtX3VuY29tbWl0dGVkU3RhdGUpOwogICAgIGJvb2wg
aGFzT25seVNlY3VyZUNvbnRlbnRDaGFuZ2VkID0gaGFzT25seVNlY3VyZUNvbnRlbnQobV9jb21t
aXR0ZWRTdGF0ZSkgIT0gaGFzT25seVNlY3VyZUNvbnRlbnQobV91bmNvbW1pdHRlZFN0YXRlKTsK
KyAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkID0gbV9jb21taXR0ZWRTdGF0ZS5u
ZWdvdGlhdGVkTGVnYWN5VExTICE9IG1fdW5jb21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5
VExTOwogICAgIGJvb2wgZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkID0gZXN0aW1hdGVkUHJvZ3Jl
c3MobV9jb21taXR0ZWRTdGF0ZSkgIT0gZXN0aW1hdGVkUHJvZ3Jlc3MobV91bmNvbW1pdHRlZFN0
YXRlKTsKICAgICBib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3NDaGFuZ2VkID0gbV9jb21t
aXR0ZWRTdGF0ZS5uZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzICE9IG1fdW5jb21taXR0ZWRTdGF0
ZS5uZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzOwogICAgIGJvb2wgY2VydGlmaWNhdGVJbmZvQ2hh
bmdlZCA9IG1fY29tbWl0dGVkU3RhdGUuY2VydGlmaWNhdGVJbmZvICE9IG1fdW5jb21taXR0ZWRT
dGF0ZS5jZXJ0aWZpY2F0ZUluZm87CkBAIC0xMTUsNiArMTE2LDggQEAgdm9pZCBQYWdlTG9hZFN0
YXRlOjpjb21taXRDaGFuZ2VzKCkKICAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJhY2soJk9ic2Vy
dmVyOjp3aWxsQ2hhbmdlQWN0aXZlVVJMKTsKICAgICBpZiAoaGFzT25seVNlY3VyZUNvbnRlbnRD
aGFuZ2VkKQogICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2JzZXJ2ZXI6OndpbGxDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudCk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFNDaGFu
Z2VkKQorICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2JzZXJ2ZXI6OndpbGxDaGFuZ2VO
ZWdvdGlhdGVkTGVnYWN5VExTKTsKICAgICBpZiAoZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkKQog
ICAgICAgICBjYWxsT2JzZXJ2ZXJDYWxsYmFjaygmT2JzZXJ2ZXI6OndpbGxDaGFuZ2VFc3RpbWF0
ZWRQcm9ncmVzcyk7CiAgICAgaWYgKG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3NDaGFuZ2VkKQpA
QCAtMTM1LDYgKzEzOCw4IEBAIHZvaWQgUGFnZUxvYWRTdGF0ZTo6Y29tbWl0Q2hhbmdlcygpCiAg
ICAgICAgIGNhbGxPYnNlcnZlckNhbGxiYWNrKCZPYnNlcnZlcjo6ZGlkQ2hhbmdlRXN0aW1hdGVk
UHJvZ3Jlc3MpOwogICAgIGlmIChoYXNPbmx5U2VjdXJlQ29udGVudENoYW5nZWQpCiAgICAgICAg
IGNhbGxPYnNlcnZlckNhbGxiYWNrKCZPYnNlcnZlcjo6ZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNv
bnRlbnQpOworICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZCkKKyAgICAgICAgY2Fs
bE9ic2VydmVyQ2FsbGJhY2soJk9ic2VydmVyOjpkaWRDaGFuZ2VOZWdvdGlhdGVkTGVnYWN5VExT
KTsKICAgICBpZiAoYWN0aXZlVVJMQ2hhbmdlZCkKICAgICAgICAgY2FsbE9ic2VydmVyQ2FsbGJh
Y2soJk9ic2VydmVyOjpkaWRDaGFuZ2VBY3RpdmVVUkwpOwogICAgIGlmIChpc0xvYWRpbmdDaGFu
Z2VkKQpAQCAtMjIxLDYgKzIyNiwxNyBAQCBib29sIFBhZ2VMb2FkU3RhdGU6Omhhc09ubHlTZWN1
cmVDb250ZW50CiAgICAgcmV0dXJuIGhhc09ubHlTZWN1cmVDb250ZW50KG1fY29tbWl0dGVkU3Rh
dGUpOwogfQogCitib29sIFBhZ2VMb2FkU3RhdGU6Omhhc05lZ290aWF0ZWRMZWdhY3lUTFMoKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFM7
Cit9CisKK3ZvaWQgUGFnZUxvYWRTdGF0ZTo6bmVnb3RpYXRlZExlZ2FjeVRMUyhjb25zdCBUcmFu
c2FjdGlvbjo6VG9rZW4mIHRva2VuKQoreworICAgIEFTU0VSVF9VTlVTRUQodG9rZW4sICZ0b2tl
bi5tX3BhZ2VMb2FkU3RhdGUgPT0gdGhpcyk7CisgICAgbV91bmNvbW1pdHRlZFN0YXRlLm5lZ290
aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworfQorCiBkb3VibGUgUGFnZUxvYWRTdGF0ZTo6ZXN0aW1h
dGVkUHJvZ3Jlc3MoY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBpZiAoIWRhdGEucGVuZGluZ0FQ
SVJlcXVlc3QudXJsLmlzTnVsbCgpKQpAQCAtMzEyLDYgKzMyOCw3IEBAIHZvaWQgUGFnZUxvYWRT
dGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCAKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51cmwg
PSBtX3VuY29tbWl0dGVkU3RhdGUucHJvdmlzaW9uYWxVUkw7CiAgICAgbV91bmNvbW1pdHRlZFN0
YXRlLnByb3Zpc2lvbmFsVVJMID0gU3RyaW5nKCk7CisgICAgbV91bmNvbW1pdHRlZFN0YXRlLm5l
Z290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS50aXRs
ZSA9IFN0cmluZygpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRT
dGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3Rh
dGUuaAkocmV2aXNpb24gMjU1NDYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxv
YWRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw5IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgPSAwOwog
CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUygpIHsg
fTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMoKSB7
IH07CisKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkg
PSAwOwogCkBAIC0xNDAsNiArMTQzLDggQEAgcHVibGljOgogICAgIFN0cmluZyBhY3RpdmVVUkwo
KSBjb25zdDsKIAogICAgIGJvb2wgaGFzT25seVNlY3VyZUNvbnRlbnQoKSBjb25zdDsKKyAgICBi
b29sIGhhc05lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdDsKKyAgICB2b2lkIG5lZ290aWF0ZWRM
ZWdhY3lUTFMoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJik7CiAKICAgICBkb3VibGUgZXN0aW1h
dGVkUHJvZ3Jlc3MoKSBjb25zdDsKICAgICBib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZFN0YXRlLm5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jl
c3M7IH0KQEAgLTIwMCwxOCArMjA1LDkgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T2JzZXJ2ZXIq
PiBtX29ic2VydmVyczsKIAogICAgIHN0cnVjdCBEYXRhIHsKLSAgICAgICAgRGF0YSgpCi0gICAg
ICAgICAgICA6IHN0YXRlKFN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgICwgaGFzSW5zZWN1
cmVDb250ZW50KGZhbHNlKQotICAgICAgICAgICAgLCBjYW5Hb0JhY2soZmFsc2UpCi0gICAgICAg
ICAgICAsIGNhbkdvRm9yd2FyZChmYWxzZSkKLSAgICAgICAgICAgICwgZXN0aW1hdGVkUHJvZ3Jl
c3MoMCkKLSAgICAgICAgICAgICwgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhmYWxzZSkKLSAg
ICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgU3RhdGUgc3RhdGU7Ci0gICAgICAgIGJvb2wg
aGFzSW5zZWN1cmVDb250ZW50OworICAgICAgICBTdGF0ZSBzdGF0ZSB7IFN0YXRlOjpGaW5pc2hl
ZCB9OworICAgICAgICBib29sIGhhc0luc2VjdXJlQ29udGVudCB7IGZhbHNlIH07CisgICAgICAg
IGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUyB7IGZhbHNlIH07CiAKICAgICAgICAgUGVuZGluZ0FQ
SVJlcXVlc3QgcGVuZGluZ0FQSVJlcXVlc3Q7CiAKQEAgLTIyNCwxMSArMjIwLDExIEBAIHByaXZh
dGU6CiAKICAgICAgICAgVVJMIHJlc291cmNlRGlyZWN0b3J5VVJMOwogCi0gICAgICAgIGJvb2wg
Y2FuR29CYWNrOwotICAgICAgICBib29sIGNhbkdvRm9yd2FyZDsKKyAgICAgICAgYm9vbCBjYW5H
b0JhY2sgeyBmYWxzZSB9OworICAgICAgICBib29sIGNhbkdvRm9yd2FyZCB7IGZhbHNlIH07CiAK
LSAgICAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNzOwotICAgICAgICBib29sIG5ldHdvcmtS
ZXF1ZXN0c0luUHJvZ3Jlc3M7CisgICAgICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVzcyB7IDAg
fTsKKyAgICAgICAgYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzIHsgZmFsc2UgfTsKIAog
ICAgICAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAg
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gMjU1NDYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzcyMSw2ICs3NzIxLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlQXV0aGVudGljYXQKICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0
KCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bmVnb3RpYXRlZExlZ2FjeVRMUygpCit7Cisg
ICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworICAg
IG1fcGFnZUxvYWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTKHRyYW5zYWN0aW9uKTsKK30KKwog
dm9pZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIHJlcXVl
c3RTdG9yYWdlU3BhY2UoZnJhbWVJRCwgb3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lLCBk
aXNwbGF5TmFtZSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRh
YmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYXV0byBx
dW90YSkgbXV0YWJsZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjU1NDYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMzUsNiArMTMzNSw3IEBAIHB1YmxpYzoKICAgICBX
ZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7
IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMudmFsdWVPcihXZWJDb3Jl
OjpJbnRTaXplKCkpOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5KFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTKTsKKyAgICB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKIAogICAgIFNwZWxs
RG9jdW1lbnRUYWcgc3BlbGxEb2N1bWVudFRhZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1NTQ2MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE1NTAsNiArMTU1MCwxMSBAQCAtIChfV0tGcmFtZUhhbmRsZSAqKV9tYWluRnJh
bWUKICAgICByZXR1cm4gbmlsOwogfQogCistIChCT09MKV9uZWdvdGlhdGVkTGVnYWN5VExTCit7
CisgICAgcmV0dXJuIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuaGFzTmVnb3RpYXRlZExlZ2FjeVRM
UygpOworfQorCiAtIChCT09MKV9pc0VkaXRhYmxlCiB7CiAgICAgcmV0dXJuIF9wYWdlICYmIF9w
YWdlLT5pc0VkaXRhYmxlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDI1NTQ2MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE2NCw2ICsxNjQsMTMgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1JlY3RFZAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9pc0VkaXRhYmxl
LCBzZXR0ZXI9X3NldEVkaXRhYmxlOikgQk9PTCBfZWRpdGFibGUgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMSksIGlvcyg5LjApKTsKIAorLyohIEBhYnN0cmFjdCBBIEJvb2xlYW4gdmFsdWUg
aW5kaWNhdGluZyB3aGV0aGVyIGFueSByZXNvdXJjZSBvbiB0aGUgcGFnZQoraGFzIGJlZW4gbG9h
ZGVkIG92ZXIgYSBjb25uZWN0aW9uIHVzaW5nIFRMUyAxLjAgb3IgVExTIDEuMS4KK0BkaXNjdXNz
aW9uIEBsaW5rIFdLV2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBj
b21wbGlhbnQKK2ZvciB0aGlzIHByb3BlcnR5LgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCBfbmVnb3RpYXRlZExlZ2FjeVRMUyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvLyBGSVhNRTogUmVtb3ZlIHRoZXNl
IG9uY2Ugbm9ib2R5IGlzIHVzaW5nIHRoZW0uCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TRGF0YSAqX3Nlc3Npb25TdGF0ZURhdGE7CiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGE7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkocmV2aXNpb24gMjU1
NDYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
Q2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNl
Y3VyZUNvbnRlbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVD
b250ZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRM
UygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlTmVnb3RpYXRlZExlZ2FjeVRMUygpIG92
ZXJyaWRlOwogICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjU1NDYx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzIxLDYgKzEzMjEsMTYgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OmRpZENoYW5nZUhhc09ubHlTZQogICAgIFttX3dlYlZpZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6
QCJoYXNPbmx5U2VjdXJlQ29udGVudCJdOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6d2ls
bENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMoKQoreworICAgIFttX3dlYlZpZXcgd2lsbENoYW5n
ZVZhbHVlRm9yS2V5OkAiX25lZ290aWF0ZWRMZWdhY3lUTFMiXTsKK30KKwordm9pZCBOYXZpZ2F0
aW9uU3RhdGU6OmRpZENoYW5nZU5lZ290aWF0ZWRMZWdhY3lUTFMoKQoreworICAgIFttX3dlYlZp
ZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOworfQorCiB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6d2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkKIHsKICAg
ICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImVzdGltYXRlZFByb2dyZXNzIl07
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1NTQ2MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2OSw2ICszNjksMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZl
QXV0aAogICAgIH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCit7CisgICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gbnVsbHB0cjsKKyAgICBpZiAocGFnZUlEKQorICAgICAgICBwYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKHBhZ2UpCisgICAgICAgIHBh
Z2UtPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVE
YXRhJiB3ZWJzaXRlRGF0YSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcGVuZGluZ0ZldGNoV2Vi
c2l0ZURhdGFDYWxsYmFja3MuaXNWYWxpZEtleShjYWxsYmFja0lEKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAkocmV2aXNpb24gMjU1NDYxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsNyBAQCBw
cml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3
b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIGJvb2ws
IHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMoV2Vi
UGFnZVByb3h5SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2
NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1NTQ2MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gdG9wT3JpZ2luLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2Us
IGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgdWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgTmVn
b3RpYXRlZExlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQog
CiAgICAgRGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2Vi
S2l0OjpXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkKICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NDYxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMzEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgS1ZPIFNQSSBXS1dl
YlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzA2NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0
ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJl
Y2F0aW9uLm1tOgorICAgICAgICAoLVtUTFNPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
Om9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoLVtUTFNPYnNlcnZlciB3YWl0
VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF0pOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcuaDoKKwogMjAyMC0wMS0z
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBXS05hdmlnYXRpb25EZWxlZ2F0ZSBTUEkgdG8gZGlzYWJsZSBUTFMgMS4wIGFuZCAxLjEK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9jb25maWcuaAkocmV2aXNpb24gMjU1NDYwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDMgKzEyMiw3IEBACiAjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0
MDApIHx8IFBMQVRGT1JNKElPUykKICNkZWZpbmUgSEFWRV9ORVRXT1JLX0ZSQU1FV09SSyAxCiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTUwMCkKKyNkZWZpbmUgSEFWRV9UTFNfUFJP
VE9DT0xfVkVSU0lPTl9UIDEKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCShyZXZpc2lvbiAy
NTU0NjEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJl
Y2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywzMSBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dlYkNvcmVUaHJlYWQuaD4KICNlbmRpZgogCisjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVS
U0lPTl9UKQorQGludGVyZmFjZSBUTFNPYnNlcnZlciA6IE5TT2JqZWN0CistICh2b2lkKXdhaXRV
bnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
VExTT2JzZXJ2ZXIgeworICAgIGJvb2wgX25lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkOworfQor
CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9i
amVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZv
aWQgKiljb250ZXh0Cit7CisgICAgRVhQRUNUX1dLX1NUUkVRKGtleVBhdGgsICJfbmVnb3RpYXRl
ZExlZ2FjeVRMUyIpOworICAgIF9uZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZCA9IHRydWU7Cit9
CisKKy0gKHZvaWQpd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQKK3sKKyAgICBf
bmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAoIV9uZWdvdGlh
dGVkTGVnYWN5VExTQ2hhbmdlZCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1
bkxvb3AoKTsKK30KKworQGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgVExTTmF2aWdhdGlvbkRl
bGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogLSAodm9pZCl3YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbjsKIC0gKHZvaWQpd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb247CkBAIC0yMDIsNiArMjI3LDQzIEBAIFRFU1QoVExTVmVyc2lvbiwgRElTQUJMRURf
TmF2aWdhdGlvbkRlbGUKICAgICB9CiB9CiAKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9O
X1QpCitURVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRMZWdhY3lUTFMpCit7CisgICAgVENQU2Vy
dmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10gKFNTTCAqc3NsKSB7Cisg
ICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOworICAgICAgICBUQ1BTZXJ2ZXI6
OnJlc3BvbmRXaXRoT0soc3NsKTsKKyAgICB9LCB0bHMxXzEpOworCisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2Qs
IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNr
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7CisgICAgfV07CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHRO
UyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIu
Z2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIAorICAgIEVYUEVDVF9GQUxT
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFtvYnNlcnZlciB3YWl0VW50
aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
X25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKyAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRl
ZExlZ2FjeVRMU0NoYW5nZWRdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRl
ZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAg
W29ic2VydmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcg
cmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVn
YWN5VExTIl07Cit9CisjZW5kaWYKKwogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBXS1dl
YlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>