<?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>222546</bug_id>
          
          <creation_ts>2021-03-01 05:19:37 -0800</creation_ts>
          <short_desc>WebGL asserts after GPU process times out</short_desc>
          <delta_ts>2021-03-08 02:44:15 -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>WebGL</component>
          <version>Other</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>
          <dependson>222592</dependson>
    
    <dependson>222593</dependson>
          <blocked>217211</blocked>
    
    <blocked>220974</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1734381</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-01 05:19:37 -0800</bug_when>
    <thetext>WebGL asserts after GPU process times out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734778</commentid>
    <comment_count>1</comment_count>
      <attachid>421912</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-02 01:12:16 -0800</bug_when>
    <thetext>Created attachment 421912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734820</commentid>
    <comment_count>2</comment_count>
      <attachid>421927</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-02 06:10:40 -0800</bug_when>
    <thetext>Created attachment 421927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735830</commentid>
    <comment_count>3</comment_count>
      <attachid>422229</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-04 08:17:46 -0800</bug_when>
    <thetext>Created attachment 422229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735957</commentid>
    <comment_count>4</comment_count>
      <attachid>422267</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-04 11:46:18 -0800</bug_when>
    <thetext>Created attachment 422267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735960</commentid>
    <comment_count>5</comment_count>
      <attachid>422269</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-04 12:03:43 -0800</bug_when>
    <thetext>Created attachment 422269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736563</commentid>
    <comment_count>6</comment_count>
      <attachid>422269</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-05 14:43:37 -0800</bug_when>
    <thetext>Comment on attachment 422269
Patch

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

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:-364
&gt; -    bool found = m_remoteGraphicsContextGLMap.remove(graphicsContextGLIdentifier);
&gt; -    ASSERT_UNUSED(found, found);

Not new to this patch, but I wonder if we ought to `MESSAGE_CHECK` the incoming `graphicsContextGLIdentifier`. (The same comment seems to apply to `RemoteRenderingBackend` as well).

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:369
&gt; +    releaseGraphicsContextGL(identifier);

(Ditto)

&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:265
&gt; +            if (auto connectionToWeb = gpuConnectionToWebProcess.get())

`if (auto connectionToWeb = makeRefPtr(gpuConnectionToWebProcess.get()))`?

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:174
&gt; +    // Since the value is trusted, we only assert.
&gt; +    ASSERT(clientLimit != ClientLimit::clientIsWaitingTag);

This seems like a good opportunity for a MESSAGE_CHECK as well.

&gt; Source/WebKit/Platform/IPC/StreamServerConnection.cpp:129
&gt; +    return std::min(limit, dataSize() - 1);

It seems like this could be made more robust to underflow (i.e. the `dataSize() - 1`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737006</commentid>
    <comment_count>7</comment_count>
      <attachid>422269</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-08 02:09:07 -0800</bug_when>
    <thetext>Comment on attachment 422269
Patch

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

Thanks for spending the time!

&gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:-364
&gt;&gt; -    ASSERT_UNUSED(found, found);
&gt; 
&gt; Not new to this patch, but I wonder if we ought to `MESSAGE_CHECK` the incoming `graphicsContextGLIdentifier`. (The same comment seems to apply to `RemoteRenderingBackend` as well).

Not really.
(In the current design) There are cases where the sender of ReleaseGraphicsContextGL cannot know if the receiver exists. Also, the sender does not care. It is a release operation.
From the receiver perspective, the receiver treats all unknown identifiers as such: the underlying objects were already discarded. 

So if we send:
CreateGraphicsContextGL 1
DrawSomething 1
ReleaseGraphicsContextGL 1


We know DrawSomething can cause context lost.

In the current implementation of losing context, we discard the context immediately when context lost happens.

In the current implementation of the communication, by definition, if we receive a message to unknown object, it is a message to already discarded context.

It these scenarios unknown object is a valid thing, and should not assert, cause errors or anything out of ordinary.

&gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:369
&gt;&gt; +    releaseGraphicsContextGL(identifier);
&gt; 
&gt; (Ditto)

Same as above.
So this one is called when we want to test timeout.

If we send:

CreateGraphicsContextGL 1
DrawSomething 1
SimulateEventForTesting 1, Timeout
ReleaseGraphicsContextGL 1

So we in general cannot assume that 
&quot;DrawSomething&quot; did not cause context lost.

In current implementation of losing context,:
If the command DrawSomething caused context lost, SimulateEventForTesting 1, Timeout is still a valid message -- it is just discarded. It is not a message that should assert, cause error printout or stand out in any way.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:265
&gt;&gt; +            if (auto connectionToWeb = gpuConnectionToWebProcess.get())
&gt; 
&gt; `if (auto connectionToWeb = makeRefPtr(gpuConnectionToWebProcess.get()))`?

No, RemoteGraphicsContextGL does not take an owning reference to gpuConnectionToWebProcess.
Maybe expand what did you have in mind?

&gt;&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:174
&gt;&gt; +    ASSERT(clientLimit != ClientLimit::clientIsWaitingTag);
&gt; 
&gt; This seems like a good opportunity for a MESSAGE_CHECK as well.

No. If I understand correctly, &quot;MESSAGE_CHECK&quot; is a macro to check some property of IPC protocol in the shared data.

This is just a normal assertion asserting:
 Caller called tryAcquire
 The call timed out
 Caller called tryAcquire again, even though this is not defined since the previous call timed out.

Even though it loads the shared variable, the variable is the variable *this part of the code* modifies.
Since here the other part is trusted and since the other part never writes this value asserted here, it is not something MESSAGE_CHECK should check -- it&apos;s not a communication protocol error.

So this is like saying 
void myFunc() {
    ASSERT(!m_didTimeout);
    m_didTimeout = true;
}

&gt;&gt; Source/WebKit/Platform/IPC/StreamServerConnection.cpp:129
&gt;&gt; +    return std::min(limit, dataSize() - 1);
&gt; 
&gt; It seems like this could be made more robust to underflow (i.e. the `dataSize() - 1`).

Did not get this one, could you expand?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737014</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-08 02:43:13 -0800</bug_when>
    <thetext>Committed r274066: &lt;https://commits.webkit.org/r274066&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422269.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737017</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-08 02:44:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/75163452&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421912</attachid>
            <date>2021-03-02 01:12:16 -0800</date>
            <delta_ts>2021-03-02 06:10:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222546-20210302111214.patch</filename>
            <type>text/plain</type>
            <size>65072</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI4MDVhOTUxYzM0YzBk
NTQzZWZkZjVmNDQ3OTUxNTBlOWIyODkxYy4uMWRmZmRjZTc1ZGY1ZGNiZTk0NzM0NDAyOTRhMTNj
YzUxNDJkZDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTAxICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgYXNzZXJ0
cyBhZnRlciBHUFUgcHJvY2VzcyB0aW1lcyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJbnRlcm5hbHMgZmVhdHVyZSB0byB0ZXN0IFdlYkdM
IGNvbnRleHQgY2FsbAorICAgICAgICB0aW1lb3V0LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nh
bnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5odG1sCisKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlRXZlbnRGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNp
bXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCisgICAgICAgIEltcGxlbWVu
dCB0aGUgZmVhdHVyZSBieSByZXBsYWNpbmcKKyAgICAgICAgICAgIEludGVybmFscy5zZXRGYWls
TmV4dEdQVVN0YXR1c0NoZWNrKCkKKyAgICAgICAgICAgIEludGVybmFscy5zaW11bGF0ZUNvbnRl
eHRDaGFuZ2VkKCkKKyAgICAgICAgd2l0aAorICAgICAgICAgICAgSW50ZXJuYWxzLnNpbXVsYXRl
RXZlbnRGb3JXZWJHTENvbnRleHQoRE9NU3RyaW5nIGV2ZW50TmFtZSwgV2ViR0xSZW5kZXJpbmdD
b250ZXh0KQorICAgICAgICB3aXRoIGV2ZW50TmFtZSB0YWtpbmcgaW52ZW50ZWQgZXZlbnRzIHRo
YXQgY2FuIGhhcHBlbiB0byBhCisgICAgICAgIHdlYmdsIGNvbnRleHQ6CisgICAgICAgICAic2V0
ZmFpbG5leHRncHVzdGF0dXNjaGVjayIsICJjb250ZXh0Y2hhbmdlZCIsICJ0aW1lb3V0Ii4KKyAg
ICAgICAgVGhlIEludGVybmFscyBmdW5jdGlvbiBuYW1lIHdhcyBjaG9zZW4gbm90IHRvIGNvbnRh
aW4gIkZvclRlc3RpbmciIHN1ZmZpeCwgYXMKKyAgICAgICAgYWxsIHRoZSBmdW5jdGlvbnMgaW4g
dGhlIGNsYXNzIHNob3VsZCBoYXZlIHRoYXQgc3VmZml4LgorICAgICAgICBUaGUgZnVuY3Rpb24g
bmFtZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uIHBhdGggZm9yIHRoZSBmZWF0dXJlIGNvbnRhaW5z
CisgICAgICAgICJGb3JUZXN0aW5nIiBpbiBvcmRlciB0byBoaWdobGlnaHQgdGhlIGZlYXR1cmUg
bm90IGJlaW5nIGluIHRoZSBub3JtYWwKKyAgICAgICAgcGF0aC4KKwogMjAyMS0wMi0yOCAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29uc2lkZXIgcmVtb3Zpbmcg
aU9TIG9ubHkgQ1NTIHByb3BlcnR5IGFsaWFzIC13ZWJraXQtaHlwaGVuYXRlLWxvY2FsZSBpbnRy
b2R1Y2VkIGluIHI4MDI4OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOTE0MjIwMGY4NmYwOWVkZWVjNWQzMTNkNWY0
YTRhYzc5NzE4OWM2Li4wZmM0M2U3MzdkMjFhZjRiYzBmMjFkNmI0YmUyMTcwNjdjNmMwMTVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAyMS0wMy0wMSAgS2ltbW8gS2lubnVuZW4gIDxr
a2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIGFzc2VydHMgYWZ0ZXIgR1BVIHBy
b2Nlc3MgdGltZXMgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUgd291bGQgYXNz
ZXJ0IG9uIGVxdWl2YWxlbnQgb2YKKyAgICAgICAgICAgIEFTU0VSVChjbGllbnRMaW1pdCAhPSBD
bGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnKTsKKyAgICAgICAgaW4gY2FzZSBvZiB0aW1l
b3V0LiBUaGlzIHdvdWxkIGhhcHBlbiBiZWNhdXNlIHRoZSBjbGllbnQgaXRzZWxmIHdvdWxkCisg
ICAgICAgIGZpcnN0IHdyaXRlIHRoZSB2YWx1ZSB0byB0aGUgb2Zmc2V0IHZhcmlhYmxlLCB3YWl0
IGFuZCB0aGVuIHJ1biB0aGUKKyAgICAgICAgbmV4dCBpdGVyYXRpb24gb2YgdGhlIGFjcXVpcmUg
bG9vcC4KKworICAgICAgICBGaXggdGhpcyBieSB0YWtpbmcgaXQgaW50byBhY2NvdW50IHRoYXQg
dGhlIHZhcmlhYmxlIG1pZ2h0IGJlCisgICAgICAgIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRp
bmdUYWcgd2l0aGluIHRoZSBhY3F1aXJlIGxvb3AuCisKKyAgICAgICAgUG9zc2libHkgZml4IGZ1
dHVyZSBzaW1pbGFyIHByb2JsZW1zIGJ5IG5vdCB0cmVhdGluZyB0aGUgdmFsdWUgYXMKKyAgICAg
ICAgc2l6ZV90LCByYXRoZXIgdHJlYXQgaXQgYXMgZW51bSBjbGFzcyBDbGllbnRPZmZzZXQgOiBz
aXplX3QuIFRoaXMKKyAgICAgICAgZW5hYmxlcyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgdGhhdCB3
aGVuIGNoZWNraW5nIGZvciB0aGUgdmFyaW91cyB0YWcKKyAgICAgICAgdmFsdWVzLCB0aGUgaG9s
ZGVyIG11c3QgaG9sZCB0aGUgZW51bSBjbGFzcy4gV2hlbiBpbnRlbmRpbmcgdG8gSW50ZXJwcmV0
CisgICAgICAgIHRoZSB2YWx1ZSBhcyBzaXplX3QsIGhvbGRlciBtdXN0IGV4cGxpY2l0bHkgY29u
dmVydC4KKworICAgICAgICBEbyB0aGUgc2FtZSBjaGFuZ2UgZm9yIHRoZSBTZXJ2ZXJPZmZzZXQu
CisKKyAgICAgICAgQ2hhbmdlIHRoZSBub21lbmNsYXR1cmUgZnJvbSAic2VuZGVyIiBhbmQgInJl
Y2VpdmVyIiB0byAiY2xpZW50IiBhbmQgInNlcnZlciIuCisgICAgICAgIFRoaXMgY2hhbmdlIHdh
cyBhbHJlYWR5IGRvbmUgaW4gdGhlIGluaXRpYWwgY29tbWl0LCBidXQgdGhlIGluY29uc2lzdGVu
dCB1c2UKKyAgICAgICAgb2YgY2xpZW50L3NlbmRlciBhbmQgc2VydmVyL3JlY2VpdmVyIHdhcyBz
dGlsbCBsZWZ0LiBDaGFuZ2VkIG5vdyBhcyB0aGlzCisgICAgICAgIGFkZHMgdGhlIHR5cGVzIENs
aWVudE9mZnNldCAvIFNlcnZlck9mZnNldC4KKworICAgICAgICBUZXN0czogZmFzdC9jYW52YXMv
d2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbAorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdM
KToKKyAgICAgICAgRG8gbm90IGFzc2VydCB0aGF0IHRoZSByZWxlYXNlIG1lc3NhZ2UgYWN0dWFs
bHkgcmVsZWFzZXMgdGhlIGNvbnRleHQuCisgICAgICAgIEZvciB0ZXN0aW5nLCB0aGUgaW5kdWNl
IHRoZSB0aW1lb3V0IGJ5IHJlbGVhc2luZyB0aGUgY29udGV4dCBwcmVtYXR1cmVseQorICAgICAg
ICBhbmQgdHJlYXRpbmcgdGhlIHN1YnNlcXVlbnQgbWVzc2FnZXMgYXMgaWYgdGhleSB3ZXJlIG5v
bi1sZWdpdCBtZXNzYWdlcy4KKyAgICAgICAgVGhhdCBzaG91bGQgYmUganVzdCBza2lwcGVkLgor
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTEZvclRlc3RpbmcpOgorICAgICAgICBBZGQgYSBwdWJsaWMgZnVuY3Rpb24g
dG8gaW52b2tlIGZyb20gIkZvclRlc3RpbmciIGNvZGVwYXRocy4KKworICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToK
KyAgICAgICAgU2tpcCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBtZXNzYWdlcyB0aGF0IGRvIG5v
dCBnZXQgcm91dGVkIHRvIGFueQorICAgICAgICBpbnN0YW5jZS4gVGhlc2UgbWVzc2FnZXMgY2Fu
IGJlICJub24tbGVnaXQiLCBvbmVzIHRoYXQgYXJlIHNlbnQgYmVmb3JlCisgICAgICAgIHRoZSAi
Y29udGV4dCB3YXMgbG9zdCIgbWVzc2FnZSByZWFjaGVkIHRoZSBzZW5kZXIsIG9yIG9uZXMgdGhh
dCBhcmUKKyAgICAgICAgc2VudCBkdXJpbmcgc2ltdWxhdGVkIHRpbWVvdXQuCisgICAgICAgIFRo
ZXNlIGRvIG5vdCBjb250YWluIGFzc2VydHMgYXMgaXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGVzZSB3
aWxsIG9jY3VyIGluCisgICAgICAgIGFib3ZlIHNpdHVhdGlvbnMuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIEFkZCB0aGUgc2ltdWxhdGVFdmVudEZv
clRlc3RpbmcgZnVuY3Rpb24gdG8gc2ltdWxhdGUgdGhlCisgICAgICAgIHRpbWVvdXQuIFNpbXVs
YXRlIHZpYSBqdXN0IHJlbW92aW5nIHRoZSBjb250ZXh0LCB3aGljaCBjYXVzZXMKKyAgICAgICAg
bGVmdC1vdmVyIG1lc3NhZ2VzIHRvIHNraXBwZWQuCisgICAgICAgIEN1cnJlbnRseSB3ZSBkbyBu
b3Qgc2ltdWxhdGUgdGhlIHRpbWVvdXQgd2l0aCBhbiBpbmZpbml0ZSBsb29wCisgICAgICAgIGlu
IEdQVSBwcm9jZXNzIHRocmVhZHMgYXMgdGhhdCBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBD
dXJyZW50bHkgd2UgZG8gbm90IHNpbXVsYXRlIHRoZSB0aW1lb3V0IHdpdGggYSBncHUgcHJvY2Vz
cworICAgICAgICBjcmFzaCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIHRvIGJlIHRlc3RlZCAo
d2lsbCBjYXVzZSBhCisgICAgICAgIHJlbG9hZCkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6cmVsZWFzZSk6CisgICAgICAgIFJlbmFtZSBzZW5kZXIgLT4gY2xpZW50CisgICAgICAgIFJl
bmFtZSByZWNlaXZlciAtPiBzZXJ2ZXIKKyAgICAgICAgQ2hhbmdlIHNpemVfdCB1c2FnZSB0byAt
PiBDbGllbnRPZmZzZXQsIFNlcnZlck9mZnNldAorCisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OnRyeUFjcXVpcmUpOgorICAgICAgICBGaXggdGhlIGFzc2VydGlvbiBvZiBl
cXVpdmFsZW50IG9mIEFTU0VSVChjbGllbnRMaW1pdCAhPSBDbGllbnRMaW1pdDo6Y2xpZW50SXNX
YWl0aW5nVGFnKTsKKyAgICAgICAgYnkgcmVvcmdhbml6aW5nIHRoZSBhY3F1aXJlIGxvb3AuCisK
KyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dG9MaW1pdCBjb25zdCk6Cisg
ICAgICAgIEZpeCB0aGUgb2ZmLWJ5LW9uZSBpbiBhc3NlcnRpb24gZXJyb3IKKyAgICAgICAgKCA8
IGRhdGFTaXplKCkgLSAxICB2cyA8PSBkYXRhU2l6ZSgpIC0gMSkKKyAgICAgICAgUmVuYW1lIGZy
b20gY2xhbXBlZExpbWl0IHRvIHRvTGltaXQoKSwgYXMgdGhlCisgICAgICAgIGNsYW1waW5nIGlz
IGNvbmZ1c2luZyBhcyB0aGUgQ2xpZW50IHRydXN0cyB0aGUKKyAgICAgICAgU2VydmVyLgorCisg
ICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOgorICAgICAgICAoSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXQpOgorICAgICAgICAoSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXQpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpjbGllbnRXYWl0U2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6bWF4aW11bVNpemUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnRyeUFxdWlyZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpyZWxlYXNlKToKKyAgICAgICAgUmVuYW1lIHNlbmRlciAtPiBjbGllbnQK
KyAgICAgICAgUmVuYW1lIHJlY2VpdmVyIC0+IHNlcnZlcgorICAgICAgICBDaGFuZ2Ugc2l6ZV90
IHVzYWdlIHRvIC0+IENsaWVudE9mZnNldCwgU2VydmVyT2Zmc2V0CisKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdCBjb25zdCk6CisgICAgICAg
IEZpeCB0aGUgb2ZmLWJ5LW9uZSBpbiBhc3NlcnRpb24gZXJyb3IKKyAgICAgICAgKCA8IGRhdGFT
aXplKCkgLSAxICB2cyA8PSBkYXRhU2l6ZSgpIC0gMSkKKworICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpzaGFyZWRTZXJ2ZXJMaW1pdCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRTZXJ2ZXJPZmZzZXQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xF
cnJvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEVycm9yKToKKyAgICAgICAgQ2FsbCB0aGUgbWFya0NvbnRleHRMb3N0KCkgaW5zdGVhZCBvZiB3
YXNMb3N0KCkgdG8gY2xhcmlmeQorICAgICAgICBhbGwgdGhlIGNvbnRleHQgbG9zdCBoYW5kbGlu
ZyB0byB1c2UgdGhlIHNhbWUgcGF0dGVybi4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOgorCiAyMDIxLTAyLTI2ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGltZW91dCBjYWxjdWxhdGlvbnMg
YXJlIGVycm9yLXByb25lIGZvciBjb21wb3VuZCBJUEMgb3BlcmF0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAppbmRleCAwOTExYWI2ZGUxZjY3ZDY2ZjE3NTU0ZGUxNmJkNTI4NjRlOGMwM2E5Li5iMjM5YzFl
ZWU0NTgyYTg0NDRjOTdkZTZmYTg3MmMzODVlMzQ2MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAt
NzU2MCwxMCArNzU2MCwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJl
UmVzdG9yZUNvbnRleHQoKQogICAgIGNhbnZhcy0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRyZXN0b3JlZEV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBlbXB0eVN0cmluZygp
KSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVDb250ZXh0
Q2hhbmdlZCgpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlRXZlbnRG
b3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQogewogICAgIGlmIChtX2NvbnRleHQp
Ci0gICAgICAgIG1fY29udGV4dC0+c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpOworICAgICAgICBt
X2NvbnRleHQtPnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKGV2ZW50TmFtZSk7CiB9CiAKIFN0cmlu
ZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbnN1cmVOb3ROdWxsKGNvbnN0IFN0cmluZyYg
dGV4dCkgY29uc3QKQEAgLTc4OTUsMTQgKzc4OTUsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OgogICAgICAgICBtX2NvbnRleHQtPnNldENvbnRleHRWaXNpYmlsaXR5KG5ld0FjdGl2aXR5U3Rh
dGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSk7CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCi17Ci0gICAg
aWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+c2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpOwotfQotCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmRpZENvbXBvc2l0ZSgpCiB7CiAgICAgbV9jb21wb3NpdGluZ1Jlc3VsdHNOZWVkVXBkYXRp
bmcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCA5ZDg2MjcxMWU0MTg4ZjEwZWUzNjUwMzUzNjZj
NmM2Nzk1ODk0YTdiLi5kM2E0NDhmMmQxNGJiODUyOWFhYjU4MDVkYThkYjNmYjM3Y2NhMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCkBAIC0zNzgsNyArMzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yY2VM
b3N0Q29udGV4dChMb3N0Q29udGV4dE1vZGUpOwogICAgIHZvaWQgZm9yY2VSZXN0b3JlQ29udGV4
dCgpOwogICAgIHZvaWQgbG9zZUNvbnRleHRJbXBsKExvc3RDb250ZXh0TW9kZSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIAogICAg
IEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQpAQCAtNDAyLDkgKzQwMiw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcik7CiAKLSAgICAvLyBVc2VkIGZvciB0ZXN0aW5nIG9ubHksIGZy
b20gSW50ZXJuYWxzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0
dXNDaGVjaygpOwotCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudAogICAgIHZvaWQg
ZGlkQ29tcG9zaXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAppbmRleCAwYmNkZjljMGZlYjBhMjk1MWE1MjBlYWIzZDNlMmRjN2RmNDU2
NTI5Li5iZWRhYjM3Y2RlN2NiZDM0YmU1NzllNmFiN2ZjZjQ2NjhiNmE3NmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgK
QEAgLTEyNzUsOCArMTI3NSw2IEBAIHB1YmxpYzoKICAgICAvLyBlcnJvciBsaXN0LiBSZXR1cm4g
dHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJyb3IgaXMgbW92ZWQuCiAgICAgdmlydHVhbCBib29sIG1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVGb3JEaXNwbGF5KCkgPSAwOwogCiAgICAgLy8gRklYTUU6IHNob3VsZCBiZSByZW1vdmVkLCBj
YWxsZXIgc2hvdWxkIGtlZXAgdHJhY2sgb2YgY2hhbmdlZCBzdGF0ZS4KQEAgLTEzMDEsNyArMTI5
OSw3IEBAIHB1YmxpYzoKICAgICAvLyBvbiB0aGUgY29udGVudC4KICAgICB2aXJ0dWFsIHZvaWQg
bWFya0xheWVyQ29tcG9zaXRlZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVz
dGluZyhjb25zdCBTdHJpbmcmKSA9IDA7CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZP
VU5EQVRJT04pCiAgICAgLy8gUmV0dXJucyBpbnRlcmZhY2UgZm9yIENWIGludGVyYWN0aW9uIGlm
IHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5tbQppbmRleCA4NDJmYjVmYWRhMTA0YzkwNzIzOTM4MDNhNDU5MmNjYTJh
YWVjYTllLi45OThjMjAzZjAxOGU1ODEyN2I4YTVmMDFiNGJmZjA2YzI3MzcxMWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTU2OSw5ICs1NjksMTIg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faXNGb3JXZWJHTDI7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlz
cGxheVdhc1JlY29uZmlndXJlZCgpOworICAgIGlmIChldmVudE5hbWUgPT0gImNvbnRleHRjaGFu
Z2VkIikKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkuZGlzcGxheVdhc1JlY29uZmlndXJlZCgpOworICAgIGVsc2UgaWYgKGV2ZW50TmFtZSA9
PSAiZmFpbG5leHRncHVzdGF0dXNjaGVjayIpCisgICAgICAgIG1fZmFpbE5leHRTdGF0dXNDaGVj
ayA9IHRydWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JE
aXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNiZDY1
OTExOTMyNTFkZDE3ZDFmYjA0ZDVjMDRhZmViOTdiMzllZmYuLjc1YmMwMzFmYmU3MThiYjJmZWE4
ZTkyOTlkZDJhMTNkZWIwMWU1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtMTkyLDggKzE5MiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpz
ZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQog
eworICAgIGlmIChldmVudE5hbWUgPT0gImZhaWxuZXh0Z3B1c3RhdHVzY2hlY2siKQorICAgICAg
ICBtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sgPSB0cnVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGFiYzM4MGM3M2NhMzkwZmE5N2U2YTRkNDVjZWQyZTJmZDJkMmVjNTcuLmRk
OTdiYjkxNDk3NWM5OTVlNDMwNzZkZDM5MTFhNTg3NjczOGE5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC00NTcsNyArNDU3LDYgQEAgcHVibGljOgogICAgIHZvaWQg
ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNo
Q29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKLSAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENo
YW5nZWQoKSBmaW5hbDsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFsOwpAQCAtNTA3LDcgKzUwNiw3IEBAIHB1YmxpYzoK
ICAgICBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSBmaW5hbDsKICNlbmRpZgogCi0gICAg
dm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWwgeyBtX2ZhaWxOZXh0U3RhdHVz
Q2hlY2sgPSB0cnVlOyB9CisgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlU2VlZChH
Q0dMdWludCB0ZXh0dXJlKSB7IHJldHVybiBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuY291bnQo
dGV4dHVyZSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDE0YWI3
OGUyZjM0OTY5NzdmNTU0ZTIyMjMwOWQ0ZjdhMDA4ZmEwYTUuLjUyM2I5NGIwMDY3NDI2MWY0YjE3
MzdjMWViOTFlZWQxODg2YjY4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTUwOTIsMTQgKzUwOTIsOSBAQCB2b2lkIEludGVybmFsczo6c2V0QXBwbGVQYXlJc0FjdGl2
ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLXZvaWQg
SW50ZXJuYWxzOjpzaW11bGF0ZVdlYkdMQ29udGV4dENoYW5nZWQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0JiBjb250ZXh0KQordm9pZCBJbnRlcm5hbHM6OnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRl
eHQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKIHsKLSAgICBjb250ZXh0LnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKTsKLX0KLQotdm9pZCBJ
bnRlcm5hbHM6OmZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0KQotewotICAgIGNvbnRleHQuc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpOworICAg
IGNvbnRleHQuc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoZXZlbnROYW1lKTsKIH0KIAogYm9vbCBJ
bnRlcm5hbHM6Omhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggYjM4ZWM0NDM1N2Y1YzQxNzJmZGM1MjcxMTY1NmIwZTliNDEzMmY3Yi4uYzE4
YmUwZGQ3OGJkM2U4MTU2NGFhYmJmYTM1MGI1Y2I1YTI5YmRkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC03NzIsOCArNzcyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCR0wpCi0gICAgdm9pZCBzaW11bGF0ZVdlYkdMQ29udGV4dENoYW5nZWQoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgdm9pZCBmYWlsTmV4dEdQVVN0YXR1c0NoZWNrKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCYpOworICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4
dChjb25zdCBTdHJpbmcmLCBXZWJHTFJlbmRlcmluZ0NvbnRleHQmKTsKICAgICBib29sIGhhc0xv
d0FuZEhpZ2hQb3dlckdQVXMoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKaW5kZXggYzJiMWRkZDYzZTNmYjU3MzI2YmQwZmNlNmVmMzE5MTA1NzE5YmUzMS4uYmY2
NDg3NzA4Y2Y0YTliMjM3M2UxZGQ2MWZjYTU2ZWZjNTRkODI5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbApAQCAtNzkxLDggKzc5MSw3IEBAIGVudW0gVHJlZVR5cGUgewogICAg
IHVuZGVmaW5lZCBkaXNhYmxlVGlsZVNpemVVcGRhdGVEZWxheSgpOwogICAgIHVuZGVmaW5lZCBz
ZXRTcGVjdWxhdGl2ZVRpbGluZ0RlbGF5RGlzYWJsZWRGb3JUZXN0aW5nKGJvb2xlYW4gZGlzYWJs
ZWQpOwogCi0gICAgW0NvbmRpdGlvbmFsPVdFQkdMXSB1bmRlZmluZWQgc2ltdWxhdGVXZWJHTENv
bnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dCBjb250ZXh0KTsKLSAgICBbQ29uZGl0
aW9uYWw9V0VCR0xdIHVuZGVmaW5lZCBmYWlsTmV4dEdQVVN0YXR1c0NoZWNrKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCBjb250ZXh0KTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCR0xdIHVuZGVmaW5lZCBz
aW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KERPTVN0cmluZyBldmVudE5hbWUsIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCBjb250ZXh0KTsKICAgICBbQ29uZGl0aW9uYWw9V0VCR0xdIGJvb2xlYW4g
aGFzTG93QW5kSGlnaFBvd2VyR1BVcygpOwogCiAgICAgdW5kZWZpbmVkIHNldFBhZ2VWaXNpYmls
aXR5KGJvb2xlYW4gaXNWaXNpYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjMzk5ZDZiZmMyY2Y4NDNi
MGM0ZWQzMzdlNDc1MTBmODlhYzhiY2M0Li45MDQ3MGVkMGUxYzdkN2IwNDk2MTk2MWRhNmIwZWUw
MjFmZjczODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVk
aWFPdmVycmlkZXNGb3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9IYXJkd2FyZUxp
c3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oIgpAQCAtMzYwLDEwICszNjEsMTUgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcikKIHsKLSAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5y
ZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJlbGVhc2VHcmFwaGlj
c0NvbnRleHRHTChpZGVudGlmaWVyKTsKIH0KICNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5u
b3dQbGF5aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpAQCAt
NTQ1LDYgKzU1MSwxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNo
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9y
IGFscmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyNlbmRpZgogCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KQEAgLTYwNCw3ICs2MTYsMTMgQEAgYm9vbCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCi0KKyNp
ZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CisgICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFscmVhZHkgcmVtb3ZlZCByZWNlaXZl
cnMuCisgICAgICAgIHJlcGx5RW5jb2Rlci5yZXNldCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAppbmRleCAyYWZiZWFhNGRiYjgzMmIwNjJiMzQ0OGY2ZGU0OTlmOGVjMWZhMzFlLi42NDdiZDAz
NjEyNjc3Zjg4MmExM2YwZDAyZGNkYjkxZTUzNmM4Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEyOCw3ICsx
MjgsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2Vzcygp
OwotCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdM
Rm9yVGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCiBwcml2YXRl
OgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklELCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwCmluZGV4IGM1YzdkZWFkMjZlZTdmYTRlNGYxZTRkZGY3NDFjMzViYzYyZmRlZmYu
LjA3YjliNWQwYzI5Y2JlZjhhMjFhOTY0YTQ4YzFmNmY4ZTJjZjUyODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcApAQCAtMjU1LDYgKzI1NSwyMCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZp
ZQogI2VuZGlmCiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnNpbXVsYXRlRXZl
bnRGb3JUZXN0aW5nKFN0cmluZyYmIGV2ZW50TmFtZSkKK3sKKyAgICAvLyBGSVhNRTogb25seSBy
dW4gdGhpcyBpbiB0ZXN0aW5nIG1vZGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI1NDQKKyAgICBpZiAoZXZlbnROYW1lID09ICJ0aW1lb3V0IikgeworICAgICAg
ICAvLyBTaW11bGF0ZSB0aGUgdGltZW91dCBieSBqdXN0IGRpc2NhcmRpbmcgdGhlIGNvbnRleHQu
IFRoZSBzdWJzZXF1ZW50IG1lc3NhZ2VzIGFjdCBsaWtlCisgICAgICAgIC8vIHVuYXV0aG9yaXpl
ZCBvciBvbGQgbWVzc2FnZXMgZnJvbSBXZWIgcHJvY2VzcywgdGhleSBhcmUgc2tpcHBlZC4KKyAg
ICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIgPSBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcl0oKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uVG9XZWIgPSBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b25Ub1dlYi0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhpZGVudGlmaWVyKTsK
KyAgICAgICAgfSk7CisgICAgfQorICAgIG1fY29udGV4dC0+c2ltdWxhdGVFdmVudEZvclRlc3Rp
bmcoZXZlbnROYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaAppbmRleCAyYmI3NGFhY2IwNzlhMDQwZjk4YWU4Y2JmNWJmYTc3NDg0
ZjFmNTU3Li41MzY2ZDg0OWYxZjQ2ZjJiNzkwOTUzNmFlZmE5NjlkNjdkODA3ZTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaApAQCAtOTIsNiArOTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY29weVRleHR1cmVG
cm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJl
LCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBz
aW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTdHJpbmcmJiBldmVudE5hbWUpOwogCiAjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9MSU5UCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA3NDIxYWIwMTlk
MTFjNTI1NGNkOTIyNDQzNGNiMTM0OTQxOWNjZTVlLi5jNWY3MjcyOTZlMTA0MGMzMjZmMzU3MGQ0
ZjEzOTg5NGVjNDAxMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCkBAIC0zOSw4ICszOSw4IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikg
LT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgp
IFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRp
YVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3Qg
dGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3Qg
Zm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
IC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9y
VGVzdGluZyhTdHJpbmcgZXZlbnROYW1lKQogCi0gICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1
c0NoZWNrKCkKICAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgQWN0aXZlVGV4dHVyZSh1aW50
MzJfdCB0ZXh0dXJlKQogICAgIHZvaWQgQXR0YWNoU2hhZGVyKHVpbnQzMl90IHByb2dyYW0sIHVp
bnQzMl90IHNoYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmgKaW5kZXggZTBkOTI5ZGE0Yjc3YjRlMzA5NzhlZTBhMWM2OWFlZGUyZmE4
NTM2Zi4uZGI0ZmJhNTQ2ZDI4NzBlYjA4ZjkxODNlMTkzYTVlMWI0OGJmNjg3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTI1
LDEwICsyNSw2IEBACiAvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwcml2
YXRlIHNlY3Rpb24gb2YgdGhlCiAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbXBsZW1lbnRh
dGlvbnMuCiAjcHJhZ21hIG9uY2UKLSAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2so
KQotICAgIHsKLSAgICAgICAgbV9jb250ZXh0LT5zZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCk7
Ci0gICAgfQogICAgIHZvaWQgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBiNGY1Y2RmMDA4ZTVhN2Yy
ZDJmMTAyYTIzNWMzYzIyNTE3MzM3NmVhLi4xNzMxNDg1N2YwNWEyMjYzMmFlMGU4YzM3MjllYmMw
YThiZWVkNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1DbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzMsOSArMzMsOSBAQCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNp
emVfdCBzaQogICAgICwgbV9idWZmZXIoc2l6ZSkKIHsKICAgICAvLyBSZWFkIHN0YXJ0cyBmcm9t
IDAgd2l0aCBsaW1pdCBvZiAwIGFuZCByZWFkZXIgc2xlZXBpbmcuCi0gICAgc2hhcmVkU2VuZGVy
T2Zmc2V0KCkuc3RvcmUoU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2
ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICBzaGFyZWRD
bGllbnRPZmZzZXQoKS5zdG9yZShDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcsIHN0
ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0
aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBidWZmZXIuCi0gICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQo
KS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICBzaGFyZWRDbGllbnRM
aW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PENsaWVudExpbWl0PigwKSwgc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7CiB9CiAKIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVw
U2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDAyODNmMjY2
OWQwMTU2OGNiNzZjODkxZTUyMDU3NmFjMGNlYjU4YmEuLmRhZmFmN2Q3NGQ0YjBhZjNiN2RmMGU4
Y2MwYjYxZjBiNGFkOTc2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTM2LDEzICszNiwxMiBAQAogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KIG5hbWVzcGFjZSBJUEMgewogCi0vLyBBIG1lc3NhZ2Ugc3RyZWFt
IGlzIGEgaGFsZi1kdXBsZXggdHdvLXdheSBzdHJlYW0gb2YgbWVzc2FnZXMgdG8gYSBiZXR3ZWVu
IGEgc2VuZGVyIGFuZCB0aGUKLS8vIGRlc3RpbmF0aW9uIHJlY2VpdmVyLgorLy8gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbiByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gc3RyZWFtIGNs
aWVudCBhbmQgc2VydmVyLCBhcyB1c2VkIGJ5IHRoZSBjbGllbnQuCiAvLwogLy8gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91cyBy
ZXBsaWVzCiAvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6OkNv
bm5lY3Rpb24uCiAvLwotLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBt
ZXNzYWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUg
c2VydmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlv
biBtZXNzYWdlc18uCiAvLyBUaGUgd2hvbGUgSVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIg
aXMgbm90IHByZXNlcnZlZC4KIC8vCiAvLyBUaGUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiB0cnVz
dHMgdGhlIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uCkBAIC04MCwxOSArNzksMjEgQEAgcHJpdmF0
ZToKIAogICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsK
ICAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwotICAgIHNpemVf
dCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKIAogICAgIHNpemVf
dCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBP
ZmZzZXQob2Zmc2V0KTsgfQogICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5hbGlnbk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZz
ZXQsIG1pbmltdW1NZXNzYWdlU2l6ZSk7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkU2Vu
ZGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2VuZGVyT2Zmc2V0KCk7IH0KLSAgICBBdG9t
aWM8c2l6ZV90PiYgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5yZWNl
aXZlck9mZnNldCgpOyB9CisgICAgdXNpbmcgQ2xpZW50T2Zmc2V0ID0gU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6Q2xpZW50T2Zmc2V0OworICAgIEF0b21pYzxDbGllbnRPZmZzZXQ+JiBzaGFyZWRD
bGllbnRPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5jbGllbnRPZmZzZXQoKTsgfQorICAgIHVz
aW5nIENsaWVudExpbWl0ID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U2VydmVyT2Zmc2V0Owor
ICAgIEF0b21pYzxDbGllbnRMaW1pdD4mIHNoYXJlZENsaWVudExpbWl0KCkgeyByZXR1cm4gbV9i
dWZmZXIuc2VydmVyT2Zmc2V0KCk7IH0KKyAgICBzaXplX3QgdG9MaW1pdChDbGllbnRMaW1pdCkg
Y29uc3Q7CiAgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEo
KTsgfQogICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFT
aXplKCk7IH0KIAogICAgIENvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKICAgICB1aW50NjRfdCBt
X2N1cnJlbnREZXN0aW5hdGlvbklEIHsgMCB9OwogCi0gICAgc2l6ZV90IG1fc2VuZGVyT2Zmc2V0
IHsgMCB9OworICAgIHNpemVfdCBtX2NsaWVudE9mZnNldCB7IDAgfTsKICAgICBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyIG1fYnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE9wdGlvbmFs
PFNlbWFwaG9yZT4gbV93YWtlVXBTZW1hcGhvcmU7CkBAIC0xMzYsNyArMTM3LDYgQEAgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2VuZFN5bmMoVCYmIG1lc3MKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2VpdmUgdGhyb3Vn
aCBzdHJlYW0uCiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3Bh
bikpOwogICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVz
c2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQp
OwotICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE2OCwz
MCArMTY4LDM0IEBAIGlubGluZSB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRQcm9j
ZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJiBzcGFuKQogfQogaW5saW5lIE9wdGlvbmFsPFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFj
cXVpcmUoVGltZW91dCB0aW1lb3V0KQogeworICAgIENsaWVudExpbWl0IGNsaWVudExpbWl0ID0g
c2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAg
IC8vIFRoaXMgd291bGQgbWVhbiB3ZSB0cnkgdG8gc2VuZCBtZXNzYWdlcyBhZnRlciBhIHRpbWVv
dXQuIEl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCisgICAgLy8gU2luY2UgdGhlIHZhbHVlIGlz
IHRydXN0ZWQsIHdlIG9ubHkgYXNzZXJ0LgorICAgIEFTU0VSVChjbGllbnRMaW1pdCAhPSBDbGll
bnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnKTsKKwogICAgIGZvciAoOzspIHsKLSAgICAgICAg
c2l6ZV90IHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCku
bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0g
YWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKLSAgICAgICAgaWYgKHJl
c3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAgICAgICBpZiAodGltZW91
dC5kaWRUaW1lT3V0KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjbGll
bnRMaW1pdCAhPSBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnKSB7CisgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fY2xpZW50T2Zmc2V0LCB0b0xpbWl0KGNsaWVu
dExpbWl0KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VT
aXplKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHRpbWVvdXQuZGlkVGltZU91dCgpKQorICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgICAgICBzaXplX3Qgb2xkU2VuZGVyTGltaXQgPSBzaGFyZWRSZWNl
aXZlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZW5kZXJMaW1pdCwgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwotICAgICAgICAg
ICAgaWYgKHNlbmRlckxpbWl0ID09IG9sZFNlbmRlckxpbWl0KQotICAgICAgICAgICAgICAgIG1f
YnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQpOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQob2xk
U2VuZGVyTGltaXQpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2Vu
ZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIENsaWVudExp
bWl0IG9sZENsaWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5jb21wYXJlRXhjaGFuZ2VT
dHJvbmcoY2xpZW50TGltaXQsIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAg
ICBpZiAoY2xpZW50TGltaXQgPT0gb2xkQ2xpZW50TGltaXQpIHsKKyAgICAgICAgICAgIG1fYnVm
ZmVyLmNsaWVudFdhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQpOworICAgICAgICAgICAg
Y2xpZW50TGltaXQgPSBzaGFyZWRDbGllbnRMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJf
YWNxdWlyZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2xpZW50TGltaXQgPSBvbGRD
bGllbnRMaW1pdDsKICNlbHNlCi0gICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisgICAgICAg
IFRocmVhZDo6eWllbGQoKTsKKyAgICAgICAgY2xpZW50TGltaXQgPSBzaGFyZWRDbGllbnRMaW1p
dCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CiAjZW5kaWYKLSAgICAgICAgfQot
ICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgLy8gVGhlIGFsaWduZWRTcGFuIHVzZXMgdGhlIG1p
bmltdW1NZXNzYWdlU2l6ZSB0byBjYWxjdWxhdGUgdGhlIG5leHQgYmVnaW5uaW5nIHBvc2l0aW9u
IGluIHRoZSBidWZmZXIsCiAgICAgICAgIC8vIGFuZCBub3QgdGhlIHNpemUuIFRoZSBzaXplIG1p
Z2h0IGJlIG1vcmUgb3IgbGVzcyB3aGF0IGlzIG5lZWRlZCwgZGVwZW5kaW5nIG9uIHdoZXJlIHRo
ZSByZWFkZXIgaXMuCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGNhcGFjaXR5IGZvciBtaW5p
bXVtIG1lc3NhZ2Ugc2l6ZSwgd2FpdCB1bnRpbCBtb3JlIGlzIGF2YWlsYWJsZS4KLSAgICAgICAg
Ly8gSW4gdGhlIGNhc2Ugd2hlcmUgc2VuZGVyT2Zmc2V0IDwgcmVjZWl2ZXJPZmZzZXQgd2UgY2Fu
IGFycml2ZSB0byBhIHNpdHVhdGlvbiB3aGVyZQorICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVy
ZSBjbGllbnRPZmZzZXQgPCBjbGllbnRMaW1pdCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0dWF0aW9u
IHdoZXJlCiAgICAgICAgIC8vIDAgPCByZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZS4K
ICAgICB9CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTIwMCwxMyArMjA0LDEzIEBAIGlu
bGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlBY3F1aXJlCiBpbmxpbmUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2Fr
ZVVwUmVjZWl2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6cmVsZWFzZShzaXplX3Qgc2l6ZSkK
IHsKICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKLSAgICBt
X3NlbmRlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9zZW5kZXJPZmZzZXQpICsg
c2l6ZSk7Ci0gICAgQVNTRVJUKG1fc2VuZGVyT2Zmc2V0IDwgZGF0YVNpemUoKSk7Ci0gICAgLy8g
SWYgdGhlIHJlY2VpdmVyIHdyb3RlIG92ZXIgdGhlIHNlbmRlck9mZnNldCB3aXRoIHNlbmRlck9m
ZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgd2Uga25vdyBpdCBpcyBzbGVlcGluZy4KLSAgICBz
aXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmV4Y2hhbmdlKG1fc2Vu
ZGVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAgICBpZiAocmVjZWl2ZXJM
aW1pdCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xl
ZXBpbmdUYWcpCisgICAgbV9jbGllbnRPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1f
Y2xpZW50T2Zmc2V0KSArIHNpemUpOworICAgIEFTU0VSVChtX2NsaWVudE9mZnNldCA8IGRhdGFT
aXplKCkpOworICAgIC8vIElmIHRoZSByZWNlaXZlciB3cm90ZSBvdmVyIHRoZSBjbGllbnRPZmZz
ZXQgd2l0aCBzZXJ2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAg
IENsaWVudE9mZnNldCBvbGRDbGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5leGNo
YW5nZShzdGF0aWNfY2FzdDxDbGllbnRPZmZzZXQ+KG1fY2xpZW50T2Zmc2V0KSwgc3RkOjptZW1v
cnlfb3JkZXJfYWNxX3JlbCk7CisgICAgaWYgKG9sZENsaWVudE9mZnNldCA9PSBDbGllbnRPZmZz
ZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpCiAgICAgICAgIHJldHVybiBXYWtlVXBSZWNlaXZlcjo6
WWVzOwotICAgIEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICBBU1NFUlQoIShvbGRD
bGllbnRPZmZzZXQgJiBDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpKTsKICAgICBy
ZXR1cm4gV2FrZVVwUmVjZWl2ZXI6Ok5vOwogfQogCkBAIC0yMzUsMTAgKzIzOSwxMSBAQCBpbmxp
bmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxpbWl0KQogICAgIHJldHVybiBsaW1pdCAtIG9mZnNldCAtIDE7CiB9CiAKLWlubGluZSBz
aXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0
ZWRMaW1pdCkgY29uc3QKK2lubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dG9M
aW1pdChDbGllbnRMaW1pdCBjbGllbnRMaW1pdCkgY29uc3QKIHsKLSAgICBBU1NFUlQodW50cnVz
dGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKLSAgICByZXR1cm4gc3RkOjptaW4odW50cnVz
dGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKKyAgICBBU1NFUlQoIShjbGllbnRMaW1pdCAmIENs
aWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
c2l6ZV90PihjbGllbnRMaW1pdCkgPD0gZGF0YVNpemUoKSAtIDEpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGNsaWVudExpbWl0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcAppbmRleCA5YzVm
N2YzMWU1MzNkZDNiZGJlOGY0NWI2NmJlYzhjZjc1ODczN2E3Li5jMjFiZGM2OGY4ZmQ3NWFmY2Vh
ODllMWQ2YjA2OWQ1Yzc4ZjRhYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtNDUsMTAgKzQ1LDEwIEBAIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9y
eVNpemUpCiAgICAgQVNTRVJUKG1fZGF0YVNpemUgPD0gbWF4aW11bVNpemUoKSk7CiB9CiAKLVN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6
U2hhcmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNl
bmRlcldhaXRTZW1hcGhvcmUpCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiBtZW1vcnksIHNpemVfdCBtZW1v
cnlTaXplLCBTZW1hcGhvcmUmJiBjbGllbnRXYWl0U2VtYXBob3JlKQogICAgIDogbV9kYXRhU2l6
ZShtZW1vcnlTaXplIC0gaGVhZGVyU2l6ZSgpKQogICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92
ZShtZW1vcnkpKQotICAgICwgbV9zZW5kZXJXYWl0U2VtYXBob3JlKFdURk1vdmUoc2VuZGVyV2Fp
dFNlbWFwaG9yZSkpCisgICAgLCBtX2NsaWVudFdhaXRTZW1hcGhvcmUoV1RGTW92ZShjbGllbnRX
YWl0U2VtYXBob3JlKSkKIHsKICAgICBBU1NFUlQobV9kYXRhU2l6ZSA8PSBtYXhpbXVtU2l6ZSgp
KTsKIH0KQEAgLTYyLDcgKzYyLDcgQEAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIKICAgICBpZiAo
dGhpcyAhPSAmb3RoZXIpIHsKICAgICAgICAgbV9kYXRhU2l6ZSA9IG90aGVyLm1fZGF0YVNpemU7
CiAgICAgICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92ZShvdGhlci5tX3NoYXJlZE1lbW9yeSk7
Ci0gICAgICAgIG1fc2VuZGVyV2FpdFNlbWFwaG9yZSA9IFdURk1vdmUob3RoZXIubV9zZW5kZXJX
YWl0U2VtYXBob3JlKTsKKyAgICAgICAgbV9jbGllbnRXYWl0U2VtYXBob3JlID0gV1RGTW92ZShv
dGhlci5tX2NsaWVudFdhaXRTZW1hcGhvcmUpOwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiB9
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIENSQVNIKCk7CiAgICAgV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIG1fc2hhcmVk
TWVtb3J5LT5zaXplKCkgfTsKICAgICBlbmNvZGVyIDw8IGlwY0hhbmRsZTsKLSAgICBlbmNvZGVy
IDw8IG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKKyAgICBlbmNvZGVyIDw8IG1fY2xpZW50V2FpdFNl
bWFwaG9yZTsKIH0KIAogT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKaW5kZXggOTZmMGI4
ZDA0MTM3MjAzYjU1ZWJkNDFjZmUxYjg4ZjA3OGQ5ZDA3Zi4uYTIyNDEwZTNlYmRlYzAyMjg0OTVj
Njk2ODQ1M2NhMjAzNDc2OTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtNDAsMjMgKzQwLDI0IEBAIG5hbWVzcGFj
ZSBJUEMgewogLy8gVGhlICJiaS1wYXJ0aXRlIiBpcyBoZXJlIHRvIG1lYW4gdGhhdCB3cml0ZXMg
YW5kIHJlYWRzIHRvIHRoZSBidWZmZXIgbXVzdCBiZQogLy8gY29udGludW91cy4KIC8vCi0vLyBU
aGUgY2xpZW50IChzZW5kZXIgb3IgcmVjZWl2ZXIpICJhY3F1aXJlcyIgc29tZSBhbW91bnQgb2Yg
YnVmZmVyIGRhdGEuIFRoZSBkYXRhIHBvaW50ZXIKKy8vIFRoZSBjYWxsZXIgKGNsaWVudCBvciBz
ZXJ2ZXIpICJhY3F1aXJlcyIgc29tZSBhbW91bnQgb2YgYnVmZmVyIGRhdGEuIFRoZSBkYXRhIHBv
aW50ZXIKIC8vIGxvY2F0aW9uIGRlcGVuZHMgb24gdGhlIGFtb3VudCBvZiBkYXRhIGJlaW5nIGFj
cXVpcmVkLiBUaGUgYnVmZmVyIHJldHVybnMgYWxsIHRoZSBhdmFpbGFibGUKIC8vIGNhcGFjaXR5
IC0tIHRoaXMgbWF5IGJlIGxlc3MgdGhhbiBhY3F1aXJlZC4KIC8vCiAvLyBUaGUgY2xpZW50ICJy
ZWxlYXNlcyIgdGhlIHNvbWUgYW1vdW50IG9mIGRhdGEsIGF0IGxlYXN0IHRoZSBhbW91bnQgYWNx
dWlyZWQgYnV0IHBvdGVudGlhbGx5CiAvLyBtb3JlLgogLy8KLS8vIEJvdGggc2VuZGVyIGFuZCBy
ZWNlaXZlciBtdXN0IHJlbGVhc2UgdGhlIHNhbWUgYW1vdW50IG9mIGRhdGEgYXQgdGhlIHNhbWUg
c3RlcCBvZiB0aGUgYWNxdWlyZS9yZWxlYXNlIHNlcXVlbmNlLgotLy8gU3VwcG9zZSBzZW5kZXIg
cmVsZWFzZXMgZmlyc3QgOCBhbmQgdGhlbiAxNjYgYnl0ZXMuIFVwb24gdGhlIGZpcnN0IGFjcXVp
cmUsIHJlY2VpdmVyCisvLyBCb3RoIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgbXVzdCByZWxl
YXNlIHRoZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlCisvLyBh
Y3F1aXJlL3JlbGVhc2Ugc2VxdWVuY2UuCisvLyBTdXBwb3NlIHRoZSBjbGllbnQgcmVsZWFzZXMg
Zmlyc3QgOCBhbmQgdGhlbiAxNjYgYnl0ZXMuIFVwb24gdGhlIGZpcnN0IGFjcXVpcmUsIHRoZSBz
ZXJ2ZXIKIC8vIG11c3QgYWxzbyByZWxlYXNlIDggYnl0ZXMgYW5kIHRoZW4gdXBvbiB0aGUgc2Vj
b25kIGFjcXVpcmUgMTY2IGJ5dGVzLgogLy8gRHVlIHRvIGhvdyBhbGlnbm1lbnQgYW5kIG1pbmlt
dW0gbGVuZ3RoIGFmZmVjdCB0aGUgcG9zaXRpb24gYXQgd2hpY2ggdGhlIG1lbW9yeSBjYW4KLS8v
IGJlIHJlZmVycmVkIHRvLCB0aGUgcmVjZWl2ZXIgY2Fubm90ICJyZWFkIHR3byB0aW1lcyBzaW11
bHRhbmVvdXNseSIgYW5kIHJlbGVhc2UgMTc0IGJ5dGVzLgorLy8gYmUgcmVmZXJyZWQgdG8sIHRo
ZSBzZXJ2ZXIgY2Fubm90ICJyZWFkIHR3byB0aW1lcyBzaW11bHRhbmVvdXNseSIgYW5kIHJlbGVh
c2UgMTc0IGJ5dGVzLgogLy8KIC8vIFRoZSBjaXJjdWxhciBidWZmZXIgaGFzIGZvbGxvd2luZyBp
bXBsZW1lbnRhdGlvbjoKLS8vICogU2VuZGVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbc2VuZGVy
T2Zmc2V0LCByZWNlaXZlck9mZnNldFsuIFdoZW4gc2VuZGVyT2Zmc2V0ID09Ci0vLyByZWNlaXZl
ck9mZnNldCwgc2VuZGVyIG93bnMgYWxsIHRoZSBkYXRhLgotLy8gKiBSZWNlaXZlciBvd25zIHRo
ZSBkYXRhIGJldHdlZW4gW3JlY2VpdmVyT2Zmc2V0LCBzZW5kZXJPZmZzZXRbLgorLy8gKiBUaGUg
Y2xpZW50IG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbY2xpZW50T2Zmc2V0LCBzZXJ2ZXJPZmZzZXRb
LiBXaGVuIGNsaWVudE9mZnNldCA9PQorLy8gc2VydmVyT2Zmc2V0LCB0aGUgY2xpZW50IG93bnMg
YWxsIHRoZSBkYXRhLgorLy8gKiBUaGUgc2VydmVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbc2Vy
dmVyT2Zmc2V0LCBjbGllbnRPZmZzZXRbLgogLy8gKiBUaGUgYnVmZmVyIGNhbiBob2xkIG1heGlt
dW0gb2Ygc2l6ZSAtIDEgdmFsdWVzLiBUaGUgbGFzdCB2YWx1ZSBpcyByZXNlcnZlZCBmb3IKIC8v
IGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwuIEZJWE1FOiBNYXliZSB3b3VsZCBi
ZSBzaW1wbGVyIGltcGxlbWVudGF0aW9uIGlmCiAvLyBpdCB3b3VsZCB1c2UgdGhlICJ3cmFwIiBm
bGFnIGluc3RlYWQgb2YgdGhlIGhvbGUgYXMgdGhlIGluZGljYXRvci4gVGhpcyB3b3VsZCBtb3Zl
CkBAIC04OCwzNyArODksNDUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAg
IH0KIAotICAgIEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIo
KS5zZW5kZXJPZmZzZXQ7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7
IHJldHVybiBoZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQorICAgIC8vIFZhbHVlIGRlbm90aW5n
IHRoZSBjbGllbnQgaW5kZXggdG8gdGhlIGJ1ZmZlciwgd2l0aCBzcGVjaWFsIHRhZyB2YWx1ZXMu
CisgICAgLy8gVGhlIGNsaWVudCB0cnVzdHMgdGhpcy4gVGhlIHNlcnZlciBjb252ZXJ0cyB0aGUg
dmFsdWUgdG8gdHJ1c3RlZCBzaXplX3Qgb2Zmc2V0IHdpdGggYSBzcGVjaWFsIGZ1bmN0aW9uLgor
ICAgIGVudW0gQ2xpZW50T2Zmc2V0IDogc2l6ZV90IHsKKyAgICAgICAgLy8gVGFnIHZhbHVlIHN0
b3JlZCBpbiB3aGVuIHRoZSBzZXJ2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5pbmcuCisg
ICAgICAgIHNlcnZlcklzU2xlZXBpbmdUYWcgPSAxdSA8PCAzMQorICAgIH07CisKKyAgICAvLyBW
YWx1ZSBkZW5vdGluZyB0aGUgc2VydmVyIGluZGV4IHRvIHRoZSBidWZmZXIsIHdpdGggc3BlY2lh
bCB0YWcgdmFsdWVzLgorICAgIC8vIFRoZSBjbGllbnQgdHJ1c3RzIHRoaXMuIFRoZSBzZXJ2ZXIg
Y29udmVydHMgdGhlIHZhbHVlIHRvIHRydXN0ZWQgc2l6ZV90IG9mZnNldCB3aXRoIGEgc3BlY2lh
bCBmdW5jdGlvbi4KKyAgICBlbnVtIFNlcnZlck9mZnNldCA6IHNpemVfdCB7CisgICAgICAgIC8v
IFRhZyB2YWx1ZSBzdG9yZWQgd2hlbiB0aGUgY2xpZW50IGlzIHdhaXRpbmcsIGUuZy4gd2FpdGlu
ZyBvbiBhIHNlbWFwaG9yZS4KKyAgICAgICAgY2xpZW50SXNXYWl0aW5nVGFnID0gMXUgPDwgMzEK
KyAgICB9OworCisgICAgQXRvbWljPENsaWVudE9mZnNldD4mIGNsaWVudE9mZnNldCgpIHsgcmV0
dXJuIGhlYWRlcigpLmNsaWVudE9mZnNldDsgfQorICAgIEF0b21pYzxTZXJ2ZXJPZmZzZXQ+JiBz
ZXJ2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZXJ2ZXJPZmZzZXQ7IH0KICAgICB1aW50
OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc2hhcmVk
TWVtb3J5LT5kYXRhKCkpICsgaGVhZGVyU2l6ZSgpOyB9CiAgICAgc2l6ZV90IGRhdGFTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhU2l6ZTsgfQotICAgIFNlbWFwaG9yZSYgc2VuZGVyV2FpdFNl
bWFwaG9yZSgpIHsgcmV0dXJuIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsgfQotCi0gICAgLy8gVGFn
IHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnNlbmRlck9mZnNldCB3aGVuIHJlY2VpdmVyIGlzIHNs
ZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNl
bmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZyA9IDEgPDwgMzE7Ci0gICAgLy8gVGFnIHZh
bHVlIHN0b3JlZCBpbiBIZWFkZXI6OnJlY2VpdmVyT2Zmc2V0IHdoZW4gc2VuZGVyIGlzIHdhaXRp
bmcsIGUuZy4gd2FpdGluZyBvbgotICAgIC8vIGEgc2VtYXBob3JlLgotICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnID0gMSA8PCAzMTsK
KyAgICBTZW1hcGhvcmUmIGNsaWVudFdhaXRTZW1hcGhvcmUoKSB7IHJldHVybiBtX2NsaWVudFdh
aXRTZW1hcGhvcmU7IH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1TaXpl
KCkgeyByZXR1cm4gc3RkOjptaW4oc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCBz
ZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpIC0gMTsgfQorICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3RkOjptaW4oc3RhdGljX2Nhc3Q8
c2l6ZV90PihDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZykpIC0gMTsgfQogICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgT3B0aW9uYWw8U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1lbW9y
eVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUpOworICAgIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6
ZSwgU2VtYXBob3JlJiYgY2xpZW50V2FpdFNlbWFwaG9yZSk7CiAKICAgICBzdHJ1Y3QgSGVhZGVy
IHsKLSAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7CisgICAgICAgIEF0b21p
YzxTZXJ2ZXJPZmZzZXQ+IHNlcnZlck9mZnNldDsKICAgICAgICAgLy8gUGFkZGluZyBzbyB0aGF0
IHRoZSB2YXJpYWJsZXMgbW9zdGx5IGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBwcm9jZXNzZXMgZG8g
bm90IHNoYXJlIGEgY2FjaGUgbGluZS4KICAgICAgICAgLy8gVGhpcyBpcyBhbiBhdHRlbXB0IHRv
IGF2b2lkIGNhY2hlLWxpbmUgaW5kdWNlZCByZWR1Y3Rpb24gb2YgcGFyYWxsZWwgYWNjZXNzLgot
ICAgICAgICBhbGlnbmFzKHNpemVvZih1aW50NjRfdFsyXSkpIEF0b21pYzxzaXplX3Q+IHNlbmRl
ck9mZnNldDsKKyAgICAgICAgYWxpZ25hcyhzaXplb2YodWludDY0X3RbMl0pKSBBdG9taWM8Q2xp
ZW50T2Zmc2V0PiBjbGllbnRPZmZzZXQ7CiAgICAgfTsKICAgICBIZWFkZXImIGhlYWRlcigpIGNv
bnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1fc2hhcmVkTWVtb3J5LT5k
YXRhKCkpOyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0
dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXplb2Yo
SGVhZGVyKSk7IH0KIAogICAgIHNpemVfdCBtX2RhdGFTaXplIHsgMCB9OwogICAgIFJlZjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7Ci0gICAgU2VtYXBob3JlIG1fc2VuZGVy
V2FpdFNlbWFwaG9yZTsKKyAgICBTZW1hcGhvcmUgbV9jbGllbnRXYWl0U2VtYXBob3JlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCAxNGQ0ODRiNzhmYmY5ZGY2ZGY4YTlmZGI3ZThjYTg5YWQ1N2U1
M2JhLi44ZTQ5MjY2NDRhODA4NjM2OWVmN2NjODlhNDAyYjI4Yjk2MDE3YTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNw
cApAQCAtNjEsNDEgKzYxLDQxIEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmVu
cXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjCiAKIE9wdGlvbmFs
PFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6dHJ5QXF1aXJlKCkKIHsKLSAgICBzaXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNl
bmRlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7Ci0gICAgaWYgKHJl
Y2VpdmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2
ZXJJc1NsZWVwaW5nVGFnKQorICAgIFNlcnZlckxpbWl0IHNlcnZlckxpbWl0ID0gc2hhcmVkU2Vy
dmVyTGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgIGlmIChzZXJ2
ZXJMaW1pdCA9PSBTZXJ2ZXJMaW1pdDo6c2VydmVySXNTbGVlcGluZ1RhZykKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fcmVjZWl2
ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworCisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3Bh
bihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgaWYgKHJl
c3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAgIHJlY2VpdmVyTGltaXQg
PSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcocmVjZWl2ZXJMaW1p
dCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5n
VGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVs
KTsKLSAgICAgICAgQVNTRVJUKCEocmVjZWl2ZXJMaW1pdCAmIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykpOwotICAgICAgICByZWNlaXZl
ckxpbWl0ID0gY2xhbXBlZExpbWl0KHJlY2VpdmVyTGltaXQpOwotICAgICAgICByZXN1bHQgPSBh
bGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICAgICAgc2Vy
dmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZXJ2
ZXJMaW1pdCwgU2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICByZXN1bHQg
PSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7
CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmIChy
ZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogewogICAgIEFTU0VSVChyZWFkU2l6
ZSk7CiAgICAgcmVhZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXpl
KTsKLSAgICBzaXplX3QgcmVjZWl2ZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1f
cmVjZWl2ZXJPZmZzZXQpICsgcmVhZFNpemUpOworICAgIFNlcnZlck9mZnNldCBzZXJ2ZXJPZmZz
ZXQgPSBzdGF0aWNfY2FzdDxTZXJ2ZXJPZmZzZXQ+KHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9z
ZXJ2ZXJPZmZzZXQpICsgcmVhZFNpemUpKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHNp
emVfdCBvbGRSZWNlaXZlck9mZnNldCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuZXhjaGFuZ2Uo
cmVjZWl2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwotICAgIC8vIElmIHRo
ZSBzZW5kZXIgd3JvdGUgb3ZlciByZWNlaXZlck9mZnNldCwgaXQgbWVhbnMgdGhlIHNlbmRlciBp
cyB3YWl0aW5nLgotICAgIGlmIChvbGRSZWNlaXZlck9mZnNldCA9PSBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZykKLSAgICAgICAgbV9idWZm
ZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworICAgIFNlcnZlck9mZnNldCBvbGRT
ZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5leGNoYW5nZShzZXJ2ZXJPZmZzZXQs
IHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIC8vIElmIHRoZSBzZW5kZXIgd3JvdGUg
b3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4KKyAgICBp
ZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQor
ICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CiAgICAgZWxz
ZQotICAgICAgICBBU1NFUlQoIShvbGRSZWNlaXZlck9mZnNldCAmIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnKSk7CisgICAgICAgIEFTU0VS
VCghKG9sZFNlcnZlck9mZnNldCAmIFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKSk7
CiAjZWxzZQotICAgIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuc3RvcmUocmVjZWl2ZXJPZmZzZXQs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgIHNoYXJlZFNlcnZlck9mZnNldCgpLnN0
b3JlKHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CiAgICAgLy8gSVBD
OjpTZW1hcGhvcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgcGxhdGZvcm0uIENsaWVudCB3aWxs
IHBvbGwgYW5kIHlpZWxkLgogI2VuZGlmCiAKLSAgICBtX3JlY2VpdmVyT2Zmc2V0ID0gcmVjZWl2
ZXJPZmZzZXQ7CisgICAgbV9zZXJ2ZXJPZmZzZXQgPSBzZXJ2ZXJPZmZzZXQ7CiB9CiAKIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjph
bGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCkBAIC0xMjEsMTAgKzEyMSwx
MiBAQCBzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNpemUoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxpbWl0KQogICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OwogfQogCi1z
aXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50
cnVzdGVkTGltaXQpIGNvbnN0CitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNs
YW1wZWRMaW1pdChTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1pdCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
dW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKLSAgICByZXR1cm4gc3RkOjptaW4o
dW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKKyAgICBBU1NFUlQoIShzZXJ2ZXJMaW1p
dCAmIFNlcnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgc2l6ZV90IGxpbWl0
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzZXJ2ZXJMaW1pdCk7CisgICAgQVNTRVJUKGxpbWl0IDw9
IGRhdGFTaXplKCkgLSAxKTsKKyAgICByZXR1cm4gc3RkOjptaW4obGltaXQsIGRhdGFTaXplKCkg
LSAxKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDk1ODFjNjkwMWQ1MTI1YTA2NGJhNGUzYTcwNjhlNDJh
MTlkZjkxYmYuLjQ5NWFmZmQwM2M2ZjU0ZDcyODlmYzEwMWQ2ZDZkZDg4NmUzYjc3MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmgKQEAgLTc0LDE4ICs3NCwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdl
QWxpZ25tZW50OwogICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxp
bWl0KTsKICAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwotICAg
IHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKICAgICBz
aXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53
cmFwT2Zmc2V0KG9mZnNldCk7IH0KICAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4o
b2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJl
ZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9Ci0gICAg
QXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIu
cmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVzaW5nIFNlcnZlckxpbWl0ID0gU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6Q2xpZW50T2Zmc2V0OworICAgIEF0b21pYzxTZXJ2ZXJMaW1pdD4mIHNoYXJl
ZFNlcnZlckxpbWl0KCkgeyByZXR1cm4gbV9idWZmZXIuY2xpZW50T2Zmc2V0KCk7IH0KKyAgICB1
c2luZyBTZXJ2ZXJPZmZzZXQgPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTZXJ2ZXJPZmZzZXQ7
CisgICAgQXRvbWljPFNlcnZlck9mZnNldD4mIHNoYXJlZFNlcnZlck9mZnNldCgpIHsgcmV0dXJu
IG1fYnVmZmVyLnNlcnZlck9mZnNldCgpOyB9CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChTZXJ2
ZXJMaW1pdCkgY29uc3Q7CiAgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmRhdGFTaXplKCk7IH0KIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBtX3dvcmtRdWV1ZTsKIAotICAgIHNp
emVfdCBtX3JlY2VpdmVyT2Zmc2V0IHsgMCB9OworICAgIHNpemVfdCBtX3NlcnZlck9mZnNldCB7
IDAgfTsKICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVyOwogCiAgICAgTG9jayBt
X291dE9mU3RyZWFtTWVzc2FnZXNMb2NrOwpAQCAtMTAzLDEwICsxMDUsMTEgQEAgdm9pZCBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBBcmd1bWVudHMKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShl
bmNvZGVyKSk7CiB9CiAKLS8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUg
Y29ubmVjdGlvbiBiZXR3ZWVuIHN0cmVhbSBzZW5kZXIgYW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5
IHRoZSByZWNlaXZlci4KKy8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUg
Y29ubmVjdGlvbiBiZXR3ZWVuIHN0cmVhbSBjbGllbnQgYW5kIHNlcnZlciwgYXMgdXNlZCBieSB0
aGUgc2VydmVyLgorLy8KIC8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246Ci0vLyAgKiBIb2xkcyB0
aGUgbWVzc2FnZXMgdG93YXJkcyB0aGUgcmVjZWl2ZXIuCi0vLyAgKiBTZW5kcyB0aGUgcmVwbGll
cyBiYWNrIHRvIHRoZSBzZW5kZXIgdmlhIHRoZSBzdHJlYW0gb3Igbm9ybWFsIENvbm5lY3Rpb24g
ZmFsbGJhY2suCisvLyAgKiBIb2xkcyB0aGUgbWVzc2FnZXMgdG93YXJkcyB0aGUgc2VydmVyLgor
Ly8gICogU2VuZHMgdGhlIHJlcGxpZXMgYmFjayB0byB0aGUgY2xpZW50IHZpYSB0aGUgc3RyZWFt
IG9yIG5vcm1hbCBDb25uZWN0aW9uIGZhbGxiYWNrLgogLy8KIC8vIFJlY2VpdmVyIHRlbXBsYXRl
IGNvbnRyYWN0OgogLy8gICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlJiwgRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAKaW5kZXggZTkxYmI5NzY1Y2FiNGM0NmQ3ZjcyZmM2ZWU4ODI0Y2M4NzY0
YjVlYy4uNDViYzVkOTA0MTcwNjNlOWViYWJjMTZjMWJmODAyMDNmYjFiMzVhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0xMjgsMTIgKzEyOCw2IEBA
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCkKICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCi17Ci0gICAgLy8gRklY
TUU6IEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG5vdCBjbGVhciB0aGlz
IGlzIHRoZSByaWdodCB3YXkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkzNDkKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IHRoZSBidWZmZXIgaXMgInJlbGF0aXZlbHkgZW1w
dHkiIGFsd2F5cywgYnV0IGZvciBjb25zaXN0ZW5jeSwgd2UgbmVlZCB0byBlbnN1cmUKQEAgLTE4
MSw3ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNp
emVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQogICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7CiAg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvcikpOwogICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCi0gICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3Qo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3Qg
PSBlcnJvcjsKQEAgLTE5MywxMiArMTg3LDIxIEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEVycm9yKCkKICAgICAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSAw
OwogICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSk7CiAgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKLSAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9z
dCgpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGVudW0+KHJldHVyblZhbHVlKTsK
ICAgICB9CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9lcnJvcldoZW5Db250ZXh0SXNMb3N0
LCBOT19FUlJPUik7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2lt
dWxhdGVFdmVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgaWYg
KCFpc0NvbnRleHRMb3N0KCkpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKGV2
ZW50TmFtZSkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICBtYXJrQ29u
dGV4dExvc3QoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3Jl
LCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNp
b25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCmluZGV4IGVkMGZmODY5MmVmN2FkODQ1NzE5ZTFmMGE4MjU2NjJjMzY1
ZTUyYTQuLjkyODU4NjhkZjVmYjIwZThhODI0MGExNjRlODQ4NTQwZGIzNGViYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC02NCwxNiArNjQsMTQgQEAgcHVi
bGljOgogICAgIHVzaW5nIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojppc0VuYWJsZWQ7CiAgICAgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgp
IGZpbmFsOwotICAgIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZv
aWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0g
ZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7Ci0KICAgICBib29s
IGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9y
VGVzdGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEg
Z2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4KLSAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBm
aW5hbDsKICAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwog
ICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSBmaW5hbDsKICAgICB2b2lk
IGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IDQ2NmRkMDhiMWIyYjM3
MmI2ZTFkODU3OTdmNDg2MGEyOGNmOTUzZWIuLmNjYTZjYTAyOTJmYWFkMTY2MjhiM2E4NTNmN2Q1
NTE3Y2JjMGRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMzAsMTUgKzMwLDYgQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCi17Ci0gICAgaWYgKCFpc0NvbnRleHRMb3N0
KCkpIHsKLSAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSk7Ci0gICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgIH0KLX0K
LQogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjJlYTMxNTFhNDg0MDRm
YzJlMGVlMDRmODU2MGNjODU1YWRjNDkyMS4uMDQ2ZDEwNTk4NDE0ZDU0MTc4YmNkNjZhZDIzZTZl
NWFlZGNkOThkNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAzLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgYXNzZXJ0cyBhZnRlciBHUFUgcHJvY2Vz
cyB0aW1lcyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTdHJpbmcgZXZlbnROYW1lKSB0byBtYW51
YWxseQorICAgICAgICBpbXBsZW1lbnRlZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjEtMDIt
MjcgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
UEkgdGVzdCBmb3IgQXBwSGlnaGxpZ2h0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4
IGQzNTAyYmMyNjY1OGRmYjljMzBmNmYyY2U3NmRkODY1ODU3MzJiMDguLmFhODUxNmJjNDliMDY3
NTFhZDAwMDU0NGQyZGRlMzY2YWM1MTI3NzcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
QEAgLTEwNCw2ICsxMDQsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBO
b3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAt
PiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkg
U3luY2hyb25vdXMKICAgICB2b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkg
LT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JU
ZXN0aW5nKFN0cmluZyBldmVudE5hbWUpCiB7fQogfX0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ2MDk0MDdkYmYzY2Nk
ZjZmYWNiMGQ4MTYxNzQ1MmNjY2EwY2FkMmIuLmNiM2U2MWY3Y2Y0YTk2Mjg0Y2IzOTk1MzVkMWY5
N2Y1MGRkMThiYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMy0wMSAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIGFzc2VydHMgYWZ0
ZXIgR1BVIHByb2Nlc3MgdGltZXMgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSBhIFdlYkdM
IGNhbGwgdGltZXMgb3V0LgorICAgICAgICBBZGQgdHdvIHZhcmlhbnRzOiBvbmUgd2hpY2ggbW9z
dCBwcm9iYWJseSB0aW1lcyBvdXQgb24KKyAgICAgICAgc3luY2hyb25vdXMgY2FsbCwgYW5kIG9u
ZSB3aGljaCBtb3N0IHByb2JhYmx5IHRpbWVzIG91dCBvbgorICAgICAgICBhc3luY2hyb25vdXMg
Y2FsbC4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0
dXMtZmFpbHVyZS5odG1sOgorICAgICAgICBUaGUgdGVzdGluZyBBUElzIHdlcmUgY2hhbmdlZCwg
c28gcmVwbGFjZSB1c2Ugb2YKKyAgICAgICAgSW50ZXJuYWxzLnNldEZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soKQorICAgICAgICB3aXRoIEludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250
ZXh0KCkKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91
dC1hc3luYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmds
L2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hh
bmdlZGV2ZW50Lmh0bWw6CisKIDIwMjEtMDItMjcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgogCiAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yICdwaXhlbCcgYW5kICdwb3MnIENTU09N
IHByZWZpeGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkOTVkNDBmNjEzY2Y3NzgxZTQxY2VmMDNk
Zjc5ZTdiNjM2NDY5NGYzLi4yM2YzMDU4MDA5MTI0NjRmNGNkMTc3OWM0MDQxZTNhYTYwNjAyYmRh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM0NTksNiArMzQ1OSwxMCBAQCB3ZWJnbC8yLjAuMC9j
b25mb3JtYW5jZTIvbWlzYy91bmluaXRpYWxpemVkLXRlc3QtMi5odG1sIFsgU2tpcCBdCiAjIEZh
aWxpbmcgb24gY2VydGFpbiBoYXJkd2FyZSBjb25maWd1cmF0aW9uczogbWFjT1Mgd2l0aCBJbnRl
bCBHUFVzLiBBbHNvIHNsb3cuCiB3ZWJraXQub3JnL2IvMjIwNzUzIHdlYmdsL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy5odG1sIFsgUGFzcyBGYWlsdXJlIFNsb3cgXQog
CisjIFRpbWVvdXQgdGVzdGluZyBpcyBub3QgYXBwbGljYWJsZSB0byBpbi1wcm9jZXNzIHdlYmds
LCBvbmx5IHdlYmdsIGluIGdwdSBwcm9jZXNzLgorZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250
ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbCBbIFNraXAgXQorZmFzdC9jYW52YXMvd2ViZ2wvbG9z
ZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbCBbIFNraXAgXQorCiAjIHByZS13cmFwIHByb2dyZXNz
aW9uLiBPdGhlciByZW5kZXJpbmcgZW5naW5lcyBhZ3JlZSB3aXRoIHRoZSByZXN1bHQuCiB3ZWJr
aXQub3JnL2IvMjA2MTY4IFsgRGVidWcgXSBmYXN0L2RvbS9pbnNlcnQtc3Bhbi1pbnRvLWxvbmct
dGV4dC1idWctMjgyNDUuaHRtbCBbIFNraXAgXQogCkBAIC00ODM5LDQgKzQ4NDMsMyBAQCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvdXBwZXIt
YXJtZW5pYW4vY3NzMy1jb3VudAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWNvdW50ZXItc3R5bGVzL3VwcGVyLXJvbWFuL2NzczMtY291bnRlci1zdHlsZXMtMDIzLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1yb21hbi9jc3MzLWNvdW50ZXItc3R5bGVzLTAy
NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvdXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLXN0eWxl
cy0wMjRhLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXN0YXR1cy1mYWlsdXJlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZh
aWx1cmUuaHRtbAppbmRleCBiODM5MTY4NjRkYmQ2ZTcwYzM4ZGRmYjdhMzRlMjQ1NTJlYzA3Yjgx
Li4zYWZjOTJhMGU3MzdhYjQ5OTRlMWI5NDI4YjhkZDVhZTQxYzM4YmUzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1
cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQt
b24tc3RhdHVzLWZhaWx1cmUuaHRtbApAQCAtNjksNyArNjksNyBAQCBhc3luYyBmdW5jdGlvbiBy
dW5UZXN0KCkgewogCiAgICAgZGVidWcoIk5vdyBmb3JjZSBmYWlsdXJlIGFmdGVyIHRoZSBuZXh0
IGRyYXdBcnJheXMuIikKICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgd2luZG93
LmludGVybmFscy5mYWlsTmV4dEdQVVN0YXR1c0NoZWNrKGdsKTsKKyAgICAgICAgd2luZG93Lmlu
dGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCJmYWlsbmV4dGdwdXN0YXR1c2No
ZWNrIiwgZ2wpOwogICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKICAgICBh
d2FpdCB3ZWJHTENvbnRleHRMb3N0KGNhbnZhcyk7CiAgICAgc2hvdWxkQmVUcnVlKCJnbC5pc0Nv
bnRleHRMb3N0KCkiKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBhc3luYyBmdW5jdGlvbiBydW5UZXN0
KCkgewogCiAgICAgZGVidWcoIk5vdyBmb3JjZSBmYWlsdXJlIGFmdGVyIHRoZSBuZXh0IGRyYXdF
bGVtZW50cy4iKQogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLmZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soZ2wpOworICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoImZhaWxuZXh0Z3B1c3RhdHVzY2hlY2si
LCBnbCk7CiAgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURf
U0hPUlQsIDApOwogICAgIGF3YWl0IHdlYkdMQ29udGV4dExvc3QoY2FudmFzKQogICAgIHNob3Vs
ZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CkBAIC0xMjgsNyArMTI4LDcgQEAgYXN5bmMg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAogICAgIGRlYnVnKCJOb3cgZm9yY2UgZmFpbHVyZSBhZnRl
ciB0aGUgbmV4dCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUuIikKICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKLSAgICAgICAgd2luZG93LmludGVybmFscy5mYWlsTmV4dEdQVVN0YXR1c0NoZWNr
KGdsKTsKKyAgICAgICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250
ZXh0KCJmYWlsbmV4dGdwdXN0YXR1c2NoZWNrIiwgZ2wpOwogICAgIGV4dC5kcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUoZ2wuVFJJQU5HTEVTLCAwLCA2LCAxMCk7CiAgICAgYXdhaXQgd2ViR0xDb250
ZXh0TG9zdChjYW52YXMpOwogICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7
CkBAIC0xNjEsNyArMTYxLDcgQEAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAogICAgIGRl
YnVnKCJOb3cgZm9yY2UgZmFpbHVyZSBhZnRlciB0aGUgbmV4dCBkcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRS4iKQogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLmZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soZ2wpOworICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoImZhaWxuZXh0Z3B1c3RhdHVzY2hlY2si
LCBnbCk7CiAgICAgZXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGdsLlRSSUFOR0xFUywg
NiwgZ2wuVU5TSUdORURfU0hPUlQsIDAsIDgpOwogICAgIGF3YWl0IHdlYkdMQ29udGV4dExvc3Qo
Y2FudmFzKTsKICAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVv
dXQtYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9z
ZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZWE2
Y2U2N2Q2YjA0MTMzN2NiZmE0MGFmMzA2YjdjYWNjNjMzOGQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3lu
Yy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBXZWJHTDog
Q09OVEVYVF9MT1NUX1dFQkdMOiBsb3NlQ29udGV4dDogY29udGV4dCBsb3N0CitDaGVja3MgdGhh
dCBhIEdQVSBwcm9jZXNzIHRpbWVvdXQgb24gYSBub24tcmVzdWx0IHByb2R1Y2luZyBXZWJHTCBj
YWxsIHdpbGwgbG9zZSB0aGUgY29udGV4dC4KK05PVEU6IFRoaXMgb25seSBwYXNzZXMgaW4gdGhl
IHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVybmFscy4KKworUEFTUyBnbC5p
c0NvbnRleHRMb3N0KCkgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgorUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLkNPTlRFWFRfTE9TVF9XRUJHTAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkzNWYzNWNjZjQ1YTUwMWUwMWZjNWI5ZWVlMWYwMmRjYmVlNzQxZjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGlt
ZW91dC1hc3luYy5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+
Cis8c3R5bGU+CitjYW52YXMgeworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4
OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPiA8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2Ny
aXB0PgorPHNjcmlwdD4KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsOword2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJh
bWV3b3JrKQorICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yayhmYWxzZSk7CisKK2Rl
YnVnKCJDaGVja3MgdGhhdCBhIEdQVSBwcm9jZXNzIHRpbWVvdXQgb24gYSBub24tcmVzdWx0IHBy
b2R1Y2luZyBXZWJHTCBjYWxsIHdpbGwgbG9zZSB0aGUgY29udGV4dC4iKTsKK2RlYnVnKCJOT1RF
OiBUaGlzIG9ubHkgcGFzc2VzIGluIHRoZSB0ZXN0IGhhcm5lc3MgYmVjYXVzZSBpdCByZXF1aXJl
cyBJbnRlcm5hbHMuIik7CitkZWJ1ZygiIik7CisKK2FzeW5jIGZ1bmN0aW9uIHdlYkdMQ29udGV4
dExvc3QoY2FudmFzKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY2FudmFz
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLCByZXNvbHZlKSk7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZhcy53aWR0aCA9IDIwMDsKKyAgICBjYW52YXMu
aGVpZ2h0ID0gMjAwOworICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAg
IHd0dS5zZXR1cENvbG9yUXVhZChnbCk7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBnbC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEu
MCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAi
Z2wuTk9fRVJST1IiKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93
LmludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCJ0aW1lb3V0IiwgZ2wpOwor
ICAgIC8vIFdlJ3JlIHRyeWluZyB0byBmaWxsIHRoZSBjb21tYW5kIGJ1ZmZlciB3aXRoIGNhbGxz
IGFmdGVyIHRoZSB0aW1lb3V0LAorICAgIC8vIHNvIHRoYXQgd2UgdGVzdCB0aGF0IGFzeW5jaHJv
bm91cyBjYWxscyBjYXVzZSB0aW1lb3V0cyB0b28uCisgICAgLy8gVXNlIGEgcmVsYXRpdmVseSBm
YXN0IGNhbGwgdGhhdCBzdGlsbCBmaWxscyB1cCB0aGUgYnVmZmVyLgorICAgIGxldCBjYWxsQ291
bnQgPSAxMDAwMDAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbENvdW50OyArK2kpCisg
ICAgICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAxLjAsIDAuMCArIGkvY2FsbENvdW50LCAxLjApOwor
ICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGF3YWl0IHdlYkdMQ29udGV4
dExvc3QoY2FudmFzKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIpOwor
ICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLkNPTlRFWFRfTE9TVF9XRUJHTCIpOwor
ICAgIGZpbmlzaFRlc3QoKTsKK30KKworcnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGlt
ZW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFlNDI5MzQ4NWZkYjZmMzhiMGJiM2I5MzYz
YzIzOGY5ZDVkZTJhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
IEBACitDT05TT0xFIE1FU1NBR0U6IFdlYkdMOiBDT05URVhUX0xPU1RfV0VCR0w6IGxvc2VDb250
ZXh0OiBjb250ZXh0IGxvc3QKK0NoZWNrcyB0aGF0IGEgR1BVIHByb2Nlc3MgdGltZW91dCBvbiBh
IHJlc3VsdCBwcm9kdWNpbmcgV2ViR0wgY2FsbCB3aWxsIGxvc2UgdGhlIGNvbnRleHQuCitOT1RF
OiBUaGlzIG9ubHkgcGFzc2VzIGluIHRoZSB0ZXN0IGhhcm5lc3MgYmVjYXVzZSBpdCByZXF1aXJl
cyBJbnRlcm5hbHMuCisKK1BBU1MgZ2wuaXNDb250ZXh0TG9zdCgpIGlzIGZhbHNlCitQQVNTIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRy
dWUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5DT05URVhUX0xPU1RfV0VCR0wKK1BBU1MgdmFs
IGlzIFswLCAwLCAwLCAwXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xv
c2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNGU2YWIyNTIwYjc4
NTgyNWQ4OGY0ZDJhNzViZGUxZTc3ZWZlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5odG1sCkBAIC0wLDAg
KzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitjYW52YXMgeworICAg
IHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFyIHd0
dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCitpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKQorICAgIHdpbmRvdy5pbml0
Tm9uS2hyb25vc0ZyYW1ld29yayhmYWxzZSk7CisKK2RlYnVnKCJDaGVja3MgdGhhdCBhIEdQVSBw
cm9jZXNzIHRpbWVvdXQgb24gYSByZXN1bHQgcHJvZHVjaW5nIFdlYkdMIGNhbGwgd2lsbCBsb3Nl
IHRoZSBjb250ZXh0LiIpOworZGVidWcoIk5PVEU6IFRoaXMgb25seSBwYXNzZXMgaW4gdGhlIHRl
c3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVybmFscy4iKTsKK2RlYnVnKCIiKTsK
KworYXN5bmMgZnVuY3Rpb24gd2ViR0xDb250ZXh0TG9zdChjYW52YXMpIHsKKyAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250
ZXh0bG9zdCIsIHJlc29sdmUpKTsKK30KK3ZhciB2YWw7Cithc3luYyBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgIGxldCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsK
KyAgICBjYW52YXMud2lkdGggPSAyMDA7CisgICAgY2FudmFzLmhlaWdodCA9IDIwMDsKKyAgICBn
bCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKKyAgICB3dHUuc2V0dXBDb2xvclF1YWQo
Z2wpOworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7
CisgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHNob3VsZEJlRmFsc2UoImdsLmlzQ29udGV4dExvc3Qo
KSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2ltdWxhdGVF
dmVudEZvcldlYkdMQ29udGV4dCgidGltZW91dCIsIGdsKTsKKyAgICBnbC5jbGVhckNvbG9yKDEu
MCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7Cisg
ICAgdmFsID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkNPTE9SX0NMRUFSX1ZBTFVFKTsKKyAgICBhd2Fp
dCB3ZWJHTENvbnRleHRMb3N0KGNhbnZhcyk7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5pc0NvbnRl
eHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5DT05URVhUX0xP
U1RfV0VCR0wiKTsKKyAgICBzaG91bGRCZSgidmFsIiwgIlswLCAwLCAwLCAwXSIpOworICAgIGZp
bmlzaFRlc3QoKTsKK30KKworcnVuVGVzdCgpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisKKzwvc2NyaXB0PgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sCmlu
ZGV4IDM5ZDc3Yjc5NmVmMDk1MDllYmQ1Njk5MWEwMmM5MTU4YTAxYmI4MzYuLjRmOWQxZGRiOTNm
NDc4Mjc4ZTIzN2MzMzY1YmJkNDFkNjgyY2RhNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sCkBA
IC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIH0pOwogCiAgICAgbGV0IGds
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIikuZ2V0Q29udGV4dCgid2ViZ2wiKTsK
LSAgICB3aW5kb3cuaW50ZXJuYWxzLnNpbXVsYXRlV2ViR0xDb250ZXh0Q2hhbmdlZChnbCk7Cisg
ICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCJjb250ZXh0
Y2hhbmdlZCIsIGdsKTsKIH0KIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vz
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBkZDgzNzZkMmYyYzc4MDQ0YWUwOWE4YjczODRjNWE2ZjA5NjM1NTA3Li5iOGJi
OTYyNzFjODhhZWRmNTIxODQ3YTIyZWVkNjNkMTAwYzg4NWJjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1w
cm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzLDYgKzIzLDkgQEAgZmFzdC9jYW52YXMvd2Vi
Z2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmlicG9pbnRlci5odG1sIFsgU2xvdyBdCiB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZTIvcmVuZGVyaW5nL2JsaXRmcmFtZWJ1ZmZlci1maWx0ZXItb3V0
b2Zib3VuZHMuaHRtbCBbIFNsb3cgXQogCitmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQt
b24tdGltZW91dC1hc3luYy5odG1sIFsgU2xvdyBQYXNzIF0KK2Zhc3QvY2FudmFzL3dlYmdsL2xv
c2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwgWyBTbG93IFBhc3MgXQorCiBmYXN0L2ltYWdlcy9h
bmltYXRlZC1pbWFnZS1tcDQtY3Jhc2guaHRtbCBbIFRpbWVvdXQgXQogZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtaW1hZ2UtbXA0Lmh0bWwgWyBUaW1lb3V0IF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421927</attachid>
            <date>2021-03-02 06:10:40 -0800</date>
            <delta_ts>2021-03-04 08:17:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222546-20210302161038.patch</filename>
            <type>text/plain</type>
            <size>38877</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdmNGM5N2MxYzg4MGVk
MmM4OTE3OGRjNjg4MjIxODliZWE0YjZkYS4uNDc0YmJmMjJjYzEyYWU3YmQ2ZDk0OTRhNjc0NTZm
ZmU3MjBjNDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAzLTAyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgYXNzZXJ0
cyBhZnRlciBHUFUgcHJvY2VzcyB0aW1lcyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRyaWdnZXIgaW50ZXJuYWxzLnNpbXVsYXRlRXZl
bnRGb3JXZWJHTENvbnRleHQoInRpbWVvdXQiLCBjb250ZXh0KQorICAgICAgICB0byB0cmlnZ2Vy
IHRpbWVvdXQgZm9yIGNhbGxzIHRvIGEgV2ViR0wgY29udGV4dC4KKworICAgICAgICBUZXN0czog
ZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRt
bAorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KToKKwogMjAyMS0wMy0wMiAg
S2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGluZyBu
ZXcgdGVzdCBjb25kaXRpb25zIGZvciBXZWJHTCBzaG91bGQgYmUgc2ltcGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBhZDRlNjgyZGE4N2Y1ZWE0MzBkZGZiNDlmOWI3Yjg1NGI2MjJlNDhlLi5mODFlNDFiOTExMzcz
MGRhZDg5ZDA2MGE5NDQxYThkNTRiYWE3YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAor
MjAyMS0wMy0wMiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYkdMIGFzc2VydHMgYWZ0ZXIgR1BVIHByb2Nlc3MgdGltZXMgb3V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1NDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb246OnRyeUFjcXVpcmUgd291bGQgYXNzZXJ0IG9uCisgICAgICAgICAgICBBU1NFUlQo
dW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKKyAgICAgICAgVGhlIHVudHJ1c3Rl
ZExpbWl0IHZhbHVlIHdvdWxkIGJlIHRoZW46CisgICAgICAgICAgICBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyOjpzZXJ2ZXJPZmZzZXRDbGllbnRJc1dhaXRpbmdUYWcuCisgICAgICAgIFRoaXMgd291
bGQgYmUgZXF1aXZhbGVudCBvZiBhc3NlcnRpb24gYWRkZWQgaW4gdGhpcyBjb21taXQ6CisgICAg
ICAgICAgICBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGlu
Z1RhZyk7CisKKyAgICAgICAgVGhpcyB3b3VsZCBoYXBwZW4gaW4gY2FzZSBvZiB0aW1lb3V0LCBi
ZWNhdXNlIHVwb24gZW50ZXJpbmcKKyAgICAgICAgdGhlIHdhaXQgc2VxdWVuY2U6CisgICAgICAg
ICAxKSBUaGUgY2xpZW50IGl0c2VsZiB3b3VsZCBmaXJzdCB3cml0ZSB0aGUgdGFnIHZhbHVlIHRv
IHRoZQorICAgICAgICAgICAgb2Zmc2V0IHZhcmlhYmxlLgorICAgICAgICAgMikgV2FpdCBhbmQg
dGltZW91dCB0aGUgd2FpdC4KKyAgICAgICAgIDMpIHJ1biB0aGUgbmV4dCBpdGVyYXRpb24gb2Yg
dGhlIGFjcXVpcmUgbG9vcC4KKworICAgICAgICBUaGUgbmV4dCBpdGVyYXRpb24gd291bGQgbG9h
ZCB0aGUgdGFnIHZhbHVlIHdyaXR0ZW4gYmVmb3JlLAorICAgICAgICBlLmcuIHNlcnZlck9mZnNl
dENsaWVudElzV2FpdGluZ1RhZy4KKyAgICAgICAgVGhpcyB3b3VsZCBiZSB0aGVuIHVzZWQgaW4g
Y2xhbXBlZExpbWl0KCkgY2FsbC4KKworICAgICAgICBGaXggdGhpcyBieSB0YWtpbmcgaXQgaW50
byBhY2NvdW50IHRoYXQgdGhlIHZhcmlhYmxlIG1pZ2h0IGJlCisgICAgICAgIENsaWVudExpbWl0
OjpjbGllbnRJc1dhaXRpbmdUYWcgd2l0aGluIHRoZSBhY3F1aXJlIGxvb3AuCisKKyAgICAgICAg
UG9zc2libHkgZml4IGZ1dHVyZSBzaW1pbGFyIHByb2JsZW1zIGJ5IG5vdCB0cmVhdGluZyB0aGUg
dmFsdWUgYXMKKyAgICAgICAgc2l6ZV90LCByYXRoZXIgdHJlYXQgaXQgYXMgZW51bSBjbGFzcyBD
bGllbnRPZmZzZXQgOiBzaXplX3QuIFRoaXMKKyAgICAgICAgZW5hYmxlcyB0aGUgY29tcGlsZXIg
dG8gZW5mb3JjZSB0aGF0IHdoZW4gY2hlY2tpbmcgZm9yIHRoZSB2YXJpb3VzIHRhZworICAgICAg
ICB2YWx1ZXMsIHRoZSBob2xkZXIgbXVzdCBob2xkIHRoZSBlbnVtIGNsYXNzLiBXaGVuIGludGVu
ZGluZyB0byBpbnRlcnByZXQKKyAgICAgICAgdGhlIHZhbHVlIGFzIHNpemVfdCwgaG9sZGVyIG11
c3QgZXhwbGljaXRseSBjb252ZXJ0LgorCisgICAgICAgIERvIHRoZSBhYm92ZSBjaGFuZ2UgZm9y
IHRoZSBTZXJ2ZXJPZmZzZXQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2xv
c2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2Fu
dmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKKworICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAg
ICAgIERvIG5vdCBhc3NlcnQgdGhhdCB0aGUgcmVsZWFzZSBtZXNzYWdlIGFjdHVhbGx5IHJlbGVh
c2VzIHRoZSBjb250ZXh0LgorICAgICAgICBGb3IgdGVzdGluZywgdGhlIGluZHVjZSB0aGUgdGlt
ZW91dCBieSByZWxlYXNpbmcgdGhlIGNvbnRleHQgcHJlbWF0dXJlbHkKKyAgICAgICAgYW5kIHRy
ZWF0aW5nIHRoZSBzdWJzZXF1ZW50IG1lc3NhZ2VzIGFzIGlmIHRoZXkgd2VyZSBub24tbGVnaXQg
bWVzc2FnZXMuCisgICAgICAgIFRoYXQgc2hvdWxkIGJlIGp1c3Qgc2tpcHBlZC4KKworICAgICAg
ICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250
ZXh0R0xGb3JUZXN0aW5nKToKKyAgICAgICAgQWRkIGEgcHVibGljIGZ1bmN0aW9uIHRvIGludm9r
ZSBmcm9tICJGb3JUZXN0aW5nIiBjb2RlcGF0aHMuCisKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAg
IFNraXAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgbWVzc2FnZXMgdGhhdCBkbyBub3QgZ2V0IHJv
dXRlZCB0byBhbnkKKyAgICAgICAgaW5zdGFuY2UuIFRoZXNlIG1lc3NhZ2VzIGNhbiBiZSAibm9u
LWxlZ2l0Iiwgb25lcyB0aGF0IGFyZSBzZW50IGJlZm9yZQorICAgICAgICB0aGUgImNvbnRleHQg
d2FzIGxvc3QiIG1lc3NhZ2UgcmVhY2hlZCB0aGUgc2VuZGVyLCBvciBvbmVzIHRoYXQgYXJlCisg
ICAgICAgIHNlbnQgZHVyaW5nIHNpbXVsYXRlZCB0aW1lb3V0LgorICAgICAgICBUaGVzZSBkbyBu
b3QgY29udGFpbiBhc3NlcnRzIGFzIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlc2Ugd2lsbCBvY2N1
ciBpbgorICAgICAgICBhYm92ZSBzaXR1YXRpb25zLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oOgorICAgICAgICBBZGQgdGhlIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5n
IGZ1bmN0aW9uIHRvIHNpbXVsYXRlIHRoZQorICAgICAgICB0aW1lb3V0LiBTaW11bGF0ZSB2aWEg
anVzdCByZW1vdmluZyB0aGUgY29udGV4dCwgd2hpY2ggY2F1c2VzCisgICAgICAgIGxlZnQtb3Zl
ciBtZXNzYWdlcyB0byBza2lwcGVkLgorICAgICAgICBDdXJyZW50bHkgd2UgZG8gbm90IHNpbXVs
YXRlIHRoZSB0aW1lb3V0IHdpdGggYW4gaW5maW5pdGUgbG9vcAorICAgICAgICBpbiBHUFUgcHJv
Y2VzcyB0aHJlYWRzIGFzIHRoYXQgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgQ3VycmVudGx5
IHdlIGRvIG5vdCBzaW11bGF0ZSB0aGUgdGltZW91dCB3aXRoIGEgZ3B1IHByb2Nlc3MKKyAgICAg
ICAgY3Jhc2ggc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB0byBiZSB0ZXN0ZWQgKHdpbGwgY2F1
c2UgYQorICAgICAgICByZWxvYWQpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNs
aWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVh
c2UpOgorICAgICAgICBDaGFuZ2Ugc2l6ZV90IHVzYWdlIHRvIC0+IENsaWVudE9mZnNldCwgU2Vy
dmVyT2Zmc2V0CisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNx
dWlyZSk6CisgICAgICAgIEZpeCB0aGUgYXNzZXJ0aW9uIG9mIGVxdWl2YWxlbnQgb2YgQVNTRVJU
KGNsaWVudExpbWl0ICE9IENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpOworICAgICAg
ICBieSByZW9yZ2FuaXppbmcgdGhlIGFjcXVpcmUgbG9vcC4KKworICAgICAgICAoSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjp0b0xpbWl0IGNvbnN0KToKKyAgICAgICAgRml4IHRoZSBvZmYt
Ynktb25lIGluIGFzc2VydGlvbiBlcnJvcgorICAgICAgICAoIDwgZGF0YVNpemUoKSAtIDEgIHZz
IDw9IGRhdGFTaXplKCkgLSAxKQorCisgICAgICAgIFJlbmFtZSBmcm9tIGNsYW1wZWRMaW1pdCgp
IHRvIHRvTGltaXQoKSwgYXMgdGhlCisgICAgICAgIGNsYW1waW5nIGlzIGNvbmZ1c2luZyBhcyB0
aGUgY2xpZW50IHRydXN0cyB0aGUKKyAgICAgICAgc2VydmVyLgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9u
QnVmZmVyOjpjbGllbnRPZmZzZXQpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOjpzZXJ2ZXJPZmZzZXQpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpjbGllbnRXYWl0U2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6bWF4aW11bVNpemUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnRyeUFxdWlyZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpy
ZWxlYXNlKToKKyAgICAgICAgQ2hhbmdlIHNpemVfdCB1c2FnZSB0byAtPiBDbGllbnRPZmZzZXQs
IFNlcnZlck9mZnNldAorCisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICBGaXggdGhlIG9mZi1ieS1vbmUgaW4gYXNz
ZXJ0aW9uIGVycm9yCisgICAgICAgICggPCBkYXRhU2l6ZSgpIC0gMSAgdnMgPD0gZGF0YVNpemUo
KSAtIDEpCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
OgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVkU2VydmVy
TGltaXQpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVk
U2VydmVyT2Zmc2V0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIEZvciB0aGUg
Y2FzZXMgd2hlcmUgdGhlIHRpbWVvdXQgd291bGQgaGFwcGVuIGluIHRoZXNlIHR3byBmdW5jdGlv
bnMsCisgICAgICAgIGNhbGwgdGhlIG1hcmtDb250ZXh0TG9zdCgpIGluc3RlYWQgb2Ygd2FzTG9z
dCgpLiBUaGlzIGlzIHRvIGNsYXJpZnkKKyAgICAgICAgYWxsIHRoZSBjb250ZXh0IGxvc3QgaGFu
ZGxpbmcgdG8gdXNlIHRoZSBzYW1lIHBhdHRlcm4uCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKwogMjAyMS0wMy0wMiAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGluZyBuZXcgdGVzdCBj
b25kaXRpb25zIGZvciBXZWJHTCBzaG91bGQgYmUgc2ltcGxlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDVkMmQyOTBlMDVmN2FkNzZlNGE0MzE2NTM0MGVlODgzZDhhNTE3
NTAuLmNkMDYwN2JkZTJjNjkzZmY1NDFlNjM5NjE4NTdhNzcxYzljNTY0NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUwOTQsNyArNTA5NCw3IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRBcHBsZVBheUlzQWN0aXZlKERvY3VtZW50JiBkb2N1bWVudCkKICNpZiBFTkFCTEUo
V0VCR0wpCiB2b2lkIEludGVybmFsczo6c2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dChjb25z
dCBTdHJpbmcmIGV2ZW50TmFtZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewot
ICAgIEFTU0VSVChldmVudE5hbWUgPT0gImNvbnRleHRjaGFuZ2VkIiB8fCBldmVudE5hbWUgPT0g
ImZhaWxuZXh0Z3B1c3RhdHVzY2hlY2siKTsKKyAgICBBU1NFUlQoZXZlbnROYW1lID09ICJjb250
ZXh0Y2hhbmdlZCIgfHwgZXZlbnROYW1lID09ICJmYWlsbmV4dGdwdXN0YXR1c2NoZWNrIiB8fCBl
dmVudE5hbWUgPT0gInRpbWVvdXQiKTsKICAgICBjb250ZXh0LnNpbXVsYXRlRXZlbnRGb3JUZXN0
aW5nKGV2ZW50TmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjMzk5ZDZiZmMyY2Y4NDNiMGM0
ZWQzMzdlNDc1MTBmODlhYzhiY2M0Li45MDQ3MGVkMGUxYzdkN2IwNDk2MTk2MWRhNmIwZWUwMjFm
ZjczODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVkaWFP
dmVycmlkZXNGb3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIgpAQCAtMzYwLDEwICszNjEsMTUgQEAgdm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKIHsKLSAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CisgICAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1v
dmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJlbGVhc2VHcmFwaGljc0Nv
bnRleHRHTChpZGVudGlmaWVyKTsKIH0KICNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQ
bGF5aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpAQCAtNTQ1
LDYgKzU1MSwxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFs
cmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNl
bmRpZgogCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KQEAgLTYwNCw3ICs2MTYsMTMgQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCi0KKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFscmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMu
CisgICAgICAgIHJlcGx5RW5jb2Rlci5yZXNldCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCAyYWZiZWFhNGRiYjgzMmIwNjJiMzQ0OGY2ZGU0OTlmOGVjMWZhMzFlLi42NDdiZDAzNjEy
Njc3Zjg4MmExM2YwZDAyZGNkYjkxZTUzNmM4Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEyOCw3ICsxMjgs
OSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcygpOwot
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9y
VGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCiBwcml2YXRlOgog
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
LCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCmluZGV4IGQyYWEzNjY1NDg3NWRlMDZiYjg1ZDE2ZmFkOTEzYjg5ZWJjNzFmOTkuLmJj
MDk3MDcyODU4NGYxOTNhMmI2NGQ5MDFkMzhhYjE5OTI4YzQ3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcApAQCAtMjU4LDYgKzI1OCwxNSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZQog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU3Ry
aW5nJiYgZXZlbnROYW1lKQogewogICAgIC8vIEZJWE1FOiBvbmx5IHJ1biB0aGlzIGluIHRlc3Rp
bmcgbW9kZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU0NAor
ICAgIGlmIChldmVudE5hbWUgPT0gInRpbWVvdXQiKSB7CisgICAgICAgIC8vIFNpbXVsYXRlIHRo
ZSB0aW1lb3V0IGJ5IGp1c3QgZGlzY2FyZGluZyB0aGUgY29udGV4dC4gVGhlIHN1YnNlcXVlbnQg
bWVzc2FnZXMgYWN0IGxpa2UKKyAgICAgICAgLy8gdW5hdXRob3JpemVkIG9yIG9sZCBtZXNzYWdl
cyBmcm9tIFdlYiBwcm9jZXNzLCB0aGV5IGFyZSBza2lwcGVkLgorICAgICAgICBjYWxsT25NYWlu
UnVuTG9vcChbZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgaWRlbnRpZmllciA9IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyXSgpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb25Ub1dlYiA9IGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuZ2V0KCkpCisgICAgICAgICAgICAgICAgY29ubmVjdGlvblRvV2ViLT5yZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKGlkZW50aWZpZXIpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICBtX2NvbnRleHQtPnNpbXVsYXRlRXZlbnRGb3JUZXN0
aW5nKGV2ZW50TmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggN2RhNzE1NTNlOWMxMzA3ODc5Yzdl
ODkxMmMzZjRlODNjMDYxODkyNi4uN2Q1MzRmYWJjOTVlMjRmZjgyMTAyMzRjYWZlY2VmNDY2MGY5
OWIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKQEAgLTMzLDkgKzMzLDkgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qg
c2kKICAgICAsIG1fYnVmZmVyKHNpemUpCiB7CiAgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdp
dGggbGltaXQgb2YgMCBhbmQgcmVhZGVyIHNsZWVwaW5nLgotICAgIHNoYXJlZENsaWVudE9mZnNl
dCgpLnN0b3JlKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmNsaWVudE9mZnNldFNlcnZlcklzU2xl
ZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgIHNoYXJlZENsaWVudE9m
ZnNldCgpLnN0b3JlKENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1v
cnlfb3JkZXJfcmVsYXhlZCk7CiAgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGlt
aXQgb2YgdGhlIHdob2xlIGJ1ZmZlci4KLSAgICBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5zdG9yZSgw
LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICBzaGFyZWRDbGllbnRMaW1pdCgpLnN0
b3JlKHN0YXRpY19jYXN0PENsaWVudExpbWl0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CiB9CiAKIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3Jl
KElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IGM1YWI2YTNhMzFkOTY0NTQ4
ZDhjMWJhNWI4MjJkYmJkYzUwZTcxOWEuLjA4ODY0OTQzOTlhMGU1ZjZhMzk4NTA1YjQxOWQ4YmY1
MjFiNWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNs
aWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmgKQEAgLTgwLDEyICs4MCwxNCBAQCBwcml2YXRlOgogCiAgICAgU3Bh
biBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwogICAgIHNpemVfdCBz
aXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7Ci0gICAgc2l6ZV90IGNsYW1wZWRMaW1p
dChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OwogCiAgICAgc2l6ZV90IHdyYXBPZmZzZXQo
c2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQp
OyB9CiAgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1l
c3NhZ2VTaXplKTsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRDbGllbnRPZmZzZXQoKSB7
IHJldHVybiBtX2J1ZmZlci5jbGllbnRPZmZzZXQoKTsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBz
aGFyZWRTZXJ2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZXJ2ZXJPZmZzZXQoKTsgfQor
ICAgIHVzaW5nIENsaWVudE9mZnNldCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OkNsaWVudE9m
ZnNldDsKKyAgICBBdG9taWM8Q2xpZW50T2Zmc2V0PiYgc2hhcmVkQ2xpZW50T2Zmc2V0KCkgeyBy
ZXR1cm4gbV9idWZmZXIuY2xpZW50T2Zmc2V0KCk7IH0KKyAgICB1c2luZyBDbGllbnRMaW1pdCA9
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlNlcnZlck9mZnNldDsKKyAgICBBdG9taWM8Q2xpZW50
TGltaXQ+JiBzaGFyZWRDbGllbnRMaW1pdCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZlck9mZnNl
dCgpOyB9CisgICAgc2l6ZV90IHRvTGltaXQoQ2xpZW50TGltaXQpIGNvbnN0OwogICAgIHVpbnQ4
X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3Qg
ZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CiAKQEAgLTEz
NSw5ICsxMzcsNyBAQCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzcwogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgc2VuZCB0aHJvdWdoIHN0cmVhbS4KICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2Vp
dmUgdGhyb3VnaCBzdHJlYW0uCiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RG
TW92ZSgqc3BhbikpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IHRpbWVvdXQpOwotICAgIEFTU0VSVChyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAogaW5saW5lIGJv
b2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0IHRpbWVvdXQpCkBAIC0xNjgsMzAgKzE2OCwz
NCBAQCBpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKIH0KIGlubGluZSBPcHRpb25hbDxTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRp
bWVvdXQgdGltZW91dCkKIHsKKyAgICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9IHNoYXJlZENs
aWVudExpbWl0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICAvLyBUaGlz
IHdvdWxkIG1lYW4gd2UgdHJ5IHRvIHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBp
cyBhIHByb2dyYW1taW5nIGVycm9yLgorICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVk
LCB3ZSBvbmx5IGFzc2VydC4KKyAgICBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6
OmNsaWVudElzV2FpdGluZ1RhZyk7CisKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHNpemVfdCBj
bGllbnRMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX2FjcXVpcmUpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3Bh
bihtX2NsaWVudE9mZnNldCwgY2xpZW50TGltaXQpOwotICAgICAgICBpZiAocmVzdWx0LnNpemUg
PCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKLSAgICAgICAgICAgIGlmICh0aW1lb3V0LmRpZFRpbWVP
dXQoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNsaWVudExpbWl0ICE9
IENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpIHsKKyAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gYWxpZ25lZFNwYW4obV9jbGllbnRPZmZzZXQsIHRvTGltaXQoY2xpZW50TGltaXQpKTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGltZW91
dC5kaWRUaW1lT3V0KCkpCisgICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgICAgIHNpemVfdCBvbGRDbGllbnRMaW1pdCA9IHNoYXJlZFNlcnZlck9mZnNldCgp
LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhjbGllbnRMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6c2VydmVyT2Zmc2V0Q2xpZW50SXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3Ff
cmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAgICAgICAgICAgIGlmIChjbGllbnRM
aW1pdCA9PSBvbGRDbGllbnRMaW1pdCkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRX
YWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGNsaWVudExpbWl0ID0gY2xhbXBlZExpbWl0KG9sZENsaWVudExpbWl0KTsK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwgY2xp
ZW50TGltaXQpOwotICAgICAgICAgICAgfQorICAgICAgICBDbGllbnRMaW1pdCBvbGRDbGllbnRM
aW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKGNsaWVudExp
bWl0LCBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgaWYgKGNsaWVudExp
bWl0ID09IG9sZENsaWVudExpbWl0KSB7CisgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0
U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKKyAgICAgICAgICAgIGNsaWVudExpbWl0ID0g
c2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNsaWVudExpbWl0ID0gb2xkQ2xpZW50TGltaXQ7CiAj
ZWxzZQotICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworICAgICAgICBUaHJlYWQ6OnlpZWxk
KCk7CisgICAgICAgIGNsaWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgaWYgKHJl
c3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIC8vIFRoZSBhbGlnbmVkU3BhbiB1c2VzIHRoZSBtaW5pbXVtTWVzc2FnZVNp
emUgdG8gY2FsY3VsYXRlIHRoZSBuZXh0IGJlZ2lubmluZyBwb3NpdGlvbiBpbiB0aGUgYnVmZmVy
LAogICAgICAgICAvLyBhbmQgbm90IHRoZSBzaXplLiBUaGUgc2l6ZSBtaWdodCBiZSBtb3JlIG9y
IGxlc3Mgd2hhdCBpcyBuZWVkZWQsIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgcmVhZGVyIGlzLgog
ICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBjYXBhY2l0eSBmb3IgbWluaW11bSBtZXNzYWdlIHNp
emUsIHdhaXQgdW50aWwgbW9yZSBpcyBhdmFpbGFibGUuCi0gICAgICAgIC8vIEluIHRoZSBjYXNl
IHdoZXJlIGNsaWVudE9mZnNldCA8IHNlcnZlck9mZnNldCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0
dWF0aW9uIHdoZXJlCisgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGNsaWVudE9mZnNldCA8
IGNsaWVudExpbWl0IHdlIGNhbiBhcnJpdmUgdG8gYSBzaXR1YXRpb24gd2hlcmUKICAgICAgICAg
Ly8gMCA8IHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplLgogICAgIH0KICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwpAQCAtMjAyLDExICsyMDYsMTEgQEAgaW5saW5lIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246Oldha2VVcFNlcnZlciBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNl
KHNpemUKICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKICAg
ICBtX2NsaWVudE9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9jbGllbnRPZmZzZXQp
ICsgc2l6ZSk7CiAgICAgQVNTRVJUKG1fY2xpZW50T2Zmc2V0IDwgZGF0YVNpemUoKSk7Ci0gICAg
Ly8gSWYgdGhlIHNlcnZlciB3cm90ZSBvdmVyIHRoZSBjbGllbnRPZmZzZXQgd2l0aCBjbGllbnRP
ZmZzZXRTZXJ2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgotICAgIHNp
emVfdCBzZXJ2ZXJMaW1pdCA9IHNoYXJlZENsaWVudE9mZnNldCgpLmV4Y2hhbmdlKG1fY2xpZW50
T2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAgICBpZiAoc2VydmVyTGltaXQg
PT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVlcGluZ1Rh
ZykKKyAgICAvLyBJZiB0aGUgc2VydmVyIHdyb3RlIG92ZXIgdGhlIGNsaWVudE9mZnNldCB3aXRo
IHNlcnZlcklzU2xlZXBpbmdUYWcsIHdlIGtub3cgaXQgaXMgc2xlZXBpbmcuCisgICAgQ2xpZW50
T2Zmc2V0IG9sZENsaWVudE9mZnNldCA9IHNoYXJlZENsaWVudE9mZnNldCgpLmV4Y2hhbmdlKHN0
YXRpY19jYXN0PENsaWVudE9mZnNldD4obV9jbGllbnRPZmZzZXQpLCBzdGQ6Om1lbW9yeV9vcmRl
cl9hY3FfcmVsKTsKKyAgICBpZiAob2xkQ2xpZW50T2Zmc2V0ID09IENsaWVudE9mZnNldDo6c2Vy
dmVySXNTbGVlcGluZ1RhZykKICAgICAgICAgcmV0dXJuIFdha2VVcFNlcnZlcjo6WWVzOwotICAg
IEFTU0VSVCghKHNlcnZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50T2Zm
c2V0U2VydmVySXNTbGVlcGluZ1RhZykpOworICAgIEFTU0VSVCghKG9sZENsaWVudE9mZnNldCAm
IENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZykpOwogICAgIHJldHVybiBXYWtlVXBT
ZXJ2ZXI6Ok5vOwogfQogCkBAIC0yMzUsMTAgKzIzOSwxMSBAQCBpbmxpbmUgc2l6ZV90IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQogICAg
IHJldHVybiBsaW1pdCAtIG9mZnNldCAtIDE7CiB9CiAKLWlubGluZSBzaXplX3QgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QK
K2lubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dG9MaW1pdChDbGllbnRMaW1p
dCBjbGllbnRMaW1pdCkgY29uc3QKIHsKLSAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0
YVNpemUoKSAtIDEpKTsKLSAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFT
aXplKCkgLSAxKTsKKyAgICBBU1NFUlQoIShjbGllbnRMaW1pdCAmIENsaWVudExpbWl0OjpjbGll
bnRJc1dhaXRpbmdUYWcpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihjbGllbnRM
aW1pdCkgPD0gZGF0YVNpemUoKSAtIDEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNsaWVudExpbWl0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCmluZGV4IGZjOGRjN2QxMDU4ZTA1MTM1MzYxM2U2
NzcyZWQwMjM0MDE3NmZmN2EuLjUyYjNkNzllYWEzNjg3NDBjMTJkNWJjNTQ1MjdlOTU3ZWY0YTY5
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmgKQEAgLTgyLDE5ICs4MiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBv
ZmZzZXQ7CiAgICAgfQogCi0gICAgQXRvbWljPHNpemVfdD4mIGNsaWVudE9mZnNldCgpIHsgcmV0
dXJuIGhlYWRlcigpLmNsaWVudE9mZnNldDsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzZXJ2ZXJP
ZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZXJ2ZXJPZmZzZXQ7IH0KKyAgICAvLyBWYWx1ZSBk
ZW5vdGluZyB0aGUgY2xpZW50IGluZGV4IHRvIHRoZSBidWZmZXIsIHdpdGggc3BlY2lhbCB0YWcg
dmFsdWVzLgorICAgIC8vIFRoZSBjbGllbnQgdHJ1c3RzIHRoaXMuIFRoZSBzZXJ2ZXIgY29udmVy
dHMgdGhlIHZhbHVlIHRvIHRydXN0ZWQgc2l6ZV90IG9mZnNldCB3aXRoIGEgc3BlY2lhbCBmdW5j
dGlvbi4KKyAgICBlbnVtIENsaWVudE9mZnNldCA6IHNpemVfdCB7CisgICAgICAgIC8vIFRhZyB2
YWx1ZSBzdG9yZWQgaW4gd2hlbiB0aGUgc2VydmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5u
aW5nLgorICAgICAgICBzZXJ2ZXJJc1NsZWVwaW5nVGFnID0gMXUgPDwgMzEKKyAgICB9OworCisg
ICAgLy8gVmFsdWUgZGVub3RpbmcgdGhlIHNlcnZlciBpbmRleCB0byB0aGUgYnVmZmVyLCB3aXRo
IHNwZWNpYWwgdGFnIHZhbHVlcy4KKyAgICAvLyBUaGUgY2xpZW50IHRydXN0cyB0aGlzLiBUaGUg
c2VydmVyIGNvbnZlcnRzIHRoZSB2YWx1ZSB0byB0cnVzdGVkIHNpemVfdCBvZmZzZXQgd2l0aCBh
IHNwZWNpYWwgZnVuY3Rpb24uCisgICAgZW51bSBTZXJ2ZXJPZmZzZXQgOiBzaXplX3QgeworICAg
ICAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIHdoZW4gdGhlIGNsaWVudCBpcyB3YWl0aW5nLCBlLmcu
IHdhaXRpbmcgb24gYSBzZW1hcGhvcmUuCisgICAgICAgIGNsaWVudElzV2FpdGluZ1RhZyA9IDF1
IDw8IDMxCisgICAgfTsKKworICAgIEF0b21pYzxDbGllbnRPZmZzZXQ+JiBjbGllbnRPZmZzZXQo
KSB7IHJldHVybiBoZWFkZXIoKS5jbGllbnRPZmZzZXQ7IH0KKyAgICBBdG9taWM8U2VydmVyT2Zm
c2V0PiYgc2VydmVyT2Zmc2V0KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VydmVyT2Zmc2V0OyB9CiAg
ICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPiht
X3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhlYWRlclNpemUoKTsgfQogICAgIHNpemVfdCBkYXRh
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNpemU7IH0KICAgICBTZW1hcGhvcmUmIGNsaWVu
dFdhaXRTZW1hcGhvcmUoKSB7IHJldHVybiBtX2NsaWVudFdhaXRTZW1hcGhvcmU7IH0KIAotICAg
IC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpjbGllbnRPZmZzZXQgd2hlbiB0aGUgc2Vy
dmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgotICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGNsaWVudE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOwotICAgIC8v
IFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpzZXJ2ZXJPZmZzZXQgd2hlbiB0aGUgY2xpZW50
IGlzIHdhaXRpbmcsIGUuZy4gd2FpdGluZyBvbgotICAgIC8vIGEgc2VtYXBob3JlLgotICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNlcnZlck9mZnNldENsaWVudElzV2FpdGluZ1RhZyA9IDEg
PDwgMzE7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtU2l6ZSgpIHsgcmV0
dXJuIHN0ZDo6bWluKGNsaWVudE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcsIGNsaWVudE9mZnNl
dFNlcnZlcklzU2xlZXBpbmdUYWcpIC0gMTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3RkOjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGll
bnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENsaWVu
dE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZykpIC0gMTsgfQogICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cj4gZGVjb2RlKERlY29kZXImKTsKIApAQCAtMTAyLDEwICsxMTAsMTAgQEAgcHJpdmF0ZToKICAg
ICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6
ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIGNsaWVudFdhaXRTZW1hcGhvcmUpOwogCiAgICAg
c3RydWN0IEhlYWRlciB7Ci0gICAgICAgIEF0b21pYzxzaXplX3Q+IHNlcnZlck9mZnNldDsKKyAg
ICAgICAgQXRvbWljPFNlcnZlck9mZnNldD4gc2VydmVyT2Zmc2V0OwogICAgICAgICAvLyBQYWRk
aW5nIHNvIHRoYXQgdGhlIHZhcmlhYmxlcyBtb3N0bHkgYWNjZXNzZWQgYnkgZGlmZmVyZW50IHBy
b2Nlc3NlcyBkbyBub3Qgc2hhcmUgYSBjYWNoZSBsaW5lLgogICAgICAgICAvLyBUaGlzIGlzIGFu
IGF0dGVtcHQgdG8gYXZvaWQgY2FjaGUtbGluZSBpbmR1Y2VkIHJlZHVjdGlvbiBvZiBwYXJhbGxl
bCBhY2Nlc3MuCi0gICAgICAgIGFsaWduYXMoc2l6ZW9mKHVpbnQ2NF90WzJdKSkgQXRvbWljPHNp
emVfdD4gY2xpZW50T2Zmc2V0OworICAgICAgICBhbGlnbmFzKHNpemVvZih1aW50NjRfdFsyXSkp
IEF0b21pYzxDbGllbnRPZmZzZXQ+IGNsaWVudE9mZnNldDsKICAgICB9OwogICAgIEhlYWRlciYg
aGVhZGVyKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SGVhZGVyKj4obV9zaGFy
ZWRNZW1vcnktPmRhdGEoKSk7IH0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJT
aXplKCkgeyByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKHN0ZDo6bWF4X2FsaWdu
X3QpPihzaXplb2YoSGVhZGVyKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggODBiMDM5YTdmOTg1Mzk3MjA2
OGYzZWVlODQ5MjQ0M2Q3YzgwM2EzZi4uOGU0OTI2NjQ0YTgwODYzNjllZjdjYzg5YTQwMmIyOGI5
NjAxN2EwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTYxLDM1ICs2MSwzNSBAQCB2b2lkIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVf
cHRyPERlYwogCiBPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWlyZSgpCiB7Ci0gICAgc2l6ZV90IHNlcnZl
ckxpbWl0ID0gc2hhcmVkQ2xpZW50T2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1
aXJlKTsKLSAgICBpZiAoc2VydmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xp
ZW50T2Zmc2V0U2VydmVySXNTbGVlcGluZ1RhZykKKyAgICBTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1p
dCA9IHNoYXJlZFNlcnZlckxpbWl0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsK
KyAgICBpZiAoc2VydmVyTGltaXQgPT0gU2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgYXV0byByZXN1bHQgPSBhbGlnbmVk
U3BhbihtX3NlcnZlck9mZnNldCwgc2VydmVyTGltaXQpOworCisgICAgYXV0byByZXN1bHQgPSBh
bGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAg
ICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAgIHNlcnZl
ckxpbWl0ID0gc2hhcmVkQ2xpZW50T2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlcnZl
ckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVw
aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3Ff
cmVsKTsKLSAgICAgICAgQVNTRVJUKCEoc2VydmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOjpjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVwaW5nVGFnKSk7Ci0gICAgICAgIHNlcnZlckxp
bWl0ID0gY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KTsKLSAgICAgICAgcmVzdWx0ID0gYWxpZ25l
ZFNwYW4obV9zZXJ2ZXJPZmZzZXQsIHNlcnZlckxpbWl0KTsKKyAgICAgICAgc2VydmVyTGltaXQg
PSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZXJ2ZXJMaW1pdCwg
U2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICByZXN1bHQgPSBhbGlnbmVk
U3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgfQog
Ci0gICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmIChyZXN1bHQuc2l6
ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogewogICAgIEFTU0VSVChyZWFkU2l6ZSk7CiAgICAg
cmVhZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKLSAgICBz
aXplX3Qgc2VydmVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlcnZlck9mZnNl
dCkgKyByZWFkU2l6ZSk7CisgICAgU2VydmVyT2Zmc2V0IHNlcnZlck9mZnNldCA9IHN0YXRpY19j
YXN0PFNlcnZlck9mZnNldD4od3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlcnZlck9mZnNldCkg
KyByZWFkU2l6ZSkpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc2l6ZV90IG9sZFNlcnZl
ck9mZnNldCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmV4Y2hhbmdlKHNlcnZlck9mZnNldCwgc3Rk
OjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Ci0gICAgLy8gSWYgdGhlIGNsaWVudCB3cm90ZSBvdmVy
IHNlcnZlck9mZnNldCwgaXQgbWVhbnMgdGhlIGNsaWVudCBpcyB3YWl0aW5nLgotICAgIGlmIChv
bGRTZXJ2ZXJPZmZzZXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVyT2Zmc2V0Q2xp
ZW50SXNXYWl0aW5nVGFnKQorICAgIFNlcnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFy
ZWRTZXJ2ZXJPZmZzZXQoKS5leGNoYW5nZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVy
X2FjcV9yZWwpOworICAgIC8vIElmIHRoZSBzZW5kZXIgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQs
IGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4KKyAgICBpZiAob2xkU2VydmVyT2Zmc2V0
ID09IFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQogICAgICAgICBtX2J1ZmZlci5j
bGllbnRXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQo
IShvbGRTZXJ2ZXJPZmZzZXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXRD
bGllbnRJc1dhaXRpbmdUYWcpKTsKKyAgICAgICAgQVNTRVJUKCEob2xkU2VydmVyT2Zmc2V0ICYg
U2VydmVyT2Zmc2V0OjpjbGllbnRJc1dhaXRpbmdUYWcpKTsKICNlbHNlCiAgICAgc2hhcmVkU2Vy
dmVyT2Zmc2V0KCkuc3RvcmUoc2VydmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNl
KTsKICAgICAvLyBJUEM6OlNlbWFwaG9yZSBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBwbGF0Zm9y
bS4gQ2xpZW50IHdpbGwgcG9sbCBhbmQgeWllbGQuCkBAIC0xMjEsMTAgKzEyMSwxMiBAQCBzaXpl
X3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxpbWl0KQogICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OwogfQogCi1zaXplX3QgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGlt
aXQpIGNvbnN0CitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1p
dChTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1pdCkgY29uc3QKIHsKLSAgICBBU1NFUlQodW50cnVzdGVk
TGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKLSAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVk
TGltaXQsIGRhdGFTaXplKCkgLSAxKTsKKyAgICBBU1NFUlQoIShzZXJ2ZXJMaW1pdCAmIFNlcnZl
ckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgc2l6ZV90IGxpbWl0ID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzZXJ2ZXJMaW1pdCk7CisgICAgQVNTRVJUKGxpbWl0IDw9IGRhdGFTaXpl
KCkgLSAxKTsKKyAgICByZXR1cm4gc3RkOjptaW4obGltaXQsIGRhdGFTaXplKCkgLSAxKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IGJlY2QzOGRkOTMxM2I2MzIzZjBhYTRmMjdmZDJjYmUyYmZmOTk3YjMu
LjQ5NWFmZmQwM2M2ZjU0ZDcyODlmYzEwMWQ2ZDZkZDg4NmUzYjc3MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTc0
LDExICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVz
c2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50
OwogICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKICAg
ICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwotICAgIHNpemVfdCBj
bGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKICAgICBzaXplX3Qgd3Jh
cE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0
KG9mZnNldCk7IH0KICAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBt
aW5pbXVtTWVzc2FnZVNpemUpOyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZENsaWVudE9m
ZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmNsaWVudE9mZnNldCgpOyB9Ci0gICAgQXRvbWljPHNp
emVfdD4mIHNoYXJlZFNlcnZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZlck9mZnNl
dCgpOyB9CisgICAgdXNpbmcgU2VydmVyTGltaXQgPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpD
bGllbnRPZmZzZXQ7CisgICAgQXRvbWljPFNlcnZlckxpbWl0PiYgc2hhcmVkU2VydmVyTGltaXQo
KSB7IHJldHVybiBtX2J1ZmZlci5jbGllbnRPZmZzZXQoKTsgfQorICAgIHVzaW5nIFNlcnZlck9m
ZnNldCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlNlcnZlck9mZnNldDsKKyAgICBBdG9taWM8
U2VydmVyT2Zmc2V0PiYgc2hhcmVkU2VydmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2Vy
dmVyT2Zmc2V0KCk7IH0KKyAgICBzaXplX3QgY2xhbXBlZExpbWl0KFNlcnZlckxpbWl0KSBjb25z
dDsKICAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9
CiAgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUo
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCBi
NTk3ZjMxNmM5ZmRkNjMyN2VlYzRkMmUyMzk5OTBiZmUyNjM3Y2JlLi40NWJjNWQ5MDQxNzA2M2U5
ZWJhYmMxNmMxYmY4MDIwM2ZiMWIzNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQogICAgIGlmICgh
aXNDb250ZXh0TG9zdCgpKSB7CiAgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvcikpOwog
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Vy
cm9yV2hlbkNvbnRleHRJc0xvc3QgPSBlcnJvcjsKQEAgLTE4Nyw3ICsxODcsNyBAQCBHQ0dMZW51
bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCiAgICAgICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0gMDsKICAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSkpOwog
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCi0gICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xl
bnVtPihyZXR1cm5WYWx1ZSk7CiAgICAgfQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZXJy
b3JXaGVuQ29udGV4dElzTG9zdCwgTk9fRVJST1IpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ5NWM4YmU3MjZiYzMwMzZi
MTRhZWQ5YjFkM2QwNTMyYzg4MWQzNzUuLjg2OWI5NTdhOTJiNmY0MmEzNjM4YTVmYjU3YzUxZmJm
ZTYwZWIwMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMy0wMiAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIGFzc2VydHMgYWZ0ZXIg
R1BVIHByb2Nlc3MgdGltZXMgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSBhIFdlYkdMIGNh
bGwgdGltZXMgb3V0LgorICAgICAgICBBZGQgdHdvIHZhcmlhbnRzOiBvbmUgd2hpY2ggbW9zdCBw
cm9iYWJseSB0aW1lcyBvdXQgb24KKyAgICAgICAgc3luY2hyb25vdXMgY2FsbCwgYW5kIG9uZSB3
aGljaCBtb3N0IHByb2JhYmx5IHRpbWVzIG91dCBvbgorICAgICAgICBhc3luY2hyb25vdXMgY2Fs
bC4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMt
ZmFpbHVyZS5odG1sOgorICAgICAgICBUaGUgdGVzdGluZyBBUElzIHdlcmUgY2hhbmdlZCwgc28g
cmVwbGFjZSB1c2Ugb2YKKyAgICAgICAgSW50ZXJuYWxzLnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hl
Y2soKQorICAgICAgICB3aXRoIEludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0
KCkKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1h
c3luYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xv
c2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdl
ZGV2ZW50Lmh0bWw6CisKIDIwMjEtMDMtMDIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGRpbmcgbmV3IHRlc3QgY29uZGl0aW9ucyBmb3IgV2ViR0wg
c2hvdWxkIGJlIHNpbXBsZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ5NWQ0MGY2MTNjZjc3ODFl
NDFjZWYwM2RmNzllN2I2MzY0Njk0ZjMuLjIzZjMwNTgwMDkxMjQ2NGY0Y2QxNzc5YzQwNDFlM2Fh
NjA2MDJiZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQ1OSw2ICszNDU5LDEwIEBAIHdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlMi9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC0yLmh0bWwgWyBTa2lw
IF0KICMgRmFpbGluZyBvbiBjZXJ0YWluIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zOiBtYWNPUyB3
aXRoIEludGVsIEdQVXMuIEFsc28gc2xvdy4KIHdlYmtpdC5vcmcvYi8yMjA3NTMgd2ViZ2wvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwgWyBQYXNzIEZhaWx1cmUg
U2xvdyBdCiAKKyMgVGltZW91dCB0ZXN0aW5nIGlzIG5vdCBhcHBsaWNhYmxlIHRvIGluLXByb2Nl
c3Mgd2ViZ2wsIG9ubHkgd2ViZ2wgaW4gZ3B1IHByb2Nlc3MuCitmYXN0L2NhbnZhcy93ZWJnbC9s
b3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy5odG1sIFsgU2tpcCBdCitmYXN0L2NhbnZhcy93
ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5odG1sIFsgU2tpcCBdCisKICMgcHJlLXdyYXAg
cHJvZ3Jlc3Npb24uIE90aGVyIHJlbmRlcmluZyBlbmdpbmVzIGFncmVlIHdpdGggdGhlIHJlc3Vs
dC4KIHdlYmtpdC5vcmcvYi8yMDYxNjggWyBEZWJ1ZyBdIGZhc3QvZG9tL2luc2VydC1zcGFuLWlu
dG8tbG9uZy10ZXh0LWJ1Zy0yODI0NS5odG1sIFsgU2tpcCBdCiAKQEAgLTQ4MzksNCArNDg0Mywz
IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxl
cy91cHBlci1hcm1lbmlhbi9jc3MzLWNvdW50CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvdXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLXN0eWxl
cy0wMjMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL3VwcGVyLXJvbWFuL2NzczMtY291bnRlci1z
dHlsZXMtMDI0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1yb21hbi9jc3MzLWNvdW50
ZXItc3R5bGVzLTAyNGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3lu
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRl
eHQtb24tdGltZW91dC1hc3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdlYTZjZTY3ZDZi
MDQxMzM3Y2JmYTQwYWYzMDZiN2NhY2M2MzM4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFdlYkdMOiBDT05URVhU
X0xPU1RfV0VCR0w6IGxvc2VDb250ZXh0OiBjb250ZXh0IGxvc3QKK0NoZWNrcyB0aGF0IGEgR1BV
IHByb2Nlc3MgdGltZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJvZHVjaW5nIFdlYkdMIGNhbGwgd2ls
bCBsb3NlIHRoZSBjb250ZXh0LgorTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBo
YXJuZXNzIGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLgorCitQQVNTIGdsLmlzQ29udGV4
dExvc3QoKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNT
IGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuQ09O
VEVYVF9MT1NUX1dFQkdMCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9z
ZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM1
ZjM1Y2NmNDVhNTAxZTAxZmM1YjllZWUxZjAyZGNiZWU3NDFmMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFz
eW5jLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKzxzdHls
ZT4KK2NhbnZhcyB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9Cis8
L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8
c2NyaXB0PgorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmsp
CisgICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKKworZGVidWcoIkNo
ZWNrcyB0aGF0IGEgR1BVIHByb2Nlc3MgdGltZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJvZHVjaW5n
IFdlYkdMIGNhbGwgd2lsbCBsb3NlIHRoZSBjb250ZXh0LiIpOworZGVidWcoIk5PVEU6IFRoaXMg
b25seSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVy
bmFscy4iKTsKK2RlYnVnKCIiKTsKKworYXN5bmMgZnVuY3Rpb24gd2ViR0xDb250ZXh0TG9zdChj
YW52YXMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjYW52YXMuYWRkRXZl
bnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIHJlc29sdmUpKTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMjAwOworICAgIGNhbnZhcy5oZWlnaHQg
PSAyMDA7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgICAgd3R1LnNl
dHVwQ29sb3JRdWFkKGdsKTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNh
bnZhcy5oZWlnaHQpOworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5p
c0NvbnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19F
UlJPUiIpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoInRpbWVvdXQiLCBnbCk7CisgICAgLy8g
V2UncmUgdHJ5aW5nIHRvIGZpbGwgdGhlIGNvbW1hbmQgYnVmZmVyIHdpdGggY2FsbHMgYWZ0ZXIg
dGhlIHRpbWVvdXQsCisgICAgLy8gc28gdGhhdCB3ZSB0ZXN0IHRoYXQgYXN5bmNocm9ub3VzIGNh
bGxzIGNhdXNlIHRpbWVvdXRzIHRvby4KKyAgICAvLyBVc2UgYSByZWxhdGl2ZWx5IGZhc3QgY2Fs
bCB0aGF0IHN0aWxsIGZpbGxzIHVwIHRoZSBidWZmZXIuCisgICAgbGV0IGNhbGxDb3VudCA9IDEw
MDAwMDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQ291bnQ7ICsraSkKKyAgICAgICAg
Z2wuY2xlYXJDb2xvcigxLjAsIDEuMCwgMC4wICsgaS9jYWxsQ291bnQsIDEuMCk7CisgICAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgYXdhaXQgd2ViR0xDb250ZXh0TG9zdChj
YW52YXMpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAgc2hv
dWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuQ09OVEVYVF9MT1NUX1dFQkdMIik7CisgICAgZmlu
aXNoVGVzdCgpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworPC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWU0MjkzNDg1ZmRiNmYzOGIwYmIzYjkzNjNjMjM4Zjlk
NWRlMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
bG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NP
TlNPTEUgTUVTU0FHRTogV2ViR0w6IENPTlRFWFRfTE9TVF9XRUJHTDogbG9zZUNvbnRleHQ6IGNv
bnRleHQgbG9zdAorQ2hlY2tzIHRoYXQgYSBHUFUgcHJvY2VzcyB0aW1lb3V0IG9uIGEgcmVzdWx0
IHByb2R1Y2luZyBXZWJHTCBjYWxsIHdpbGwgbG9zZSB0aGUgY29udGV4dC4KK05PVEU6IFRoaXMg
b25seSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVy
bmFscy4KKworUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyBnbC5OT19FUlJPUgorUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLkNPTlRFWFRfTE9TVF9XRUJHTAorUEFTUyB2YWwgaXMgWzAs
IDAsIDAsIDBdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250
ZXh0LW9uLXRpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2Ut
Y29udGV4dC1vbi10aW1lb3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE0ZTZhYjI1MjBiNzg1ODI1ZDg4
ZjRkMmE3NWJkZTFlNzdlZmVjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKQEAgLTAsMCArMSw1NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2NhbnZhcyB7CisgICAgd2lkdGg6
IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgd3R1ID0gV2Vi
R0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lm
ICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspCisgICAgd2luZG93LmluaXROb25LaHJv
bm9zRnJhbWV3b3JrKGZhbHNlKTsKKworZGVidWcoIkNoZWNrcyB0aGF0IGEgR1BVIHByb2Nlc3Mg
dGltZW91dCBvbiBhIHJlc3VsdCBwcm9kdWNpbmcgV2ViR0wgY2FsbCB3aWxsIGxvc2UgdGhlIGNv
bnRleHQuIik7CitkZWJ1ZygiTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBoYXJu
ZXNzIGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLiIpOworZGVidWcoIiIpOworCithc3lu
YyBmdW5jdGlvbiB3ZWJHTENvbnRleHRMb3N0KGNhbnZhcykgeworICAgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0
IiwgcmVzb2x2ZSkpOworfQordmFyIHZhbDsKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNh
bnZhcy53aWR0aCA9IDIwMDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMjAwOworICAgIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIHd0dS5zZXR1cENvbG9yUXVhZChnbCk7Cisg
ICAgZ2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBn
bC5jbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCk7CisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7Cisg
ICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9y
V2ViR0xDb250ZXh0KCJ0aW1lb3V0IiwgZ2wpOworICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAxLjAs
IDAuMCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB2YWwg
PSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICAgIGF3YWl0IHdlYkdM
Q29udGV4dExvc3QoY2FudmFzKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3Qo
KSIpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLkNPTlRFWFRfTE9TVF9XRUJH
TCIpOworICAgIHNob3VsZEJlKCJ2YWwiLCAiWzAsIDAsIDAsIDBdIik7CisgICAgZmluaXNoVGVz
dCgpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwor
PC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1w
cm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGViNDBkYjM2YzAxYjJjMGJhMjZhNTgzM2Y4NzMyZjkxYzZjYTEzMDIu
LjE2MDAyZmQ0ZmIwNTAzZjA0NzI3MTk5OWRmY2E2Zjg1YTNiMjExYTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTcsNiArMTcsOSBAQCBmYXN0L2NhbnZh
cy93ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXhhdHRyaWJwb2ludGVyLmh0bWwgWyBTbG93IF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLWZpbHRl
ci1vdXRvZmJvdW5kcy5odG1sIFsgU2xvdyBdCiAKK2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29u
dGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwgWyBTbG93IFBhc3MgXQorZmFzdC9jYW52YXMvd2Vi
Z2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbCBbIFNsb3cgUGFzcyBdCisKIGZhc3QvZG9t
L25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2ltYWdl
cy9vcmRlcmVkLWFuaW1hdGVkLWltYWdlLWZyYW1lcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422229</attachid>
            <date>2021-03-04 08:17:46 -0800</date>
            <delta_ts>2021-03-04 11:46:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222546-20210304181743.patch</filename>
            <type>text/plain</type>
            <size>40217</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y3NWMwYWJkYmM2OTA3
NjMwYjc3ZjVlNjExMzdmYjRmOTkxNDViNC4uMTBkZmI4YjcwZTMwOTJlZWNkM2NiZGI3OTYzOWQz
OGYzZTFmZDRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAzLTA0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgYXNzZXJ0
cyBhZnRlciBHUFUgcHJvY2VzcyB0aW1lcyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRyaWdnZXIgaW50ZXJuYWxzLnNpbXVsYXRlRXZl
bnRGb3JXZWJHTENvbnRleHQoInRpbWVvdXQiLCBjb250ZXh0KQorICAgICAgICB0byB0cmlnZ2Vy
IHRpbWVvdXQgZm9yIGNhbGxzIHRvIGEgV2ViR0wgY29udGV4dC4KKworICAgICAgICBUZXN0czog
ZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRt
bAorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KToKKwogMjAyMS0wMy0wNCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW05pY29z
aWFdIE1vdmUgc2hhcmVkIHNjcm9sbGluZyBhbmltYXRpb24gY29kZSBpbnRvIGEgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZWJmZjZlZmFmYmJhMTI3Y2I1
MWRiZGM0NzNmZWRhODU5MGZhOTFmLi44OWY3OTNlMGJhOGRmMjFhOWIxNTI4NjMxZWVmYzkwOTAz
ZWY3YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMS0wMy0wNCAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIGFzc2VydHMgYWZ0
ZXIgR1BVIHByb2Nlc3MgdGltZXMgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUg
d291bGQgYXNzZXJ0IG9uCisgICAgICAgICAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0
YVNpemUoKSAtIDEpKTsKKyAgICAgICAgVGhlIHVudHJ1c3RlZExpbWl0IHZhbHVlIHdvdWxkIGJl
IHRoZW46CisgICAgICAgICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXRD
bGllbnRJc1dhaXRpbmdUYWcuCisgICAgICAgIFRoaXMgd291bGQgYmUgZXF1aXZhbGVudCBvZiBh
c3NlcnRpb24gYWRkZWQgaW4gdGhpcyBjb21taXQ6CisgICAgICAgICAgICBBU1NFUlQoY2xpZW50
TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7CisKKyAgICAgICAgVGhp
cyB3b3VsZCBoYXBwZW4gaW4gY2FzZSBvZiB0aW1lb3V0LCBiZWNhdXNlIHVwb24gZW50ZXJpbmcK
KyAgICAgICAgdGhlIHdhaXQgc2VxdWVuY2U6CisgICAgICAgICAxKSBUaGUgY2xpZW50IGl0c2Vs
ZiB3b3VsZCBmaXJzdCB3cml0ZSB0aGUgdGFnIHZhbHVlIHRvIHRoZQorICAgICAgICAgICAgb2Zm
c2V0IHZhcmlhYmxlLgorICAgICAgICAgMikgV2FpdCBhbmQgdGltZW91dCB0aGUgd2FpdC4KKyAg
ICAgICAgIDMpIHJ1biB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIGFjcXVpcmUgbG9vcC4KKwor
ICAgICAgICBUaGUgbmV4dCBpdGVyYXRpb24gd291bGQgbG9hZCB0aGUgdGFnIHZhbHVlIHdyaXR0
ZW4gYmVmb3JlLAorICAgICAgICBlLmcuIHNlcnZlck9mZnNldENsaWVudElzV2FpdGluZ1RhZy4K
KyAgICAgICAgVGhpcyB3b3VsZCBiZSB0aGVuIHVzZWQgaW4gY2xhbXBlZExpbWl0KCkgY2FsbC4K
KworICAgICAgICBGaXggdGhpcyBieSB0YWtpbmcgaXQgaW50byBhY2NvdW50IHRoYXQgdGhlIHZh
cmlhYmxlIG1pZ2h0IGJlCisgICAgICAgIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcg
d2l0aGluIHRoZSBhY3F1aXJlIGxvb3AuCisKKyAgICAgICAgUG9zc2libHkgZml4IGZ1dHVyZSBz
aW1pbGFyIHByb2JsZW1zIGJ5IG5vdCB0cmVhdGluZyB0aGUgdmFsdWUgYXMKKyAgICAgICAgc2l6
ZV90LCByYXRoZXIgdHJlYXQgaXQgYXMgZW51bSBjbGFzcyBDbGllbnRPZmZzZXQgOiBzaXplX3Qu
IFRoaXMKKyAgICAgICAgZW5hYmxlcyB0aGUgY29tcGlsZXIgdG8gZW5mb3JjZSB0aGF0IHdoZW4g
Y2hlY2tpbmcgZm9yIHRoZSB2YXJpb3VzIHRhZworICAgICAgICB2YWx1ZXMsIHRoZSBob2xkZXIg
bXVzdCBob2xkIHRoZSBlbnVtIGNsYXNzLiBXaGVuIGludGVuZGluZyB0byBpbnRlcnByZXQKKyAg
ICAgICAgdGhlIHZhbHVlIGFzIHNpemVfdCwgaG9sZGVyIG11c3QgZXhwbGljaXRseSBjb252ZXJ0
LgorCisgICAgICAgIERvIHRoZSBhYm92ZSBjaGFuZ2UgZm9yIHRoZSBTZXJ2ZXJPZmZzZXQuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0
LWFzeW5jLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4
dC1vbi10aW1lb3V0Lmh0bWwKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIERvIG5vdCBhc3NlcnQgdGhh
dCB0aGUgcmVsZWFzZSBtZXNzYWdlIGFjdHVhbGx5IHJlbGVhc2VzIHRoZSBjb250ZXh0LgorICAg
ICAgICBGb3IgdGVzdGluZywgdGhlIGluZHVjZSB0aGUgdGltZW91dCBieSByZWxlYXNpbmcgdGhl
IGNvbnRleHQgcHJlbWF0dXJlbHkKKyAgICAgICAgYW5kIHRyZWF0aW5nIHRoZSBzdWJzZXF1ZW50
IG1lc3NhZ2VzIGFzIGlmIHRoZXkgd2VyZSBub24tbGVnaXQgbWVzc2FnZXMuCisgICAgICAgIFRo
YXQgc2hvdWxkIGJlIGp1c3Qgc2tpcHBlZC4KKworICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKToKKyAg
ICAgICAgQWRkIGEgcHVibGljIGZ1bmN0aW9uIHRvIGludm9rZSBmcm9tICJGb3JUZXN0aW5nIiBj
b2RlcGF0aHMuCisKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgIFNraXAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgbWVzc2FnZXMgdGhhdCBkbyBub3QgZ2V0IHJvdXRlZCB0byBhbnkKKyAgICAgICAg
aW5zdGFuY2UuIFRoZXNlIG1lc3NhZ2VzIGNhbiBiZSAibm9uLWxlZ2l0Iiwgb25lcyB0aGF0IGFy
ZSBzZW50IGJlZm9yZQorICAgICAgICB0aGUgImNvbnRleHQgd2FzIGxvc3QiIG1lc3NhZ2UgcmVh
Y2hlZCB0aGUgc2VuZGVyLCBvciBvbmVzIHRoYXQgYXJlCisgICAgICAgIHNlbnQgZHVyaW5nIHNp
bXVsYXRlZCB0aW1lb3V0LgorICAgICAgICBUaGVzZSBkbyBub3QgY29udGFpbiBhc3NlcnRzIGFz
IGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlc2Ugd2lsbCBvY2N1ciBpbgorICAgICAgICBhYm92ZSBz
aXR1YXRpb25zLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOgorICAg
ICAgICBBZGQgdGhlIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nIGZ1bmN0aW9uIHRvIHNpbXVsYXRl
IHRoZQorICAgICAgICB0aW1lb3V0LiBTaW11bGF0ZSB2aWEganVzdCByZW1vdmluZyB0aGUgY29u
dGV4dCwgd2hpY2ggY2F1c2VzCisgICAgICAgIGxlZnQtb3ZlciBtZXNzYWdlcyB0byBza2lwcGVk
LgorICAgICAgICBDdXJyZW50bHkgd2UgZG8gbm90IHNpbXVsYXRlIHRoZSB0aW1lb3V0IHdpdGgg
YW4gaW5maW5pdGUgbG9vcAorICAgICAgICBpbiBHUFUgcHJvY2VzcyB0aHJlYWRzIGFzIHRoYXQg
aXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgQ3VycmVudGx5IHdlIGRvIG5vdCBzaW11bGF0ZSB0
aGUgdGltZW91dCB3aXRoIGEgZ3B1IHByb2Nlc3MKKyAgICAgICAgY3Jhc2ggc2luY2UgaXQgaXMg
bm90IHN1cHBvcnRlZCB0byBiZSB0ZXN0ZWQgKHdpbGwgY2F1c2UgYQorICAgICAgICByZWxvYWQp
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOgor
ICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAg
IChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2UpOgorICAgICAgICBDaGFuZ2Ug
c2l6ZV90IHVzYWdlIHRvIC0+IENsaWVudE9mZnNldCwgU2VydmVyT2Zmc2V0CisKKyAgICAgICAg
KElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZSk6CisgICAgICAgIEZpeCB0
aGUgYXNzZXJ0aW9uIG9mIGVxdWl2YWxlbnQgb2YgQVNTRVJUKGNsaWVudExpbWl0ICE9IENsaWVu
dExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpOworICAgICAgICBieSByZW9yZ2FuaXppbmcgdGhl
IGFjcXVpcmUgbG9vcC4KKworICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0
b0xpbWl0IGNvbnN0KToKKyAgICAgICAgRml4IHRoZSBvZmYtYnktb25lIGluIGFzc2VydGlvbiBl
cnJvcgorICAgICAgICAoIDwgZGF0YVNpemUoKSAtIDEgIHZzIDw9IGRhdGFTaXplKCkgLSAxKQor
CisgICAgICAgIFJlbmFtZSBmcm9tIGNsYW1wZWRMaW1pdCgpIHRvIHRvTGltaXQoKSwgYXMgdGhl
CisgICAgICAgIGNsYW1waW5nIGlzIGNvbmZ1c2luZyBhcyB0aGUgY2xpZW50IHRydXN0cyB0aGUK
KyAgICAgICAgc2VydmVyLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6b3BlcmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5oOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXQp
OgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXQpOgor
ICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRXYWl0U2VtYXBob3Jl
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6bWF4aW11bVNpemUpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWlyZSk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlKToKKyAgICAgICAgQ2hh
bmdlIHNpemVfdCB1c2FnZSB0byAtPiBDbGllbnRPZmZzZXQsIFNlcnZlck9mZnNldAorCisgICAg
ICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3Qp
OgorICAgICAgICBGaXggdGhlIG9mZi1ieS1vbmUgaW4gYXNzZXJ0aW9uIGVycm9yCisgICAgICAg
ICggPCBkYXRhU2l6ZSgpIC0gMSAgdnMgPD0gZGF0YVNpemUoKSAtIDEpCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVkU2VydmVyTGltaXQpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVkU2VydmVyT2Zmc2V0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3lu
dGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIEZvciB0aGUgY2FzZXMgd2hlcmUgdGhlIHRpbWVv
dXQgd291bGQgaGFwcGVuIGluIHRoZXNlIHR3byBmdW5jdGlvbnMsCisgICAgICAgIGNhbGwgdGhl
IG1hcmtDb250ZXh0TG9zdCgpIGluc3RlYWQgb2Ygd2FzTG9zdCgpLiBUaGlzIGlzIHRvIGNsYXJp
ZnkKKyAgICAgICAgYWxsIHRoZSBjb250ZXh0IGxvc3QgaGFuZGxpbmcgdG8gdXNlIHRoZSBzYW1l
IHBhdHRlcm4uCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcDoKKwogMjAyMS0wMy0wNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIElQQyBzdHJlYW0gZmVhdHVyZSBzaG91bGQgdXNlIGNsaWVudC9z
ZXJ2ZXIgbmFtaW5nIGluc3RlYWQgb2Ygc2VuZGVyL3JlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA4NDU0
ZWFiZWMzOGM5NTI2M2Q3Nzc1MjEzNWNkMjEzNjhjMDkzZDNkLi5kMjgzZWIwYThjM2ZmZTdjMmJm
NzI4ZWI1NDgxM2I5ZTg2YzhlZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEzMDEsNyArMTMwMSw4IEBAIHB1
YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIHsKICAgICAg
ICAgQ29udGV4dENoYW5nZSwKLSAgICAgICAgR1BVU3RhdHVzRmFpbHVyZQorICAgICAgICBHUFVT
dGF0dXNGYWlsdXJlLAorICAgICAgICBUaW1lb3V0CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQg
c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjYWUyYWE1ZTMyMzRlODk0ZjUx
YTcxMDM0MjQ0MTkwMzk5NzdmOWExLi42ZTQ5Yzk3NTljMzllOGQ3NjJlYWU4MDA5Nzk2NTkzZWI2
YjhkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MTAyLDYgKzUx
MDIsOSBAQCB2b2lkIEludGVybmFsczo6c2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dChTaW11
bGF0ZWRXZWJHTENvbnRleHRFdmVudCBldmVudCwgVwogICAgIGNhc2UgU2ltdWxhdGVkV2ViR0xD
b250ZXh0RXZlbnQ6OkdQVVN0YXR1c0ZhaWx1cmU6CiAgICAgICAgIGNvbnRleHRFdmVudCA9IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nOjpHUFVTdGF0dXNG
YWlsdXJlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXVsYXRlZFdlYkdMQ29udGV4dEV2
ZW50OjpUaW1lb3V0OgorICAgICAgICBjb250ZXh0RXZlbnQgPSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZzo6VGltZW91dDsKKyAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGEwN2MzYTk1MTM5N2ZiMGRhNjlh
YjY1ZDA0OWE2Y2NmOTBkMjZhNjkuLjI5ODI0N2Y0ODI0ZGEyNTMyNWI3YTkzNjhhMjM5YjhlNzQ1
MmZkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzc0LDcgKzc3NCw4IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZW51bSBjbGFzcyBTaW11bGF0ZWRXZWJH
TENvbnRleHRFdmVudCB7CiAgICAgICAgIENvbnRleHRDaGFuZ2UsCi0gICAgICAgIEdQVVN0YXR1
c0ZhaWx1cmUKKyAgICAgICAgR1BVU3RhdHVzRmFpbHVyZSwKKyAgICAgICAgVGltZW91dAogICAg
IH07CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KFNpbXVsYXRlZFdlYkdM
Q29udGV4dEV2ZW50LCBXZWJHTFJlbmRlcmluZ0NvbnRleHQmKTsKICAgICBib29sIGhhc0xvd0Fu
ZEhpZ2hQb3dlckdQVXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjMzk5ZDZiZmMyY2Y4NDNiMGM0ZWQz
MzdlNDc1MTBmODlhYzhiY2M0Li45MDQ3MGVkMGUxYzdkN2IwNDk2MTk2MWRhNmIwZWUwMjFmZjcz
ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVkaWFPdmVy
cmlkZXNGb3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVy
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oIgpAQCAtMzYwLDEwICszNjEsMTUgQEAgdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3ND
b250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKIHsKLSAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1h
cC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGZvdW5kLCBmb3VuZCk7CisgICAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1vdmUo
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJlbGVhc2VHcmFwaGljc0NvbnRl
eHRHTChpZGVudGlmaWVyKTsKIH0KICNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQbGF5
aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpAQCAtNTQ1LDYg
KzU1MSwxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFscmVh
ZHkgcmVtb3ZlZCByZWNlaXZlcnMuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRp
ZgogCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KQEAgLTYwNCw3ICs2MTYsMTMgQEAgYm9vbCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCi0KKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFscmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMuCisg
ICAgICAgIHJlcGx5RW5jb2Rlci5yZXNldCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCAyYWZiZWFhNGRiYjgzMmIwNjJiMzQ0OGY2ZGU0OTlmOGVjMWZhMzFlLi42NDdiZDAzNjEyNjc3
Zjg4MmExM2YwZDAyZGNkYjkxZTUzNmM4Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEyOCw3ICsxMjgsOSBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcygpOwotCisj
aWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVz
dGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCiBwcml2YXRlOgogICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBH
UFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCmluZGV4IDg5YmZjYTY0YTdiMmE0NWEwMjE3YzhiYzMzMzQ4NTMwYzg5ZDc4NTUuLjdmNmE3
MTE2MTcyNDdhYzE3NDE1OTA5NTUwZGZiNDQ3YzFlNTBkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcApAQCAtMjU4LDYgKzI1OCwxNSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojpjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZQogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVu
dCkKIHsKICAgICAvLyBGSVhNRTogb25seSBydW4gdGhpcyBpbiB0ZXN0aW5nIG1vZGUuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1NDQKKyAgICBpZiAoZXZlbnQg
PT0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVz
dGluZzo6VGltZW91dCkgeworICAgICAgICAvLyBTaW11bGF0ZSB0aGUgdGltZW91dCBieSBqdXN0
IGRpc2NhcmRpbmcgdGhlIGNvbnRleHQuIFRoZSBzdWJzZXF1ZW50IG1lc3NhZ2VzIGFjdCBsaWtl
CisgICAgICAgIC8vIHVuYXV0aG9yaXplZCBvciBvbGQgbWVzc2FnZXMgZnJvbSBXZWIgcHJvY2Vz
cywgdGhleSBhcmUgc2tpcHBlZC4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZp
ZXIgPSBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcl0oKSB7CisgICAgICAgICAgICBpZiAo
YXV0byBjb25uZWN0aW9uVG9XZWIgPSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQor
ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25Ub1dlYi0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdM
Rm9yVGVzdGluZyhpZGVudGlmaWVyKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgbV9jb250ZXh0LT5zaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhldmVudCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5jcHAKaW5kZXggN2RhNzE1NTNlOWMxMzA3ODc5YzdlODkxMmMzZjRlODNjMDYxODkyNi4u
N2Q1MzRmYWJjOTVlMjRmZjgyMTAyMzRjYWZlY2VmNDY2MGY5OWIyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAg
LTMzLDkgKzMzLDkgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qgc2kKICAgICAsIG1fYnVmZmVyKHNp
emUpCiB7CiAgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVh
ZGVyIHNsZWVwaW5nLgotICAgIHNoYXJlZENsaWVudE9mZnNldCgpLnN0b3JlKFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OmNsaWVudE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGF4ZWQpOworICAgIHNoYXJlZENsaWVudE9mZnNldCgpLnN0b3JlKENsaWVudE9m
ZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiAg
ICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQgb2YgdGhlIHdob2xlIGJ1ZmZl
ci4KLSAgICBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKKyAgICBzaGFyZWRDbGllbnRMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PENsaWVu
dExpbWl0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiB9CiAKIHZvaWQgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2Vt
YXBob3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5oCmluZGV4IGM1YWI2YTNhMzFkOTY0NTQ4ZDhjMWJhNWI4MjJkYmJkYzUwZTcx
OWEuLjA4ODY0OTQzOTlhMGU1ZjZhMzk4NTA1YjQxOWQ4YmY1MjFiNWI4YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAg
LTgwLDEyICs4MCwxNCBAQCBwcml2YXRlOgogCiAgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGltaXQpOwogICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsaW1pdCk7Ci0gICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGlt
aXQpIGNvbnN0OwogCiAgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CiAgICAgc2l6ZV90IGFsaWdu
T2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0
PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQotICAgIEF0
b21pYzxzaXplX3Q+JiBzaGFyZWRDbGllbnRPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5jbGll
bnRPZmZzZXQoKTsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZXJ2ZXJPZmZzZXQoKSB7
IHJldHVybiBtX2J1ZmZlci5zZXJ2ZXJPZmZzZXQoKTsgfQorICAgIHVzaW5nIENsaWVudE9mZnNl
dCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OkNsaWVudE9mZnNldDsKKyAgICBBdG9taWM8Q2xp
ZW50T2Zmc2V0PiYgc2hhcmVkQ2xpZW50T2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuY2xpZW50
T2Zmc2V0KCk7IH0KKyAgICB1c2luZyBDbGllbnRMaW1pdCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OlNlcnZlck9mZnNldDsKKyAgICBBdG9taWM8Q2xpZW50TGltaXQ+JiBzaGFyZWRDbGllbnRM
aW1pdCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZlck9mZnNldCgpOyB9CisgICAgc2l6ZV90IHRv
TGltaXQoQ2xpZW50TGltaXQpIGNvbnN0OwogICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CiAKQEAgLTEzNSw5ICsxMzcsNyBAQCBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpz
ZW5kU3luYyhUJiYgbWVzcwogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc2VuZCB0aHJvdWdoIHN0
cmVhbS4KICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2VpdmUgdGhyb3VnaCBzdHJlYW0uCiAg
ICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwotICAgIGF1
dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQpOwotICAgIEFTU0VS
VChyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5z
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAogaW5saW5lIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6dHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBUaW1lb3V0IHRpbWVvdXQpCkBAIC0xNjgsMzAgKzE2OCwzNCBAQCBpbmxpbmUgdm9pZCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYg
c3BhbikKIH0KIGlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRpbWVvdXQgdGltZW91dCkKIHsKKyAg
ICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkubG9hZChzdGQ6
Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICAvLyBUaGlzIHdvdWxkIG1lYW4gd2UgdHJ5IHRv
IHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBpcyBhIHByb2dyYW1taW5nIGVycm9y
LgorICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVkLCB3ZSBvbmx5IGFzc2VydC4KKyAg
ICBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7
CisKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHNpemVfdCBjbGllbnRMaW1pdCA9IGNsYW1wZWRM
aW1pdChzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUp
KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwgY2xp
ZW50TGltaXQpOwotICAgICAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUp
IHsKLSAgICAgICAgICAgIGlmICh0aW1lb3V0LmRpZFRpbWVPdXQoKSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgaWYgKGNsaWVudExpbWl0ICE9IENsaWVudExpbWl0OjpjbGllbnRJ
c1dhaXRpbmdUYWcpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9j
bGllbnRPZmZzZXQsIHRvTGltaXQoY2xpZW50TGltaXQpKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGltZW91dC5kaWRUaW1lT3V0KCkpCisgICAg
ICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIHNpemVfdCBv
bGRDbGllbnRMaW1pdCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9u
ZyhjbGllbnRMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVyT2Zmc2V0Q2xpZW50
SXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRl
cl9hY3FfcmVsKTsKLSAgICAgICAgICAgIGlmIChjbGllbnRMaW1pdCA9PSBvbGRDbGllbnRMaW1p
dCkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZv
cih0aW1lb3V0KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNsaWVudExp
bWl0ID0gY2xhbXBlZExpbWl0KG9sZENsaWVudExpbWl0KTsKLSAgICAgICAgICAgICAgICByZXN1
bHQgPSBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwgY2xpZW50TGltaXQpOwotICAgICAgICAg
ICAgfQorICAgICAgICBDbGllbnRMaW1pdCBvbGRDbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExp
bWl0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKGNsaWVudExpbWl0LCBDbGllbnRMaW1pdDo6Y2xp
ZW50SXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9v
cmRlcl9hY3FfcmVsKTsKKyAgICAgICAgaWYgKGNsaWVudExpbWl0ID09IG9sZENsaWVudExpbWl0
KSB7CisgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0
aW1lb3V0KTsKKyAgICAgICAgICAgIGNsaWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5s
b2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNsaWVudExpbWl0ID0gb2xkQ2xpZW50TGltaXQ7CiAjZWxzZQotICAgICAgICAgICAgVGhy
ZWFkOjp5aWVsZCgpOworICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisgICAgICAgIGNsaWVudExp
bWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUp
OwogI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1N
ZXNzYWdlU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIC8vIFRoZSBh
bGlnbmVkU3BhbiB1c2VzIHRoZSBtaW5pbXVtTWVzc2FnZVNpemUgdG8gY2FsY3VsYXRlIHRoZSBu
ZXh0IGJlZ2lubmluZyBwb3NpdGlvbiBpbiB0aGUgYnVmZmVyLAogICAgICAgICAvLyBhbmQgbm90
IHRoZSBzaXplLiBUaGUgc2l6ZSBtaWdodCBiZSBtb3JlIG9yIGxlc3Mgd2hhdCBpcyBuZWVkZWQs
IGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgcmVhZGVyIGlzLgogICAgICAgICAvLyBJZiB0aGVyZSBp
cyBubyBjYXBhY2l0eSBmb3IgbWluaW11bSBtZXNzYWdlIHNpemUsIHdhaXQgdW50aWwgbW9yZSBp
cyBhdmFpbGFibGUuCi0gICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGNsaWVudE9mZnNldCA8
IHNlcnZlck9mZnNldCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0dWF0aW9uIHdoZXJlCisgICAgICAg
IC8vIEluIHRoZSBjYXNlIHdoZXJlIGNsaWVudE9mZnNldCA8IGNsaWVudExpbWl0IHdlIGNhbiBh
cnJpdmUgdG8gYSBzaXR1YXRpb24gd2hlcmUKICAgICAgICAgLy8gMCA8IHJlc3VsdC5zaXplIDwg
bWluaW11bU1lc3NhZ2VTaXplLgogICAgIH0KICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAt
MjAyLDExICsyMDYsMTEgQEAgaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFNl
cnZlciBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNlKHNpemUKICAgICBzaXplID0gc3Rk
OjptYXgoc2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKICAgICBtX2NsaWVudE9mZnNldCA9IHdy
YXBPZmZzZXQoYWxpZ25PZmZzZXQobV9jbGllbnRPZmZzZXQpICsgc2l6ZSk7CiAgICAgQVNTRVJU
KG1fY2xpZW50T2Zmc2V0IDwgZGF0YVNpemUoKSk7Ci0gICAgLy8gSWYgdGhlIHNlcnZlciB3cm90
ZSBvdmVyIHRoZSBjbGllbnRPZmZzZXQgd2l0aCBjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVwaW5n
VGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgotICAgIHNpemVfdCBzZXJ2ZXJMaW1pdCA9IHNo
YXJlZENsaWVudE9mZnNldCgpLmV4Y2hhbmdlKG1fY2xpZW50T2Zmc2V0LCBzdGQ6Om1lbW9yeV9v
cmRlcl9hY3FfcmVsKTsKLSAgICBpZiAoc2VydmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVlcGluZ1RhZykKKyAgICAvLyBJZiB0aGUgc2Vy
dmVyIHdyb3RlIG92ZXIgdGhlIGNsaWVudE9mZnNldCB3aXRoIHNlcnZlcklzU2xlZXBpbmdUYWcs
IHdlIGtub3cgaXQgaXMgc2xlZXBpbmcuCisgICAgQ2xpZW50T2Zmc2V0IG9sZENsaWVudE9mZnNl
dCA9IHNoYXJlZENsaWVudE9mZnNldCgpLmV4Y2hhbmdlKHN0YXRpY19jYXN0PENsaWVudE9mZnNl
dD4obV9jbGllbnRPZmZzZXQpLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICBpZiAo
b2xkQ2xpZW50T2Zmc2V0ID09IENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZykKICAg
ICAgICAgcmV0dXJuIFdha2VVcFNlcnZlcjo6WWVzOwotICAgIEFTU0VSVCghKHNlcnZlckxpbWl0
ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVlcGluZ1Rh
ZykpOworICAgIEFTU0VSVCghKG9sZENsaWVudE9mZnNldCAmIENsaWVudE9mZnNldDo6c2VydmVy
SXNTbGVlcGluZ1RhZykpOwogICAgIHJldHVybiBXYWtlVXBTZXJ2ZXI6Ok5vOwogfQogCkBAIC0y
MzUsMTAgKzIzOSwxMSBAQCBpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNp
emUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQogICAgIHJldHVybiBsaW1pdCAtIG9mZnNl
dCAtIDE7CiB9CiAKLWlubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y2xhbXBl
ZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QKK2lubGluZSBzaXplX3QgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dG9MaW1pdChDbGllbnRMaW1pdCBjbGllbnRMaW1pdCkgY29uc3QK
IHsKLSAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKLSAgICBy
ZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKKyAgICBBU1NF
UlQoIShjbGllbnRMaW1pdCAmIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpKTsKKyAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihjbGllbnRMaW1pdCkgPD0gZGF0YVNpemUoKSAt
IDEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNsaWVudExpbWl0KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5oCmluZGV4IGZjOGRjN2QxMDU4ZTA1MTM1MzYxM2U2NzcyZWQwMjM0MDE3NmZmN2EuLjUy
YjNkNzllYWEzNjg3NDBjMTJkNWJjNTQ1MjdlOTU3ZWY0YTY5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTgyLDE5
ICs4MiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgfQogCi0gICAg
QXRvbWljPHNpemVfdD4mIGNsaWVudE9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLmNsaWVudE9m
ZnNldDsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzZXJ2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFk
ZXIoKS5zZXJ2ZXJPZmZzZXQ7IH0KKyAgICAvLyBWYWx1ZSBkZW5vdGluZyB0aGUgY2xpZW50IGlu
ZGV4IHRvIHRoZSBidWZmZXIsIHdpdGggc3BlY2lhbCB0YWcgdmFsdWVzLgorICAgIC8vIFRoZSBj
bGllbnQgdHJ1c3RzIHRoaXMuIFRoZSBzZXJ2ZXIgY29udmVydHMgdGhlIHZhbHVlIHRvIHRydXN0
ZWQgc2l6ZV90IG9mZnNldCB3aXRoIGEgc3BlY2lhbCBmdW5jdGlvbi4KKyAgICBlbnVtIENsaWVu
dE9mZnNldCA6IHNpemVfdCB7CisgICAgICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gd2hlbiB0
aGUgc2VydmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgorICAgICAgICBzZXJ2ZXJJ
c1NsZWVwaW5nVGFnID0gMXUgPDwgMzEKKyAgICB9OworCisgICAgLy8gVmFsdWUgZGVub3Rpbmcg
dGhlIHNlcnZlciBpbmRleCB0byB0aGUgYnVmZmVyLCB3aXRoIHNwZWNpYWwgdGFnIHZhbHVlcy4K
KyAgICAvLyBUaGUgY2xpZW50IHRydXN0cyB0aGlzLiBUaGUgc2VydmVyIGNvbnZlcnRzIHRoZSB2
YWx1ZSB0byB0cnVzdGVkIHNpemVfdCBvZmZzZXQgd2l0aCBhIHNwZWNpYWwgZnVuY3Rpb24uCisg
ICAgZW51bSBTZXJ2ZXJPZmZzZXQgOiBzaXplX3QgeworICAgICAgICAvLyBUYWcgdmFsdWUgc3Rv
cmVkIHdoZW4gdGhlIGNsaWVudCBpcyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24gYSBzZW1hcGhv
cmUuCisgICAgICAgIGNsaWVudElzV2FpdGluZ1RhZyA9IDF1IDw8IDMxCisgICAgfTsKKworICAg
IEF0b21pYzxDbGllbnRPZmZzZXQ+JiBjbGllbnRPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5j
bGllbnRPZmZzZXQ7IH0KKyAgICBBdG9taWM8U2VydmVyT2Zmc2V0PiYgc2VydmVyT2Zmc2V0KCkg
eyByZXR1cm4gaGVhZGVyKCkuc2VydmVyT2Zmc2V0OyB9CiAgICAgdWludDhfdCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgp
KSArIGhlYWRlclNpemUoKTsgfQogICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YVNpemU7IH0KICAgICBTZW1hcGhvcmUmIGNsaWVudFdhaXRTZW1hcGhvcmUoKSB7IHJl
dHVybiBtX2NsaWVudFdhaXRTZW1hcGhvcmU7IH0KIAotICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQg
aW4gSGVhZGVyOjpjbGllbnRPZmZzZXQgd2hlbiB0aGUgc2VydmVyIGlzIHNsZWVwaW5nLCBlLmcu
IG5vdCBydW5uaW5nLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGNsaWVudE9mZnNldFNl
cnZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOwotICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4g
SGVhZGVyOjpzZXJ2ZXJPZmZzZXQgd2hlbiB0aGUgY2xpZW50IGlzIHdhaXRpbmcsIGUuZy4gd2Fp
dGluZyBvbgotICAgIC8vIGEgc2VtYXBob3JlLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IHNlcnZlck9mZnNldENsaWVudElzV2FpdGluZ1RhZyA9IDEgPDwgMzE7Ci0KLSAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBtYXhpbXVtU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6bWluKGNsaWVudE9m
ZnNldFNlcnZlcklzU2xlZXBpbmdUYWcsIGNsaWVudE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcp
IC0gMTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1TaXplKCkgeyByZXR1
cm4gc3RkOjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xl
ZXBpbmdUYWcpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENsaWVudE9mZnNldDo6c2VydmVySXNTbGVl
cGluZ1RhZykpIC0gMTsgfQogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBz
dGF0aWMgT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsK
IApAQCAtMTAyLDEwICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFw
aG9yZSYmIGNsaWVudFdhaXRTZW1hcGhvcmUpOwogCiAgICAgc3RydWN0IEhlYWRlciB7Ci0gICAg
ICAgIEF0b21pYzxzaXplX3Q+IHNlcnZlck9mZnNldDsKKyAgICAgICAgQXRvbWljPFNlcnZlck9m
ZnNldD4gc2VydmVyT2Zmc2V0OwogICAgICAgICAvLyBQYWRkaW5nIHNvIHRoYXQgdGhlIHZhcmlh
YmxlcyBtb3N0bHkgYWNjZXNzZWQgYnkgZGlmZmVyZW50IHByb2Nlc3NlcyBkbyBub3Qgc2hhcmUg
YSBjYWNoZSBsaW5lLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gYXZvaWQgY2Fj
aGUtbGluZSBpbmR1Y2VkIHJlZHVjdGlvbiBvZiBwYXJhbGxlbCBhY2Nlc3MuCi0gICAgICAgIGFs
aWduYXMoc2l6ZW9mKHVpbnQ2NF90WzJdKSkgQXRvbWljPHNpemVfdD4gY2xpZW50T2Zmc2V0Owor
ICAgICAgICBhbGlnbmFzKHNpemVvZih1aW50NjRfdFsyXSkpIEF0b21pYzxDbGllbnRPZmZzZXQ+
IGNsaWVudE9mZnNldDsKICAgICB9OwogICAgIEhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SGVhZGVyKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0K
ICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkgeyByZXR1cm4gcm91bmRV
cFRvTXVsdGlwbGVPZjxhbGlnbm9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXplb2YoSGVhZGVyKSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggODBiMDM5YTdmOTg1Mzk3MjA2OGYzZWVlODQ5MjQ0M2Q3YzgwM2Ez
Zi4uOGU0OTI2NjQ0YTgwODYzNjllZjdjYzg5YTQwMmIyOGI5NjAxN2EwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTYxLDM1ICs2MSwzNSBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1
ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlYwogCiBPcHRpb25hbDxT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OnRyeUFxdWlyZSgpCiB7Ci0gICAgc2l6ZV90IHNlcnZlckxpbWl0ID0gc2hhcmVkQ2xpZW50
T2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKLSAgICBpZiAoc2VydmVy
TGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVl
cGluZ1RhZykKKyAgICBTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1pdCA9IHNoYXJlZFNlcnZlckxpbWl0
KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAoc2VydmVyTGltaXQg
PT0gU2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwg
c2VydmVyTGltaXQpOworCisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9m
ZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgaWYgKHJlc3VsdC5zaXplIDwg
bWluaW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAgIHNlcnZlckxpbWl0ID0gc2hhcmVkQ2xpZW50
T2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlcnZlckxpbWl0LCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyOjpjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9v
cmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAgICAgICAgQVNTRVJU
KCEoc2VydmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXRTZXJ2
ZXJJc1NsZWVwaW5nVGFnKSk7Ci0gICAgICAgIHNlcnZlckxpbWl0ID0gY2xhbXBlZExpbWl0KHNl
cnZlckxpbWl0KTsKLSAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZXJ2ZXJPZmZzZXQs
IHNlcnZlckxpbWl0KTsKKyAgICAgICAgc2VydmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgp
LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZXJ2ZXJMaW1pdCwgU2VydmVyTGltaXQ6OnNlcnZlcklz
U2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVy
X2FjcV9yZWwpOworICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwg
Y2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5zaXpl
ID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRT
aXplKQogewogICAgIEFTU0VSVChyZWFkU2l6ZSk7CiAgICAgcmVhZFNpemUgPSBzdGQ6Om1heChy
ZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKLSAgICBzaXplX3Qgc2VydmVyT2Zmc2V0ID0g
d3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlcnZlck9mZnNldCkgKyByZWFkU2l6ZSk7CisgICAg
U2VydmVyT2Zmc2V0IHNlcnZlck9mZnNldCA9IHN0YXRpY19jYXN0PFNlcnZlck9mZnNldD4od3Jh
cE9mZnNldChhbGlnbk9mZnNldChtX3NlcnZlck9mZnNldCkgKyByZWFkU2l6ZSkpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgc2l6ZV90IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZl
ck9mZnNldCgpLmV4Y2hhbmdlKHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3Jl
bCk7Ci0gICAgLy8gSWYgdGhlIGNsaWVudCB3cm90ZSBvdmVyIHNlcnZlck9mZnNldCwgaXQgbWVh
bnMgdGhlIGNsaWVudCBpcyB3YWl0aW5nLgotICAgIGlmIChvbGRTZXJ2ZXJPZmZzZXQgPT0gU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVyT2Zmc2V0Q2xpZW50SXNXYWl0aW5nVGFnKQorICAg
IFNlcnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5leGNo
YW5nZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIC8vIElm
IHRoZSBzZW5kZXIgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIg
aXMgd2FpdGluZy4KKyAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xp
ZW50SXNXYWl0aW5nVGFnKQogICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCku
c2lnbmFsKCk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQoIShvbGRTZXJ2ZXJPZmZzZXQgJiBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXRDbGllbnRJc1dhaXRpbmdUYWcpKTsK
KyAgICAgICAgQVNTRVJUKCEob2xkU2VydmVyT2Zmc2V0ICYgU2VydmVyT2Zmc2V0OjpjbGllbnRJ
c1dhaXRpbmdUYWcpKTsKICNlbHNlCiAgICAgc2hhcmVkU2VydmVyT2Zmc2V0KCkuc3RvcmUoc2Vy
dmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKICAgICAvLyBJUEM6OlNlbWFw
aG9yZSBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBwbGF0Zm9ybS4gQ2xpZW50IHdpbGwgcG9sbCBh
bmQgeWllbGQuCkBAIC0xMjEsMTAgKzEyMSwxMiBAQCBzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQogICAgIHJldHVybiBk
YXRhU2l6ZSgpIC0gb2Zmc2V0OwogfQogCi1zaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0CitzaXplX3QgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChTZXJ2ZXJMaW1pdCBzZXJ2ZXJM
aW1pdCkgY29uc3QKIHsKLSAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAt
IDEpKTsKLSAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAx
KTsKKyAgICBBU1NFUlQoIShzZXJ2ZXJMaW1pdCAmIFNlcnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVw
aW5nVGFnKSk7CisgICAgc2l6ZV90IGxpbWl0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzZXJ2ZXJM
aW1pdCk7CisgICAgQVNTRVJUKGxpbWl0IDw9IGRhdGFTaXplKCkgLSAxKTsKKyAgICByZXR1cm4g
c3RkOjptaW4obGltaXQsIGRhdGFTaXplKCkgLSAxKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGJlY2Qz
OGRkOTMxM2I2MzIzZjBhYTRmMjdmZDJjYmUyYmZmOTk3YjMuLjQ5NWFmZmQwM2M2ZjU0ZDcyODlm
YzEwMWQ2ZDZkZDg4NmUzYjc3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTc0LDExICs3NCwxMyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OwogICAgIFNwYW4gYWxpZ25lZFNw
YW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKICAgICBzaXplX3Qgc2l6ZShzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGltaXQpOwotICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVu
dHJ1c3RlZExpbWl0KSBjb25zdDsKICAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KICAgICBzaXpl
X3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxp
Z25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9
Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZENsaWVudE9mZnNldCgpIHsgcmV0dXJuIG1fYnVm
ZmVyLmNsaWVudE9mZnNldCgpOyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFNlcnZlck9m
ZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZlck9mZnNldCgpOyB9CisgICAgdXNpbmcgU2Vy
dmVyTGltaXQgPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpDbGllbnRPZmZzZXQ7CisgICAgQXRv
bWljPFNlcnZlckxpbWl0PiYgc2hhcmVkU2VydmVyTGltaXQoKSB7IHJldHVybiBtX2J1ZmZlci5j
bGllbnRPZmZzZXQoKTsgfQorICAgIHVzaW5nIFNlcnZlck9mZnNldCA9IFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6OlNlcnZlck9mZnNldDsKKyAgICBBdG9taWM8U2VydmVyT2Zmc2V0PiYgc2hhcmVk
U2VydmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2VydmVyT2Zmc2V0KCk7IH0KKyAgICBz
aXplX3QgY2xhbXBlZExpbWl0KFNlcnZlckxpbWl0KSBjb25zdDsKICAgICB1aW50OF90KiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGRhdGFTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCA4NTk3OWNjZGIwZjFkNWFiN2FjMDMy
NTU5NGMzMTBlZmExYWJlZGJkLi43YzExNjZlMjczZmJmYjc3ZjUyYmU0MWU3ZWY2OTQwMDU5ZDc5
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTE3
NSw3ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNp
emVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQogICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7CiAg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvcikpOwogICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCi0gICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3Qo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3Qg
PSBlcnJvcjsKQEAgLTE4Nyw3ICsxODcsNyBAQCBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRFcnJvcigpCiAgICAgICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0gMDsK
ICAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSkpOwogICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCi0gICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgICAgICBtYXJrQ29udGV4dExvc3Qo
KTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xlbnVtPihyZXR1cm5WYWx1ZSk7CiAg
ICAgfQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCwg
Tk9fRVJST1IpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDZiMGRjZDlkZDJlZTE5NGI5YjdiNjZmYjJjZjg1ZmI3NTllYzNh
NTYuLjFiNmIzYjA0MzBiNjJkOTIzMGI3YTMyZTA5MDZmNTZlNTI1OTVmYjIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wMy0wNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYkdMIGFzc2VydHMgYWZ0ZXIgR1BVIHByb2Nlc3MgdGltZXMgb3V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1NDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVz
dHMgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSBhIFdlYkdMIGNhbGwgdGltZXMgb3V0LgorICAgICAg
ICBBZGQgdHdvIHZhcmlhbnRzOiBvbmUgd2hpY2ggbW9zdCBwcm9iYWJseSB0aW1lcyBvdXQgb24K
KyAgICAgICAgc3luY2hyb25vdXMgY2FsbCwgYW5kIG9uZSB3aGljaCBtb3N0IHByb2JhYmx5IHRp
bWVzIG91dCBvbgorICAgICAgICBhc3luY2hyb25vdXMgY2FsbC4KKworICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi1zdGF0dXMtZmFpbHVyZS5odG1sOgorICAgICAg
ICBUaGUgdGVzdGluZyBBUElzIHdlcmUgY2hhbmdlZCwgc28gcmVwbGFjZSB1c2Ugb2YKKyAgICAg
ICAgSW50ZXJuYWxzLnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQorICAgICAgICB3aXRoIElu
dGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCkKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0
LWFzeW5jLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29u
dGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWw6CisKIDIwMjEt
MDMtMDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgaW5p
dGlhbCB2YWx1ZSBmb3IgYm9yZGVyLWltYWdlLW91dHNldCBzaG91bGQgYmUgMApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggODdkNTI4ZjgwMzZhNzY4MDhmOWQwOTAyYzVmMGU2ZThlNGYyZDZmMS4uYTkw
M2I5NmU0ZDg0ODQ1ZWIzODA4YWEyODEyMWM0N2EyZjg1ZTA4NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zNDU5LDYgKzM0NTksMTAgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL21pc2MvdW5p
bml0aWFsaXplZC10ZXN0LTIuaHRtbCBbIFNraXAgXQogIyBGYWlsaW5nIG9uIGNlcnRhaW4gaGFy
ZHdhcmUgY29uZmlndXJhdGlvbnM6IG1hY09TIHdpdGggSW50ZWwgR1BVcy4gQWxzbyBzbG93Lgog
d2Via2l0Lm9yZy9iLzIyMDc1MyB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLW11
bHRpLWRyYXcuaHRtbCBbIFBhc3MgRmFpbHVyZSBTbG93IF0KIAorIyBUaW1lb3V0IHRlc3Rpbmcg
aXMgbm90IGFwcGxpY2FibGUgdG8gaW4tcHJvY2VzcyB3ZWJnbCwgb25seSB3ZWJnbCBpbiBncHUg
cHJvY2Vzcy4KK2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5j
Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0
Lmh0bWwgWyBTa2lwIF0KKwogIyBwcmUtd3JhcCBwcm9ncmVzc2lvbi4gT3RoZXIgcmVuZGVyaW5n
IGVuZ2luZXMgYWdyZWUgd2l0aCB0aGUgcmVzdWx0Lgogd2Via2l0Lm9yZy9iLzIwNjE2OCBbIERl
YnVnIF0gZmFzdC9kb20vaW5zZXJ0LXNwYW4taW50by1sb25nLXRleHQtYnVnLTI4MjQ1Lmh0bWwg
WyBTa2lwIF0KIApAQCAtNDg0MCw0ICs0ODQ0LDMgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL3VwcGVyLWFybWVuaWFuL2NzczMtY291bnQK
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91
cHBlci1yb21hbi9jc3MzLWNvdW50ZXItc3R5bGVzLTAyMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHls
ZXMvdXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLXN0eWxlcy0wMjQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXIt
c3R5bGVzL3VwcGVyLXJvbWFuL2NzczMtY291bnRlci1zdHlsZXMtMDI0YS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hN2VhNmNlNjdkNmIwNDEzMzdjYmZhNDBhZjMwNmI3Y2FjYzYzMzhk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1j
b250ZXh0LW9uLXRpbWVvdXQtYXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0NP
TlNPTEUgTUVTU0FHRTogV2ViR0w6IENPTlRFWFRfTE9TVF9XRUJHTDogbG9zZUNvbnRleHQ6IGNv
bnRleHQgbG9zdAorQ2hlY2tzIHRoYXQgYSBHUFUgcHJvY2VzcyB0aW1lb3V0IG9uIGEgbm9uLXJl
c3VsdCBwcm9kdWNpbmcgV2ViR0wgY2FsbCB3aWxsIGxvc2UgdGhlIGNvbnRleHQuCitOT1RFOiBU
aGlzIG9ubHkgcGFzc2VzIGluIHRoZSB0ZXN0IGhhcm5lc3MgYmVjYXVzZSBpdCByZXF1aXJlcyBJ
bnRlcm5hbHMuCisKK1BBU1MgZ2wuaXNDb250ZXh0TG9zdCgpIGlzIGZhbHNlCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUK
K1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5DT05URVhUX0xPU1RfV0VCR0wKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVv
dXQtYXN5bmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzVmMzVjY2Y0NWE1MDFlMDFmYzViOWVlZTFmMDJk
Y2JlZTc0MWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbApAQCAtMCwwICsxLDYwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxoZWFkPgorPHN0eWxlPgorY2FudmFzIHsKKyAgICB3aWR0aDogMjAw
cHg7CisgICAgaGVpZ2h0OiAyMDBweDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy93ZWJnbC10ZXN0LmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmds
LXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciB3dHUgPSBXZWJHTFRl
c3RVdGlsczsKK3ZhciBnbDsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKHdp
bmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yaykKKyAgICB3aW5kb3cuaW5pdE5vbktocm9ub3NG
cmFtZXdvcmsoZmFsc2UpOworCitkZWJ1ZygiQ2hlY2tzIHRoYXQgYSBHUFUgcHJvY2VzcyB0aW1l
b3V0IG9uIGEgbm9uLXJlc3VsdCBwcm9kdWNpbmcgV2ViR0wgY2FsbCB3aWxsIGxvc2UgdGhlIGNv
bnRleHQuIik7CitkZWJ1ZygiTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBoYXJu
ZXNzIGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLiIpOworZGVidWcoIiIpOworCithc3lu
YyBmdW5jdGlvbiB3ZWJHTENvbnRleHRMb3N0KGNhbnZhcykgeworICAgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0
IiwgcmVzb2x2ZSkpOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGxldCBj
YW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lk
dGggPSAyMDA7CisgICAgY2FudmFzLmhlaWdodCA9IDIwMDsKKyAgICBnbCA9IHd0dS5jcmVhdGUz
RENvbnRleHQoY2FudmFzKTsKKyAgICB3dHUuc2V0dXBDb2xvclF1YWQoZ2wpOworICAgIGdsLnZp
ZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgZ2wuY2xlYXJD
b2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQpOworICAgIHNob3VsZEJlRmFsc2UoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIHNob3Vs
ZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2ltdWxhdGVFdmVudEZvcldlYkdMQ29u
dGV4dCgidGltZW91dCIsIGdsKTsKKyAgICAvLyBXZSdyZSB0cnlpbmcgdG8gZmlsbCB0aGUgY29t
bWFuZCBidWZmZXIgd2l0aCBjYWxscyBhZnRlciB0aGUgdGltZW91dCwKKyAgICAvLyBzbyB0aGF0
IHdlIHRlc3QgdGhhdCBhc3luY2hyb25vdXMgY2FsbHMgY2F1c2UgdGltZW91dHMgdG9vLgorICAg
IC8vIFVzZSBhIHJlbGF0aXZlbHkgZmFzdCBjYWxsIHRoYXQgc3RpbGwgZmlsbHMgdXAgdGhlIGJ1
ZmZlci4KKyAgICBsZXQgY2FsbENvdW50ID0gMTAwMDAwMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGNhbGxDb3VudDsgKytpKQorICAgICAgICBnbC5jbGVhckNvbG9yKDEuMCwgMS4wLCAwLjAg
KyBpL2NhbGxDb3VudCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICBhd2FpdCB3ZWJHTENvbnRleHRMb3N0KGNhbnZhcyk7CisgICAgc2hvdWxkQmVUcnVlKCJn
bC5pc0NvbnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5D
T05URVhUX0xPU1RfV0VCR0wiKTsKKyAgICBmaW5pc2hUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxib2R5PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250
ZXh0LW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZTQy
OTM0ODVmZGI2ZjM4YjBiYjNiOTM2M2MyMzhmOWQ1ZGUyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBXZWJHTDogQ09OVEVY
VF9MT1NUX1dFQkdMOiBsb3NlQ29udGV4dDogY29udGV4dCBsb3N0CitDaGVja3MgdGhhdCBhIEdQ
VSBwcm9jZXNzIHRpbWVvdXQgb24gYSByZXN1bHQgcHJvZHVjaW5nIFdlYkdMIGNhbGwgd2lsbCBs
b3NlIHRoZSBjb250ZXh0LgorTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBoYXJu
ZXNzIGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLgorCitQQVNTIGdsLmlzQ29udGV4dExv
c3QoKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGds
LmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuQ09OVEVY
VF9MT1NUX1dFQkdMCitQQVNTIHZhbCBpcyBbMCwgMCwgMCwgMF0KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMzNmYzdkNjY1MzY1YWI0MTNlMzAyY2U2OTMxOTNiNjM2MzA4MjM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9u
LXRpbWVvdXQuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorY2FudmFzIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsK
K30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj4gPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBnbDsKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1l
d29yaykKKyAgICB3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmsoZmFsc2UpOworCitkZWJ1
ZygiQ2hlY2tzIHRoYXQgYSBHUFUgcHJvY2VzcyB0aW1lb3V0IG9uIGEgcmVzdWx0IHByb2R1Y2lu
ZyBXZWJHTCBjYWxsIHdpbGwgbG9zZSB0aGUgY29udGV4dC4iKTsKK2RlYnVnKCJOT1RFOiBUaGlz
IG9ubHkgcGFzc2VzIGluIHRoZSB0ZXN0IGhhcm5lc3MgYmVjYXVzZSBpdCByZXF1aXJlcyBJbnRl
cm5hbHMuIik7CitkZWJ1ZygiIik7CisKK2FzeW5jIGZ1bmN0aW9uIHdlYkdMQ29udGV4dExvc3Qo
Y2FudmFzKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY2FudmFzLmFkZEV2
ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLCByZXNvbHZlKSk7Cit9Cit2YXIgdmFsOwor
YXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMjAwOworICAgIGNhbnZh
cy5oZWlnaHQgPSAyMDA7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7Cisg
ICAgd3R1LnNldHVwQ29sb3JRdWFkKGdsKTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMu
d2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwg
MS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJnbC5pc0NvbnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIs
ICJnbC5OT19FUlJPUiIpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoIlRpbWVvdXQiLCBnbCk7
CisgICAgZ2wuY2xlYXJDb2xvcigxLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHZhbCA9IGdsLmdldFBhcmFtZXRlcihnbC5DT0xPUl9D
TEVBUl9WQUxVRSk7CisgICAgYXdhaXQgd2ViR0xDb250ZXh0TG9zdChjYW52YXMpOworICAgIHNo
b3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAgc2hvdWxkQmUoImdsLmdldEVy
cm9yKCkiLCAiZ2wuQ09OVEVYVF9MT1NUX1dFQkdMIik7CisgICAgc2hvdWxkQmUoInZhbCIsICJb
MCwgMCwgMCwgMF0iKTsKKyAgICBmaW5pc2hUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxib2R5PgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzJmZjBkZjYwYWFh
YjBmNzA5NTc5M2U5NTY2OGQ1MjcwZmRjOTA1MC4uYjBhMDkyZjMyMDAyMGJlZjUwM2Q1NDJiMjk4
NDliZjJkYTI2ZjJiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xNyw2ICsxNyw5IEBAIGZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVz
dC5odG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9hdHRyaWJzL2dsLXZlcnRl
eGF0dHJpYnBvaW50ZXIuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3Jl
bmRlcmluZy9ibGl0ZnJhbWVidWZmZXItZmlsdGVyLW91dG9mYm91bmRzLmh0bWwgWyBTbG93IF0K
IAorZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbCBb
IFNsb3cgUGFzcyBdCitmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5o
dG1sIFsgU2xvdyBQYXNzIF0KKwogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNo
Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvaW1hZ2VzL29yZGVyZWQtYW5pbWF0ZWQtaW1hZ2UtZnJh
bWVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422267</attachid>
            <date>2021-03-04 11:46:18 -0800</date>
            <delta_ts>2021-03-04 12:03:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222546-20210304214616.patch</filename>
            <type>text/plain</type>
            <size>41487</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y3NWMwYWJkYmM2OTA3
NjMwYjc3ZjVlNjExMzdmYjRmOTkxNDViNC4uMTBkZmI4YjcwZTMwOTJlZWNkM2NiZGI3OTYzOWQz
OGYzZTFmZDRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAzLTA0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgYXNzZXJ0
cyBhZnRlciBHUFUgcHJvY2VzcyB0aW1lcyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRyaWdnZXIgaW50ZXJuYWxzLnNpbXVsYXRlRXZl
bnRGb3JXZWJHTENvbnRleHQoInRpbWVvdXQiLCBjb250ZXh0KQorICAgICAgICB0byB0cmlnZ2Vy
IHRpbWVvdXQgZm9yIGNhbGxzIHRvIGEgV2ViR0wgY29udGV4dC4KKworICAgICAgICBUZXN0czog
ZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRt
bAorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KToKKwogMjAyMS0wMy0wNCAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW05pY29z
aWFdIE1vdmUgc2hhcmVkIHNjcm9sbGluZyBhbmltYXRpb24gY29kZSBpbnRvIGEgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZWJmZjZlZmFmYmJhMTI3Y2I1
MWRiZGM0NzNmZWRhODU5MGZhOTFmLi44OWY3OTNlMGJhOGRmMjFhOWIxNTI4NjMxZWVmYzkwOTAz
ZWY3YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMS0wMy0wNCAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIGFzc2VydHMgYWZ0
ZXIgR1BVIHByb2Nlc3MgdGltZXMgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUg
d291bGQgYXNzZXJ0IG9uCisgICAgICAgICAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0
YVNpemUoKSAtIDEpKTsKKyAgICAgICAgVGhlIHVudHJ1c3RlZExpbWl0IHZhbHVlIHdvdWxkIGJl
IHRoZW46CisgICAgICAgICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXRD
bGllbnRJc1dhaXRpbmdUYWcuCisgICAgICAgIFRoaXMgd291bGQgYmUgZXF1aXZhbGVudCBvZiBh
c3NlcnRpb24gYWRkZWQgaW4gdGhpcyBjb21taXQ6CisgICAgICAgICAgICBBU1NFUlQoY2xpZW50
TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7CisKKyAgICAgICAgVGhp
cyB3b3VsZCBoYXBwZW4gaW4gY2FzZSBvZiB0aW1lb3V0LCBiZWNhdXNlIHVwb24gZW50ZXJpbmcK
KyAgICAgICAgdGhlIHdhaXQgc2VxdWVuY2U6CisgICAgICAgICAxKSBUaGUgY2xpZW50IGl0c2Vs
ZiB3b3VsZCBmaXJzdCB3cml0ZSB0aGUgdGFnIHZhbHVlIHRvIHRoZQorICAgICAgICAgICAgb2Zm
c2V0IHZhcmlhYmxlLgorICAgICAgICAgMikgV2FpdCBhbmQgdGltZW91dCB0aGUgd2FpdC4KKyAg
ICAgICAgIDMpIHJ1biB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIGFjcXVpcmUgbG9vcC4KKwor
ICAgICAgICBUaGUgbmV4dCBpdGVyYXRpb24gd291bGQgbG9hZCB0aGUgdGFnIHZhbHVlIHdyaXR0
ZW4gYmVmb3JlLAorICAgICAgICBlLmcuIHNlcnZlck9mZnNldENsaWVudElzV2FpdGluZ1RhZy4K
KyAgICAgICAgVGhpcyB3b3VsZCBiZSB0aGVuIHVzZWQgaW4gY2xhbXBlZExpbWl0KCkgY2FsbC4K
KworICAgICAgICBGaXggdGhpcyBieSB0YWtpbmcgaXQgaW50byBhY2NvdW50IHRoYXQgdGhlIHZh
cmlhYmxlIG1pZ2h0IGJlCisgICAgICAgIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcg
d2l0aGluIHRoZSBhY3F1aXJlIGxvb3AuCisKKyAgICAgICAgUG9zc2libHkgZml4IGZ1dHVyZSBz
aW1pbGFyIHByb2JsZW1zIGJ5IG5vdCB0cmVhdGluZyB0aGUgdmFsdWUgYXMKKyAgICAgICAgc2l6
ZV90LCByYXRoZXIgdHJlYXQgaXQgYXMgZW51bSBjbGFzcyBDbGllbnRPZmZzZXQgOiBzaXplX3Qu
IFRoaXMKKyAgICAgICAgZW5hYmxlcyB0aGUgY29tcGlsZXIgdG8gZW5mb3JjZSB0aGF0IHdoZW4g
Y2hlY2tpbmcgZm9yIHRoZSB2YXJpb3VzIHRhZworICAgICAgICB2YWx1ZXMsIHRoZSBob2xkZXIg
bXVzdCBob2xkIHRoZSBlbnVtIGNsYXNzLiBXaGVuIGludGVuZGluZyB0byBpbnRlcnByZXQKKyAg
ICAgICAgdGhlIHZhbHVlIGFzIHNpemVfdCwgaG9sZGVyIG11c3QgZXhwbGljaXRseSBjb252ZXJ0
LgorCisgICAgICAgIERvIHRoZSBhYm92ZSBjaGFuZ2UgZm9yIHRoZSBTZXJ2ZXJPZmZzZXQuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0
LWFzeW5jLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4
dC1vbi10aW1lb3V0Lmh0bWwKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIERvIG5vdCBhc3NlcnQgdGhh
dCB0aGUgcmVsZWFzZSBtZXNzYWdlIGFjdHVhbGx5IHJlbGVhc2VzIHRoZSBjb250ZXh0LgorICAg
ICAgICBGb3IgdGVzdGluZywgdGhlIGluZHVjZSB0aGUgdGltZW91dCBieSByZWxlYXNpbmcgdGhl
IGNvbnRleHQgcHJlbWF0dXJlbHkKKyAgICAgICAgYW5kIHRyZWF0aW5nIHRoZSBzdWJzZXF1ZW50
IG1lc3NhZ2VzIGFzIGlmIHRoZXkgd2VyZSBub24tbGVnaXQgbWVzc2FnZXMuCisgICAgICAgIFRo
YXQgc2hvdWxkIGJlIGp1c3Qgc2tpcHBlZC4KKworICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKToKKyAg
ICAgICAgQWRkIGEgcHVibGljIGZ1bmN0aW9uIHRvIGludm9rZSBmcm9tICJGb3JUZXN0aW5nIiBj
b2RlcGF0aHMuCisKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgIFNraXAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgbWVzc2FnZXMgdGhhdCBkbyBub3QgZ2V0IHJvdXRlZCB0byBhbnkKKyAgICAgICAg
aW5zdGFuY2UuIFRoZXNlIG1lc3NhZ2VzIGNhbiBiZSAibm9uLWxlZ2l0Iiwgb25lcyB0aGF0IGFy
ZSBzZW50IGJlZm9yZQorICAgICAgICB0aGUgImNvbnRleHQgd2FzIGxvc3QiIG1lc3NhZ2UgcmVh
Y2hlZCB0aGUgc2VuZGVyLCBvciBvbmVzIHRoYXQgYXJlCisgICAgICAgIHNlbnQgZHVyaW5nIHNp
bXVsYXRlZCB0aW1lb3V0LgorICAgICAgICBUaGVzZSBkbyBub3QgY29udGFpbiBhc3NlcnRzIGFz
IGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlc2Ugd2lsbCBvY2N1ciBpbgorICAgICAgICBhYm92ZSBz
aXR1YXRpb25zLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpzaW11
bGF0ZUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOgorICAg
ICAgICBBZGQgdGhlIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nIGZ1bmN0aW9uIHRvIHNpbXVsYXRl
IHRoZQorICAgICAgICB0aW1lb3V0LiBTaW11bGF0ZSB2aWEganVzdCByZW1vdmluZyB0aGUgY29u
dGV4dCwgd2hpY2ggY2F1c2VzCisgICAgICAgIGxlZnQtb3ZlciBtZXNzYWdlcyB0byBza2lwcGVk
LgorICAgICAgICBDdXJyZW50bHkgd2UgZG8gbm90IHNpbXVsYXRlIHRoZSB0aW1lb3V0IHdpdGgg
YW4gaW5maW5pdGUgbG9vcAorICAgICAgICBpbiBHUFUgcHJvY2VzcyB0aHJlYWRzIGFzIHRoYXQg
aXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgQ3VycmVudGx5IHdlIGRvIG5vdCBzaW11bGF0ZSB0
aGUgdGltZW91dCB3aXRoIGEgZ3B1IHByb2Nlc3MKKyAgICAgICAgY3Jhc2ggc2luY2UgaXQgaXMg
bm90IHN1cHBvcnRlZCB0byBiZSB0ZXN0ZWQgKHdpbGwgY2F1c2UgYQorICAgICAgICByZWxvYWQp
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOgor
ICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAg
IChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2UpOgorICAgICAgICBDaGFuZ2Ug
c2l6ZV90IHVzYWdlIHRvIC0+IENsaWVudE9mZnNldCwgU2VydmVyT2Zmc2V0CisKKyAgICAgICAg
KElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZSk6CisgICAgICAgIEZpeCB0
aGUgYXNzZXJ0aW9uIG9mIGVxdWl2YWxlbnQgb2YgQVNTRVJUKGNsaWVudExpbWl0ICE9IENsaWVu
dExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpOworICAgICAgICBieSByZW9yZ2FuaXppbmcgdGhl
IGFjcXVpcmUgbG9vcC4KKworICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0
b0xpbWl0IGNvbnN0KToKKyAgICAgICAgRml4IHRoZSBvZmYtYnktb25lIGluIGFzc2VydGlvbiBl
cnJvcgorICAgICAgICAoIDwgZGF0YVNpemUoKSAtIDEgIHZzIDw9IGRhdGFTaXplKCkgLSAxKQor
CisgICAgICAgIFJlbmFtZSBmcm9tIGNsYW1wZWRMaW1pdCgpIHRvIHRvTGltaXQoKSwgYXMgdGhl
CisgICAgICAgIGNsYW1waW5nIGlzIGNvbmZ1c2luZyBhcyB0aGUgY2xpZW50IHRydXN0cyB0aGUK
KyAgICAgICAgc2VydmVyLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6b3BlcmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5oOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXQp
OgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXQpOgor
ICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRXYWl0U2VtYXBob3Jl
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6bWF4aW11bVNpemUpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWlyZSk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlKToKKyAgICAgICAgQ2hh
bmdlIHNpemVfdCB1c2FnZSB0byAtPiBDbGllbnRPZmZzZXQsIFNlcnZlck9mZnNldAorCisgICAg
ICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3Qp
OgorICAgICAgICBGaXggdGhlIG9mZi1ieS1vbmUgaW4gYXNzZXJ0aW9uIGVycm9yCisgICAgICAg
ICggPCBkYXRhU2l6ZSgpIC0gMSAgdnMgPD0gZGF0YVNpemUoKSAtIDEpCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVkU2VydmVyTGltaXQpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVkU2VydmVyT2Zmc2V0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3lu
dGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRFcnJvcik6CisgICAgICAgIEZvciB0aGUgY2FzZXMgd2hlcmUgdGhlIHRpbWVv
dXQgd291bGQgaGFwcGVuIGluIHRoZXNlIHR3byBmdW5jdGlvbnMsCisgICAgICAgIGNhbGwgdGhl
IG1hcmtDb250ZXh0TG9zdCgpIGluc3RlYWQgb2Ygd2FzTG9zdCgpLiBUaGlzIGlzIHRvIGNsYXJp
ZnkKKyAgICAgICAgYWxsIHRoZSBjb250ZXh0IGxvc3QgaGFuZGxpbmcgdG8gdXNlIHRoZSBzYW1l
IHBhdHRlcm4uCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcDoKKwogMjAyMS0wMy0wNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIElQQyBzdHJlYW0gZmVhdHVyZSBzaG91bGQgdXNlIGNsaWVudC9z
ZXJ2ZXIgbmFtaW5nIGluc3RlYWQgb2Ygc2VuZGVyL3JlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA4NDU0
ZWFiZWMzOGM5NTI2M2Q3Nzc1MjEzNWNkMjEzNjhjMDkzZDNkLi5kMjgzZWIwYThjM2ZmZTdjMmJm
NzI4ZWI1NDgxM2I5ZTg2YzhlZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTEzMDEsNyArMTMwMSw4IEBAIHB1
YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIHsKICAgICAg
ICAgQ29udGV4dENoYW5nZSwKLSAgICAgICAgR1BVU3RhdHVzRmFpbHVyZQorICAgICAgICBHUFVT
dGF0dXNGYWlsdXJlLAorICAgICAgICBUaW1lb3V0CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQg
c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjYWUyYWE1ZTMyMzRlODk0ZjUx
YTcxMDM0MjQ0MTkwMzk5NzdmOWExLi42ZTQ5Yzk3NTljMzllOGQ3NjJlYWU4MDA5Nzk2NTkzZWI2
YjhkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MTAyLDYgKzUx
MDIsOSBAQCB2b2lkIEludGVybmFsczo6c2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dChTaW11
bGF0ZWRXZWJHTENvbnRleHRFdmVudCBldmVudCwgVwogICAgIGNhc2UgU2ltdWxhdGVkV2ViR0xD
b250ZXh0RXZlbnQ6OkdQVVN0YXR1c0ZhaWx1cmU6CiAgICAgICAgIGNvbnRleHRFdmVudCA9IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nOjpHUFVTdGF0dXNG
YWlsdXJlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXVsYXRlZFdlYkdMQ29udGV4dEV2
ZW50OjpUaW1lb3V0OgorICAgICAgICBjb250ZXh0RXZlbnQgPSBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZzo6VGltZW91dDsKKyAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGEwN2MzYTk1MTM5N2ZiMGRhNjlh
YjY1ZDA0OWE2Y2NmOTBkMjZhNjkuLjI5ODI0N2Y0ODI0ZGEyNTMyNWI3YTkzNjhhMjM5YjhlNzQ1
MmZkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzc0LDcgKzc3NCw4IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZW51bSBjbGFzcyBTaW11bGF0ZWRXZWJH
TENvbnRleHRFdmVudCB7CiAgICAgICAgIENvbnRleHRDaGFuZ2UsCi0gICAgICAgIEdQVVN0YXR1
c0ZhaWx1cmUKKyAgICAgICAgR1BVU3RhdHVzRmFpbHVyZSwKKyAgICAgICAgVGltZW91dAogICAg
IH07CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KFNpbXVsYXRlZFdlYkdM
Q29udGV4dEV2ZW50LCBXZWJHTFJlbmRlcmluZ0NvbnRleHQmKTsKICAgICBib29sIGhhc0xvd0Fu
ZEhpZ2hQb3dlckdQVXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBj
MTZiZTFkNDQ0ZDJmZGU3ODcwYmYxYTQ4N2YzZmIzN2YwZjQ0ZjJmLi5hYWMyZTc3ZDgyYzJlMjFk
NzdiZDEyOTBjYzUxN2E0MmEzNzg2NjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC0xMDEsNyArMTAxLDggQEAgZW51bSBUcmVlVHlwZSB7CiAKIFtDb25kaXRpb25hbD1X
RUJHTF0gZW51bSBTaW11bGF0ZWRXZWJHTENvbnRleHRFdmVudCB7CiAgICAgIkNvbnRleHRDaGFu
Z2UiLAotICAgICJHUFVTdGF0dXNGYWlsdXJlIgorICAgICJHUFVTdGF0dXNGYWlsdXJlIiwKKyAg
ICAiVGltZW91dCIKIH07CiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjMzk5ZDZiZmMyY2Y4NDNiMGM0
ZWQzMzdlNDc1MTBmODlhYzhiY2M0Li45MDQ3MGVkMGUxYzdkN2IwNDk2MTk2MWRhNmIwZWUwMjFm
ZjczODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVkaWFP
dmVycmlkZXNGb3JUZXN0aW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIgpAQCAtMzYwLDEwICszNjEsMTUgQEAgdm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKIHsKLSAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CisgICAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5yZW1v
dmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJlbGVhc2VHcmFwaGljc0Nv
bnRleHRHTChpZGVudGlmaWVyKTsKIH0KICNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIGdwdVByb2Nlc3MoKS5ub3dQ
bGF5aW5nTWFuYWdlcigpLmNsZWFyTm93UGxheWluZ0luZm9DbGllbnQoKnRoaXMpOwpAQCAtNTQ1
LDYgKzU1MSwxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFs
cmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNl
bmRpZgogCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KQEAgLTYwNCw3ICs2MTYsMTMgQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCi0KKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFscmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMu
CisgICAgICAgIHJlcGx5RW5jb2Rlci5yZXNldCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCAyYWZiZWFhNGRiYjgzMmIwNjJiMzQ0OGY2ZGU0OTlmOGVjMWZhMzFlLi42NDdiZDAzNjEy
Njc3Zjg4MmExM2YwZDAyZGNkYjkxZTUzNmM4Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEyOCw3ICsxMjgs
OSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcygpOwot
CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9y
VGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworI2VuZGlmCiBwcml2YXRlOgog
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
LCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCmluZGV4IDg5YmZjYTY0YTdiMmE0NWEwMjE3YzhiYzMzMzQ4NTMwYzg5ZDc4NTUuLjdm
NmE3MTE2MTcyNDdhYzE3NDE1OTA5NTUwZGZiNDQ3YzFlNTBkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcApAQCAtMjU4LDYgKzI1OCwxNSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZQog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBl
dmVudCkKIHsKICAgICAvLyBGSVhNRTogb25seSBydW4gdGhpcyBpbiB0ZXN0aW5nIG1vZGUuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1NDQKKyAgICBpZiAoZXZl
bnQgPT0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNpbXVsYXRlZEV2ZW50Rm9y
VGVzdGluZzo6VGltZW91dCkgeworICAgICAgICAvLyBTaW11bGF0ZSB0aGUgdGltZW91dCBieSBq
dXN0IGRpc2NhcmRpbmcgdGhlIGNvbnRleHQuIFRoZSBzdWJzZXF1ZW50IG1lc3NhZ2VzIGFjdCBs
aWtlCisgICAgICAgIC8vIHVuYXV0aG9yaXplZCBvciBvbGQgbWVzc2FnZXMgZnJvbSBXZWIgcHJv
Y2VzcywgdGhleSBhcmUgc2tpcHBlZC4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50
aWZpZXIgPSBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcl0oKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byBjb25uZWN0aW9uVG9XZWIgPSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25Ub1dlYi0+cmVsZWFzZUdyYXBoaWNzQ29udGV4
dEdMRm9yVGVzdGluZyhpZGVudGlmaWVyKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgbV9jb250ZXh0LT5zaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhldmVudCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggN2RhNzE1NTNlOWMxMzA3ODc5YzdlODkxMmMzZjRlODNjMDYxODky
Ni4uN2Q1MzRmYWJjOTVlMjRmZjgyMTAyMzRjYWZlY2VmNDY2MGY5OWIyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAK
QEAgLTMzLDkgKzMzLDkgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzaXplX3Qgc2kKICAgICAsIG1fYnVmZmVy
KHNpemUpCiB7CiAgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQg
cmVhZGVyIHNsZWVwaW5nLgotICAgIHNoYXJlZENsaWVudE9mZnNldCgpLnN0b3JlKFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OmNsaWVudE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOworICAgIHNoYXJlZENsaWVudE9mZnNldCgpLnN0b3JlKENsaWVu
dE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7
CiAgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQgb2YgdGhlIHdob2xlIGJ1
ZmZlci4KLSAgICBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKKyAgICBzaGFyZWRDbGllbnRMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PENs
aWVudExpbWl0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiB9CiAKIHZvaWQgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYg
c2VtYXBob3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oCmluZGV4IGM1YWI2YTNhMzFkOTY0NTQ4ZDhjMWJhNWI4MjJkYmJkYzUw
ZTcxOWEuLjA4ODY0OTQzOTlhMGU1ZjZhMzk4NTA1YjQxOWQ4YmY1MjFiNWI4YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgK
QEAgLTgwLDEyICs4MCwxNCBAQCBwcml2YXRlOgogCiAgICAgU3BhbiBhbGlnbmVkU3BhbihzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwogICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCk7Ci0gICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVk
TGltaXQpIGNvbnN0OwogCiAgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CiAgICAgc2l6ZV90IGFs
aWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zm
c2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQotICAg
IEF0b21pYzxzaXplX3Q+JiBzaGFyZWRDbGllbnRPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5j
bGllbnRPZmZzZXQoKTsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZXJ2ZXJPZmZzZXQo
KSB7IHJldHVybiBtX2J1ZmZlci5zZXJ2ZXJPZmZzZXQoKTsgfQorICAgIHVzaW5nIENsaWVudE9m
ZnNldCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OkNsaWVudE9mZnNldDsKKyAgICBBdG9taWM8
Q2xpZW50T2Zmc2V0PiYgc2hhcmVkQ2xpZW50T2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuY2xp
ZW50T2Zmc2V0KCk7IH0KKyAgICB1c2luZyBDbGllbnRMaW1pdCA9IFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OlNlcnZlck9mZnNldDsKKyAgICBBdG9taWM8Q2xpZW50TGltaXQ+JiBzaGFyZWRDbGll
bnRMaW1pdCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZlck9mZnNldCgpOyB9CisgICAgc2l6ZV90
IHRvTGltaXQoQ2xpZW50TGltaXQpIGNvbnN0OwogICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CiAKQEAgLTEzNSw5ICsxMzcsNyBAQCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZW5kU3luYyhUJiYgbWVzcwogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc2VuZCB0aHJvdWdo
IHN0cmVhbS4KICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2VpdmUgdGhyb3VnaCBzdHJlYW0u
CiAgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwotICAg
IGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdU
Rk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQpOwotICAgIEFT
U0VSVChyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG1fY29ubmVjdGlv
bi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAogaW5saW5lIGJvb2wgU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6dHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBUaW1lb3V0IHRpbWVvdXQpCkBAIC0xNjgsMzAgKzE2OCwzNCBAQCBpbmxpbmUgdm9pZCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFu
JiYgc3BhbikKIH0KIGlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFu
PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRpbWVvdXQgdGltZW91dCkKIHsK
KyAgICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkubG9hZChz
dGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICAvLyBUaGlzIHdvdWxkIG1lYW4gd2UgdHJ5
IHRvIHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBpcyBhIHByb2dyYW1taW5nIGVy
cm9yLgorICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVkLCB3ZSBvbmx5IGFzc2VydC4K
KyAgICBBU1NFUlQoY2xpZW50TGltaXQgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1Rh
Zyk7CisKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHNpemVfdCBjbGllbnRMaW1pdCA9IGNsYW1w
ZWRMaW1pdChzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVp
cmUpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwg
Y2xpZW50TGltaXQpOwotICAgICAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNp
emUpIHsKLSAgICAgICAgICAgIGlmICh0aW1lb3V0LmRpZFRpbWVPdXQoKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgaWYgKGNsaWVudExpbWl0ICE9IENsaWVudExpbWl0OjpjbGll
bnRJc1dhaXRpbmdUYWcpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4o
bV9jbGllbnRPZmZzZXQsIHRvTGltaXQoY2xpZW50TGltaXQpKTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGltZW91dC5kaWRUaW1lT3V0KCkpCisg
ICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIHNpemVf
dCBvbGRDbGllbnRMaW1pdCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0
cm9uZyhjbGllbnRMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVyT2Zmc2V0Q2xp
ZW50SXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9v
cmRlcl9hY3FfcmVsKTsKLSAgICAgICAgICAgIGlmIChjbGllbnRMaW1pdCA9PSBvbGRDbGllbnRM
aW1pdCkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2Fp
dEZvcih0aW1lb3V0KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNsaWVu
dExpbWl0ID0gY2xhbXBlZExpbWl0KG9sZENsaWVudExpbWl0KTsKLSAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwgY2xpZW50TGltaXQpOwotICAgICAg
ICAgICAgfQorICAgICAgICBDbGllbnRMaW1pdCBvbGRDbGllbnRMaW1pdCA9IHNoYXJlZENsaWVu
dExpbWl0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKGNsaWVudExpbWl0LCBDbGllbnRMaW1pdDo6
Y2xpZW50SXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9y
eV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgaWYgKGNsaWVudExpbWl0ID09IG9sZENsaWVudExp
bWl0KSB7CisgICAgICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZv
cih0aW1lb3V0KTsKKyAgICAgICAgICAgIGNsaWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQo
KS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGNsaWVudExpbWl0ID0gb2xkQ2xpZW50TGltaXQ7CiAjZWxzZQotICAgICAgICAgICAg
VGhyZWFkOjp5aWVsZCgpOworICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisgICAgICAgIGNsaWVu
dExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVp
cmUpOwogI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmlt
dW1NZXNzYWdlU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIC8vIFRo
ZSBhbGlnbmVkU3BhbiB1c2VzIHRoZSBtaW5pbXVtTWVzc2FnZVNpemUgdG8gY2FsY3VsYXRlIHRo
ZSBuZXh0IGJlZ2lubmluZyBwb3NpdGlvbiBpbiB0aGUgYnVmZmVyLAogICAgICAgICAvLyBhbmQg
bm90IHRoZSBzaXplLiBUaGUgc2l6ZSBtaWdodCBiZSBtb3JlIG9yIGxlc3Mgd2hhdCBpcyBuZWVk
ZWQsIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgcmVhZGVyIGlzLgogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBjYXBhY2l0eSBmb3IgbWluaW11bSBtZXNzYWdlIHNpemUsIHdhaXQgdW50aWwgbW9y
ZSBpcyBhdmFpbGFibGUuCi0gICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGNsaWVudE9mZnNl
dCA8IHNlcnZlck9mZnNldCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0dWF0aW9uIHdoZXJlCisgICAg
ICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGNsaWVudE9mZnNldCA8IGNsaWVudExpbWl0IHdlIGNh
biBhcnJpdmUgdG8gYSBzaXR1YXRpb24gd2hlcmUKICAgICAgICAgLy8gMCA8IHJlc3VsdC5zaXpl
IDwgbWluaW11bU1lc3NhZ2VTaXplLgogICAgIH0KICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpA
QCAtMjAyLDExICsyMDYsMTEgQEAgaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VV
cFNlcnZlciBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNlKHNpemUKICAgICBzaXplID0g
c3RkOjptYXgoc2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKICAgICBtX2NsaWVudE9mZnNldCA9
IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9jbGllbnRPZmZzZXQpICsgc2l6ZSk7CiAgICAgQVNT
RVJUKG1fY2xpZW50T2Zmc2V0IDwgZGF0YVNpemUoKSk7Ci0gICAgLy8gSWYgdGhlIHNlcnZlciB3
cm90ZSBvdmVyIHRoZSBjbGllbnRPZmZzZXQgd2l0aCBjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVw
aW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgotICAgIHNpemVfdCBzZXJ2ZXJMaW1pdCA9
IHNoYXJlZENsaWVudE9mZnNldCgpLmV4Y2hhbmdlKG1fY2xpZW50T2Zmc2V0LCBzdGQ6Om1lbW9y
eV9vcmRlcl9hY3FfcmVsKTsKLSAgICBpZiAoc2VydmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVlcGluZ1RhZykKKyAgICAvLyBJZiB0aGUg
c2VydmVyIHdyb3RlIG92ZXIgdGhlIGNsaWVudE9mZnNldCB3aXRoIHNlcnZlcklzU2xlZXBpbmdU
YWcsIHdlIGtub3cgaXQgaXMgc2xlZXBpbmcuCisgICAgQ2xpZW50T2Zmc2V0IG9sZENsaWVudE9m
ZnNldCA9IHNoYXJlZENsaWVudE9mZnNldCgpLmV4Y2hhbmdlKHN0YXRpY19jYXN0PENsaWVudE9m
ZnNldD4obV9jbGllbnRPZmZzZXQpLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICBp
ZiAob2xkQ2xpZW50T2Zmc2V0ID09IENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZykK
ICAgICAgICAgcmV0dXJuIFdha2VVcFNlcnZlcjo6WWVzOwotICAgIEFTU0VSVCghKHNlcnZlckxp
bWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVlcGlu
Z1RhZykpOworICAgIEFTU0VSVCghKG9sZENsaWVudE9mZnNldCAmIENsaWVudE9mZnNldDo6c2Vy
dmVySXNTbGVlcGluZ1RhZykpOwogICAgIHJldHVybiBXYWtlVXBTZXJ2ZXI6Ok5vOwogfQogCkBA
IC0yMzUsMTAgKzIzOSwxMSBAQCBpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQogICAgIHJldHVybiBsaW1pdCAtIG9m
ZnNldCAtIDE7CiB9CiAKLWlubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y2xh
bXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QKK2lubGluZSBzaXplX3QgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6dG9MaW1pdChDbGllbnRMaW1pdCBjbGllbnRMaW1pdCkgY29u
c3QKIHsKLSAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKLSAg
ICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKKyAgICBB
U1NFUlQoIShjbGllbnRMaW1pdCAmIENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpKTsK
KyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihjbGllbnRMaW1pdCkgPD0gZGF0YVNpemUo
KSAtIDEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNsaWVudExpbWl0KTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oCmluZGV4IGZjOGRjN2QxMDU4ZTA1MTM1MzYxM2U2NzcyZWQwMjM0MDE3NmZmN2Eu
LjUyYjNkNzllYWEzNjg3NDBjMTJkNWJjNTQ1MjdlOTU3ZWY0YTY5ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTgy
LDE5ICs4MiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgfQogCi0g
ICAgQXRvbWljPHNpemVfdD4mIGNsaWVudE9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLmNsaWVu
dE9mZnNldDsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzZXJ2ZXJPZmZzZXQoKSB7IHJldHVybiBo
ZWFkZXIoKS5zZXJ2ZXJPZmZzZXQ7IH0KKyAgICAvLyBWYWx1ZSBkZW5vdGluZyB0aGUgY2xpZW50
IGluZGV4IHRvIHRoZSBidWZmZXIsIHdpdGggc3BlY2lhbCB0YWcgdmFsdWVzLgorICAgIC8vIFRo
ZSBjbGllbnQgdHJ1c3RzIHRoaXMuIFRoZSBzZXJ2ZXIgY29udmVydHMgdGhlIHZhbHVlIHRvIHRy
dXN0ZWQgc2l6ZV90IG9mZnNldCB3aXRoIGEgc3BlY2lhbCBmdW5jdGlvbi4KKyAgICBlbnVtIENs
aWVudE9mZnNldCA6IHNpemVfdCB7CisgICAgICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gd2hl
biB0aGUgc2VydmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgorICAgICAgICBzZXJ2
ZXJJc1NsZWVwaW5nVGFnID0gMXUgPDwgMzEKKyAgICB9OworCisgICAgLy8gVmFsdWUgZGVub3Rp
bmcgdGhlIHNlcnZlciBpbmRleCB0byB0aGUgYnVmZmVyLCB3aXRoIHNwZWNpYWwgdGFnIHZhbHVl
cy4KKyAgICAvLyBUaGUgY2xpZW50IHRydXN0cyB0aGlzLiBUaGUgc2VydmVyIGNvbnZlcnRzIHRo
ZSB2YWx1ZSB0byB0cnVzdGVkIHNpemVfdCBvZmZzZXQgd2l0aCBhIHNwZWNpYWwgZnVuY3Rpb24u
CisgICAgZW51bSBTZXJ2ZXJPZmZzZXQgOiBzaXplX3QgeworICAgICAgICAvLyBUYWcgdmFsdWUg
c3RvcmVkIHdoZW4gdGhlIGNsaWVudCBpcyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24gYSBzZW1h
cGhvcmUuCisgICAgICAgIGNsaWVudElzV2FpdGluZ1RhZyA9IDF1IDw8IDMxCisgICAgfTsKKwor
ICAgIEF0b21pYzxDbGllbnRPZmZzZXQ+JiBjbGllbnRPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIo
KS5jbGllbnRPZmZzZXQ7IH0KKyAgICBBdG9taWM8U2VydmVyT2Zmc2V0PiYgc2VydmVyT2Zmc2V0
KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VydmVyT2Zmc2V0OyB9CiAgICAgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0
YSgpKSArIGhlYWRlclNpemUoKTsgfQogICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YVNpemU7IH0KICAgICBTZW1hcGhvcmUmIGNsaWVudFdhaXRTZW1hcGhvcmUoKSB7
IHJldHVybiBtX2NsaWVudFdhaXRTZW1hcGhvcmU7IH0KIAotICAgIC8vIFRhZyB2YWx1ZSBzdG9y
ZWQgaW4gSGVhZGVyOjpjbGllbnRPZmZzZXQgd2hlbiB0aGUgc2VydmVyIGlzIHNsZWVwaW5nLCBl
LmcuIG5vdCBydW5uaW5nLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGNsaWVudE9mZnNl
dFNlcnZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOwotICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQg
aW4gSGVhZGVyOjpzZXJ2ZXJPZmZzZXQgd2hlbiB0aGUgY2xpZW50IGlzIHdhaXRpbmcsIGUuZy4g
d2FpdGluZyBvbgotICAgIC8vIGEgc2VtYXBob3JlLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IHNlcnZlck9mZnNldENsaWVudElzV2FpdGluZ1RhZyA9IDEgPDwgMzE7Ci0KLSAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6bWluKGNsaWVu
dE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcsIGNsaWVudE9mZnNldFNlcnZlcklzU2xlZXBpbmdU
YWcpIC0gMTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1TaXplKCkgeyBy
ZXR1cm4gc3RkOjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGllbnRPZmZzZXQ6OnNlcnZlcklz
U2xlZXBpbmdUYWcpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENsaWVudE9mZnNldDo6c2VydmVySXNT
bGVlcGluZ1RhZykpIC0gMTsgfQogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXIm
KTsKIApAQCAtMTAyLDEwICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1lbW9yeVNpemUsIFNl
bWFwaG9yZSYmIGNsaWVudFdhaXRTZW1hcGhvcmUpOwogCiAgICAgc3RydWN0IEhlYWRlciB7Ci0g
ICAgICAgIEF0b21pYzxzaXplX3Q+IHNlcnZlck9mZnNldDsKKyAgICAgICAgQXRvbWljPFNlcnZl
ck9mZnNldD4gc2VydmVyT2Zmc2V0OwogICAgICAgICAvLyBQYWRkaW5nIHNvIHRoYXQgdGhlIHZh
cmlhYmxlcyBtb3N0bHkgYWNjZXNzZWQgYnkgZGlmZmVyZW50IHByb2Nlc3NlcyBkbyBub3Qgc2hh
cmUgYSBjYWNoZSBsaW5lLgogICAgICAgICAvLyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gYXZvaWQg
Y2FjaGUtbGluZSBpbmR1Y2VkIHJlZHVjdGlvbiBvZiBwYXJhbGxlbCBhY2Nlc3MuCi0gICAgICAg
IGFsaWduYXMoc2l6ZW9mKHVpbnQ2NF90WzJdKSkgQXRvbWljPHNpemVfdD4gY2xpZW50T2Zmc2V0
OworICAgICAgICBhbGlnbmFzKHNpemVvZih1aW50NjRfdFsyXSkpIEF0b21pYzxDbGllbnRPZmZz
ZXQ+IGNsaWVudE9mZnNldDsKICAgICB9OwogICAgIEhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SGVhZGVyKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7
IH0KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkgeyByZXR1cm4gcm91
bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXplb2YoSGVhZGVy
KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggODBiMDM5YTdmOTg1Mzk3MjA2OGYzZWVlODQ5MjQ0M2Q3Yzgw
M2EzZi4uOGU0OTI2NjQ0YTgwODYzNjllZjdjYzg5YTQwMmIyOGI5NjAxN2EwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5j
cHAKQEAgLTYxLDM1ICs2MSwzNSBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpl
bnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlYwogCiBPcHRpb25h
bDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnRyeUFxdWlyZSgpCiB7Ci0gICAgc2l6ZV90IHNlcnZlckxpbWl0ID0gc2hhcmVkQ2xp
ZW50T2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKLSAgICBpZiAoc2Vy
dmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNT
bGVlcGluZ1RhZykKKyAgICBTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1pdCA9IHNoYXJlZFNlcnZlckxp
bWl0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAoc2VydmVyTGlt
aXQgPT0gU2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNl
dCwgc2VydmVyTGltaXQpOworCisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZl
ck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgaWYgKHJlc3VsdC5zaXpl
IDwgbWluaW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAgIHNlcnZlckxpbWl0ID0gc2hhcmVkQ2xp
ZW50T2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlcnZlckxpbWl0LCBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9y
eV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKLSAgICAgICAgQVNT
RVJUKCEoc2VydmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXRT
ZXJ2ZXJJc1NsZWVwaW5nVGFnKSk7Ci0gICAgICAgIHNlcnZlckxpbWl0ID0gY2xhbXBlZExpbWl0
KHNlcnZlckxpbWl0KTsKLSAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZXJ2ZXJPZmZz
ZXQsIHNlcnZlckxpbWl0KTsKKyAgICAgICAgc2VydmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1p
dCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZXJ2ZXJMaW1pdCwgU2VydmVyTGltaXQ6OnNlcnZl
cklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcV9yZWwpOworICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNl
dCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5z
aXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdl
U2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJl
YWRTaXplKQogewogICAgIEFTU0VSVChyZWFkU2l6ZSk7CiAgICAgcmVhZFNpemUgPSBzdGQ6Om1h
eChyZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKLSAgICBzaXplX3Qgc2VydmVyT2Zmc2V0
ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlcnZlck9mZnNldCkgKyByZWFkU2l6ZSk7Cisg
ICAgU2VydmVyT2Zmc2V0IHNlcnZlck9mZnNldCA9IHN0YXRpY19jYXN0PFNlcnZlck9mZnNldD4o
d3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlcnZlck9mZnNldCkgKyByZWFkU2l6ZSkpOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc2l6ZV90IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNl
cnZlck9mZnNldCgpLmV4Y2hhbmdlKHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNx
X3JlbCk7Ci0gICAgLy8gSWYgdGhlIGNsaWVudCB3cm90ZSBvdmVyIHNlcnZlck9mZnNldCwgaXQg
bWVhbnMgdGhlIGNsaWVudCBpcyB3YWl0aW5nLgotICAgIGlmIChvbGRTZXJ2ZXJPZmZzZXQgPT0g
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVyT2Zmc2V0Q2xpZW50SXNXYWl0aW5nVGFnKQor
ICAgIFNlcnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5l
eGNoYW5nZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIC8v
IElmIHRoZSBzZW5kZXIgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5k
ZXIgaXMgd2FpdGluZy4KKyAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6
Y2xpZW50SXNXYWl0aW5nVGFnKQogICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3Jl
KCkuc2lnbmFsKCk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQoIShvbGRTZXJ2ZXJPZmZzZXQg
JiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZXJ2ZXJPZmZzZXRDbGllbnRJc1dhaXRpbmdUYWcp
KTsKKyAgICAgICAgQVNTRVJUKCEob2xkU2VydmVyT2Zmc2V0ICYgU2VydmVyT2Zmc2V0OjpjbGll
bnRJc1dhaXRpbmdUYWcpKTsKICNlbHNlCiAgICAgc2hhcmVkU2VydmVyT2Zmc2V0KCkuc3RvcmUo
c2VydmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKICAgICAvLyBJUEM6OlNl
bWFwaG9yZSBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBwbGF0Zm9ybS4gQ2xpZW50IHdpbGwgcG9s
bCBhbmQgeWllbGQuCkBAIC0xMjEsMTAgKzEyMSwxMiBAQCBzaXplX3QgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQogICAgIHJldHVy
biBkYXRhU2l6ZSgpIC0gb2Zmc2V0OwogfQogCi1zaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0CitzaXplX3Qg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChTZXJ2ZXJMaW1pdCBzZXJ2
ZXJMaW1pdCkgY29uc3QKIHsKLSAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUo
KSAtIDEpKTsKLSAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkg
LSAxKTsKKyAgICBBU1NFUlQoIShzZXJ2ZXJMaW1pdCAmIFNlcnZlckxpbWl0OjpzZXJ2ZXJJc1Ns
ZWVwaW5nVGFnKSk7CisgICAgc2l6ZV90IGxpbWl0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzZXJ2
ZXJMaW1pdCk7CisgICAgQVNTRVJUKGxpbWl0IDw9IGRhdGFTaXplKCkgLSAxKTsKKyAgICByZXR1
cm4gc3RkOjptaW4obGltaXQsIGRhdGFTaXplKCkgLSAxKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGJl
Y2QzOGRkOTMxM2I2MzIzZjBhYTRmMjdmZDJjYmUyYmZmOTk3YjMuLjQ5NWFmZmQwM2M2ZjU0ZDcy
ODlmYzEwMWQ2ZDZkZDg4NmUzYjc3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTc0LDExICs3NCwxMyBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OwogICAgIFNwYW4gYWxpZ25l
ZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKICAgICBzaXplX3Qgc2l6ZShzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwotICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90
IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKICAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zm
c2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KICAgICBz
aXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
YWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUp
OyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZENsaWVudE9mZnNldCgpIHsgcmV0dXJuIG1f
YnVmZmVyLmNsaWVudE9mZnNldCgpOyB9Ci0gICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFNlcnZl
ck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZlck9mZnNldCgpOyB9CisgICAgdXNpbmcg
U2VydmVyTGltaXQgPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpDbGllbnRPZmZzZXQ7CisgICAg
QXRvbWljPFNlcnZlckxpbWl0PiYgc2hhcmVkU2VydmVyTGltaXQoKSB7IHJldHVybiBtX2J1ZmZl
ci5jbGllbnRPZmZzZXQoKTsgfQorICAgIHVzaW5nIFNlcnZlck9mZnNldCA9IFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OlNlcnZlck9mZnNldDsKKyAgICBBdG9taWM8U2VydmVyT2Zmc2V0PiYgc2hh
cmVkU2VydmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2VydmVyT2Zmc2V0KCk7IH0KKyAg
ICBzaXplX3QgY2xhbXBlZExpbWl0KFNlcnZlckxpbWl0KSBjb25zdDsKICAgICB1aW50OF90KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGRhdGFT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGIzMjgzNGU4YmJiZjA0
YTlmNzc4YmIwMDYwZTVmNjBjMmEwNjY5NjEuLjkyOGRhNzU2MGMzZTg5YmQ0MWQ1MThhNmI2MmU1
NGU4YTRlZWY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCkBAIC0xMDI4LDcgKzEwMjgsOCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aQogICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZywKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nOjpDb250ZXh0Q2hhbmdlLAotICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OkdQVVN0YXR1
c0ZhaWx1cmUKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRG
b3JUZXN0aW5nOjpHUFVTdGF0dXNGYWlsdXJlLAorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OlRpbWVvdXQKICAgICA+OwogfTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggODU5Nzlj
Y2RiMGYxZDVhYjdhYzAzMjU1OTRjMzEwZWZhMWFiZWRiZC4uN2MxMTY2ZTI3M2ZiZmI3N2Y1MmJl
NDFlN2VmNjk0MDA1OWQ3OTM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikKICAgICBpZiAoIWlzQ29u
dGV4dExvc3QoKSkgewogICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpKTsKICAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICAgICAg
bWFya0NvbnRleHRMb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9lcnJvcldo
ZW5Db250ZXh0SXNMb3N0ID0gZXJyb3I7CkBAIC0xODcsNyArMTg3LDcgQEAgR0NHTGVudW0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogICAgICAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IDA7CiAgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpKTsKICAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICAgICAg
bWFya0NvbnRleHRMb3N0KCk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4o
cmV0dXJuVmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Vycm9yV2hl
bkNvbnRleHRJc0xvc3QsIE5PX0VSUk9SKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YjBkY2Q5ZGQyZWUxOTRiOWI3YjY2
ZmIyY2Y4NWZiNzU5ZWMzYTU2Li4xYjZiM2IwNDMwYjYyZDkyMzBiN2EzMmUwOTA2ZjU2ZTUyNTk1
ZmIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMDQgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBhc3NlcnRzIGFmdGVyIEdQVSBw
cm9jZXNzIHRpbWVzIG91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyNTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHRlc3RzIHRvIHRlc3QgdGhlIGNhc2Ugd2hlcmUgYSBXZWJHTCBjYWxsIHRp
bWVzIG91dC4KKyAgICAgICAgQWRkIHR3byB2YXJpYW50czogb25lIHdoaWNoIG1vc3QgcHJvYmFi
bHkgdGltZXMgb3V0IG9uCisgICAgICAgIHN5bmNocm9ub3VzIGNhbGwsIGFuZCBvbmUgd2hpY2gg
bW9zdCBwcm9iYWJseSB0aW1lcyBvdXQgb24KKyAgICAgICAgYXN5bmNocm9ub3VzIGNhbGwuCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tc3RhdHVzLWZhaWx1
cmUuaHRtbDoKKyAgICAgICAgVGhlIHRlc3RpbmcgQVBJcyB3ZXJlIGNoYW5nZWQsIHNvIHJlcGxh
Y2UgdXNlIG9mCisgICAgICAgIEludGVybmFscy5zZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkK
KyAgICAgICAgd2l0aCBJbnRlcm5hbHMuc2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dCgpCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNv
bnRleHQtb24tdGltZW91dC1hc3luYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVu
dC5odG1sOgorCiAyMDIxLTAzLTA0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIGluaXRpYWwgdmFsdWUgZm9yIGJvcmRlci1pbWFnZS1vdXRzZXQgc2hvdWxk
IGJlIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg3ZDUyOGY4MDM2YTc2ODA4ZjlkMDkwMmM1ZjBl
NmU4ZTRmMmQ2ZjEuLmE5MDNiOTZlNGQ4NDg0NWViMzgwOGFhMjgxMjFjNDdhMmY4NWUwODYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQ1OSw2ICszNDU5LDEwIEBAIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlMi9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC0yLmh0bWwgWyBTa2lwIF0KICMgRmFpbGlu
ZyBvbiBjZXJ0YWluIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zOiBtYWNPUyB3aXRoIEludGVsIEdQ
VXMuIEFsc28gc2xvdy4KIHdlYmtpdC5vcmcvYi8yMjA3NTMgd2ViZ2wvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwgWyBQYXNzIEZhaWx1cmUgU2xvdyBdCiAKKyMg
VGltZW91dCB0ZXN0aW5nIGlzIG5vdCBhcHBsaWNhYmxlIHRvIGluLXByb2Nlc3Mgd2ViZ2wsIG9u
bHkgd2ViZ2wgaW4gZ3B1IHByb2Nlc3MuCitmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQt
b24tdGltZW91dC1hc3luYy5odG1sIFsgU2tpcCBdCitmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNv
bnRleHQtb24tdGltZW91dC5odG1sIFsgU2tpcCBdCisKICMgcHJlLXdyYXAgcHJvZ3Jlc3Npb24u
IE90aGVyIHJlbmRlcmluZyBlbmdpbmVzIGFncmVlIHdpdGggdGhlIHJlc3VsdC4KIHdlYmtpdC5v
cmcvYi8yMDYxNjggWyBEZWJ1ZyBdIGZhc3QvZG9tL2luc2VydC1zcGFuLWludG8tbG9uZy10ZXh0
LWJ1Zy0yODI0NS5odG1sIFsgU2tpcCBdCiAKQEAgLTQ4NDAsNCArNDg0NCwzIEBAIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1hcm1l
bmlhbi9jc3MzLWNvdW50CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y291bnRlci1zdHlsZXMvdXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLXN0eWxlcy0wMjMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWNvdW50ZXItc3R5bGVzL3VwcGVyLXJvbWFuL2NzczMtY291bnRlci1zdHlsZXMtMDI0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1yb21hbi9jc3MzLWNvdW50ZXItc3R5bGVzLTAy
NGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91
dC1hc3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdlYTZjZTY3ZDZiMDQxMzM3Y2JmYTQw
YWYzMDZiN2NhY2M2MzM4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFdlYkdMOiBDT05URVhUX0xPU1RfV0VCR0w6
IGxvc2VDb250ZXh0OiBjb250ZXh0IGxvc3QKK0NoZWNrcyB0aGF0IGEgR1BVIHByb2Nlc3MgdGlt
ZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJvZHVjaW5nIFdlYkdMIGNhbGwgd2lsbCBsb3NlIHRoZSBj
b250ZXh0LgorTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBoYXJuZXNzIGJlY2F1
c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLgorCitQQVNTIGdsLmlzQ29udGV4dExvc3QoKSBpcyBm
YWxzZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmlzQ29udGV4
dExvc3QoKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuQ09OVEVYVF9MT1NUX1dF
QkdMCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9u
LXRpbWVvdXQtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2Ut
Y29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYzMDEwN2MzZWU1MDE5
MWJiOGVjOWVlOTA1MjZjODA0ZmNkZmEwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKQEAg
LTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2NhbnZhcyB7
CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9Cis8L3N0eWxlPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2
YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK2lmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspCisgICAgd2luZG93
LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKKworZGVidWcoIkNoZWNrcyB0aGF0IGEg
R1BVIHByb2Nlc3MgdGltZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJvZHVjaW5nIFdlYkdMIGNhbGwg
d2lsbCBsb3NlIHRoZSBjb250ZXh0LiIpOworZGVidWcoIk5PVEU6IFRoaXMgb25seSBwYXNzZXMg
aW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVybmFscy4iKTsKK2Rl
YnVnKCIiKTsKKworYXN5bmMgZnVuY3Rpb24gd2ViR0xDb250ZXh0TG9zdChjYW52YXMpIHsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigi
d2ViZ2xjb250ZXh0bG9zdCIsIHJlc29sdmUpKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgY2FudmFzLndpZHRoID0gMjAwOworICAgIGNhbnZhcy5oZWlnaHQgPSAyMDA7CisgICAg
Z2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgICAgd3R1LnNldHVwQ29sb3JRdWFk
KGdsKTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBnbC5jbGVhcihn
bC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc0NvbnRleHRMb3N0
KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNpbXVsYXRl
RXZlbnRGb3JXZWJHTENvbnRleHQoIlRpbWVvdXQiLCBnbCk7CisgICAgLy8gV2UncmUgdHJ5aW5n
IHRvIGZpbGwgdGhlIGNvbW1hbmQgYnVmZmVyIHdpdGggY2FsbHMgYWZ0ZXIgdGhlIHRpbWVvdXQs
CisgICAgLy8gc28gdGhhdCB3ZSB0ZXN0IHRoYXQgYXN5bmNocm9ub3VzIGNhbGxzIGNhdXNlIHRp
bWVvdXRzIHRvby4KKyAgICAvLyBVc2UgYSByZWxhdGl2ZWx5IGZhc3QgY2FsbCB0aGF0IHN0aWxs
IGZpbGxzIHVwIHRoZSBidWZmZXIuCisgICAgbGV0IGNhbGxDb3VudCA9IDEwMDAwMDA7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQ291bnQ7ICsraSkKKyAgICAgICAgZ2wuY2xlYXJDb2xv
cigxLjAsIDEuMCwgMC4wICsgaS9jYWxsQ291bnQsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgYXdhaXQgd2ViR0xDb250ZXh0TG9zdChjYW52YXMpOworICAg
IHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAgc2hvdWxkQmUoImdsLmdl
dEVycm9yKCkiLCAiZ2wuQ09OVEVYVF9MT1NUX1dFQkdMIik7CisgICAgZmluaXNoVGVzdCgpOwor
fQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3Jp
cHQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMWU0MjkzNDg1ZmRiNmYzOGIwYmIzYjkzNjNjMjM4ZjlkNWRlMmE1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0
LW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FH
RTogV2ViR0w6IENPTlRFWFRfTE9TVF9XRUJHTDogbG9zZUNvbnRleHQ6IGNvbnRleHQgbG9zdAor
Q2hlY2tzIHRoYXQgYSBHUFUgcHJvY2VzcyB0aW1lb3V0IG9uIGEgcmVzdWx0IHByb2R1Y2luZyBX
ZWJHTCBjYWxsIHdpbGwgbG9zZSB0aGUgY29udGV4dC4KK05PVEU6IFRoaXMgb25seSBwYXNzZXMg
aW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVybmFscy4KKworUEFT
UyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5O
T19FUlJPUgorUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJv
cigpIGlzIGdsLkNPTlRFWFRfTE9TVF9XRUJHTAorUEFTUyB2YWwgaXMgWzAsIDAsIDAsIDBdCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVv
dXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10
aW1lb3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMzZmM3ZDY2NTM2NWFiNDEzZTMwMmNlNjkzMTkzYjYz
NjMwODIzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2NhbnZhcyB7CisgICAgd2lkdGg6IDIwMHB4OworICAg
IGhlaWdodDogMjAwcHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wt
dGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0
aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7
Cit2YXIgZ2w7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cuaW5p
dE5vbktocm9ub3NGcmFtZXdvcmspCisgICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3Jr
KGZhbHNlKTsKKworZGVidWcoIkNoZWNrcyB0aGF0IGEgR1BVIHByb2Nlc3MgdGltZW91dCBvbiBh
IHJlc3VsdCBwcm9kdWNpbmcgV2ViR0wgY2FsbCB3aWxsIGxvc2UgdGhlIGNvbnRleHQuIik7Citk
ZWJ1ZygiTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBoYXJuZXNzIGJlY2F1c2Ug
aXQgcmVxdWlyZXMgSW50ZXJuYWxzLiIpOworZGVidWcoIiIpOworCithc3luYyBmdW5jdGlvbiB3
ZWJHTENvbnRleHRMb3N0KGNhbnZhcykgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IiwgcmVzb2x2ZSkp
OworfQordmFyIHZhbDsKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgbGV0IGNhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZhcy53aWR0aCA9
IDIwMDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMjAwOworICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMpOworICAgIHd0dS5zZXR1cENvbG9yUXVhZChnbCk7CisgICAgZ2wudmlld3Bv
cnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBnbC5jbGVhckNvbG9y
KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAgc2hvdWxkQmUo
ImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0
KCJUaW1lb3V0IiwgZ2wpOworICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAxLjAsIDAuMCwgMS4wKTsK
KyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB2YWwgPSBnbC5nZXRQYXJh
bWV0ZXIoZ2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICAgIGF3YWl0IHdlYkdMQ29udGV4dExvc3Qo
Y2FudmFzKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIHNo
b3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLkNPTlRFWFRfTE9TVF9XRUJHTCIpOworICAgIHNo
b3VsZEJlKCJ2YWwiLCAiWzAsIDAsIDAsIDBdIik7CisgICAgZmluaXNoVGVzdCgpOworfQorCity
dW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8
Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDMyZmYwZGY2MGFhYWIwZjcwOTU3OTNlOTU2NjhkNTI3MGZkYzkwNTAuLmIwYTA5MmYzMjAw
MjBiZWY1MDNkNTQyYjI5ODQ5YmYyZGEyNmYyYjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTcsNiArMTcsOSBAQCBmYXN0L2NhbnZhcy93ZWJnbC91bmlm
b3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uv
YXR0cmlicy9nbC12ZXJ0ZXhhdHRyaWJwb2ludGVyLmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZyYW1lYnVmZmVyLWZpbHRlci1vdXRvZmJvdW5k
cy5odG1sIFsgU2xvdyBdCiAKK2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1l
b3V0LWFzeW5jLmh0bWwgWyBTbG93IFBhc3MgXQorZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250
ZXh0LW9uLXRpbWVvdXQuaHRtbCBbIFNsb3cgUGFzcyBdCisKIGZhc3QvZG9tL25hdmlnYXRvci1k
ZXRhY2hlZC1uby1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2ltYWdlcy9vcmRlcmVkLWFu
aW1hdGVkLWltYWdlLWZyYW1lcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422269</attachid>
            <date>2021-03-04 12:03:43 -0800</date>
            <delta_ts>2021-03-08 02:43:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222546-20210304220340.patch</filename>
            <type>text/plain</type>
            <size>41406</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmOTFjZjdlMGE2OGMw
MDE1ZDE5ODlkODc5MzBiMGYyZGMyNjNiZC4uNGFlODI1OTY5MGNkNWIyMGJiOGVlZmM5NTc0ZDJk
NWY4NjBlMGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAzLTA0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgYXNzZXJ0
cyBhZnRlciBHUFUgcHJvY2VzcyB0aW1lcyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRyaWdnZXIgaW50ZXJuYWxzLnNpbXVsYXRlRXZl
bnRGb3JXZWJHTENvbnRleHQoInRpbWVvdXQiLCBjb250ZXh0KQorICAgICAgICB0byB0cmlnZ2Vy
IHRpbWVvdXQgZm9yIGNhbGxzIHRvIGEgV2ViR0wgY29udGV4dC4KKworICAgICAgICBUZXN0czog
ZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQuaHRt
bAorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpzaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KToKKwogMjAyMS0wMy0wNCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW4gY2FzZSBvZiBQ
T1NUIG5hdmlnYXRpb24gcmVkaXJlY3RlZCBieSBhIDMwMiwgdGhlICdPcmlnaW4nIGhlYWRlciBp
cyBrZXB0IGluIHRoZSByZWRpcmVjdGVkIHJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDgzYzcxMjY3MTM3
OGZlMjU2MTMxYjRmYmQzZTc4ZDgxZTJjMzMwMS4uMTgxYzcyMjBkYWVlNjJlOGRjZDg0ZTQ0NGIx
MDg3M2Y0ZjkxYjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjcgQEAKKzIwMjEtMDMtMDQgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBhc3Nl
cnRzIGFmdGVyIEdQVSBwcm9jZXNzIHRpbWVzIG91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlB
Y3F1aXJlIHdvdWxkIGFzc2VydCBvbgorICAgICAgICAgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0
IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgICAgIFRoZSB1bnRydXN0ZWRMaW1pdCB2YWx1ZSB3
b3VsZCBiZSB0aGVuOgorICAgICAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVy
T2Zmc2V0Q2xpZW50SXNXYWl0aW5nVGFnLgorICAgICAgICBUaGlzIHdvdWxkIGJlIGVxdWl2YWxl
bnQgb2YgYXNzZXJ0aW9uIGFkZGVkIGluIHRoaXMgY29tbWl0OgorICAgICAgICAgICAgQVNTRVJU
KGNsaWVudExpbWl0ICE9IENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcpOworCisgICAg
ICAgIFRoaXMgd291bGQgaGFwcGVuIGluIGNhc2Ugb2YgdGltZW91dCwgYmVjYXVzZSB1cG9uIGVu
dGVyaW5nCisgICAgICAgIHRoZSB3YWl0IHNlcXVlbmNlOgorICAgICAgICAgMSkgVGhlIGNsaWVu
dCBpdHNlbGYgd291bGQgZmlyc3Qgd3JpdGUgdGhlIHRhZyB2YWx1ZSB0byB0aGUKKyAgICAgICAg
ICAgIG9mZnNldCB2YXJpYWJsZS4KKyAgICAgICAgIDIpIFdhaXQgYW5kIHRpbWVvdXQgdGhlIHdh
aXQuCisgICAgICAgICAzKSBydW4gdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBhY3F1aXJlIGxv
b3AuCisKKyAgICAgICAgVGhlIG5leHQgaXRlcmF0aW9uIHdvdWxkIGxvYWQgdGhlIHRhZyB2YWx1
ZSB3cml0dGVuIGJlZm9yZSwKKyAgICAgICAgZS5nLiBzZXJ2ZXJPZmZzZXRDbGllbnRJc1dhaXRp
bmdUYWcuCisgICAgICAgIFRoaXMgd291bGQgYmUgdGhlbiB1c2VkIGluIGNsYW1wZWRMaW1pdCgp
IGNhbGwuCisKKyAgICAgICAgRml4IHRoaXMgYnkgdGFraW5nIGl0IGludG8gYWNjb3VudCB0aGF0
IHRoZSB2YXJpYWJsZSBtaWdodCBiZQorICAgICAgICBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0
aW5nVGFnIHdpdGhpbiB0aGUgYWNxdWlyZSBsb29wLgorCisgICAgICAgIFBvc3NpYmx5IGZpeCBm
dXR1cmUgc2ltaWxhciBwcm9ibGVtcyBieSBub3QgdHJlYXRpbmcgdGhlIHZhbHVlIGFzCisgICAg
ICAgIHNpemVfdCwgcmF0aGVyIHRyZWF0IGl0IGFzIGVudW0gY2xhc3MgQ2xpZW50T2Zmc2V0IDog
c2l6ZV90LiBUaGlzCisgICAgICAgIGVuYWJsZXMgdGhlIGNvbXBpbGVyIHRvIGVuZm9yY2UgdGhh
dCB3aGVuIGNoZWNraW5nIGZvciB0aGUgdmFyaW91cyB0YWcKKyAgICAgICAgdmFsdWVzLCB0aGUg
aG9sZGVyIG11c3QgaG9sZCB0aGUgZW51bSBjbGFzcy4gV2hlbiBpbnRlbmRpbmcgdG8gaW50ZXJw
cmV0CisgICAgICAgIHRoZSB2YWx1ZSBhcyBzaXplX3QsIGhvbGRlciBtdXN0IGV4cGxpY2l0bHkg
Y29udmVydC4KKworICAgICAgICBEbyB0aGUgYWJvdmUgY2hhbmdlIGZvciB0aGUgU2VydmVyT2Zm
c2V0LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24t
dGltZW91dC1hc3luYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy93ZWJnbC9sb3Nl
LWNvbnRleHQtb24tdGltZW91dC5odG1sCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICBEbyBub3QgYXNz
ZXJ0IHRoYXQgdGhlIHJlbGVhc2UgbWVzc2FnZSBhY3R1YWxseSByZWxlYXNlcyB0aGUgY29udGV4
dC4KKyAgICAgICAgRm9yIHRlc3RpbmcsIHRoZSBpbmR1Y2UgdGhlIHRpbWVvdXQgYnkgcmVsZWFz
aW5nIHRoZSBjb250ZXh0IHByZW1hdHVyZWx5CisgICAgICAgIGFuZCB0cmVhdGluZyB0aGUgc3Vi
c2VxdWVudCBtZXNzYWdlcyBhcyBpZiB0aGV5IHdlcmUgbm9uLWxlZ2l0IG1lc3NhZ2VzLgorICAg
ICAgICBUaGF0IHNob3VsZCBiZSBqdXN0IHNraXBwZWQuCisKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGlu
Zyk6CisgICAgICAgIEFkZCBhIHB1YmxpYyBmdW5jdGlvbiB0byBpbnZva2UgZnJvbSAiRm9yVGVz
dGluZyIgY29kZXBhdGhzLgorCisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICBTa2lwIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIG1lc3NhZ2VzIHRoYXQgZG8gbm90IGdldCByb3V0ZWQgdG8gYW55Cisg
ICAgICAgIGluc3RhbmNlLiBUaGVzZSBtZXNzYWdlcyBjYW4gYmUgIm5vbi1sZWdpdCIsIG9uZXMg
dGhhdCBhcmUgc2VudCBiZWZvcmUKKyAgICAgICAgdGhlICJjb250ZXh0IHdhcyBsb3N0IiBtZXNz
YWdlIHJlYWNoZWQgdGhlIHNlbmRlciwgb3Igb25lcyB0aGF0IGFyZQorICAgICAgICBzZW50IGR1
cmluZyBzaW11bGF0ZWQgdGltZW91dC4KKyAgICAgICAgVGhlc2UgZG8gbm90IGNvbnRhaW4gYXNz
ZXJ0cyBhcyBpdCBpcyBleHBlY3RlZCB0aGF0IHRoZXNlIHdpbGwgb2NjdXIgaW4KKyAgICAgICAg
YWJvdmUgc2l0dWF0aW9ucy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6c2ltdWxhdGVFdmVudEZvclRlc3RpbmcpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aDoKKyAgICAgICAgQWRkIHRoZSBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyBmdW5jdGlvbiB0byBz
aW11bGF0ZSB0aGUKKyAgICAgICAgdGltZW91dC4gU2ltdWxhdGUgdmlhIGp1c3QgcmVtb3Zpbmcg
dGhlIGNvbnRleHQsIHdoaWNoIGNhdXNlcworICAgICAgICBsZWZ0LW92ZXIgbWVzc2FnZXMgdG8g
c2tpcHBlZC4KKyAgICAgICAgQ3VycmVudGx5IHdlIGRvIG5vdCBzaW11bGF0ZSB0aGUgdGltZW91
dCB3aXRoIGFuIGluZmluaXRlIGxvb3AKKyAgICAgICAgaW4gR1BVIHByb2Nlc3MgdGhyZWFkcyBh
cyB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgIEN1cnJlbnRseSB3ZSBkbyBub3Qgc2lt
dWxhdGUgdGhlIHRpbWVvdXQgd2l0aCBhIGdwdSBwcm9jZXNzCisgICAgICAgIGNyYXNoIHNpbmNl
IGl0IGlzIG5vdCBzdXBwb3J0ZWQgdG8gYmUgdGVzdGVkICh3aWxsIGNhdXNlIGEKKyAgICAgICAg
cmVsb2FkKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rp
b24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgor
ICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNlKToKKyAgICAgICAg
Q2hhbmdlIHNpemVfdCB1c2FnZSB0byAtPiBDbGllbnRPZmZzZXQsIFNlcnZlck9mZnNldAorCisg
ICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUpOgorICAgICAg
ICBGaXggdGhlIGFzc2VydGlvbiBvZiBlcXVpdmFsZW50IG9mIEFTU0VSVChjbGllbnRMaW1pdCAh
PSBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnKTsKKyAgICAgICAgYnkgcmVvcmdhbml6
aW5nIHRoZSBhY3F1aXJlIGxvb3AuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6dG9MaW1pdCBjb25zdCk6CisgICAgICAgIEZpeCB0aGUgb2ZmLWJ5LW9uZSBpbiBhc3Nl
cnRpb24gZXJyb3IKKyAgICAgICAgKCA8IGRhdGFTaXplKCkgLSAxICB2cyA8PSBkYXRhU2l6ZSgp
IC0gMSkKKworICAgICAgICBSZW5hbWUgZnJvbSBjbGFtcGVkTGltaXQoKSB0byB0b0xpbWl0KCks
IGFzIHRoZQorICAgICAgICBjbGFtcGluZyBpcyBjb25mdXNpbmcgYXMgdGhlIGNsaWVudCB0cnVz
dHMgdGhlCisgICAgICAgIHNlcnZlci4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaDoKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50
T2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVyT2Zm
c2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50V2FpdFNl
bWFwaG9yZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om1heGltdW1T
aXplKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUpOgor
ICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZSk6CisgICAg
ICAgIENoYW5nZSBzaXplX3QgdXNhZ2UgdG8gLT4gQ2xpZW50T2Zmc2V0LCBTZXJ2ZXJPZmZzZXQK
KworICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0
IGNvbnN0KToKKyAgICAgICAgRml4IHRoZSBvZmYtYnktb25lIGluIGFzc2VydGlvbiBlcnJvcgor
ICAgICAgICAoIDwgZGF0YVNpemUoKSAtIDEgIHZzIDw9IGRhdGFTaXplKCkgLSAxKQorCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlcnZlckxpbWl0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlcnZlck9mZnNldCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAgICAgICBGb3IgdGhlIGNhc2VzIHdoZXJlIHRo
ZSB0aW1lb3V0IHdvdWxkIGhhcHBlbiBpbiB0aGVzZSB0d28gZnVuY3Rpb25zLAorICAgICAgICBj
YWxsIHRoZSBtYXJrQ29udGV4dExvc3QoKSBpbnN0ZWFkIG9mIHdhc0xvc3QoKS4gVGhpcyBpcyB0
byBjbGFyaWZ5CisgICAgICAgIGFsbCB0aGUgY29udGV4dCBsb3N0IGhhbmRsaW5nIHRvIHVzZSB0
aGUgc2FtZSBwYXR0ZXJuLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0
aW9uc0dlbmVyYXRlZC5jcHA6CisKIDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjcyNjI5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggODQ1NGVhYmVjMzhjOTUyNjNkNzc3NTIxMzVjZDIxMzY4YzA5M2QzZC4uZDI4
M2ViMGE4YzNmZmU3YzJiZjcyOGViNTQ4MTNiOWU4NmM4ZWU4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMzAx
LDcgKzEzMDEsOCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNpbXVsYXRlZEV2ZW50Rm9y
VGVzdGluZyB7CiAgICAgICAgIENvbnRleHRDaGFuZ2UsCi0gICAgICAgIEdQVVN0YXR1c0ZhaWx1
cmUKKyAgICAgICAgR1BVU3RhdHVzRmFpbHVyZSwKKyAgICAgICAgVGltZW91dAogICAgIH07CiAg
ICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9y
VGVzdGluZykgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggY2Fl
MmFhNWUzMjM0ZTg5NGY1MWE3MTAzNDI0NDE5MDM5OTc3ZjlhMS4uNmU0OWM5NzU5YzM5ZThkNzYy
ZWFlODAwOTc5NjU5M2ViNmI4ZDYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtNTEwMiw2ICs1MTAyLDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNpbXVsYXRlRXZlbnRGb3JX
ZWJHTENvbnRleHQoU2ltdWxhdGVkV2ViR0xDb250ZXh0RXZlbnQgZXZlbnQsIFcKICAgICBjYXNl
IFNpbXVsYXRlZFdlYkdMQ29udGV4dEV2ZW50OjpHUFVTdGF0dXNGYWlsdXJlOgogICAgICAgICBj
b250ZXh0RXZlbnQgPSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OlNpbXVsYXRlZEV2ZW50Rm9yVGVz
dGluZzo6R1BVU3RhdHVzRmFpbHVyZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW11bGF0
ZWRXZWJHTENvbnRleHRFdmVudDo6VGltZW91dDoKKyAgICAgICAgY29udGV4dEV2ZW50ID0gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpTaW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OlRpbWVvdXQ7Cisg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBhMDdj
M2E5NTEzOTdmYjBkYTY5YWI2NWQwNDlhNmNjZjkwZDI2YTY5Li4yOTgyNDdmNDgyNGRhMjUzMjVi
N2E5MzY4YTIzOWI4ZTc0NTJmZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTc3NCw3ICs3NzQsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVudW0gY2xh
c3MgU2ltdWxhdGVkV2ViR0xDb250ZXh0RXZlbnQgewogICAgICAgICBDb250ZXh0Q2hhbmdlLAot
ICAgICAgICBHUFVTdGF0dXNGYWlsdXJlCisgICAgICAgIEdQVVN0YXR1c0ZhaWx1cmUsCisgICAg
ICAgIFRpbWVvdXQKICAgICB9OwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4
dChTaW11bGF0ZWRXZWJHTENvbnRleHRFdmVudCwgV2ViR0xSZW5kZXJpbmdDb250ZXh0Jik7CiAg
ICAgYm9vbCBoYXNMb3dBbmRIaWdoUG93ZXJHUFVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKaW5kZXggYzE2YmUxZDQ0NGQyZmRlNzg3MGJmMWE0ODdmM2ZiMzdmMGY0NGYyZi4u
YWFjMmU3N2Q4MmMyZTIxZDc3YmQxMjkwY2M1MTdhNDJhMzc4NjY1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTAxLDcgKzEwMSw4IEBAIGVudW0gVHJlZVR5cGUgewog
CiBbQ29uZGl0aW9uYWw9V0VCR0xdIGVudW0gU2ltdWxhdGVkV2ViR0xDb250ZXh0RXZlbnQgewog
ICAgICJDb250ZXh0Q2hhbmdlIiwKLSAgICAiR1BVU3RhdHVzRmFpbHVyZSIKKyAgICAiR1BVU3Rh
dHVzRmFpbHVyZSIsCisgICAgIlRpbWVvdXQiCiB9OwogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzM5
OWQ2YmZjMmNmODQzYjBjNGVkMzM3ZTQ3NTEwZjg5YWM4YmNjNC4uOTA0NzBlZDBlMWM3ZDdiMDQ5
NjE5NjFkYTZiMGVlMDIxZmY3Mzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDEsNiArNDEsNyBAQAog
I2luY2x1ZGUgIk1lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKQEAgLTM2MCwxMCArMzYxLDE1IEBA
IHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0CiAKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7Ci0gICAgYm9vbCBmb3VuZCA9IG1fcmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIG1fcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9y
VGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBy
ZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woaWRlbnRpZmllcik7CiB9CiAjZW5kaWYKKwogdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKICAgICBn
cHVQcm9jZXNzKCkubm93UGxheWluZ01hbmFnZXIoKS5jbGVhck5vd1BsYXlpbmdJbmZvQ2xpZW50
KCp0aGlzKTsKQEAgLTU0NSw2ICs1NTEsMTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdMKQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICAvLyBTa2lw
IG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQgcmVjZWl2ZXJzLgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5k
aXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CkBAIC02MDQsNyArNjE2LDEz
IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICNlbmRpZgotCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJl
bW92ZWQgcmVjZWl2ZXJzLgorICAgICAgICByZXBseUVuY29kZXIucmVzZXQoKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1h
cCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggMmFmYmVhYTRkYmI4MzJiMDYyYjM0NDhmNmRlNDk5ZjhlYzFm
YTMxZS4uNjQ3YmQwMzYxMjY3N2Y4ODJhMTNmMGQwMmRjZGI5MWU1MzZjOGNmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC0xMjgsNyArMTI4LDkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHRlcm1pbmF0
ZVdlYlByb2Nlc3MoKTsKLQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTEZvclRlc3RpbmcoR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNl
bmRpZgogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3Mm
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA4OWJmY2E2NGE3YjJhNDVhMDIxN2M4YmMzMzM0
ODUzMGM4OWQ3ODU1Li43ZjZhNzExNjE3MjQ3YWMxNzQxNTkwOTU1MGRmYjQ0N2MxZTUwZDIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTI1OCw2ICsyNTgsMTUgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWUKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnNpbXVsYXRlRXZl
bnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaW11bGF0ZWRF
dmVudEZvclRlc3RpbmcgZXZlbnQpCiB7CiAgICAgLy8gRklYTUU6IG9ubHkgcnVuIHRoaXMgaW4g
dGVzdGluZyBtb2RlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIy
NTQ0CisgICAgaWYgKGV2ZW50ID09IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpT
aW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OlRpbWVvdXQpIHsKKyAgICAgICAgLy8gU2ltdWxhdGUg
dGhlIHRpbWVvdXQgYnkganVzdCBkaXNjYXJkaW5nIHRoZSBjb250ZXh0LiBUaGUgc3Vic2VxdWVu
dCBtZXNzYWdlcyBhY3QgbGlrZQorICAgICAgICAvLyB1bmF1dGhvcml6ZWQgb3Igb2xkIG1lc3Nh
Z2VzIGZyb20gV2ViIHByb2Nlc3MsIHRoZXkgYXJlIHNraXBwZWQuCisgICAgICAgIGNhbGxPbk1h
aW5SdW5Mb29wKFtncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBpZGVudGlmaWVyID0gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJdKCkg
eworICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlvblRvV2ViID0gZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uVG9XZWItPnJlbGVh
c2VHcmFwaGljc0NvbnRleHRHTEZvclRlc3RpbmcoaWRlbnRpZmllcik7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fY29udGV4dC0+c2ltdWxhdGVFdmVudEZvclRl
c3RpbmcoZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDdkYTcxNTUzZTljMTMwNzg3OWM3ZTg5
MTJjM2Y0ZTgzYzA2MTg5MjYuLjdkNTM0ZmFiYzk1ZTI0ZmY4MjEwMjM0Y2FmZWNlZjQ2NjBmOTli
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVu
dENvbm5lY3Rpb24uY3BwCkBAIC0zMyw5ICszMyw5IEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNp
CiAgICAgLCBtX2J1ZmZlcihzaXplKQogewogICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRo
IGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KLSAgICBzaGFyZWRDbGllbnRPZmZzZXQo
KS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVw
aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICBzaGFyZWRDbGllbnRPZmZz
ZXQoKS5zdG9yZShDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5
X29yZGVyX3JlbGF4ZWQpOwogICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0
IG9mIHRoZSB3aG9sZSBidWZmZXIuCi0gICAgc2hhcmVkU2VydmVyT2Zmc2V0KCkuc3RvcmUoMCwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9y
ZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OwogfQogCiB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJ
UEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAppbmRleCBjNWFiNmEzYTMxZDk2NDU0OGQ4
YzFiYTViODIyZGJiZGM1MGU3MTlhLi4wODg2NDk0Mzk5YTBlNWY2YTM5ODUwNWI0MTlkOGJmNTIx
YjViOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oCkBAIC04MCwxMiArODAsMTQgQEAgcHJpdmF0ZToKIAogICAgIFNwYW4g
YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKICAgICBzaXplX3Qgc2l6
ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwotICAgIHNpemVfdCBjbGFtcGVkTGltaXQo
c2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKIAogICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNp
emVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsg
fQogICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5hbGlnbk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNz
YWdlU2l6ZSk7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkQ2xpZW50T2Zmc2V0KCkgeyBy
ZXR1cm4gbV9idWZmZXIuY2xpZW50T2Zmc2V0KCk7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgc2hh
cmVkU2VydmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2VydmVyT2Zmc2V0KCk7IH0KKyAg
ICB1c2luZyBDbGllbnRPZmZzZXQgPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpDbGllbnRPZmZz
ZXQ7CisgICAgQXRvbWljPENsaWVudE9mZnNldD4mIHNoYXJlZENsaWVudE9mZnNldCgpIHsgcmV0
dXJuIG1fYnVmZmVyLmNsaWVudE9mZnNldCgpOyB9CisgICAgdXNpbmcgQ2xpZW50TGltaXQgPSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTZXJ2ZXJPZmZzZXQ7CisgICAgQXRvbWljPENsaWVudExp
bWl0PiYgc2hhcmVkQ2xpZW50TGltaXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZXJ2ZXJPZmZzZXQo
KTsgfQorICAgIHNpemVfdCB0b0xpbWl0KENsaWVudExpbWl0KSBjb25zdDsKICAgICB1aW50OF90
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGRh
dGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQogCkBAIC0xMzUs
OSArMTM3LDcgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3MKICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCiAgICAgLy8gRklYTUU6IGltcGxlbWVudCByZWNlaXZl
IHRocm91Z2ggc3RyZWFtLgogICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1v
dmUoKnNwYW4pKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZN
b3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0
aW1lb3V0KTsKLSAgICBBU1NFUlQocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiBtX2Nvbm5lY3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBs
eSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCk7CiB9CiAKIGlubGluZSBib29s
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQodWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0KQpAQCAtMTY4LDMwICsxNjgsMzQg
QEAgaW5saW5lIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0
cmVhbU1lc3NhZ2UoU3BhbiYmIHNwYW4pCiB9CiBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZShUaW1l
b3V0IHRpbWVvdXQpCiB7CisgICAgQ2xpZW50TGltaXQgY2xpZW50TGltaXQgPSBzaGFyZWRDbGll
bnRMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAgLy8gVGhpcyB3
b3VsZCBtZWFuIHdlIHRyeSB0byBzZW5kIG1lc3NhZ2VzIGFmdGVyIGEgdGltZW91dC4gSXQgaXMg
YSBwcm9ncmFtbWluZyBlcnJvci4KKyAgICAvLyBTaW5jZSB0aGUgdmFsdWUgaXMgdHJ1c3RlZCwg
d2Ugb25seSBhc3NlcnQuCisgICAgQVNTRVJUKGNsaWVudExpbWl0ICE9IENsaWVudExpbWl0Ojpj
bGllbnRJc1dhaXRpbmdUYWcpOworCiAgICAgZm9yICg7OykgewotICAgICAgICBzaXplX3QgY2xp
ZW50TGltaXQgPSBjbGFtcGVkTGltaXQoc2hhcmVkU2VydmVyT2Zmc2V0KCkubG9hZChzdGQ6Om1l
bW9yeV9vcmRlcl9hY3F1aXJlKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4o
bV9jbGllbnRPZmZzZXQsIGNsaWVudExpbWl0KTsKLSAgICAgICAgaWYgKHJlc3VsdC5zaXplIDwg
bWluaW11bU1lc3NhZ2VTaXplKSB7Ci0gICAgICAgICAgICBpZiAodGltZW91dC5kaWRUaW1lT3V0
KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjbGllbnRMaW1pdCAhPSBD
bGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnKSB7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IGFsaWduZWRTcGFuKG1fY2xpZW50T2Zmc2V0LCB0b0xpbWl0KGNsaWVudExpbWl0KSk7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRpbWVvdXQu
ZGlkVGltZU91dCgpKQorICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgICAgICAgICBzaXplX3Qgb2xkQ2xpZW50TGltaXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5j
b21wYXJlRXhjaGFuZ2VTdHJvbmcoY2xpZW50TGltaXQsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6
OnNlcnZlck9mZnNldENsaWVudElzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3Jl
bCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Ci0gICAgICAgICAgICBpZiAoY2xpZW50TGlt
aXQgPT0gb2xkQ2xpZW50TGltaXQpCi0gICAgICAgICAgICAgICAgbV9idWZmZXIuY2xpZW50V2Fp
dFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91dCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBjbGllbnRMaW1pdCA9IGNsYW1wZWRMaW1pdChvbGRDbGllbnRMaW1pdCk7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9jbGllbnRPZmZzZXQsIGNsaWVu
dExpbWl0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgQ2xpZW50TGltaXQgb2xkQ2xpZW50TGlt
aXQgPSBzaGFyZWRDbGllbnRMaW1pdCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhjbGllbnRMaW1p
dCwgQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNx
X3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIGlmIChjbGllbnRMaW1p
dCA9PSBvbGRDbGllbnRMaW1pdCkgeworICAgICAgICAgICAgbV9idWZmZXIuY2xpZW50V2FpdFNl
bWFwaG9yZSgpLndhaXRGb3IodGltZW91dCk7CisgICAgICAgICAgICBjbGllbnRMaW1pdCA9IHNo
YXJlZENsaWVudExpbWl0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBjbGllbnRMaW1pdCA9IG9sZENsaWVudExpbWl0OwogI2Vs
c2UKLSAgICAgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyAgICAgICAgVGhyZWFkOjp5aWVsZCgp
OworICAgICAgICBjbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkubG9hZChzdGQ6Om1l
bW9yeV9vcmRlcl9hY3F1aXJlKTsKICNlbmRpZgotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1
bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAvLyBUaGUgYWxpZ25lZFNwYW4gdXNlcyB0aGUgbWluaW11bU1lc3NhZ2VTaXpl
IHRvIGNhbGN1bGF0ZSB0aGUgbmV4dCBiZWdpbm5pbmcgcG9zaXRpb24gaW4gdGhlIGJ1ZmZlciwK
ICAgICAgICAgLy8gYW5kIG5vdCB0aGUgc2l6ZS4gVGhlIHNpemUgbWlnaHQgYmUgbW9yZSBvciBs
ZXNzIHdoYXQgaXMgbmVlZGVkLCBkZXBlbmRpbmcgb24gd2hlcmUgdGhlIHJlYWRlciBpcy4KICAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY2FwYWNpdHkgZm9yIG1pbmltdW0gbWVzc2FnZSBzaXpl
LCB3YWl0IHVudGlsIG1vcmUgaXMgYXZhaWxhYmxlLgotICAgICAgICAvLyBJbiB0aGUgY2FzZSB3
aGVyZSBjbGllbnRPZmZzZXQgPCBzZXJ2ZXJPZmZzZXQgd2UgY2FuIGFycml2ZSB0byBhIHNpdHVh
dGlvbiB3aGVyZQorICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSBjbGllbnRPZmZzZXQgPCBj
bGllbnRMaW1pdCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0dWF0aW9uIHdoZXJlCiAgICAgICAgIC8v
IDAgPCByZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZS4KICAgICB9CiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKQEAgLTIwMiwxMSArMjA2LDExIEBAIGlubGluZSBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6cmVsZWFzZShz
aXplCiAgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CiAgICAg
bV9jbGllbnRPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fY2xpZW50T2Zmc2V0KSAr
IHNpemUpOwogICAgIEFTU0VSVChtX2NsaWVudE9mZnNldCA8IGRhdGFTaXplKCkpOwotICAgIC8v
IElmIHRoZSBzZXJ2ZXIgd3JvdGUgb3ZlciB0aGUgY2xpZW50T2Zmc2V0IHdpdGggY2xpZW50T2Zm
c2V0U2VydmVySXNTbGVlcGluZ1RhZywgd2Uga25vdyBpdCBpcyBzbGVlcGluZy4KLSAgICBzaXpl
X3Qgc2VydmVyTGltaXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5leGNoYW5nZShtX2NsaWVudE9m
ZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Ci0gICAgaWYgKHNlcnZlckxpbWl0ID09
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmNsaWVudE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcp
CisgICAgLy8gSWYgdGhlIHNlcnZlciB3cm90ZSBvdmVyIHRoZSBjbGllbnRPZmZzZXQgd2l0aCBz
ZXJ2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgIENsaWVudE9m
ZnNldCBvbGRDbGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5leGNoYW5nZShzdGF0
aWNfY2FzdDxDbGllbnRPZmZzZXQ+KG1fY2xpZW50T2Zmc2V0KSwgc3RkOjptZW1vcnlfb3JkZXJf
YWNxX3JlbCk7CisgICAgaWYgKG9sZENsaWVudE9mZnNldCA9PSBDbGllbnRPZmZzZXQ6OnNlcnZl
cklzU2xlZXBpbmdUYWcpCiAgICAgICAgIHJldHVybiBXYWtlVXBTZXJ2ZXI6OlllczsKLSAgICBB
U1NFUlQoIShzZXJ2ZXJMaW1pdCAmIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmNsaWVudE9mZnNl
dFNlcnZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICBBU1NFUlQoIShvbGRDbGllbnRPZmZzZXQgJiBD
bGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpKTsKICAgICByZXR1cm4gV2FrZVVwU2Vy
dmVyOjpObzsKIH0KIApAQCAtMjM1LDEwICsyMzksMTEgQEAgaW5saW5lIHNpemVfdCBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKICAgICBy
ZXR1cm4gbGltaXQgLSBvZmZzZXQgLSAxOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Citp
bmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRvTGltaXQoQ2xpZW50TGltaXQg
Y2xpZW50TGltaXQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFT
aXplKCkgLSAxKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6
ZSgpIC0gMSk7CisgICAgQVNTRVJUKCEoY2xpZW50TGltaXQgJiBDbGllbnRMaW1pdDo6Y2xpZW50
SXNXYWl0aW5nVGFnKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oY2xpZW50TGlt
aXQpIDw9IGRhdGFTaXplKCkgLSAxKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
bGllbnRMaW1pdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaAppbmRleCBmYzhkYzdkMTA1OGUwNTEzNTM2MTNlNjc3
MmVkMDIzNDAxNzZmZjdhLi41MmIzZDc5ZWFhMzY4NzQwYzEyZDViYzU0NTI3ZTk1N2VmNGE2OTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oCkBAIC04MiwxOSArODIsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2Zm
c2V0OwogICAgIH0KIAotICAgIEF0b21pYzxzaXplX3Q+JiBjbGllbnRPZmZzZXQoKSB7IHJldHVy
biBoZWFkZXIoKS5jbGllbnRPZmZzZXQ7IH0KLSAgICBBdG9taWM8c2l6ZV90PiYgc2VydmVyT2Zm
c2V0KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VydmVyT2Zmc2V0OyB9CisgICAgLy8gVmFsdWUgZGVu
b3RpbmcgdGhlIGNsaWVudCBpbmRleCB0byB0aGUgYnVmZmVyLCB3aXRoIHNwZWNpYWwgdGFnIHZh
bHVlcy4KKyAgICAvLyBUaGUgY2xpZW50IHRydXN0cyB0aGlzLiBUaGUgc2VydmVyIGNvbnZlcnRz
IHRoZSB2YWx1ZSB0byB0cnVzdGVkIHNpemVfdCBvZmZzZXQgd2l0aCBhIHNwZWNpYWwgZnVuY3Rp
b24uCisgICAgZW51bSBDbGllbnRPZmZzZXQgOiBzaXplX3QgeworICAgICAgICAvLyBUYWcgdmFs
dWUgc3RvcmVkIGluIHdoZW4gdGhlIHNlcnZlciBpcyBzbGVlcGluZywgZS5nLiBub3QgcnVubmlu
Zy4KKyAgICAgICAgc2VydmVySXNTbGVlcGluZ1RhZyA9IDF1IDw8IDMxCisgICAgfTsKKworICAg
IC8vIFZhbHVlIGRlbm90aW5nIHRoZSBzZXJ2ZXIgaW5kZXggdG8gdGhlIGJ1ZmZlciwgd2l0aCBz
cGVjaWFsIHRhZyB2YWx1ZXMuCisgICAgLy8gVGhlIGNsaWVudCB0cnVzdHMgdGhpcy4gVGhlIHNl
cnZlciBjb252ZXJ0cyB0aGUgdmFsdWUgdG8gdHJ1c3RlZCBzaXplX3Qgb2Zmc2V0IHdpdGggYSBz
cGVjaWFsIGZ1bmN0aW9uLgorICAgIGVudW0gU2VydmVyT2Zmc2V0IDogc2l6ZV90IHsKKyAgICAg
ICAgLy8gVGFnIHZhbHVlIHN0b3JlZCB3aGVuIHRoZSBjbGllbnQgaXMgd2FpdGluZywgZS5nLiB3
YWl0aW5nIG9uIGEgc2VtYXBob3JlLgorICAgICAgICBjbGllbnRJc1dhaXRpbmdUYWcgPSAxdSA8
PCAzMQorICAgIH07CisKKyAgICBBdG9taWM8Q2xpZW50T2Zmc2V0PiYgY2xpZW50T2Zmc2V0KCkg
eyByZXR1cm4gaGVhZGVyKCkuY2xpZW50T2Zmc2V0OyB9CisgICAgQXRvbWljPFNlcnZlck9mZnNl
dD4mIHNlcnZlck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnNlcnZlck9mZnNldDsgfQogICAg
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9z
aGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0KICAgICBzaXplX3QgZGF0YVNp
emUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CiAgICAgU2VtYXBob3JlJiBjbGllbnRX
YWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9jbGllbnRXYWl0U2VtYXBob3JlOyB9CiAKLSAgICAv
LyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6Y2xpZW50T2Zmc2V0IHdoZW4gdGhlIHNlcnZl
ciBpcyBzbGVlcGluZywgZS5nLiBub3QgcnVubmluZy4KLSAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVwaW5nVGFnID0gMSA8PCAzMTsKLSAgICAvLyBU
YWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VydmVyT2Zmc2V0IHdoZW4gdGhlIGNsaWVudCBp
cyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24KLSAgICAvLyBhIHNlbWFwaG9yZS4KLSAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBzZXJ2ZXJPZmZzZXRDbGllbnRJc1dhaXRpbmdUYWcgPSAxIDw8
IDMxOwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4aW11bVNpemUoKSB7IHJldHVy
biBzdGQ6Om1pbihjbGllbnRPZmZzZXRTZXJ2ZXJJc1NsZWVwaW5nVGFnLCBjbGllbnRPZmZzZXRT
ZXJ2ZXJJc1NsZWVwaW5nVGFnKSAtIDE7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBt
YXhpbXVtU2l6ZSgpIHsgcmV0dXJuIHN0ZDo6bWluKHN0YXRpY19jYXN0PHNpemVfdD4oQ2xpZW50
T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGllbnRP
ZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpKSAtIDE7IH0KICAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+
IGRlY29kZShEZWNvZGVyJik7CiAKQEAgLTEwMiwxMCArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYsIHNpemVf
dCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBjbGllbnRXYWl0U2VtYXBob3JlKTsKIAogICAgIHN0
cnVjdCBIZWFkZXIgewotICAgICAgICBBdG9taWM8c2l6ZV90PiBzZXJ2ZXJPZmZzZXQ7CisgICAg
ICAgIEF0b21pYzxTZXJ2ZXJPZmZzZXQ+IHNlcnZlck9mZnNldDsKICAgICAgICAgLy8gUGFkZGlu
ZyBzbyB0aGF0IHRoZSB2YXJpYWJsZXMgbW9zdGx5IGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBwcm9j
ZXNzZXMgZG8gbm90IHNoYXJlIGEgY2FjaGUgbGluZS4KICAgICAgICAgLy8gVGhpcyBpcyBhbiBh
dHRlbXB0IHRvIGF2b2lkIGNhY2hlLWxpbmUgaW5kdWNlZCByZWR1Y3Rpb24gb2YgcGFyYWxsZWwg
YWNjZXNzLgotICAgICAgICBhbGlnbmFzKHNpemVvZih1aW50NjRfdFsyXSkpIEF0b21pYzxzaXpl
X3Q+IGNsaWVudE9mZnNldDsKKyAgICAgICAgYWxpZ25hcyhzaXplb2YodWludDY0X3RbMl0pKSBB
dG9taWM8Q2xpZW50T2Zmc2V0PiBjbGllbnRPZmZzZXQ7CiAgICAgfTsKICAgICBIZWFkZXImIGhl
YWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1fc2hhcmVk
TWVtb3J5LT5kYXRhKCkpOyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVhZGVyU2l6
ZSgpIHsgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZihzdGQ6Om1heF9hbGlnbl90
KT4oc2l6ZW9mKEhlYWRlcikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDgwYjAzOWE3Zjk4NTM5NzIwNjhm
M2VlZTg0OTI0NDNkN2M4MDNhM2YuLjhlNDkyNjY0NGE4MDg2MzY5ZWY3Y2M4OWE0MDJiMjhiOTYw
MTdhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC02MSwzNSArNjEsMzUgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0
cjxEZWMKIAogT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQogewotICAgIHNpemVfdCBzZXJ2ZXJM
aW1pdCA9IHNoYXJlZENsaWVudE9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSk7Ci0gICAgaWYgKHNlcnZlckxpbWl0ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmNsaWVu
dE9mZnNldFNlcnZlcklzU2xlZXBpbmdUYWcpCisgICAgU2VydmVyTGltaXQgc2VydmVyTGltaXQg
PSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7Cisg
ICAgaWYgKHNlcnZlckxpbWl0ID09IFNlcnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNw
YW4obV9zZXJ2ZXJPZmZzZXQsIHNlcnZlckxpbWl0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gYWxp
Z25lZFNwYW4obV9zZXJ2ZXJPZmZzZXQsIGNsYW1wZWRMaW1pdChzZXJ2ZXJMaW1pdCkpOwogICAg
IGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkgewotICAgICAgICBzZXJ2ZXJM
aW1pdCA9IHNoYXJlZENsaWVudE9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZXJ2ZXJM
aW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVlcGlu
Z1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3Jl
bCk7Ci0gICAgICAgIEFTU0VSVCghKHNlcnZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6Y2xpZW50T2Zmc2V0U2VydmVySXNTbGVlcGluZ1RhZykpOwotICAgICAgICBzZXJ2ZXJMaW1p
dCA9IGNsYW1wZWRMaW1pdChzZXJ2ZXJMaW1pdCk7Ci0gICAgICAgIHJlc3VsdCA9IGFsaWduZWRT
cGFuKG1fc2VydmVyT2Zmc2V0LCBzZXJ2ZXJMaW1pdCk7CisgICAgICAgIHNlcnZlckxpbWl0ID0g
c2hhcmVkU2VydmVyTGltaXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoc2VydmVyTGltaXQsIFNl
cnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVs
LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNw
YW4obV9zZXJ2ZXJPZmZzZXQsIGNsYW1wZWRMaW1pdChzZXJ2ZXJMaW1pdCkpOwogICAgIH0KIAot
ICAgIGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCi0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAocmVzdWx0LnNpemUg
PCBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpy
ZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKIHsKICAgICBBU1NFUlQocmVhZFNpemUpOwogICAgIHJl
YWRTaXplID0gc3RkOjptYXgocmVhZFNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7Ci0gICAgc2l6
ZV90IHNlcnZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9zZXJ2ZXJPZmZzZXQp
ICsgcmVhZFNpemUpOworICAgIFNlcnZlck9mZnNldCBzZXJ2ZXJPZmZzZXQgPSBzdGF0aWNfY2Fz
dDxTZXJ2ZXJPZmZzZXQ+KHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9zZXJ2ZXJPZmZzZXQpICsg
cmVhZFNpemUpKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHNpemVfdCBvbGRTZXJ2ZXJP
ZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5leGNoYW5nZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwpOwotICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBz
ZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGllbnQgaXMgd2FpdGluZy4KLSAgICBpZiAob2xk
U2VydmVyT2Zmc2V0ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlcnZlck9mZnNldENsaWVu
dElzV2FpdGluZ1RhZykKKyAgICBTZXJ2ZXJPZmZzZXQgb2xkU2VydmVyT2Zmc2V0ID0gc2hhcmVk
U2VydmVyT2Zmc2V0KCkuZXhjaGFuZ2Uoc2VydmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3FfcmVsKTsKKyAgICAvLyBJZiB0aGUgc2VuZGVyIHdyb3RlIG92ZXIgc2VydmVyT2Zmc2V0LCBp
dCBtZWFucyB0aGUgc2VuZGVyIGlzIHdhaXRpbmcuCisgICAgaWYgKG9sZFNlcnZlck9mZnNldCA9
PSBTZXJ2ZXJPZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykKICAgICAgICAgbV9idWZmZXIuY2xp
ZW50V2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOwogICAgIGVsc2UKLSAgICAgICAgQVNTRVJUKCEo
b2xkU2VydmVyT2Zmc2V0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VydmVyT2Zmc2V0Q2xp
ZW50SXNXYWl0aW5nVGFnKSk7CisgICAgICAgIEFTU0VSVCghKG9sZFNlcnZlck9mZnNldCAmIFNl
cnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKSk7CiAjZWxzZQogICAgIHNoYXJlZFNlcnZl
ck9mZnNldCgpLnN0b3JlKHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7
CiAgICAgLy8gSVBDOjpTZW1hcGhvcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgcGxhdGZvcm0u
IENsaWVudCB3aWxsIHBvbGwgYW5kIHlpZWxkLgpAQCAtMTIxLDEwICsxMjEsMTIgQEAgc2l6ZV90
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
aW1pdCkKICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0
KSBjb25zdAorc2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQo
U2VydmVyTGltaXQgc2VydmVyTGltaXQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHVudHJ1c3RlZExp
bWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExp
bWl0LCBkYXRhU2l6ZSgpIC0gMSk7CisgICAgQVNTRVJUKCEoc2VydmVyTGltaXQgJiBTZXJ2ZXJM
aW1pdDo6c2VydmVySXNTbGVlcGluZ1RhZykpOworICAgIHNpemVfdCBsaW1pdCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oc2VydmVyTGltaXQpOworICAgIEFTU0VSVChsaW1pdCA8PSBkYXRhU2l6ZSgp
IC0gMSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKGxpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaAppbmRleCBiZWNkMzhkZDkzMTNiNjMyM2YwYWE0ZjI3ZmQyY2JlMmJmZjk5N2IzLi40
OTVhZmZkMDNjNmY1NGQ3Mjg5ZmMxMDFkNmQ2ZGQ4ODZlM2I3NzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC03NCwx
MSArNzQsMTMgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3Nh
Z2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsK
ICAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CiAgICAg
c2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKLSAgICBzaXplX3QgY2xh
bXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CiAgICAgc2l6ZV90IHdyYXBP
ZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChv
ZmZzZXQpOyB9CiAgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWlu
aW11bU1lc3NhZ2VTaXplKTsgfQotICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRDbGllbnRPZmZz
ZXQoKSB7IHJldHVybiBtX2J1ZmZlci5jbGllbnRPZmZzZXQoKTsgfQotICAgIEF0b21pYzxzaXpl
X3Q+JiBzaGFyZWRTZXJ2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZXJ2ZXJPZmZzZXQo
KTsgfQorICAgIHVzaW5nIFNlcnZlckxpbWl0ID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6Q2xp
ZW50T2Zmc2V0OworICAgIEF0b21pYzxTZXJ2ZXJMaW1pdD4mIHNoYXJlZFNlcnZlckxpbWl0KCkg
eyByZXR1cm4gbV9idWZmZXIuY2xpZW50T2Zmc2V0KCk7IH0KKyAgICB1c2luZyBTZXJ2ZXJPZmZz
ZXQgPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTZXJ2ZXJPZmZzZXQ7CisgICAgQXRvbWljPFNl
cnZlck9mZnNldD4mIHNoYXJlZFNlcnZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlcnZl
ck9mZnNldCgpOyB9CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChTZXJ2ZXJMaW1pdCkgY29uc3Q7
CiAgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQog
ICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBiMzI4MzRlOGJiYmYwNGE5Zjc3OGJiMDA2MGU1ZjYwYzJhMDY2OTYxLi45MjhkYTc1NjBjM2U4
OWJkNDFkNTE4YTZiNjJlNTRlOGE0ZWVmNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTAyOCw3ICsxMDI4LDggQEAgdGVtcGxhdGUgPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2
ZW50Rm9yVGVzdGkKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcsCiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZzo6Q29udGV4dENo
YW5nZSwKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JU
ZXN0aW5nOjpHUFVTdGF0dXNGYWlsdXJlCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZzo6R1BVU3RhdHVzRmFpbHVyZSwKKyAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nOjpUaW1lb3V0CiAg
ICAgPjsKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwCmluZGV4IDExOTM4MzVlYmZlOGZmNjEwZWM3NWM4ZTc5YjczODkxODBmMDZkOWQuLjAxYjk5
OTJiZWRhMDRkN2FiNzk2MTg5NTliMDQ5YmZkNTIwOWY2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3Ip
CiAgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKICAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9y
KGVycm9yKSk7CiAgICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCA9IGVycm9yOwpAQCAtMTg0LDcgKzE4NCw3
IEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKICAg
ICAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSAwOwogICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yKCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3I6OlJlcGx5KHJldHVy
blZhbHVlKSk7CiAgICAgICAgIGlmICghc2VuZFJlc3VsdCkKLSAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGVudW0+KHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHN0ZDo6ZXhj
aGFuZ2UobV9lcnJvcldoZW5Db250ZXh0SXNMb3N0LCBOT19FUlJPUik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTM1MDU2
ZWI0MWRlZGE4OTZmM2FiY2IxZGFmZmRjMGNkOWE3ZjJiZi4uNzM4Y2ZhY2IzYTQxNDJjMWFkMTVm
MGU0NzY5NmZjNjQzNzYxODRmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAzLTA0ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgYXNz
ZXJ0cyBhZnRlciBHUFUgcHJvY2VzcyB0aW1lcyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB0ZXN0IHRoZSBjYXNlIHdoZXJl
IGEgV2ViR0wgY2FsbCB0aW1lcyBvdXQuCisgICAgICAgIEFkZCB0d28gdmFyaWFudHM6IG9uZSB3
aGljaCBtb3N0IHByb2JhYmx5IHRpbWVzIG91dCBvbgorICAgICAgICBzeW5jaHJvbm91cyBjYWxs
LCBhbmQgb25lIHdoaWNoIG1vc3QgcHJvYmFibHkgdGltZXMgb3V0IG9uCisgICAgICAgIGFzeW5j
aHJvbm91cyBjYWxsLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0
LW9uLXN0YXR1cy1mYWlsdXJlLmh0bWw6CisgICAgICAgIFRoZSB0ZXN0aW5nIEFQSXMgd2VyZSBj
aGFuZ2VkLCBzbyByZXBsYWNlIHVzZSBvZgorICAgICAgICBJbnRlcm5hbHMuc2V0RmFpbE5leHRH
UFVTdGF0dXNDaGVjaygpCisgICAgICAgIHdpdGggSW50ZXJuYWxzLnNpbXVsYXRlRXZlbnRGb3JX
ZWJHTENvbnRleHQoKQorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1v
bi10aW1lb3V0LWFzeW5jLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24t
dGltZW91dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNv
bnRleHRjaGFuZ2VkZXZlbnQuaHRtbDoKKwogMjAyMS0wMy0wNCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW4gY2FzZSBvZiBQT1NUIG5hdmlnYXRpb24gcmVk
aXJlY3RlZCBieSBhIDMwMiwgdGhlICdPcmlnaW4nIGhlYWRlciBpcyBrZXB0IGluIHRoZSByZWRp
cmVjdGVkIHJlcXVlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg3ZDUyOGY4MDM2YTc2ODA4Zjlk
MDkwMmM1ZjBlNmU4ZTRmMmQ2ZjEuLmE5MDNiOTZlNGQ4NDg0NWViMzgwOGFhMjgxMjFjNDdhMmY4
NWUwODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQ1OSw2ICszNDU5LDEwIEBAIHdlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlMi9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC0yLmh0bWwgWyBTa2lwIF0K
ICMgRmFpbGluZyBvbiBjZXJ0YWluIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zOiBtYWNPUyB3aXRo
IEludGVsIEdQVXMuIEFsc28gc2xvdy4KIHdlYmtpdC5vcmcvYi8yMjA3NTMgd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwgWyBQYXNzIEZhaWx1cmUgU2xv
dyBdCiAKKyMgVGltZW91dCB0ZXN0aW5nIGlzIG5vdCBhcHBsaWNhYmxlIHRvIGluLXByb2Nlc3Mg
d2ViZ2wsIG9ubHkgd2ViZ2wgaW4gZ3B1IHByb2Nlc3MuCitmYXN0L2NhbnZhcy93ZWJnbC9sb3Nl
LWNvbnRleHQtb24tdGltZW91dC1hc3luYy5odG1sIFsgU2tpcCBdCitmYXN0L2NhbnZhcy93ZWJn
bC9sb3NlLWNvbnRleHQtb24tdGltZW91dC5odG1sIFsgU2tpcCBdCisKICMgcHJlLXdyYXAgcHJv
Z3Jlc3Npb24uIE90aGVyIHJlbmRlcmluZyBlbmdpbmVzIGFncmVlIHdpdGggdGhlIHJlc3VsdC4K
IHdlYmtpdC5vcmcvYi8yMDYxNjggWyBEZWJ1ZyBdIGZhc3QvZG9tL2luc2VydC1zcGFuLWludG8t
bG9uZy10ZXh0LWJ1Zy0yODI0NS5odG1sIFsgU2tpcCBdCiAKQEAgLTQ4NDAsNCArNDg0NCwzIEBA
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91
cHBlci1hcm1lbmlhbi9jc3MzLWNvdW50CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtY291bnRlci1zdHlsZXMvdXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLXN0eWxlcy0w
MjMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL3VwcGVyLXJvbWFuL2NzczMtY291bnRlci1zdHls
ZXMtMDI0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1yb21hbi9jc3MzLWNvdW50ZXIt
c3R5bGVzLTAyNGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGltZW91dC1hc3luYy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQt
b24tdGltZW91dC1hc3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdlYTZjZTY3ZDZiMDQx
MzM3Y2JmYTQwYWYzMDZiN2NhY2M2MzM4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IFdlYkdMOiBDT05URVhUX0xP
U1RfV0VCR0w6IGxvc2VDb250ZXh0OiBjb250ZXh0IGxvc3QKK0NoZWNrcyB0aGF0IGEgR1BVIHBy
b2Nlc3MgdGltZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJvZHVjaW5nIFdlYkdMIGNhbGwgd2lsbCBs
b3NlIHRoZSBjb250ZXh0LgorTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBoYXJu
ZXNzIGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLgorCitQQVNTIGdsLmlzQ29udGV4dExv
c3QoKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGds
LmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuQ09OVEVY
VF9MT1NUX1dFQkdMCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1j
b250ZXh0LW9uLXRpbWVvdXQtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYzMDEw
N2MzZWU1MDE5MWJiOGVjOWVlOTA1MjZjODA0ZmNkZmEwZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWFzeW5j
Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4K
K2NhbnZhcyB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9Cis8L3N0
eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7Cit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspCisg
ICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKKworZGVidWcoIkNoZWNr
cyB0aGF0IGEgR1BVIHByb2Nlc3MgdGltZW91dCBvbiBhIG5vbi1yZXN1bHQgcHJvZHVjaW5nIFdl
YkdMIGNhbGwgd2lsbCBsb3NlIHRoZSBjb250ZXh0LiIpOworZGVidWcoIk5PVEU6IFRoaXMgb25s
eSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVybmFs
cy4iKTsKK2RlYnVnKCIiKTsKKworYXN5bmMgZnVuY3Rpb24gd2ViR0xDb250ZXh0TG9zdChjYW52
YXMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjYW52YXMuYWRkRXZlbnRM
aXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIHJlc29sdmUpKTsKK30KKworYXN5bmMgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
Y2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMjAwOworICAgIGNhbnZhcy5oZWlnaHQgPSAy
MDA7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgICAgd3R1LnNldHVw
Q29sb3JRdWFkKGdsKTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZh
cy5oZWlnaHQpOworICAgIGdsLmNsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBn
bC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBzaG91bGRCZUZhbHNlKCJnbC5pc0Nv
bnRleHRMb3N0KCkiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJP
UiIpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNpbXVsYXRlRXZlbnRGb3JXZWJHTENvbnRleHQoIlRpbWVvdXQiLCBnbCk7CisgICAgLy8gV2Un
cmUgdHJ5aW5nIHRvIGZpbGwgdGhlIGNvbW1hbmQgYnVmZmVyIHdpdGggY2FsbHMgYWZ0ZXIgdGhl
IHRpbWVvdXQsCisgICAgLy8gc28gdGhhdCB3ZSB0ZXN0IHRoYXQgYXN5bmNocm9ub3VzIGNhbGxz
IGNhdXNlIHRpbWVvdXRzIHRvby4KKyAgICAvLyBVc2UgYSByZWxhdGl2ZWx5IGZhc3QgY2FsbCB0
aGF0IHN0aWxsIGZpbGxzIHVwIHRoZSBidWZmZXIuCisgICAgbGV0IGNhbGxDb3VudCA9IDEwMDAw
MDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQ291bnQ7ICsraSkKKyAgICAgICAgZ2wu
Y2xlYXJDb2xvcigxLjAsIDEuMCwgMC4wICsgaS9jYWxsQ291bnQsIDEuMCk7CisgICAgZ2wuY2xl
YXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgYXdhaXQgd2ViR0xDb250ZXh0TG9zdChjYW52
YXMpOworICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAgc2hvdWxk
QmUoImdsLmdldEVycm9yKCkiLCAiZ2wuQ09OVEVYVF9MT1NUX1dFQkdMIik7CisgICAgZmluaXNo
VGVzdCgpOworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
KworPC9zY3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMWU0MjkzNDg1ZmRiNmYzOGIwYmIzYjkzNjNjMjM4ZjlkNWRl
MmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9z
ZS1jb250ZXh0LW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNP
TEUgTUVTU0FHRTogV2ViR0w6IENPTlRFWFRfTE9TVF9XRUJHTDogbG9zZUNvbnRleHQ6IGNvbnRl
eHQgbG9zdAorQ2hlY2tzIHRoYXQgYSBHUFUgcHJvY2VzcyB0aW1lb3V0IG9uIGEgcmVzdWx0IHBy
b2R1Y2luZyBXZWJHTCBjYWxsIHdpbGwgbG9zZSB0aGUgY29udGV4dC4KK05PVEU6IFRoaXMgb25s
eSBwYXNzZXMgaW4gdGhlIHRlc3QgaGFybmVzcyBiZWNhdXNlIGl0IHJlcXVpcmVzIEludGVybmFs
cy4KKworUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5OT19FUlJPUgorUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLkNPTlRFWFRfTE9TVF9XRUJHTAorUEFTUyB2YWwgaXMgWzAsIDAs
IDAsIDBdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0
LW9uLXRpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2xvc2UtY29u
dGV4dC1vbi10aW1lb3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMzZmM3ZDY2NTM2NWFiNDEzZTMwMmNl
NjkzMTkzYjYzNjMwODIzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2xvc2UtY29udGV4dC1vbi10aW1lb3V0Lmh0bWwKQEAgLTAsMCArMSw1NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2NhbnZhcyB7CisgICAgd2lkdGg6IDIw
MHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgd3R1ID0gV2ViR0xU
ZXN0VXRpbHM7Cit2YXIgZ2w7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3
aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspCisgICAgd2luZG93LmluaXROb25LaHJvbm9z
RnJhbWV3b3JrKGZhbHNlKTsKKworZGVidWcoIkNoZWNrcyB0aGF0IGEgR1BVIHByb2Nlc3MgdGlt
ZW91dCBvbiBhIHJlc3VsdCBwcm9kdWNpbmcgV2ViR0wgY2FsbCB3aWxsIGxvc2UgdGhlIGNvbnRl
eHQuIik7CitkZWJ1ZygiTk9URTogVGhpcyBvbmx5IHBhc3NlcyBpbiB0aGUgdGVzdCBoYXJuZXNz
IGJlY2F1c2UgaXQgcmVxdWlyZXMgSW50ZXJuYWxzLiIpOworZGVidWcoIiIpOworCithc3luYyBm
dW5jdGlvbiB3ZWJHTENvbnRleHRMb3N0KGNhbnZhcykgeworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0Iiwg
cmVzb2x2ZSkpOworfQordmFyIHZhbDsKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
bGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZh
cy53aWR0aCA9IDIwMDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMjAwOworICAgIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIHd0dS5zZXR1cENvbG9yUXVhZChnbCk7CisgICAg
Z2wudmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBnbC5j
bGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgc2hvdWxkQmVGYWxzZSgiZ2wuaXNDb250ZXh0TG9zdCgpIik7CisgICAg
c2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2Vi
R0xDb250ZXh0KCJUaW1lb3V0IiwgZ2wpOworICAgIGdsLmNsZWFyQ29sb3IoMS4wLCAxLjAsIDAu
MCwgMS4wKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB2YWwgPSBn
bC5nZXRQYXJhbWV0ZXIoZ2wuQ09MT1JfQ0xFQVJfVkFMVUUpOworICAgIGF3YWl0IHdlYkdMQ29u
dGV4dExvc3QoY2FudmFzKTsKKyAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIp
OworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLkNPTlRFWFRfTE9TVF9XRUJHTCIp
OworICAgIHNob3VsZEJlKCJ2YWwiLCAiWzAsIDAsIDAsIDBdIik7CisgICAgZmluaXNoVGVzdCgp
OworfQorCitydW5UZXN0KCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9z
Y3JpcHQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGZkMzY0OTRkODNiOWE0NDc5MDMwMmM0MzUwZmU0ZTA3YWExMmNjZjQuLjcx
OGFlNDA5N2JhYjgyY2M3NDgzMDc2YTNmYjA2YmQzZGJjNWMxNDMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1
LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDUsMyArNDUsNiBAQCB3ZWJnbC9tYXgtYWN0
aXZlLWNvbnRleHRzLWNvbnNvbGUtd2FybmluZy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC9tYXgt
YWN0aXZlLWNvbnRleHRzLWdjLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsL21heC1hY3RpdmUtY29u
dGV4dHMtb2xkZXN0LWNvbnRleHQtbG9zdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC9tYXgtYWN0
aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1kZWZhdWx0Lmh0bWwgWyBUaW1l
b3V0IF0KKworZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXRpbWVvdXQtYXN5bmMu
aHRtbCBbIFNsb3cgUGFzcyBdCitmYXN0L2NhbnZhcy93ZWJnbC9sb3NlLWNvbnRleHQtb24tdGlt
ZW91dC5odG1sIFsgU2xvdyBQYXNzIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>