<?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>76295</bug_id>
          
          <creation_ts>2012-01-13 11:47:55 -0800</creation_ts>
          <short_desc>[Chromium] Replace TextureManager eviction list with deferred texture allocator.</short_desc>
          <delta_ts>2012-10-08 16:11:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535864</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-13 11:47:55 -0800</bug_when>
    <thetext>Instead of implicitly deferring texture creation/deletion inside TextureManager add an explicit deferred texture allocator that uses fake texture IDs and makes it possible to defer texture creation until use on impl thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539927</commentid>
    <comment_count>1</comment_count>
      <attachid>123410</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-20 16:48:58 -0800</bug_when>
    <thetext>Created attachment 123410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540631</commentid>
    <comment_count>2</comment_count>
      <attachid>123571</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-23 10:08:32 -0800</bug_when>
    <thetext>Created attachment 123571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540700</commentid>
    <comment_count>3</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-23 11:38:03 -0800</bug_when>
    <thetext>This eliminates the need for:
https://bugs.webkit.org/show_bug.cgi?id=72192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541088</commentid>
    <comment_count>4</comment_count>
      <attachid>123571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-23 20:04:52 -0800</bug_when>
    <thetext>Comment on attachment 123571
Patch

Attachment 123571 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11336204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541578</commentid>
    <comment_count>5</comment_count>
      <attachid>123571</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-24 12:53:55 -0800</bug_when>
    <thetext>Comment on attachment 123571
Patch

I know you mentioned this idea offhand to me a week or few ago, but could you explicitly restate your motivation here? I&apos;m not totally sure that I understand what this texture deferral is trying to solve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541640</commentid>
    <comment_count>6</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-24 13:45:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 123571 [details])
&gt; I know you mentioned this idea offhand to me a week or few ago, but could you explicitly restate your motivation here? I&apos;m not totally sure that I understand what this texture deferral is trying to solve.

The main reason for this is to be able to create and delete textures on the renderer thread without the need for a GraphicsContext3D. Asynchronous commits [1] as well as threaded parallel paint/upload [2] requires the ability to refer to persistent textures prior to the commit happening on the impl thread. My previous attempt [3] at solving this allowed initialization of compositor resources prior to starting an update by making a round trip to the impl thread. I think this approach is much better. Other than the obvious benefit of not requiring an unnecessary round trip to the impl thread, this approach provides some other improvements:

A) Cleans up the awkward eviction list in the TextureManager that is a side effect of making a texture manager designed for a single threaded environment work with multiple threads.

B) Improves resource usage as it allows the TextureManager to be used without delayed texture deletion. E.g. for managing render surfaces on the impl thread or content textures in single threaded mode.

C) Decision about if a texture needs to be allocated can be pushed to the impl thread. Eventually we might want to delay some texture allocations and uploads until the impl side as determined that they are useful. E.g. not yet visible pre-paint tiles.


Main reason is still the ability to do asynchronous commits and parallel paint/uploads.

[1] https://bugs.webkit.org/show_bug.cgi?id=73279
[2] https://bugs.webkit.org/show_bug.cgi?id=74113
[3] https://bugs.webkit.org/show_bug.cgi?id=72192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545570</commentid>
    <comment_count>7</comment_count>
      <attachid>123571</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-30 16:24:08 -0800</bug_when>
    <thetext>Comment on attachment 123571
Patch

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

Please excuse any naive comments.. The CL is somewhat overwhelming to read. Do you have these as separate patches in a branch locally, that I could read it in steps?

&gt; Source/WebCore/platform/graphics/chromium/DeferredTextureAllocator.cpp:64
&gt; +    unsigned textureId = m_allocator-&gt;createTexture(size, format);

the whole &quot;texture&quot; vs &quot;textureId&quot; thing is not super clear. I think &quot;texture&quot; comes from the main thread and &quot;textureId&quot; from the impl side?

&gt; Source/WebCore/platform/graphics/chromium/DeferredTextureAllocator.h:59
&gt; +class DeferredTextureAllocatorBinding : public TextureAllocatorBinding {

I was wondering if you think this could be done without a new binding class. What if the Allocator has some interface it implements, which is passed to the Proxy. Or vice-versa, the proxy implements some interface for the Allocator..? A lot of this diff is just changing allocators to bindings, and moving the bind from updateTextureRect out to updateRect. Or maybe it could be split up into steps?

&gt; Source/WebCore/platform/graphics/chromium/DeferredTextureAllocator.h:81
&gt; +    RefPtr&lt;TextureAllocator&gt; m_allocator;

IIUC this is binding the main thread allocator to the impl side allocator. I think m_allocator refers to the impl side allocator, but the name could be more clear. Perhaps m_textures as well.

&gt; Source/WebCore/platform/graphics/chromium/FrameBufferSkPictureCanvasLayerTextureUpdater.cpp:44
&gt; +    unsigned textureId = binding-&gt;textureId(texture-&gt;textureId());

There are 3 meanings of &quot;textureId&quot; in one line. If the texture has a textureId, and the binding binds it to another textureId.. some names could help a lot here.

&gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:60
&gt; +            context-&gt;bindTexture(GraphicsContext3D::TEXTURE_2D, binding-&gt;textureId(texture()-&gt;textureId()));

isn&apos;t this done in ManagedTexture::bindTexture() ?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:680
&gt; +    Platform3DObject textureId = quad-&gt;doubleBuffered() ? contentsTextureAllocatorBinding()-&gt;textureId(quad-&gt;textureId()) : quad-&gt;textureId();

This line is super obscure to read..

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:480
&gt; +    // Delete textures no longer used after commit finished.

a method on the allocator?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:568
&gt; +    OwnPtr&lt;DeferredTextureAllocatorBinding&gt; contentsTextureAllocatorBinding = DeferredTextureAllocatorBinding::create(contentsTextureAllocator);

one is Ref, one is Own, which made me wonder who else can ref++ the contentsTextureAllocator other than LayerRendererChromium..

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:575
&gt; +            contentsTextureAllocator-&gt;setUseTextureStorageExt(true);

why is this in here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547487</commentid>
    <comment_count>8</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-01 16:47:17 -0800</bug_when>
    <thetext>Thanks for looking at this patch!

(In reply to comment #7)
&gt; (From update of attachment 123571 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123571&amp;action=review
&gt; 
&gt; Please excuse any naive comments.. The CL is somewhat overwhelming to read. Do you have these as separate patches in a branch locally, that I could read it in steps?

The patch is large because has to touch a huge amount of files. A lot of it is simple stuff like s/TextureAllocator/TextureAllocatorBinding/. This is one big commit in my tree. There&apos;s no obvious way to split it into multiple functional commits but I&apos;ll look into it.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/DeferredTextureAllocator.cpp:64
&gt; &gt; +    unsigned textureId = m_allocator-&gt;createTexture(size, format);
&gt; 
&gt; the whole &quot;texture&quot; vs &quot;textureId&quot; thing is not super clear. I think &quot;texture&quot; comes from the main thread and &quot;textureId&quot; from the impl side?

ManagedTexture is used for texture management. Texture IDs can be shared between threads. ManagedTextures can&apos;t be shared between threads.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/DeferredTextureAllocator.h:59
&gt; &gt; +class DeferredTextureAllocatorBinding : public TextureAllocatorBinding {
&gt; 
&gt; I was wondering if you think this could be done without a new binding class. What if the Allocator has some interface it implements, which is passed to the Proxy. Or vice-versa, the proxy implements some interface for the Allocator..? A lot of this diff is just changing allocators to bindings, and moving the bind from updateTextureRect out to updateRect. Or maybe it could be split up into steps?

Yes, we could move this functionality into the existing texture allocator but I&apos;m worried that would make it more confusing. How about making the TextureAllocatorBinding type derived from the TextureAllocator class? Maybe also change do these name changes:

TextureAllocator -&gt; TextureIdGenerator
TextureAllocatorBinding -&gt; TextureAllocator

not sure that make things more clear.

An alternative that I&apos;ve considered is adding support for foreign textures to ManagedTexture/TextureManager. That approach would move the TextureAllocatorBinding functionality into the TextureManager.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/DeferredTextureAllocator.h:81
&gt; &gt; +    RefPtr&lt;TextureAllocator&gt; m_allocator;
&gt; 
&gt; IIUC this is binding the main thread allocator to the impl side allocator. I think m_allocator refers to the impl side allocator, but the name could be more clear. Perhaps m_textures as well.

m_allocator refers to the allocator that texture allocations are deferred to. You&apos;re right that this is currently the impl side allocator but there is no such constraint from an encapsulation and data hiding perspective. Would something like m_targetAllocator and TextureMap m_sourceToTarget be better?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/FrameBufferSkPictureCanvasLayerTextureUpdater.cpp:44
&gt; &gt; +    unsigned textureId = binding-&gt;textureId(texture-&gt;textureId());
&gt; 
&gt; There are 3 meanings of &quot;textureId&quot; in one line. If the texture has a textureId, and the binding binds it to another textureId.. some names could help a lot here.

There&apos;s the main thread textureId and the impl thread textureId. I thought about using function names like realTextureId and fakeTextureId but that&apos;s confusing as the system allows the fakeTextureId to be a real textures in some situations. E.g. each ManagedTexture on the impl side holds real textureIds.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:60
&gt; &gt; +            context-&gt;bindTexture(GraphicsContext3D::TEXTURE_2D, binding-&gt;textureId(texture()-&gt;textureId()));
&gt; 
&gt; isn&apos;t this done in ManagedTexture::bindTexture() ?

You can&apos;t access the ManagedTexture here as you&apos;re on the impl thread.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:680
&gt; &gt; +    Platform3DObject textureId = quad-&gt;doubleBuffered() ? contentsTextureAllocatorBinding()-&gt;textureId(quad-&gt;textureId()) : quad-&gt;textureId();
&gt; 
&gt; This line is super obscure to read..

If quad is double buffered then texture Id is a managed texture that needs to be allocated and translated into an impl side texture Id. If it&apos;s not double buffered then texture Id is a real Id and already allocated. I know, this is confusing. I&apos;ll look at how this can be made more clear. Not sure a comment is enough.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:480
&gt; &gt; +    // Delete textures no longer used after commit finished.
&gt; 
&gt; a method on the allocator?

Do you mean adding a TextureAllocatorBinding delete method that takes a vector? I guess that could make sense.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:568
&gt; &gt; +    OwnPtr&lt;DeferredTextureAllocatorBinding&gt; contentsTextureAllocatorBinding = DeferredTextureAllocatorBinding::create(contentsTextureAllocator);
&gt; 
&gt; one is Ref, one is Own, which made me wonder who else can ref++ the contentsTextureAllocator other than LayerRendererChromium..

TextureAllocatorBinding instances.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:575
&gt; &gt; +            contentsTextureAllocator-&gt;setUseTextureStorageExt(true);
&gt; 
&gt; why is this in here?

As the instantiation of the contentsTextureAllocator move here I also moved this initialization part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551200</commentid>
    <comment_count>9</comment_count>
      <attachid>125893</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-07 11:54:43 -0800</bug_when>
    <thetext>Created attachment 125893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551202</commentid>
    <comment_count>10</comment_count>
      <attachid>125893</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-07 11:55:13 -0800</bug_when>
    <thetext>Comment on attachment 125893
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737167</commentid>
    <comment_count>11</comment_count>
      <attachid>125893</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-08 16:11:06 -0700</bug_when>
    <thetext>Comment on attachment 125893
Patch

Cleared review? from attachment 125893 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123410</attachid>
            <date>2012-01-20 16:48:58 -0800</date>
            <delta_ts>2012-01-23 10:08:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76295-20120120194857.patch</filename>
            <type>text/plain</type>
            <size>84495</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5MjAxMjFmMjRkMmEx
M2E4MDlhZTIxZDAyNDVlMDNhYjk2NmI5My4uZTZkZDlmMGZmMGVhMGRjYzRjMTY1MWYwNTAwZDlh
N2RmN2MzZmI2ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxMi0wMS0yMCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmVwbGFjZSBUZXh0dXJlTWFuYWdlciBldmljdGlvbiBsaXN0IHdpdGggZGVmZXJyZWQgdGV4dHVy
ZSBhbGxvY2F0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluc3RlYWQgb2YgaW1wbGljaXRseSBkZWZlcnJpbmcgdGV4dHVyZSBjcmVhdGlvbi9kZWxl
dGlvbiBpbnNpZGUKKyAgICAgICAgVGV4dHVyZU1hbmFnZXIgYWRkIGFuIGV4cGxpY2l0IGRlZmVy
cmVkIHRleHR1cmUgYWxsb2NhdG9yIHRoYXQgdXNlcworICAgICAgICBmYWtlIHRleHR1cmUgSURz
IGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBkZWZlciB0ZXh0dXJlIGNyZWF0aW9uCisgICAgICAg
IHVudGlsIHVzZSBvbiBpbXBsIHRocmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOjp+RGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjo6
Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJlQWxs
b2NhdG9yQmluZGluZzo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpjcmVhdGVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OmRl
bGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9y
QmluZGluZzo6dGV4dHVyZUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmguCisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZWRUZXh0dXJlcyk6
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NhbnZhc1F1YWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hEcmF3aW5nRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNo
YXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hbmFnZXI6OnJlcGxhY2VUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5h
Z2VyOjpkZWxldGVBbGxUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdl
cjo6cmVtb3ZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6YWxs
b2NhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0
VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3I6On5UZXh0dXJlQWxs
b2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3I6OmNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52
YXNEcmF3UXVhZDo6Q0NDYW52YXNEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0ND
YW52YXNEcmF3UXVhZDo6ZG91YmxlQnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDQ2FudmFzTGF5ZXJJbXBsOjpDQ0NhbnZhc0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0NhbnZhc0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0NhbnZhc0xheWVySW1wbDo6c2V0RG91YmxlQnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uSW1wbFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRlZmVycmVkVGV4dHVy
ZUFsbG9jYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YWxsb2NhdG9yQmluZGluZyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9u
SW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpi
aW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXll
ckltcGw6OmNvcHlQbGFuZVRvVGV4dHVyZSk6CisKIDIwMTItMDEtMjAgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29yZSBzaG91bGQgbm90IHNlbmQg
aW52YWxpZCBVUkxzIHRvIGNsaWVudCBjcmVhdGVXaW5kb3cgbWV0aG9kcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggY2YwM2Q3ZGNkNDc4OGIyMzUxZGMwYjE5YTkzY2QwODhjMTcxYzY1
My4uMTM2YTY0MTAwZGM0ZDM5YzNhMjU1ZjYwYzMzNzEyYzQyYjAwZmViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMS0yMCAgRGF2aWQgUmV2ZW1h
biAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVwbGFjZSBU
ZXh0dXJlTWFuYWdlciBldmljdGlvbiBsaXN0IHdpdGggZGVmZXJyZWQgdGV4dHVyZSBhbGxvY2F0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNr
IGNoYW5nZXMgdG8gVGV4dHVyZU1hbmFnZXIuCisKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJv
bWl1bVRlc3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTWFu
YWdlclRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdURjo6RmFrZVRleHR1cmVBbGxvY2F0b3I6OkZha2VUZXh0dXJlQWxsb2Nh
dG9yKToKKyAgICAgICAgKFdURjo6Y3JlYXRlVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV1RG
OjpyZXF1ZXN0VGV4dHVyZSk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHA6CisgICAgICAgIChXVEY6OkZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUpOgorICAg
ICAgICAoV1RGOjpGYWtlVGV4dHVyZUFsbG9jYXRvcjo6RmFrZVRleHR1cmVBbGxvY2F0b3IpOgor
ICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVj
dCk6CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAyMDEyLTAxLTIwICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyBmcm9tIDExODI5
MSB0byAxMTg0OTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYmJjYzk0ODZkZjI1M2NmMjg1MTIyYmIx
NDNjMzI5MjYzZmJmZmJkNi4uN2VmYWE3MDg4ZjYyMjBlNzRmYjBkZTE1MjQ0YjllOGIxMzAxYWZm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUzMSw2ICszNTMxLDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Dcm9zc1Byb2Nlc3NGb250TG9hZGlu
Zy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Dcm9zc1Byb2Nl
c3NGb250TG9hZGluZy5tbScsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRD
YWNoZUFuZHJvaWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhk
ODZhMWU4OC4uODU2MzExNTk3MmUyY2M4OTQyMGFmYmNhZjdlMzgxZDQ4ZjRlZTYzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAg
LTQ2LDkgKzQ2LDEwIEBAIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBEZWZlcnJlZFRl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5nLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRh
dGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgYmluZGluZyk7
CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVy
ZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFw
VGV4U3ViSW1hZ2UpCkBAIC05OCwxMSArOTksMTAgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QK
ICAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0
KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3Zv
aWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBQbGF0
Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKIAotICAgIHRleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAgICAgbV90ZXhTdWJJbWFnZS51cGxv
YWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwg
dGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNGUxNjIyOTViODZlMDA4OTNjMzNl
ZjAzZDRiNjJkMmMxZTUyYmQ1Zi4uNjhlYzkwODA1MWVjZTEzZDYyZTNiNjA5ZGQ5MjExNzBmYjEz
MzU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAg
ICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3JCaW5kaW5nKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAg
IHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0
ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVl
KGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGUyYWI3OTgzODZmY2NmMDcwMTNkNjZi
YjNmMjhmZTdkOGY0ZWMyN2MuLjJmNjZkM2JhNjlmYmUzYzY0MDVkMWEzODgzOWJmMjQyOGRmYmEz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHZvaWQgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29u
c3QgSW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFz
LmdldCgpLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5nLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAg
ICB0ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgdGV4dHVy
ZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBiaW5kaW5nKTsKICAgICBBU1NFUlQobV9waXhlbERh
dGEuZ2V0KCkpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRl
eHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CiAg
ICAgbV9waXhlbERhdGEuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAxYzU2NGNkYzE4M2Vh
NDk1OTFmNjkwNmVmZWJkM2E4ZDliNWY4MGNjLi4xODExMTVkZmZjMmVkMDY4ODA2N2E4ZGUzOWJl
OTE4YjU2ZWNhYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIERlZmVycmVkVGV4
dHVyZUFsbG9jYXRvckJpbmRpbmcqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1f
dGV4dHVyZVVwZGF0ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDE1MDVhZGFjMjQzZTA3NjY1ZDJkZGFiMjhmNDcwM2ZmOGVmNWI5NDMuLjI5ZWY3MDdjMTkz
ZmZhM2IzMDFlNWM1YzM4ZWFmMDdiNmI2YjVmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
CiAgICAgaWYgKCFtX2JhY2tUZXh0dXJlSWQgfHwgIW1fZnJvbnRUZXh0dXJlIHx8ICFtX2Zyb250
VGV4dHVyZS0+aXNWYWxpZChtX3NpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9mcm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIHVw
ZGF0ZXIuYWxsb2NhdG9yKCkpOwotCisgICAgbV9mcm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNv
bnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yQmluZGluZygpKTsKICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9m
Ym8pKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tUZXh0dXJlSWQs
IDApKTsKICAgICAvLyBGSVhNRTogVGhlIGNvcHkgb3BlcmF0aW9uIHdpbGwgZmFpbCBpZiB0aGUg
bV9iYWNrVGV4dHVyZSBpcyBhbGxvY2F0ZWQgYXMgQkdSQSBzaW5jZSBnbENvcHlUZXgoU3ViKUlt
YWdlMkQgZG9lc24ndApAQCAtMTUzLDYgKzE1Miw3IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBDYW52YXNMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKIAogICAgIENDQ2FudmFzTGF5ZXJJ
bXBsKiBjYW52YXNMYXllciA9IHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXIp
OworICAgIGNhbnZhc0xheWVyLT5zZXREb3VibGVCdWZmZXJlZChtX3VzZURvdWJsZUJ1ZmZlcmlu
Zyk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQogICAgICAgICBjYW52YXNMYXllci0+
c2V0VGV4dHVyZUlkKG1fZnJvbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSk7CiAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVmZXJy
ZWRUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdlMTQ3
ZjQ4ZDMxOTc1YzJhZTMxOTM2Y2I4MGNiZmFiMjI4NGM3NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFs
bG9jYXRvci5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjo6RGVmZXJyZWRUZXh0
dXJlQWxsb2NhdG9yKCkKKyAgICA6IG1fbmV4dFRleHR1cmVJZCgxKQoreworfQorCitEZWZlcnJl
ZFRleHR1cmVBbGxvY2F0b3I6On5EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IoKQoreworfQorCit1
bnNpZ25lZCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQoreworICAgIHJldHVybiBtX25leHRUZXh0dXJl
SWQrKzsKK30KKwordm9pZCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUo
dW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQp
Cit7CisgICAgbV9kZWxldGVkVGV4dHVyZXMuYXBwZW5kKHRleHR1cmVJZCk7Cit9CisKK0RlZmVy
cmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRp
bmcoUGFzc1JlZlB0cjxUZXh0dXJlQWxsb2NhdG9yPiBhbGxvY2F0b3IpCisgICAgOiBtX2FsbG9j
YXRvcihhbGxvY2F0b3IpCit7Cit9CisKK3Vuc2lnbmVkIERlZmVycmVkVGV4dHVyZUFsbG9jYXRv
ckJpbmRpbmc6OmNyZWF0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgR0MzRGVudW0gZm9ybWF0KQoreworICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1fYWxs
b2NhdG9yLT5jcmVhdGVUZXh0dXJlKHNpemUsIGZvcm1hdCk7CisgICAgVGV4dHVyZUVudHJ5IGVu
dHJ5OworICAgIGVudHJ5LnRleHR1cmVJZCA9IHRleHR1cmVJZDsKKyAgICBlbnRyeS5zaXplID0g
c2l6ZTsKKyAgICBlbnRyeS5mb3JtYXQgPSBmb3JtYXQ7CisgICAgbV90ZXh0dXJlcy5hZGQodGV4
dHVyZSwgZW50cnkpOworICAgIHJldHVybiB0ZXh0dXJlSWQ7Cit9CisKK3ZvaWQgRGVmZXJyZWRU
ZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlKQor
eworICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRleHR1cmUp
OworICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKQorICAgICAgICBtX2FsbG9jYXRvci0+
ZGVsZXRlVGV4dHVyZShpdC0+c2Vjb25kLnRleHR1cmVJZCwgaXQtPnNlY29uZC5zaXplLCBpdC0+
c2Vjb25kLmZvcm1hdCk7Cit9CisKK3Vuc2lnbmVkIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmc6OnRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlKQoreworICAgIFRleHR1cmVNYXA6Oml0
ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRleHR1cmUpOworICAgIGlmIChpdCA9PSBtX3Rl
eHR1cmVzLmVuZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBpdC0+c2Vjb25k
LnRleHR1cmVJZDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNTRjNzM3NmE5Y2VhMjhlMjI4NTk3ZGViZGJhMWIyMTgzZmVmY2RhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yX2gKKyNkZWZpbmUgRGVmZXJy
ZWRUZXh0dXJlQWxsb2NhdG9yX2gKKworI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
ZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I+IGNyZWF0ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmVycmVkVGV4dHVyZUFsbG9j
YXRvcigpKTsKKyAgICB9CisgICAgdmlydHVhbCB+RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yKCk7
CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdD
M0RlbnVtIGZvcm1hdCk7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQg
dGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CisKKyAgICBWZWN0b3I8
dW5zaWduZWQ+JiBkZWxldGVkVGV4dHVyZXMoKSB7IHJldHVybiBtX2RlbGV0ZWRUZXh0dXJlczsg
fQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yKCk7
CisKKyAgICB1bnNpZ25lZCBtX25leHRUZXh0dXJlSWQ7CisKKyAgICBWZWN0b3I8dW5zaWduZWQ+
IG1fZGVsZXRlZFRleHR1cmVzOworfTsKKworY2xhc3MgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9y
QmluZGluZyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yQmluZGluZz4gY3JlYXRlKFBhc3NSZWZQdHI8VGV4dHVyZUFsbG9jYXRvcj4gYWxs
b2NhdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWZlcnJlZFRleHR1
cmVBbGxvY2F0b3JCaW5kaW5nKGFsbG9jYXRvcikpOworICAgIH0KKworICAgIHVuc2lnbmVkIGNy
ZWF0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZv
cm1hdCk7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUpOworICAgIHVu
c2lnbmVkIHRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlKTsKKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKFBhc3NSZWZQdHI8VGV4dHVyZUFs
bG9jYXRvcj4pOworCisgICAgc3RydWN0IFRleHR1cmVFbnRyeSB7CisgICAgICAgIHVuc2lnbmVk
IHRleHR1cmVJZDsKKyAgICAgICAgSW50U2l6ZSBzaXplOworICAgICAgICBHQzNEZW51bSBmb3Jt
YXQ7CisgICAgfTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFRleHR1cmVFbnRyeT4g
VGV4dHVyZU1hcDsKKyAgICBUZXh0dXJlTWFwIG1fdGV4dHVyZXM7CisgICAgUmVmUHRyPFRleHR1
cmVBbGxvY2F0b3I+IG1fYWxsb2NhdG9yOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDE5ZGZhMmYwMDZjOTg4NDc3MGU2NzZjNDU4NWJlOTQ2NzEz
NGYzYjMuLjk5N2MyMDllNDU2NGQ0N2FhN2NjMTBiNmY2Mjk1ODQ5MDUwNjIxYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzgsMTEgKzM4LDEyIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBQYXNzT3duUHRyPFNrQ2FudmFzPiBjcmVhdGVBY2NlbGVyYXRlZENh
bnZhcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVm
ZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZyogYmluZGluZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKIHsKLSAgICAvLyBBbGxvY2F0ZSBzbyB0aGF0IHdlIGhhdmUgYSB2YWxpZCB0ZXh0dXJlIGlk
LgotICAgIHRleHR1cmUtPmFsbG9jYXRlKGFsbG9jYXRvcik7CisgICAgdW5zaWduZWQgdGV4dHVy
ZUlkID0gYmluZGluZy0+dGV4dHVyZUlkKHRleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBpZiAo
IXRleHR1cmVJZCkKKyAgICAgICAgdGV4dHVyZUlkID0gYmluZGluZy0+Y3JlYXRlVGV4dHVyZSh0
ZXh0dXJlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZS0+c2l6ZSgpLCB0ZXh0dXJlLT5mb3JtYXQoKSk7
CiAKICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IGNvbnRleHQtPmdyQ29udGV4dCgpOwogICAg
IEludFNpemUgY2FudmFzU2l6ZSA9IHRleHR1cmUtPnNpemUoKTsKQEAgLTUxLDcgKzUyLDcgQEAg
c3RhdGljIFBhc3NPd25QdHI8U2tDYW52YXM+IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgIHRleHR1cmVEZXNjLmZXaWR0aCA9IGNhbnZhc1Np
emUud2lkdGgoKTsKICAgICB0ZXh0dXJlRGVzYy5mSGVpZ2h0ID0gY2FudmFzU2l6ZS5oZWlnaHQo
KTsKICAgICB0ZXh0dXJlRGVzYy5mQ29uZmlnID0ga1JHQkFfODg4OF9HclBpeGVsQ29uZmlnOwot
ICAgIHRleHR1cmVEZXNjLmZUZXh0dXJlSGFuZGxlID0gdGV4dHVyZS0+dGV4dHVyZUlkKCk7Cisg
ICAgdGV4dHVyZURlc2MuZlRleHR1cmVIYW5kbGUgPSB0ZXh0dXJlSWQ7CiAgICAgU2tBdXRvVFVu
cmVmPEdyVGV4dHVyZT4gdGFyZ2V0KGdyQ29udGV4dC0+Y3JlYXRlUGxhdGZvcm1UZXh0dXJlKHRl
eHR1cmVEZXNjKSk7CiAgICAgU2tBdXRvVFVucmVmPFNrRGV2aWNlPiBkZXZpY2UobmV3IFNrR3B1
RGV2aWNlKGdyQ29udGV4dCwgdGFyZ2V0LmdldCgpKSk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBTa0NhbnZhcyhkZXZpY2UuZ2V0KCkpKTsKQEAgLTY3LDkgKzY4LDkgQEAgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIGJpbmRpbmcsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4
dHVyZVJlY3QoY29udGV4dCwgYmluZGluZywgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQpAQCAtOTcs
NyArOTgsNyBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFu
YWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5nLCBNYW5hZ2VkVGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250
ZXh0LgogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMTA1LDcgKzEwNiw3
IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvCiAgICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJl
c2V0Q29udGV4dCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBk
cmF3IG9uLgotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxlcmF0ZWRD
YW52YXMoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKKyAgICBPd25QdHI8U2tDYW52YXM+
IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQsIGJpbmRpbmcsIHRleHR1
cmUpOwogCiAgICAgY2FudmFzLT5jbGlwUmVjdChTa1JlY3QoZGVzdFJlY3QpKTsKICAgICAvLyBU
aGUgY29tcG9zaXRvciBleHBlY3RzIHRoZSB0ZXh0dXJlcyB0byBiZSB1cHNpZGUtZG93biBzbyBp
dCBjYW4gZmxpcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0YTEwYzg1OGU0Y2RhOGMy
NTJhYzE2ZGZhMDdkMDlhNWQ5MDhlZWMzLi45NWRiNmRjM2EzNzM3NDlkZjcxNTY1MWVkMjU2MTky
OTY2N2M1NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0
dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsg
fQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciop
OwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBk
YXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3JCaW5kaW5nKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAx
NTRmYjI4MzE0ZjNlNmM5MjQwNDdiYjQ4MzY3MzY5MmRmY2ZhYjcuLmYxMGM3YzhhM2M0NzU0ZmQ0
NDQ1ZjRmM2NiMWFkNTY1NWRlYTFmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNw
cApAQCAtNTQsOSArNTQsMTEgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRp
bmcqIGJpbmRpbmcsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVU
ZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVz
dFJlY3QpOworICAgICAgICAgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBiaW5k
aW5nKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBiaW5kaW5nLT50ZXh0dXJlSWQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSkp
OworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4
dCwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CkBAIC04OCwxMCArOTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uu
c2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQogICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2Nh
dG9yKTsKLQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0
aGUgaW1hZ2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJl
Y2F1c2UgdGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50
UmVjdCBjbGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAppbmRleCBiYmRmODlkYWYwMTY4Y2M4MDQxOTZiZDlmMzEzYjMwYTg5
ZjMzMWM2Li5mZDljNDBlZTA1Nzk4MGE0YWE3NDBhYTM3YTI3NTRkOTBkZjU4YzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVJlbmRlclN1cmZhY2VUZXh0dXJlcygpCiB7CiAg
ICAgaWYgKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX3JlbmRlclN1
cmZhY2VUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyhtX3JlbmRlclN1
cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAgbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZU1hbmFnZXItPmRlbGV0ZUFsbFRleHR1cmVzKCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp2aWV3cG9ydENoYW5nZWQoKQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1
YWQpCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHVuaWZvcm1zLnBy
b2dyYW0pKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaSh1bmlmb3Jt
cy5zYW1wbGVyTG9jYXRpb24sIDApKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgcXVhZC0+dGV4dHVyZUlkKCkpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBjb250ZW50c1RleHR1cmVB
bGxvY2F0b3JCaW5kaW5nKCktPnRleHR1cmVJZChxdWFkLT50ZXh0dXJlSWQoKSkpKTsKICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIHF1YWQt
PnRleHR1cmVGaWx0ZXIoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUFHX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAKQEAgLTY3Myw3
ICs2NzMsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NhbnZhc1F1YWQoY29u
c3QgQ0NDYW52YXNEcmF3UXVhZCogcXVhZCkKICAgICBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6
UHJvZ3JhbSogcHJvZ3JhbSA9IGNhbnZhc0xheWVyUHJvZ3JhbSgpOwogICAgIEFTU0VSVChwcm9n
cmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQoKSkpOworICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkID0gcXVhZC0+ZG91YmxlQnVmZmVyZWQoKSA/IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
ckJpbmRpbmcoKS0+dGV4dHVyZUlkKHF1YWQtPnRleHR1cmVJZCgpKSA6IHF1YWQtPnRleHR1cmVJ
ZCgpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJ
TkVBUikpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFH
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwogCkBAIC03MjIsNyArNzIzLDYg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSgpCiAgICAg
c2l6ZV90IHByZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4gY29udGVudHNNZW1vcnlVc2VC
eXRlcyA/IHJlY2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwOwogICAgIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVz
KHByZWZlcnJlZExpbWl0KTsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVk
dWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX3JlbmRlclN1cmZhY2VUZXh0dXJl
QWxsb2NhdG9yLmdldCgpKTsKIAogICAgIGlmIChzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVl
bikKICAgICAgICAgY29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkoKTsKQEAgLTg2Nyw3ICs4
NjcsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1Jl
bmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCiAgICAgaWYgKCFyZW5kZXJTdXJmYWNlLT5wcmVw
YXJlQ29udGVudHNUZXh0dXJlKHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9j
b250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAg
ICByZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQo
bV9jb250ZXh0LmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9j
b250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC05
MzksMTcgKzkzOSwxOSBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNo
YXJlZE9iamVjdHMoKQogCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5mbHVz
aCgpKTsKIAotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgbV9jb250ZW50c1RleHR1cmVB
bGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0
KCkpOwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlQWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3Bv
cnRTaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgaWYgKG1fY2Fw
YWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGludCkKICAgICAgICAgbV9yZW5kZXJTdXJmYWNl
VGV4dHVyZUFsbG9jYXRvci0+c2V0VGV4dHVyZVVzYWdlSGludChUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I6OkZyYW1lYnVmZmVyQXR0YWNobWVudCk7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVz
aW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24pIHsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVB
bGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwogICAgICAgICBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJlU3RvcmFnZUV4dCh0cnVlKTsK
ICAgICB9CisgICAgbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nID0gRGVmZXJyZWRU
ZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9y
LmdldCgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaAppbmRleCBjODk2YjFkZjI2ZjNlZmVhYzExYjMyNzFjNTk1N2EyZjRiZjU4ZTkyLi5l
YmVkZjY4OWNiMWFhZTE5NTI1MjU3ZmQ3YTU3Njk4OGQ1MGMyODY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMzUsNiArMzUsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCisjaW5j
bHVkZSAiRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKQEAgLTE1
OCw2ICsxNTksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRp
b24sIGludCBxdWFkTG9jYXRpb24pOwogCisgICAgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmlu
ZGluZyogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpIHsgcmV0dXJuIG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZy5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIExheWVy
UmVuZGVyZXJDaHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiwgUGFzc1JlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4pOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwpAQCAtMjMyLDggKzIzNSw4IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6Ok5hdGl2ZVRleHR1cmVQcm9n
cmFtPiBtX3ZpZGVvTGF5ZXJOYXRpdmVUZXh0dXJlUHJvZ3JhbTsKIAogICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXI7Ci0gICAgT3duUHRyPFRy
YWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3I7Ci0gICAg
T3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFs
bG9jYXRvcjsKKyAgICBSZWZQdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcjsKKyAgICBSZWZQdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBt
X3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yOwogCiAgICAgT3duUHRyPENDSGVhZHNVcERp
c3BsYXk+IG1faGVhZHNVcERpc3BsYXk7CiAKQEAgLTI0NCw2ICsyNDcsOCBAQCBwcml2YXRlOgog
ICAgIEZsb2F0UXVhZCBtX3NoYXJlZEdlb21ldHJ5UXVhZDsKIAogICAgIGJvb2wgbV9pc1ZpZXdw
b3J0Q2hhbmdlZDsKKworICAgIE93blB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
PiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc7CiB9OwogCiAvLyBTZXR0aW5nIERF
QlVHX0dMX0NBTExTIHRvIDEgd2lsbCBjYWxsIGdsR2V0RXJyb3IoKSBhZnRlciBhbG1vc3QgZXZl
cnkgR0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAxNzlmZWE2ZTEyYmYxMDNj
NWIwNzQzNWNmMjRhM2E0OGY4Y2Q5MzIzLi42MGNjNDY2OGUxMjRhOTlmMDE2OTMyNjQ5ZWI5ZGRh
MjliODExZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJEZWZl
cnJlZFRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBA
IC0zOCw3ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBUZXh0dXJlQWxsb2Nh
dG9yOwogY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiAKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxMYXllclRleHR1cmVVcGRhdGVyPiB7CkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKIAogICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJu
IG1fdGV4dHVyZS5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29u
c3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgRGVmZXJyZWRUZXh0
dXJlQWxsb2NhdG9yQmluZGluZyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRl
eHR1cmUpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggMGMxZTRiNzBkMjcxNGEz
ODZmOTdlYWEzNDhkN2UzZThjNjZlY2UxMS4uNWQ2YTA3MDA2MmI1N2YwMmIyOTZiMWVkM2ExY2M0
ZjBlN2Q1MGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKIAorI2luY2x1ZGUgIkRlZmVycmVkVGV4dHVy
ZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hbmFnZXIuaCIKIApAQCAtODAsMjIgKzgxLDI0IEBAIHZvaWQgTWFuYWdlZFRleHR1
cmU6OnVucmVzZXJ2ZSgpCiAgICAgbV90ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSht
X3Rva2VuKTsKIH0KIAotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yKQordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKG1fdGV4dHVyZU1hbmFnZXItPmhh
c1RleHR1cmUobV90b2tlbikpOwotICAgIGlmICghbV90ZXh0dXJlSWQpCi0gICAgICAgIG1fdGV4
dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKGFsbG9jYXRvciwgbV90
b2tlbik7CisgICAgQVNTRVJUKGNvbnRleHQgPT0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdG9y
KCktPmNvbnRleHQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKIH0KIAotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5n
KQogewotICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7Ci0gICAgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKKyAgICB1bnNpZ25l
ZCB0ZXh0dXJlID0gYmluZGluZy0+dGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKKyAgICBpZiAoIXRl
eHR1cmUpCisgICAgICAgIHRleHR1cmUgPSBiaW5kaW5nLT5jcmVhdGVUZXh0dXJlKG1fdGV4dHVy
ZUlkLCBtX3NpemUsIG1fZm9ybWF0KTsKKworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlKTsKIH0KIAotdm9pZCBNYW5hZ2VkVGV4
dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewotICAgIGFsbG9jYXRl
KGFsbG9jYXRvcik7CisgICAgQVNTRVJUKGNvbnRleHQgPT0gbV90ZXh0dXJlTWFuYWdlci0+YWxs
b2NhdG9yKCktPmNvbnRleHQoKSk7CiAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwg
MCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL01hbmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCmluZGV4IDFjYzhiZmE5YWIzMWNjOTIzMWI0N2E4
M2NjNTY1MmEyMmFhZTgxYTguLmJjMWUzNmJkYTZlYWJkMzdlNDI1MmIwNWI4MWJhZjBkNjc2ZWQy
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L01hbmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKK2NsYXNzIERlZmVycmVkVGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmc7CiAKIGNsYXNzIE1hbmFnZWRUZXh0dXJlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShNYW5hZ2VkVGV4dHVyZSk7CkBAIC01NSw5ICs1Niw5IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwog
ICAgIH0KIAotICAgIHZvaWQgYWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQg
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAg
dm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAg
dm9pZCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIERlZmVycmVkVGV4dHVyZUFsbG9j
YXRvckJpbmRpbmcqKTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29u
dGV4dDNEKik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
ICAgICB1bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZU1hbmFnZXIuY3BwCmluZGV4IDUxNmNlYTkwYTdkYTczYWQyZTA1MzljZjg2Y2U3YjliZTgx
OWM0MzEuLjNkOGYwZGJlNTE0MjRhNmZlMTgzYWNiZWQyMGNkMmMwM2ZjMDViNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlTWFuYWdlci5jcHAKQEAgLTk0LDEyICs5NCwxMyBAQCBzaXplX3QgVGV4dHVyZU1hbmFn
ZXI6Om1lbW9yeVVzZUJ5dGVzKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIHRleHR1cmVG
b3JtYQogfQogCiAKLVRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVt
b3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhU
ZXh0dXJlU2l6ZSkKK1RleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihQYXNzUmVmUHRyPFRl
eHR1cmVBbGxvY2F0b3I+IGFsbG9jYXRvciwgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNp
emVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCiAgICAg
OiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TWVtb3J5TGltaXRCeXRlcykKICAgICAsIG1fcHJl
ZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKQogICAgICwg
bV9tZW1vcnlVc2VCeXRlcygwKQogICAgICwgbV9tYXhUZXh0dXJlU2l6ZShtYXhUZXh0dXJlU2l6
ZSkKICAgICAsIG1fbmV4dFRva2VuKDEpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCiB7
CiB9CiAKQEAgLTE5Miw5ICsxOTMsNiBAQCB1bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6cmVwbGFj
ZVRleHR1cmUoVGV4dHVyZVRva2VuIG5ld1Rva2VuLCBUZXh0dXJlSW5mbyBuZXdJbgogICAgICAg
ICBpZiAobmV3SW5mby5zaXplICE9IGluZm8uc2l6ZSB8fCBuZXdJbmZvLmZvcm1hdCAhPSBpbmZv
LmZvcm1hdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBuZXdJbmZvLnRleHR1cmVJ
ZCA9IGluZm8udGV4dHVyZUlkOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbmV3SW5mby5hbGxv
Y2F0b3IgPSBpbmZvLmFsbG9jYXRvcjsKLSNlbmRpZgogICAgICAgICBtX3RleHR1cmVzLnJlbW92
ZSh0b2tlbik7CiAgICAgICAgIG1fdGV4dHVyZUxSVVNldC5yZW1vdmUodG9rZW4pOwogICAgICAg
ICBtX3RleHR1cmVzLnNldChuZXdUb2tlbiwgbmV3SW5mbyk7CkBAIC0yMTMsMjYgKzIxMSwxMCBA
QCB2b2lkIFRleHR1cmVNYW5hZ2VyOjphZGRUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4
dHVyZUluZm8gaW5mbykKICAgICBtX3RleHR1cmVMUlVTZXQuYWRkKHRva2VuKTsKIH0KIAotdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKLXsKLSAgICBpZiAoYWxsb2NhdG9yKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9ldmljdGVkVGV4dHVyZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGlmIChtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0dXJlSWQpIHsKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgICAgICAgICAgICAgQVNTRVJUKG1fZXZpY3RlZFRleHR1cmVzW2ldLmFsbG9jYXRvciA9PSBh
bGxvY2F0b3IpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0
dXJlKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1cmVJZCwgbV9ldmljdGVkVGV4dHVyZXNbaV0u
c2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5jbGVhcigpOwotfQotCi12b2lkIFRl
eHR1cmVNYW5hZ2VyOjpldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUFsbFRleHR1cmVzKCkKIHsK
ICAgICB1bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIHJlZHVjZU1lbW9yeVRvTGltaXQoMCk7
Ci0gICAgZGVsZXRlRXZpY3RlZFRleHR1cmVzKGFsbG9jYXRvcik7CiB9CiAKIHZvaWQgVGV4dHVy
ZU1hbmFnZXI6OnJlbW92ZVRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBp
bmZvKQpAQCAtMjQzLDI4ICsyMjUsMTggQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4
dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiAgICAgbV90ZXh0dXJl
cy5yZW1vdmUodG9rZW4pOwogICAgIEFTU0VSVChtX3RleHR1cmVMUlVTZXQuY29udGFpbnModG9r
ZW4pKTsKICAgICBtX3RleHR1cmVMUlVTZXQucmVtb3ZlKHRva2VuKTsKLSAgICBFdmljdGlvbkVu
dHJ5IGVudHJ5OwotICAgIGVudHJ5LnRleHR1cmVJZCA9IGluZm8udGV4dHVyZUlkOwotICAgIGVu
dHJ5LnNpemUgPSBpbmZvLnNpemU7Ci0gICAgZW50cnkuZm9ybWF0ID0gaW5mby5mb3JtYXQ7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIGVudHJ5LmFsbG9jYXRvciA9IGluZm8uYWxsb2NhdG9yOwotI2Vu
ZGlmCi0gICAgbV9ldmljdGVkVGV4dHVyZXMuYXBwZW5kKGVudHJ5KTsKKyAgICBtX2FsbG9jYXRv
ci0+ZGVsZXRlVGV4dHVyZShpbmZvLnRleHR1cmVJZCwgaW5mby5zaXplLCBpbmZvLmZvcm1hdCk7
CiB9CiAKLXVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlVG9rZW4gdG9rZW4pCit1bnNpZ25lZCBUZXh0dXJl
TWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbikKIHsKICAgICBUZXh0
dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CiAgICAgQVNTRVJU
KGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpOwogICAgIFRleHR1cmVJbmZvKiBpbmZvID0gJml0Lmdl
dCgpLT5zZWNvbmQ7CiAgICAgQVNTRVJUKGluZm8tPmlzUHJvdGVjdGVkKTsKIAotICAgIHVuc2ln
bmVkIHRleHR1cmVJZCA9IGFsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShpbmZvLT5zaXplLCBpbmZv
LT5mb3JtYXQpOworICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1fYWxsb2NhdG9yLT5jcmVhdGVU
ZXh0dXJlKGluZm8tPnNpemUsIGluZm8tPmZvcm1hdCk7CiAgICAgaW5mby0+dGV4dHVyZUlkID0g
dGV4dHVyZUlkOwotI2lmbmRlZiBOREVCVUcKLSAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0
b3I7Ci0jZW5kaWYKICAgICByZXR1cm4gdGV4dHVyZUlkOwogfQogCkBAIC0yOTQsOSArMjY2LDYg
QEAgYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2Vu
LCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGYKICAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKICAg
ICBpbmZvLnRleHR1cmVJZCA9IDA7CiAgICAgaW5mby5pc1Byb3RlY3RlZCA9IHRydWU7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgIGluZm8uYWxsb2NhdG9yID0gMDsKLSNlbmRpZgogICAgIC8vIEF2b2lk
IGNodXJuaW5nIGJ5IHJldXNpbmcgdGhlIHRleHR1cmUgaWYgaXQgaXMgYWJvdXQgdG8gYmUgcmVj
bGFpbWVkIGFuZAogICAgIC8vIGl0IGhhcyB0aGUgc2FtZSBzaXplIGFuZCBmb3JtYXQgYXMgdGhl
IHJlcXVlc3RpbmcgdGV4dHVyZS4KICAgICBpZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJl
cXVpcmVkQnl0ZXMgPiBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMpIHsKQEAgLTMwNSw2ICsy
NzQsNyBAQCBib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4g
dG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIGFkZFRleHR1cmUodG9rZW4sIGluZm8pOworICAgIHRleHR1cmVJZCA9IGFs
bG9jYXRlVGV4dHVyZSh0b2tlbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFu
YWdlci5oCmluZGV4IGE2NmU5ZDUzNmFhOWNmYWY3MmYwN2JiNjdjZDAwNDgyNzdkNGNjMTAuLjhh
OTUxOGY0OTY2NDc2N2MzYzZjNmEzNjE0NzcyOWM5MmFkODc0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuaApAQCAtMzIsMjYgKzMyLDMwIEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlw
ZWRlZiBpbnQgVGV4dHVyZVRva2VuOwogCi1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKK2NsYXNz
IFRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlQWxsb2NhdG9yPiB7
CiBwdWJsaWM6CisgICAgdmlydHVhbCB+VGV4dHVyZUFsbG9jYXRvcigpIHsgfQorCiAgICAgdmly
dHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3Jt
YXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJl
LCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKIAotcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0KKyNpZm5kZWYgTkRFQlVHCisgICAgdmlydHVhbCBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgogfTsKIAog
Y2xhc3MgVGV4dHVyZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVN
YW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4g
Y3JlYXRlKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5
TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiBjcmVhdGUoUGFzc1JlZlB0cjxUZXh0dXJlQWxsb2NhdG9yPiBhbGxvY2F0
b3IsIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBUZXh0dXJlTWFuYWdlcihtYXhNZW1vcnlMaW1pdEJ5dGVzLCBwcmVmZXJyZWRNZW1v
cnlMaW1pdEJ5dGVzLCBtYXhUZXh0dXJlU2l6ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRleHR1cmVNYW5hZ2VyKGFsbG9jYXRvciwgbWF4TWVtb3J5TGltaXRCeXRlcywgcHJlZmVy
cmVkTWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUpKTsKICAgICB9CiAKICAgICAvLyBB
YnNvbHV0ZSBtYXhpbXVtIGxpbWl0IGZvciB0ZXh0dXJlIGFsbG9jYXRpb25zIGZvciB0aGlzIGlu
c3RhbmNlLgpAQCAtNzksMjUgKzgzLDI1IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucHJvdGVjdEFs
bFRleHR1cmVzKCk7CiAgICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwogCi0gICAg
dW5zaWduZWQgYWxsb2NhdGVUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlVG9rZW4p
OwotICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAg
ICB1bnNpZ25lZCBhbGxvY2F0ZVRleHR1cmUoVGV4dHVyZVRva2VuKTsKIAotICAgIHZvaWQgZXZp
Y3RBbmREZWxldGVBbGxUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBkZWxl
dGVBbGxUZXh0dXJlcygpOwogCiAgICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7
CiAgICAgc2l6ZV90IGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVt
b3J5VXNlQnl0ZXM7IH0KIAorI2lmbmRlZiBOREVCVUcKKyAgICBUZXh0dXJlQWxsb2NhdG9yICph
bGxvY2F0b3IoKSB7IHJldHVybiBtX2FsbG9jYXRvci5nZXQoKTsgfQorI2VuZGlmCisKIHByaXZh
dGU6Ci0gICAgVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVf
dCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpOworICAgIFRl
eHR1cmVNYW5hZ2VyKFBhc3NSZWZQdHI8VGV4dHVyZUFsbG9jYXRvcj4sIHNpemVfdCBtYXhNZW1v
cnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRl
eHR1cmVTaXplKTsKIAogICAgIHN0cnVjdCBUZXh0dXJlSW5mbyB7CiAgICAgICAgIEludFNpemUg
c2l6ZTsKICAgICAgICAgR0MzRGVudW0gZm9ybWF0OwogICAgICAgICB1bnNpZ25lZCB0ZXh0dXJl
SWQ7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3I7Ci0jZW5kaWYKICAgICB9OwogCiAgICAgdm9pZCBh
ZGRUZXh0dXJlKFRleHR1cmVUb2tlbiwgVGV4dHVyZUluZm8pOwpAQCAtMTEzLDE3ICsxMTcsNyBA
QCBwcml2YXRlOgogICAgIHNpemVfdCBtX21lbW9yeVVzZUJ5dGVzOwogICAgIGludCBtX21heFRl
eHR1cmVTaXplOwogICAgIFRleHR1cmVUb2tlbiBtX25leHRUb2tlbjsKLQotICAgIHN0cnVjdCBF
dmljdGlvbkVudHJ5IHsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwotICAgICAgICBJbnRT
aXplIHNpemU7Ci0gICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKLSNpZm5kZWYgTkRFQlVHCi0gICAg
ICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcjsKLSNlbmRpZgotICAgIH07Ci0KLSAgICBW
ZWN0b3I8RXZpY3Rpb25FbnRyeT4gbV9ldmljdGVkVGV4dHVyZXM7CisgICAgUmVmUHRyPFRleHR1
cmVBbGxvY2F0b3I+IG1fYWxsb2NhdG9yOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IuaAppbmRleCBhOGE1NDkyOWEyZmNhYjE5MzRlZjY0NDkxZDdiZjAwN2M3
OTg4MTc4Li45MTc0NzQwMzIzMzA0ZTc3NGViNjBmMzdlYzE1YmQ2NGM1NGRhMzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaApAQCAtMzQsMTUgKzM0LDE5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvciA6IHB1Ymxp
YyBUZXh0dXJlQWxsb2NhdG9yIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBj
cmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKGNvbnRleHQp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3Io
Y29udGV4dCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5UcmFja2luZ1RleHR1cmVBbGxvY2F0b3Io
KTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0gZm9ybWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25l
ZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIAorI2lmbmRlZiBO
REVCVUcKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4g
bV9jb250ZXh0LmdldCgpOyB9CisjZW5kaWYKKwogICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNl
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsgfQogCiAgICAg
ZW51bSBUZXh0dXJlVXNhZ2VIaW50IHsgQW55LCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2FudmFzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKaW5kZXggNTZmNTA4M2E1NWZjM2E0MWE2MWIz
ZTA0MDJjNWZmYWI2YmRmN2ExMS4uN2RhM2U4N2U3MmZiMTUwMWJkNjQ4YWNmZmYxYzRkNzA0ZGM5
NzE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKQEAgLTI5LDE2ICsyOSwx
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NDYW52YXNEcmF3UXVh
ZD4gQ0NDYW52YXNEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQs
IGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQorUGFzc093blB0cjxDQ0Nh
bnZhc0RyYXdRdWFkPiBDQ0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGJvb2wg
ZG91YmxlQnVmZmVyZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0NhbnZhc0RyYXdR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgaGFzQWxwaGEsIHByZW11
bHRpcGxpZWRBbHBoYSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDYW52YXNEcmF3UXVh
ZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIGhhc0FscGhhLCBwcmVtdWx0
aXBsaWVkQWxwaGEsIGRvdWJsZUJ1ZmZlcmVkKSk7CiB9CiAKLUNDQ2FudmFzRHJhd1F1YWQ6OkND
Q2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBoYXNBbHBo
YSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEpCitDQ0NhbnZhc0RyYXdRdWFkOjpDQ0NhbnZhc0Ry
YXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBib29sIGRvdWJsZUJ1ZmZlcmVkKQogICAgIDogQ0NEcmF3UXVh
ZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkNhbnZhc0NvbnRlbnQsIHF1YWRSZWN0KQog
ICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAgICwgbV9oYXNBbHBoYShoYXNBbHBoYSkK
ICAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAsIG1f
ZG91YmxlQnVmZmVyZWQoZG91YmxlQnVmZmVyZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFz
RHJhd1F1YWQuaAppbmRleCBhYTg1ZGJkMTM0ZGU4MDQxMzZiYTYzOTAyOWU2OTFjY2I1OWFiMmZm
Li42YzNjY2NmMjlmMWU4YzdmZWVhYjc2YmQ4MTQ4MThkOGM1OWMxNjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdR
dWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDYW52YXNEcmF3UXVhZC5oCkBAIC0zNSwxOCArMzUsMjAgQEAgY2xhc3MgQ0NMYXllckltcGw7
CiBjbGFzcyBDQ0NhbnZhc0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENDQ2FudmFzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIGhhc0FscGhhLCBi
b29sIHByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NDYW52YXNE
cmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYs
IHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFs
cGhhLCBib29sIGRvdWJsZUJ1ZmZlcmVkKTsKIAogICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuICBtX3RleHR1cmVJZDsgfQogICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7
IHJldHVybiAgbV9oYXNBbHBoYTsgfQogICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29u
c3QgeyByZXR1cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9CisgICAgYm9vbCBkb3VibGVCdWZm
ZXJlZCgpIGNvbnN0IHsgcmV0dXJuICBtX2RvdWJsZUJ1ZmZlcmVkOyB9CiAKIHByaXZhdGU6Ci0g
ICAgQ0NDYW52YXNEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIGhhc0FscGhhLCBib29sIHByZW11bHRpcGxp
ZWRBbHBoYSk7CisgICAgQ0NDYW52YXNEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSos
IGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIGhhc0FscGhhLCBib29s
IHByZW11bHRpcGxpZWRBbHBoYSwgYm9vbCBkb3VibGVCdWZmZXJlZCk7CiAgICAgCiAgICAgdW5z
aWduZWQgbV90ZXh0dXJlSWQ7CiAgICAgYm9vbCBtX2hhc0FscGhhOwogICAgIGJvb2wgbV9wcmVt
dWx0aXBsaWVkQWxwaGE7CisgICAgYm9vbCBtX2RvdWJsZUJ1ZmZlcmVkOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
YW52YXNMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuY3BwCmluZGV4IDJiYjNlZmYyMjc4OTUzMTUxY2Jh
N2FjMWRmY2MxNDE3ZDQ1ZWNmOTYuLjBkNjEzYWI2OGFkNjJiODcyNmNkZTc4MzFlZmQwZGE2ZjE0
M2NmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAKQEAgLTQyLDYgKzQy
LDcgQEAgQ0NDYW52YXNMYXllckltcGw6OkNDQ2FudmFzTGF5ZXJJbXBsKGludCBpZCkKICAgICAs
IG1fdGV4dHVyZUlkKDApCiAgICAgLCBtX2hhc0FscGhhKHRydWUpCiAgICAgLCBtX3ByZW11bHRp
cGxpZWRBbHBoYSh0cnVlKQorICAgICwgbV9kb3VibGVCdWZmZXJlZChmYWxzZSkKIHsKIH0KIApA
QCAtNTIsNyArNTMsNyBAQCBDQ0NhbnZhc0xheWVySW1wbDo6fkNDQ2FudmFzTGF5ZXJJbXBsKCkK
IHZvaWQgQ0NDYW52YXNMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQogewogICAgIEludFJl
Y3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChD
Q0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0
dXJlSWQsIG1faGFzQWxwaGEsIG1fcHJlbXVsdGlwbGllZEFscGhhKSk7CisgICAgcXVhZExpc3Qu
YXBwZW5kKENDQ2FudmFzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0
LCBtX3RleHR1cmVJZCwgbV9oYXNBbHBoYSwgbV9wcmVtdWx0aXBsaWVkQWxwaGEsIG1fZG91Ymxl
QnVmZmVyZWQpKTsKIH0KIAogdm9pZCBDQ0NhbnZhc0xheWVySW1wbDo6ZHVtcExheWVyUHJvcGVy
dGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZh
c0xheWVySW1wbC5oCmluZGV4IDkxMjZhN2Q0NDUwMWU2MzI1YjVlZmQ0YjU3Y2JhOWU0NmJjOGE3
NWEuLmYwNjAzZmUxYmVmNDNjNzcxMGU1ZGJlMTJjNjRhOGEzZjg2MGRiNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDYW52YXNMYXllckltcGwuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpIHsgbV90ZXh0dXJlSWQgPSBpZDsgfQogICAgIHZv
aWQgc2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0K
ICAgICB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkg
eyBtX3ByZW11bHRpcGxpZWRBbHBoYSA9IHByZW11bHRpcGxpZWRBbHBoYTsgfQorICAgIHZvaWQg
c2V0RG91YmxlQnVmZmVyZWQoYm9vbCBkb3VibGVCdWZmZXJlZCkgeyBtX2RvdWJsZUJ1ZmZlcmVk
ID0gZG91YmxlQnVmZmVyZWQ7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ0NhbnZhc0xh
eWVySW1wbChpbnQpOwogCkBAIC01OCw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV90ZXh0dXJlSWQ7CiAgICAgYm9vbCBtX2hhc0FscGhhOwogICAgIGJvb2wgbV9wcmVtdWx0aXBs
aWVkQWxwaGE7CisgICAgYm9vbCBtX2RvdWJsZUJ1ZmZlcmVkOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA3MDhiY2ZmODgwMWI3ODg4MTA2MGI1Mjk4NThi
Mjg5Yjk1MzI4YWVjLi5hYjdhNmRhOTlmNmM2NTBiMDc1NGI2MzMwNmI2OGUwNjMyNmM2OThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZv
aWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdygpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUNhbnZh
czo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7CiAKLSAgICAgICAgbV9odWRUZXh0dXJlLT5i
aW5kVGV4dHVyZShjb250ZXh0LCBtX2xheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJl
QWxsb2NhdG9yKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQp
OwogICAgICAgICBib29sIHVwbG9hZGVkVmlhTWFwID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3Vz
ZU1hcFN1YkZvclVwbG9hZHMpIHsKICAgICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBl
eHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxh
eTo6ZHJhdygpCiAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IG1fbGF5ZXJSZW5kZXJlci0+
aGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+
aW5pdGlhbGl6ZWQoKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgbV9odWRUZXh0dXJlLT5iaW5kVGV4
dHVyZShjb250ZXh0LCBtX2xheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2Nh
dG9yKCkpOworICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCk7CiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigp
LnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDg2NjNlYzBhYzJjZGYzNmIyNDcyMjgxY2ZmYWVhMTk0MDIyNWEyM2MuLjBiNzY4YmRh
NDZiNmJjZWZkMzg4ZDczOTQ4Y2M3YmFiNThjODZkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcApAQCAtOTUsOSArOTUsMTIgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRp
YWxpemUoKQogICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIGNhcGFiaWxpdGllcyB0
aGF0IHdlIGdvdCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgogICAgIG1fc2V0dGluZ3MuYWNjZWxl
cmF0ZVBhaW50aW5nID0gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5n
QWNjZWxlcmF0ZWRQYWludGluZzsKIAotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKSwKKyAgICBtX2RlZmVycmVkVGV4dHVyZUFsbG9jYXRvciA9IERlZmVycmVkVGV4
dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKCk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtX2RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5nZXQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdl
cjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm94eS0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0xMTIsMTEgKzExNSwxNiBAQCBDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3Qo
KQogICAgIG51bUxheWVyVHJlZUluc3RhbmNlcy0tOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09u
SW1wbFRocmVhZChEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5nKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisKICAgICBpZiAobV9jb250ZW50
c1RleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmV2aWN0
QW5kRGVsZXRlQWxsVGV4dHVyZXMoYWxsb2NhdG9yKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1
cmVNYW5hZ2VyLT5kZWxldGVBbGxUZXh0dXJlcygpOworCisgICAgVmVjdG9yPHVuc2lnbmVkPjo6
aXRlcmF0b3IgaXQgPSBtX2RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci0+ZGVsZXRlZFRleHR1cmVz
KCkuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gbV9kZWZlcnJlZFRleHR1cmVBbGxvY2F0b3It
PmRlbGV0ZWRUZXh0dXJlcygpLmVuZCgpOyBpdCsrKQorICAgICAgICBiaW5kaW5nLT5kZWxldGVU
ZXh0dXJlKCppdCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmltYXRpb25z
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKQEAgLTEzNyw3ICsxNDUsMTAgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhv
c3RJbXBsKQogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIiwgdGhp
cywgMCk7CiAKICAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGlt
aXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7Ci0g
ICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIFZlY3Rvcjx1bnNpZ25lZD46
Oml0ZXJhdG9yIGl0ID0gZGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yKCktPmRlbGV0ZWRUZXh0dXJl
cygpLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IGRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcigp
LT5kZWxldGVkVGV4dHVyZXMoKS5lbmQoKTsgaXQrKykKKyAgICAgICAgaG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKS0+ZGVsZXRlVGV4dHVyZSgqaXQpOwogfQogCiAv
LyBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgdGhlIENDTGF5ZXJUcmVlSG9zdCB0byBhbiBpbXBsIHRy
ZWUuIFdoZW4gbW9kaWZ5aW5nCkBAIC0yOTksMTIgKzMxMCwxNSBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGhvc3RJbQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYg
KG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5jb250ZXh0SGFzQ2FjaGVkRnJv
bnRCdWZmZXIpCi0gICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+ZXZpY3RBbmREZWxl
dGVBbGxUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAg
ICAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmRlbGV0ZUFsbFRleHR1cmVzKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9M
aW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKTsK
LSAgICAgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMo
aG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICB9CiAKKyAgICBWZWN0
b3I8dW5zaWduZWQ+OjppdGVyYXRvciBpdCA9IGRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcigpLT5k
ZWxldGVkVGV4dHVyZXMoKS5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBkZWZlcnJlZFRleHR1
cmVBbGxvY2F0b3IoKS0+ZGVsZXRlZFRleHR1cmVzKCkuZW5kKCk7IGl0KyspCisgICAgICAgIGhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCktPmRlbGV0ZVRleHR1cmUo
Kml0KTsKKwogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkcm9wcGVkIHRpbGVzIGFyZSBwcm9wYWdh
dGVkIHRvIHRoZSBpbXBsIHRyZWUuCiAgICAgLy8gSWYgdGhlIGZyb250YnVmZmVyIGlzIGNhY2hl
ZCwgdGhlbiBjbG9iYmVyIHRoZSBpbXBsIHRyZWUuIE90aGVyd2lzZSwKICAgICAvLyBwdXNoIG92
ZXIgdGhlIHRyZWUgY2hhbmdlcy4KQEAgLTMzNyw2ICszNTEsMTEgQEAgVGV4dHVyZU1hbmFnZXIq
IENDTGF5ZXJUcmVlSG9zdDo6Y29udGVudHNUZXh0dXJlTWFuYWdlcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci5nZXQoKTsKIH0KIAorRGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yKiBDQ0xheWVyVHJlZUhvc3Q6OmRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmdldCgpOworfQor
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKIHsKICAgICBBU1NFUlQoIUNDVGhy
ZWFkUHJveHk6OmltcGxUaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDJmOTg5YmNmNmExOTFjMTBmYzc0MWM5YWYxZGU3Y2E5MWMzMDYwNWUuLmM3OGY1MjkxY2JlNTFm
NzJkZjlhYjk0MGU0MzNhMjVmNWQ3ODE2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ1Rl
eHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50
ZXJDaHJvbWl1bTsKK2NsYXNzIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjsKK2NsYXNzIERlZmVy
cmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc7CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xh
c3MgVGV4dHVyZU1hbmFnZXI7CiAKQEAgLTEzMyw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpOwogICAgIHZvaWQgZGlk
Q29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7
IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IG1fY2xpZW50LT5kaWRDb21w
bGV0ZVN3YXBCdWZmZXJzKCk7IH0KLSAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbklt
cGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0
dXJlc09uSW1wbFRocmVhZChEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKik7CiAKICAg
ICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAK
QEAgLTE3OSw2ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JM
aW1pdHMoZmxvYXQgbWluU2NhbGUsIGZsb2F0IG1heFNjYWxlKTsKIAogICAgIFRleHR1cmVNYW5h
Z2VyKiBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CisgICAgRGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yKiBkZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IoKSBjb25zdDsKIAogICAgIGJvb2wg
dmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIHZvaWQgc2V0VmlzaWJs
ZShib29sKTsKQEAgLTIxOSw2ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyOworICAgIFJlZlB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I+
IG1fZGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOwogCiAgICAgTGF5ZXJMaXN0IG1fdXBkYXRlTGlz
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAwMjE4NmNh
YWY1YTg1Y2I1NjkzYmRiMTM1ZTgwY2JiYWRmYzk5MTZhLi40YTg1M2I3N2JmOWFkODhlODU4YzI0
MGFjMGIzZjAwMTMwZmZlYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcApAQCAtMjg5LDYgKzI4OSwxMSBAQCBUZXh0dXJlQWxsb2NhdG9yKiBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdAogICAgIHJldHVybiBtX2xh
eWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
IDogMDsKIH0KIAorRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZyogQ0NMYXllclRyZWVI
b3N0SW1wbDo6Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbGF5ZXJSZW5kZXJlciA/IG1fbGF5ZXJSZW5kZXJlci0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yQmluZGluZygpIDogMDsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpz
d2FwQnVmZmVycygpCiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlciAmJiAhaXNDb250ZXh0
TG9zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBlNGQwMDZk
NGY4NmU5YzI2Y2U3MWNiN2VlNGZhYWExYjk3NWY3NDRhLi5mMjlmZmIyNWM0ZDUwMWViMjUwMDc3
NzI5MmE4YjI2NjE5ZGJlODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzOworY2xhc3MgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZzsKIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiAvLyBDQ0xheWVyVHJlZUhvc3QtPkNDUHJveHkg
Y2FsbGJhY2sgaW50ZXJmYWNlLgpAQCAtODksNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgTGF5ZXJS
ZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRlcmVy
LmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwogICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0OworICAgIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmcqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKSBjb25zdDsKIAogICAgIHZv
aWQgc3dhcEJ1ZmZlcnMoKTsKICAgICB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggYTRjOTI1NjlkN2ZmMzk3ZmE1MDNkZTNi
ODY5YWNlMTAyYWMzMTQ1MS4uNzNkNGI3Nzc2ZGNhZWUwYTQ4YjZmNzJkY2RiOTY5MmNkZjcwMDk0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAg
dm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJDaHJvbWl1bSog
bGF5ZXJSZW5kZXJlciwgQ0NMYXllckkKIAogICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBHTEMoY29u
dGV4dDNELCBjb250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNh
bXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0gICAgbV9jb250ZW50c1RleHR1cmUtPmJpbmRUZXh0dXJl
KGNvbnRleHQzRCwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3Io
KSk7CisgICAgbV9jb250ZW50c1RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQzRCk7CiAKICAg
ICBpZiAoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAgICAgICBHTEMoY29u
dGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkUxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDcyYmVj
MmE3MTY2NGFmNDNjZDY0ZDAxNGQyOGI4NDI2NTA5NWIyMDMuLjViMGFlMDg3MDgwNDE4NTJiMGI3
YmY0MGRiYTE5MDI3MDNhOGE2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bW1pdCgpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmcoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVwZGF0ZXIp
OwogICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUo
bV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwpAQCAtMjAyLDcgKzIwMiw2IEBAIHZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVh
ZCgpKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9z
dCA9IDA7CkBAIC0yNDIsNyArMjQxLDYgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHRJZk5lZWRlZCgpCiAgICAgICAgIGJvb2wgb2s7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICAgICAgICAgIG9rID0g
bV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAg
ICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggODc0
NWM0ZWEwYTcxMGJkZTE4ZWRlMTgyMGYzMTRmZGI4Y2M4NzJhYi4uYzM3ZWZkYmE4MWU0ZDQwYTc5
NGU4NmYwODNmNjM2OWRlNDBlYjIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5j
cHAKQEAgLTM3LDExICszNywxMSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQorQ0NUZXh0
dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5k
aW5nKiBhbGxvY2F0b3JCaW5kaW5nKQorICAgIDogbV9hbGxvY2F0b3JCaW5kaW5nKGFsbG9jYXRv
ckJpbmRpbmcpCiAgICAgLCBtX2VudHJ5SW5kZXgoMCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0
b3IpOworICAgIEFTU0VSVChtX2FsbG9jYXRvckJpbmRpbmcpOwogfQogCiBDQ1RleHR1cmVVcGRh
dGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgQ0NUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQp
CiAgICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJp
ZXMuc2l6ZSgpKTsKICAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRy
eUluZGV4KSB7CiAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5
SW5kZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9h
bGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAg
IGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvckJpbmRpbmcs
IGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CiAgICAgfQogCiAgICAgaWYg
KG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
aAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTViYjMwLi5iYmQxNWI0
M2IyNGUzMDk0YjI0MTUwMTdjZDY3MTFlZjRiNGUzNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oCkBAIC0zMywxMSArMzMsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOworY2xhc3MgRGVm
ZXJyZWRUZXh0dXJlQWxsb2NhdG9yOworY2xhc3MgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmlu
ZGluZzsKIAogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgQ0NUZXh0dXJl
VXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgQ0NUZXh0dXJlVXBkYXRlcihEZWZlcnJl
ZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKik7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAog
ICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw3ICs1MCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcigpIHsgcmV0dXJuIG1fYWxsb2NhdG9yOyB9CisgICAgRGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yQmluZGluZyogYWxsb2NhdG9yQmluZGluZygpIHsgcmV0dXJuIG1fYWxsb2NhdG9y
QmluZGluZzsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7CkBAIC01OCw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgbV9kZXN0UmVjdDsKICAgICB9Owog
Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgRGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yQmluZGluZyogbV9hbGxvY2F0b3JCaW5kaW5nOwogICAgIHNpemVfdCBtX2VudHJ5
SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCA5MDMzMTM1MTNhOWQwOTgyMzQxMmU1ZTc3ZDY5OTg1NDU3
ZjkzYTYxLi40MmVlN2QwYjRiYTlkZGE3OTYwNjEzMWVkNWY0YmYyZmE3NWVmYTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21w
bGV0aW9uOwogCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihu
ZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVB
bGxvY2F0b3IoKSkpOworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0g
YWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKIAogICAgIG1fc2NoZWR1bGVyT25J
bXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpbwogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojps
YXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVy
ZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1w
bFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5k
aW5nKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICBtX2lucHV0SGFu
ZGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLmNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDM0NGQ3NDI0NWY4
ZWMxZjVmZGI2YzJjYjIxZGNkYjkxY2FiNDkxODIuLmJiNDk2ZTYxOGMxMDFlMTkwMzg1NzA5ZDMz
YmNmYTg1ZTYwYWE5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YmluZENvbnRlbnRzVGV4dHVyZShM
YXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlSWQgPSB0aWxlID8gdGlsZS0+dGV4dHVyZUlkKCkgOiAwOwogICAgIEFTU0VSVCh0
ZXh0dXJlSWQpOwogCi0gICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICBsYXllclJlbmRl
cmVyLT5jb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBsYXllclJlbmRlcmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCktPnRleHR1
cmVJZCh0ZXh0dXJlSWQpKTsKIH0KIAogdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBiYTEyOTBlYjBiZGEzYzc5N2I4ODk2ZDgzYWRmY2Y4
Y2NlMzc2YzdjLi4zMjgyYWVhOWQ4NDVlNzcxZWExNzAyM2U3YTA3ZGRkZjdhOTZiYjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMTg1LDggKzE4NSw3IEBAIHZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lVG9UZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwKIHsKICAgICBUZXh0dXJlJiB0ZXh0dXJlID0gbV90ZXh0dXJlc1tp
bmRleF07CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5j
b250ZXh0KCk7Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yID0gbGF5ZXJSZW5kZXJl
ci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKTsKLSAgICB0ZXh0dXJlLm1fdGV4dHVy
ZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlLm1fdGV4dHVy
ZS0+YmluZFRleHR1cmUoY29udGV4dCk7CiAgICAgR0MzRGVudW0gZm9ybWF0ID0gdGV4dHVyZS5t
X3RleHR1cmUtPmZvcm1hdCgpOwogICAgIEludFNpemUgZGltZW5zaW9ucyA9IHRleHR1cmUubV90
ZXh0dXJlLT5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGYwYjVjNDExYjY1NmFl
ZGU3NTk1NzEwZTRkOGNmZDdkMjRkYjUzM2MuLmI0ZjExZDlmNzkyODM5MzAxYjQ2ZWExNmJmMTY2
OWQwMTkzYWM1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNjQsOCArNjQsMjUgQEAgcHVi
bGljOgogCiBjbGFzcyBNb2NrVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2Nh
dG9yIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNb2NrVGV4dHVyZUFsbG9jYXRv
cj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0dXJlQWxsb2NhdG9yKGNvbnRleHQp
KTsKKyAgICB9CisKICAgICBNT0NLX01FVEhPRDIoY3JlYXRlVGV4dHVyZSwgdW5zaWduZWQoY29u
c3QgSW50U2l6ZSYsIEdDM0RlbnVtKSk7CiAgICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRleHR1cmUs
IHZvaWQodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkpOworCisjaWZuZGVmIE5E
RUJVRworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBt
X2NvbnRleHQuZ2V0KCk7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1vY2tU
ZXh0dXJlQWxsb2NhdG9yKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisg
ICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKQEAgLTkw
LDE4ICsxMDcsMjAgQEAgcHJvdGVjdGVkOgogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgbWFp
bk1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtYWluQ29udGV4dC5nZXQoKSkp
OwogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9j
a0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFw
aGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOwogCi0gICAgICAgIE1vY2tUZXh0dXJl
QWxsb2NhdG9yIGFsbG9jYXRvck1vY2s7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cigmYWxsb2NhdG9yTW9jayk7CisgICAgICAgIFJlZlB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3I+IGFsbG9jYXRvciA9IERlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKCk7CisgICAg
ICAgIFJlZlB0cjxNb2NrVGV4dHVyZUFsbG9jYXRvcj4gYWxsb2NhdG9yTW9jayA9IE1vY2tUZXh0
dXJlQWxsb2NhdG9yOjpjcmVhdGUoaW1wbENvbnRleHQpOworICAgICAgICBPd25QdHI8RGVmZXJy
ZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZz4gYWxsb2NhdG9yQmluZGluZyA9IERlZmVycmVkVGV4
dHVyZUFsbG9jYXRvckJpbmRpbmc6OmNyZWF0ZShhbGxvY2F0b3JNb2NrLmdldCgpKTsKKyAgICAg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKGFsbG9jYXRvckJpbmRpbmcuZ2V0KCkpOwogCiAg
ICAgICAgIGNvbnN0IEludFNpemUgc2l6ZSgzMDAsIDE1MCk7CiAgICAgICAgIGNvbnN0IHNpemVf
dCBtYXhUZXh0dXJlU2l6ZSA9IHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0OwotICAg
ICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZShtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUsIG1heFRleHR1cmVTaXpl
KTsKKyAgICAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoYWxsb2NhdG9yLCBtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNp
emUsIG1heFRleHR1cmVTaXplKTsKIAogICAgICAgICBpZiAodGhyZWFkZWQpCiAgICAgICAgICAg
ICBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKG5ldyBGYWtlQ0NUaHJlYWQpOwogCi0gICAgICAgIGNv
bnN0IFdlYkdMSWQgYmFja1RleHR1cmVJZCA9IDE7Ci0gICAgICAgIGNvbnN0IFdlYkdMSWQgZnJv
bnRUZXh0dXJlSWQgPSAyOworICAgICAgICBjb25zdCBXZWJHTElkIGZyb250VGV4dHVyZUlkID0g
MTsKKyAgICAgICAgY29uc3QgV2ViR0xJZCBiYWNrVGV4dHVyZUlkID0gMjsKICAgICAgICAgY29u
c3QgV2ViR0xJZCBmYm9JZCA9IDM7CiAgICAgICAgIHsKICAgICAgICAgICAgIEluU2VxdWVuY2Ug
c2VxdWVuY2U7CkBAIC0xMTQsNyArMTMzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAg
ICAgICAuV2lsbE9uY2UoUmV0dXJuKGZib0lkKSk7CiAKICAgICAgICAgICAgICAgICAvLyBDcmVh
dGUgdGV4dHVyZSBhbmQgZG8gdGhlIGNvcHkgKG9uIHRoZSBpbXBsIHRocmVhZCkuCi0gICAgICAg
ICAgICAgICAgRVhQRUNUX0NBTEwoYWxsb2NhdG9yTW9jaywgY3JlYXRlVGV4dHVyZShzaXplLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCisgICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoKmFs
bG9jYXRvck1vY2suZ2V0KCksIGNyZWF0ZVRleHR1cmUoc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEpKQogICAgICAgICAgICAgICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGZyb250VGV4dHVy
ZUlkKSk7CiAgICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoaW1wbE1vY2ssIGJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBmcm9udFRleHR1cmVJZCkpOwogICAgICAg
ICAgICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2NrLCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBmYm9JZCkpOwpAQCAtMTI2LDcgKzE0NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtYWluTW9jaywgZGVsZXRlRnJhbWVi
dWZmZXIoZmJvSWQpKTsKIAogICAgICAgICAgICAgICAgIC8vIFRlYXJkb3duIFRleHR1cmVNYW5h
Z2VyLgotICAgICAgICAgICAgICAgIEVYUEVDVF9DQUxMKGFsbG9jYXRvck1vY2ssIGRlbGV0ZVRl
eHR1cmUoZnJvbnRUZXh0dXJlSWQsIHNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSk7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoKmFsbG9jYXRvck1vY2suZ2V0KCksIGRlbGV0ZVRl
eHR1cmUoZnJvbnRUZXh0dXJlSWQsIHNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTU2LDcgKzE3NSw5IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgfQogICAgICAgICBjYW52YXMuY2xlYXIoKTsKICAgICAgICAgdGV4dHVyZU1hbmFn
ZXItPnJlZHVjZU1lbW9yeVRvTGltaXQoMCk7Ci0gICAgICAgIHRleHR1cmVNYW5hZ2VyLT5kZWxl
dGVFdmljdGVkVGV4dHVyZXMoJmFsbG9jYXRvck1vY2spOworICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQ+OjppdGVyYXRvciBpdCA9IGFsbG9jYXRvci0+ZGVsZXRlZFRleHR1cmVzKCkuYmVnaW4oKTsK
KyAgICAgICAgZm9yICg7IGl0ICE9IGFsbG9jYXRvci0+ZGVsZXRlZFRleHR1cmVzKCkuZW5kKCk7
IGl0KyspCisgICAgICAgICAgICBhbGxvY2F0b3JCaW5kaW5nLT5kZWxldGVUZXh0dXJlKCppdCk7
CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
ZXh0dXJlTWFuYWdlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0
dXJlTWFuYWdlclRlc3QuY3BwCmluZGV4IDdjMDg4ZGFiYzhkZmYyZDMzMjM3N2UzNWMwYmE1NjEw
MTcwYmJkZmQuLmRlZDg1NjQ5ODc2MDEwY2IyZDg5MDlhZWMwZGU1M2JmZDZhNmE5NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5j
cHAKQEAgLTM1LDExICszNSwxNyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBGYWtlVGV4dHVyZUFs
bG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGYWtlVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRmFrZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgfQogICAg
IHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0p
IHsgcmV0dXJuIDE7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCwg
Y29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBG
YWtlVGV4dHVyZUFsbG9jYXRvcigpIHsgfQogfTsKIAotRmFrZVRleHR1cmVBbGxvY2F0b3IgZmFr
ZVRleHR1cmVBbGxvY2F0b3I7CiBjb25zdCBJbnRTaXplIHRleHR1cmVTaXplKDI1NiwgMjU2KTsK
IGNvbnN0IEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsK
IApAQCAtNTAsMTYgKzU2LDEzIEBAIHNpemVfdCB0ZXh0dXJlc01lbW9yeVNpemUoc2l6ZV90IHRl
eHR1cmVDb3VudCkKIAogUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRlVGV4dHVyZU1h
bmFnZXIoc2l6ZV90IG1heFRleHR1cmVzLCBzaXplX3QgcHJlZmVycmVkVGV4dHVyZXMpCiB7Ci0g
ICAgcmV0dXJuIFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUodGV4dHVyZXNNZW1vcnlTaXplKG1heFRl
eHR1cmVzKSwgdGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgMTAyNCk7Cisg
ICAgcmV0dXJuIFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoRmFrZVRleHR1cmVBbGxvY2F0b3I6OmNy
ZWF0ZSgpLCB0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlc01lbW9yeVNp
emUocHJlZmVycmVkVGV4dHVyZXMpLCAxMDI0KTsKIH0KIAogYm9vbCByZXF1ZXN0VGV4dHVyZShU
ZXh0dXJlTWFuYWdlciogbWFuYWdlciwgVGV4dHVyZVRva2VuIHRva2VuKQogewogICAgIHVuc2ln
bmVkIHRleHR1cmVJZDsKLSAgICBib29sIHJlc3VsdCA9IG1hbmFnZXItPnJlcXVlc3RUZXh0dXJl
KHRva2VuLCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCwgdGV4dHVyZUlkKTsKLSAgICBpZiAo
cmVzdWx0KQotICAgICAgICBtYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoJmZha2VUZXh0dXJlQWxs
b2NhdG9yLCB0b2tlbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbWFuYWdlci0+
cmVxdWVzdFRleHR1cmUodG9rZW4sIHRleHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0LCB0ZXh0dXJl
SWQpOwogfQogCiBURVNUKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVJblByZWZl
cnJlZExpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggMGRhYzNhYWY4YzY3YmZkYWExMGZlMWExYjZi
ZGQyZDc3NTk0MmIyNC4uY2RiZTI1ZjQ4ZWQ0NGMwZjFjN2FjMjIyZWY4MGI1MDhmZmIzOWQ0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCkBAIC00MCw4ICs0MCwxNSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBG
YWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKIHB1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWtlVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFrZVRleHR1cmVBbGxvY2F0b3IoKSk7
CisgICAgfQogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXpl
JiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVy
ZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBGYWtlVGV4dHVyZUFsbG9jYXRvcigpIHsgfQogfTsKIAogY2xhc3MgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bTsKQEAgLTUzLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0
dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0KICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsg
fQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgRGVmZXJy
ZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZyosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikgeyB9CiAgICAgfTsKIAogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBh
cmVDb3VudCgwKSB7IH0KQEAgLTE2MywxMyArMTcwLDE0IEBAIHZvaWQgRmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QKIAogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIHsKLSAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKERlZmVy
cmVkVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKCksIDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwg
MTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUND
VGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVy
SW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwot
ICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgUmVm
UHRyPEZha2VUZXh0dXJlQWxsb2NhdG9yPiB0ZXh0dXJlQWxsb2NhdG9yID0gRmFrZVRleHR1cmVB
bGxvY2F0b3I6OmNyZWF0ZSgpOworICAgIE93blB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JC
aW5kaW5nPiBhbGxvY2F0b3JCaW5kaW5nID0gRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGlu
Zzo6Y3JlYXRlKHRleHR1cmVBbGxvY2F0b3IpOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cihhbGxvY2F0b3JCaW5kaW5nLmdldCgpKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAg
IGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwpAQCAtMTk4LDE0ICsyMDYsMTQg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIAogVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiB7Ci0gICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShEZWZlcnJlZFRleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZSgpLCA0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkp
OwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwotCisgICAgUmVmUHRyPEZh
a2VUZXh0dXJlQWxsb2NhdG9yPiB0ZXh0dXJlQWxsb2NhdG9yID0gRmFrZVRleHR1cmVBbGxvY2F0
b3I6OmNyZWF0ZSgpOworICAgIE93blB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
PiBhbGxvY2F0b3JCaW5kaW5nID0gRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6Y3Jl
YXRlKHRleHR1cmVBbGxvY2F0b3IpOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihhbGxv
Y2F0b3JCaW5kaW5nLmdldCgpKTsKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuIFNl
dHVwIDV4NSB0aWxlcyB3aXRoIG9uZSB2aXNpYmxlIHRpbGUgaW4gdGhlIGNlbnRlci4KICAgICBJ
bnRTaXplIGNvbnRlbnRCb3VuZHMoNTAwLCA1MDApOwogICAgIEludFJlY3QgY29udGVudFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7CkBAIC0yNjQsMTQgKzI3MiwxNCBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIC8v
IFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3
aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9y
eUxpbWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMiB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCiAK
LSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZShtZW1vcnlMaW1pdCwgbWVtb3J5TGltaXQgLyAyLCAxMDI0KTsKKyAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZShEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZSgpLCBtZW1vcnlMaW1pdCwgbWVtb3J5
TGltaXQgLyAyLCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJl
ZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVB
bGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9y
KTsKLQorICAgIFJlZlB0cjxGYWtlVGV4dHVyZUFsbG9jYXRvcj4gdGV4dHVyZUFsbG9jYXRvciA9
IEZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoKTsKKyAgICBPd25QdHI8RGVmZXJyZWRUZXh0
dXJlQWxsb2NhdG9yQmluZGluZz4gYWxsb2NhdG9yQmluZGluZyA9IERlZmVycmVkVGV4dHVyZUFs
bG9jYXRvckJpbmRpbmc6OmNyZWF0ZSh0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBDQ1RleHR1cmVV
cGRhdGVyIHVwZGF0ZXIoYWxsb2NhdG9yQmluZGluZy5nZXQoKSk7CiAgICAgLy8gVGhpcyBpbnZh
bGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxh
eWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXll
clJlY3QodmlzaWJsZVJlY3QpOwpAQCAtMzAwLDEzICszMDgsMTQgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKIAogVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEw
MjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShEZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3I6OmNyZWF0ZSgpLCA0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAg
RmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIFJlZlB0cjxGYWtlVGV4dHVyZUFs
bG9jYXRvcj4gdGV4dHVyZUFsbG9jYXRvciA9IEZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUo
KTsKKyAgICBPd25QdHI8RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZz4gYWxsb2NhdG9y
QmluZGluZyA9IERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OmNyZWF0ZSh0ZXh0dXJl
QWxsb2NhdG9yKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoYWxsb2NhdG9yQmluZGlu
Zy5nZXQoKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52
YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRz
KEludFNpemUoMTAwLCAyMDApKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123571</attachid>
            <date>2012-01-23 10:08:32 -0800</date>
            <delta_ts>2012-02-07 11:54:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76295-20120123130831.patch</filename>
            <type>text/plain</type>
            <size>100072</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFiZGVjM2JkNzAwYmMz
YmVlODI4ZmFiOWM2YmY2YmNmMDJhN2YwYi4uNDEzOTRhNTIwNWJiN2RkNDk0MDVmODZkZTRlYWE5
MjgzYzRlZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAxMi0wMS0yMyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmVwbGFjZSBUZXh0dXJlTWFuYWdlciBldmljdGlvbiBsaXN0IHdpdGggZGVmZXJyZWQgdGV4dHVy
ZSBhbGxvY2F0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluc3RlYWQgb2YgaW1wbGljaXRseSBkZWZlcnJpbmcgdGV4dHVyZSBjcmVhdGlvbi9kZWxl
dGlvbiBpbnNpZGUKKyAgICAgICAgVGV4dHVyZU1hbmFnZXIgYWRkIGFuIGV4cGxpY2l0IGRlZmVy
cmVkIHRleHR1cmUgYWxsb2NhdG9yIHRoYXQgdXNlcworICAgICAgICBmYWtlIHRleHR1cmUgSURz
IGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBkZWZlciB0ZXh0dXJlIGNyZWF0aW9uCisgICAgICAg
IHVudGlsIHVzZSBvbiBpbXBsIHRocmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOjp+RGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjo6
Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJlQWxs
b2NhdG9yQmluZGluZzo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjp+RGVmZXJyZWRUZXh0
dXJlQWxsb2NhdG9yQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVB
bGxvY2F0b3JCaW5kaW5nOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVy
cmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6dGV4dHVyZUlkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3Iu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmRlbGV0
ZWRUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JC
aW5kaW5nOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVw
ZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NhbnZh
c1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hE
cmF3aW5nRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1
c2VSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpQYXNzdGhy
b3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3N0aHJv
dWdoVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6On5QYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3N0aHJvdWdoVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmc6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3Rocm91Z2hUZXh0
dXJlQWxsb2NhdG9yQmluZGluZzo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hbmFnZXI6OnJlcGxhY2VUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5h
Z2VyOjpkZWxldGVBbGxUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdl
cjo6cmVtb3ZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6YWxs
b2NhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0
VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3I6On5UZXh0dXJlQWxs
b2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3I6OmNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6On5UZXh0dXJlQWxsb2Nh
dG9yQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0
b3JCaW5kaW5nOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3Rocm91Z2hUZXh0dXJl
QWxsb2NhdG9yQmluZGluZzo6dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmFsbG9j
YXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6
OmNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2Fu
dmFzRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJhd1F1
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJh
d1F1YWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OmRvdWJsZUJ1ZmZl
cmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xh
eWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xheWVySW1wbDo6Q0NDYW52
YXNMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNMYXllckltcGw6OmFwcGVu
ZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZh
c0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNMYXllckltcGw6OnNldERv
dWJsZUJ1ZmZlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6
OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1Rl
eHR1cmVzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
YmVnaW5Db21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudHNUZXh0dXJlQWxsb2NhdG9y
QmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFs
aXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJm
YWNlOjpkcmF3U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRo
cmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFsbG9jYXRvckJpbmRpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25J
bXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhv
c3RDbG9zZWRPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRM
YXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lVG9UZXh0dXJlKToKKwogMjAxMi0wMS0yMyAgVnNl
dm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbmRleGVkREJNb2RlbCBzaG91bGQga2VlcCB0cmFjayBvZiByZXF1ZXN0cyBzZW50IHRv
IHRoZSBiYWNrZW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhZGNkZTg5NjA2ZDk1
OWZhOGIwNWZlMmVmNjFlZjEwYTZlNjNiOGE3Li45MThmNWJhNjk5ODgyNGQ5MjkyOWI4ZWMwNDEz
ZDk4NThiODhkOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBA
CisyMDEyLTAxLTIzICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW0Nocm9taXVtXSBSZXBsYWNlIFRleHR1cmVNYW5hZ2VyIGV2aWN0aW9uIGxpc3Qgd2l0
aCBkZWZlcnJlZCB0ZXh0dXJlIGFsbG9jYXRvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVHJhY2sgY2hhbmdlcyB0byBUZXh0dXJlTWFuYWdlci4KKwor
ICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxM
aWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTWFuYWdlclRlc3QuY3BwOgor
ICAgICAgICAoV1RGOjpGYWtlVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6RmFrZVRleHR1cmVBbGxvY2F0b3I6OkZha2VUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAg
KFdURjo6Y3JlYXRlVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV1RGOjpyZXF1ZXN0VGV4dHVy
ZSk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChXVEY6OkZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpGYWtl
VGV4dHVyZUFsbG9jYXRvcjo6RmFrZVRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChX
VEY6OlRFU1QpOgorCiAyMDEyLTAxLTIwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdlQWdlbnQub3BlbigpIGRvc2VuJ3Qg
YmVsb25nIHRvIHRoZSBwcm90b2NvbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlMjFmYmI0NmYyNGZk
YjgxNmIyNDNiYjE0YjJjNzYzMjQyNGYwMzk2Li4wMjY0OWM0NzQ3MGE1YmZkODA5M2FlZWMyNWM1
NjU2YjRmODIzMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTM4LDYgKzM1MzgsOCBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nyb3NzUHJvY2Vz
c0ZvbnRMb2FkaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0Nyb3NzUHJvY2Vzc0ZvbnRMb2FkaW5nLm1tJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3ZTUyYWVkZTBmOTgwYWRhMTVk
ZTBhMTRhMWQyOGQ4NmExZTg4Li4zN2MyNTRhZjA3YzRmZGVkNGQwZjQyMDI5MjIxNzBlOTY2Yjc0
Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApAQCAtNDYsOSArNDYsMTAgQEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5nLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgYmluZGlu
Zyk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4
dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNl
TWFwVGV4U3ViSW1hZ2UpCkBAIC05OCwxMSArOTksMTAgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QKICAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBjYW52YXNQYWludGVyLnNraWFDb250
ZXh0KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
K3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBQ
bGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKIAotICAgIHRleHR1
cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAgICAgbV90ZXhTdWJJbWFnZS51
cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNGUxNjIyOTViODZlMDA4OTNj
MzNlZjAzZDRiNjJkMmMxZTUyYmQ1Zi4uMDc4MzJlMWJhY2ExN2VjZTYwMzM1ODJlZjFhODI0ZDU0
MmZkZjIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsK
ICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yQmlu
ZGluZyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNjEs
NyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0
dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwotICAg
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29s
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBlMmFiNzk4Mzg2ZmNjZjA3MDEzZDY2YmIzZjI4
ZmU3ZDhmNGVjMjdjLi5iY2M0YWRhZmM3MWVkOGJhODY1OTM2MDU1ZTA0MGIzMDk4MzQyM2M0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTEsOSArNTEsOSBAQCB2b2lkIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KGNvbnN0IElu
dFJlYwogICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KGNhbnZhcy5nZXQo
KSwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIGJpbmRpbmcsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmUoKS0+
YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlKCktPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGJpbmRpbmcpOwogICAgIEFTU0VSVChtX3BpeGVsRGF0YS5nZXQoKSk7CiAg
ICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgp
LT5mb3JtYXQoKSwgZGVzdFJlY3QsIG1fcGl4ZWxEYXRhLmdldCgpKTsKICAgICBtX3BpeGVsRGF0
YS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDFjNTY0Y2RjMTgzZWE0OTU5MWY2OTA2ZWZl
YmQzYThkOWI1ZjgwY2MuLmU0ZGI5NWIzMGNkMDE4MjM1Y2QxYTkxODczZmFiMjhkNDkyNDczZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0
dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDE1MDVhZGFjMjQzZTA3NjY1
ZDJkZGFiMjhmNDcwM2ZmOGVmNWI5NDMuLjFiYmI2YTI2YzA4MzgzMmZiZjIxODJmNGZiZTEyOWU1
NDgxNjY4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0CiAgICAgaWYgKCFtX2JhY2tUZXh0
dXJlSWQgfHwgIW1fZnJvbnRUZXh0dXJlIHx8ICFtX2Zyb250VGV4dHVyZS0+aXNWYWxpZChtX3Np
emUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9m
cm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkpOwor
ICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCB1cGRhdGVyLmFsbG9jYXRv
ckJpbmRpbmcoKSk7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKQEAgLTE1Myw2ICsxNTMs
NyBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCogbGF5ZXIpCiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhs
YXllcik7CiAKICAgICBDQ0NhbnZhc0xheWVySW1wbCogY2FudmFzTGF5ZXIgPSBzdGF0aWNfY2Fz
dDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVyKTsKKyAgICBjYW52YXNMYXllci0+c2V0RG91Ymxl
QnVmZmVyZWQobV91c2VEb3VibGVCdWZmZXJpbmcpOwogICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZl
cmluZykKICAgICAgICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX2Zyb250VGV4dHVyZS0+
dGV4dHVyZUlkKCkpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJlZFRleHR1cmVBbGxv
Y2F0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmMjM4ZDgwN2RiYzc2YmYwNmI2OGM0NGI3YmU1NjdlN2Q4
NzNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IuY3BwCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJEZWZlcnJl
ZFRleHR1cmVBbGxvY2F0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEZWZlcnJlZFRl
eHR1cmVBbGxvY2F0b3I6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcigpCisgICAgOiBtX25leHRU
ZXh0dXJlSWQoMSkKK3sKK30KKworRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOjp+RGVmZXJyZWRU
ZXh0dXJlQWxsb2NhdG9yKCkKK3sKK30KKwordW5zaWduZWQgRGVmZXJyZWRUZXh0dXJlQWxsb2Nh
dG9yOjpjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkK
K3sKKyAgICByZXR1cm4gbV9uZXh0VGV4dHVyZUlkKys7Cit9CisKK3ZvaWQgRGVmZXJyZWRUZXh0
dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQoreworICAgIG1fZGVsZXRlZFRleHR1cmVzLmFw
cGVuZCh0ZXh0dXJlSWQpOworfQorCitEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpE
ZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKFBhc3NSZWZQdHI8VGV4dHVyZUFsbG9jYXRv
cj4gYWxsb2NhdG9yKQorICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitEZWZl
cnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjp+RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmlu
ZGluZygpCit7CisgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmJlZ2lu
KCk7CisgICAgZm9yICg7IGl0ICE9IG1fdGV4dHVyZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG1f
YWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKGl0LT5zZWNvbmQudGV4dHVyZUlkLCBpdC0+c2Vjb25k
LnNpemUsIGl0LT5zZWNvbmQuZm9ybWF0KTsKK30KKwordW5zaWduZWQgRGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJ
bnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCit7CisgICAgdW5zaWduZWQgdGV4dHVyZUlk
ID0gbV9hbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6ZSwgZm9ybWF0KTsKKyAgICBUZXh0dXJl
RW50cnkgZW50cnk7CisgICAgZW50cnkudGV4dHVyZUlkID0gdGV4dHVyZUlkOworICAgIGVudHJ5
LnNpemUgPSBzaXplOworICAgIGVudHJ5LmZvcm1hdCA9IGZvcm1hdDsKKyAgICBtX3RleHR1cmVz
LmFkZCh0ZXh0dXJlLCBlbnRyeSk7CisgICAgcmV0dXJuIHRleHR1cmVJZDsKK30KKwordm9pZCBE
ZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRl
eHR1cmUpCit7CisgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQo
dGV4dHVyZSk7CisgICAgaWYgKGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpIHsKKyAgICAgICAgbV9h
bGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUoaXQtPnNlY29uZC50ZXh0dXJlSWQsIGl0LT5zZWNvbmQu
c2l6ZSwgaXQtPnNlY29uZC5mb3JtYXQpOworICAgICAgICBtX3RleHR1cmVzLnJlbW92ZShpdCk7
CisgICAgfQorfQorCit1bnNpZ25lZCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjp0
ZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZSkKK3sKKyAgICBUZXh0dXJlTWFwOjppdGVyYXRvciBp
dCA9IG1fdGV4dHVyZXMuZmluZCh0ZXh0dXJlKTsKKyAgICBpZiAoaXQgPT0gbV90ZXh0dXJlcy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaXQtPnNlY29uZC50ZXh0dXJl
SWQ7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTdlZGI2MWYyMDY2YWFhYjIzNmE3MTE4YTc5MDhlMzEwNTE2ODRkNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVy
cmVkVGV4dHVyZUFsbG9jYXRvci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvcl9oCisjZGVmaW5lIERlZmVycmVkVGV4dHVy
ZUFsbG9jYXRvcl9oCisKKyNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGV4dHVyZSBhbGxv
Y2F0b3IgdGhhdCBnZW5lcmF0ZXMgdXNlcyBmYWtlIHRleHR1cmUgSURzIGFuZCBhbGxvd3MKKy8v
IHJlYWwgdGV4dHVyZSBJRCBjcmVhdGlvbiB0byBiZSBkZWZlcnJlZC4KK2NsYXNzIERlZmVycmVk
VGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IpOworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERlZmVycmVkVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yKCkp
OworICAgIH0KKyAgICB2aXJ0dWFsIH5EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IoKTsKKworICAg
IHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0g
Zm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJl
LCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKKworICAgIFZlY3Rvcjx1bnNpZ25l
ZD4mIGRlbGV0ZWRUZXh0dXJlcygpIHsgcmV0dXJuIG1fZGVsZXRlZFRleHR1cmVzOyB9CisKK3By
b3RlY3RlZDoKKyAgICBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IoKTsKKworICAgIHVuc2lnbmVk
IG1fbmV4dFRleHR1cmVJZDsKKworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9kZWxldGVkVGV4dHVy
ZXM7Cit9OworCisvLyBCaW5kcyB0ZXh0dXJlIElEcyBnZW5lcmF0ZWQgYnkgYSBkZWZlcnJlZCB0
ZXh0dXJlIGFsbG9jYXRvciB0bworLy8gdGV4dHVyZSBJRHMgZ2VuZXJhdGVkIGJ5IGEgZGlmZmVy
ZW50IHRleHR1cmUgYWxsb2NhdG9yLgorY2xhc3MgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmlu
ZGluZyA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZz4gY3JlYXRlKFBh
c3NSZWZQdHI8VGV4dHVyZUFsbG9jYXRvcj4gYWxsb2NhdG9yKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKGFsbG9jYXRv
cikpOworICAgIH0KKyAgICB2aXJ0dWFsIH5EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
KCk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVy
ZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CisgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0
dXJlSWQodW5zaWduZWQgdGV4dHVyZSk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGVmZXJy
ZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZyhQYXNzUmVmUHRyPFRleHR1cmVBbGxvY2F0b3I+KTsK
KworICAgIHN0cnVjdCBUZXh0dXJlRW50cnkgeworICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7
CisgICAgICAgIEludFNpemUgc2l6ZTsKKyAgICAgICAgR0MzRGVudW0gZm9ybWF0OworICAgIH07
CisgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBUZXh0dXJlRW50cnk+IFRleHR1cmVNYXA7
CisgICAgVGV4dHVyZU1hcCBtX3RleHR1cmVzOworICAgIFJlZlB0cjxUZXh0dXJlQWxsb2NhdG9y
PiBtX2FsbG9jYXRvcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAppbmRleCAxOWRmYTJmMDA2Yzk4ODQ3NzBlNjc2YzQ1ODViZTk0NjcxMzRmM2IzLi5lYzM2
NTBmYzkzOWI4NjY0NTIyYzg1YzI5YjZlZGMyYmY4NThlYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKQEAgLTM4LDExICszOCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgUGFzc093blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVBbGxvY2F0
b3JCaW5kaW5nKiBiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQogewotICAgIC8vIEFsbG9j
YXRlIHNvIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHRleHR1cmUgaWQuCi0gICAgdGV4dHVyZS0+YWxs
b2NhdGUoYWxsb2NhdG9yKTsKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBiaW5kaW5nLT50ZXh0
dXJlSWQodGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGlmICghdGV4dHVyZUlkKQorICAgICAg
ICB0ZXh0dXJlSWQgPSBiaW5kaW5nLT5jcmVhdGVUZXh0dXJlKHRleHR1cmUtPnRleHR1cmVJZCgp
LCB0ZXh0dXJlLT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpKTsKIAogICAgIEdyQ29udGV4dCog
Z3JDb250ZXh0ID0gY29udGV4dC0+Z3JDb250ZXh0KCk7CiAgICAgSW50U2l6ZSBjYW52YXNTaXpl
ID0gdGV4dHVyZS0+c2l6ZSgpOwpAQCAtNTEsNyArNTIsNyBAQCBzdGF0aWMgUGFzc093blB0cjxT
a0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsCiAgICAgdGV4dHVyZURlc2MuZldpZHRoID0gY2FudmFzU2l6ZS53aWR0aCgpOwogICAgIHRl
eHR1cmVEZXNjLmZIZWlnaHQgPSBjYW52YXNTaXplLmhlaWdodCgpOwogICAgIHRleHR1cmVEZXNj
LmZDb25maWcgPSBrUkdCQV84ODg4X0dyUGl4ZWxDb25maWc7Ci0gICAgdGV4dHVyZURlc2MuZlRl
eHR1cmVIYW5kbGUgPSB0ZXh0dXJlLT50ZXh0dXJlSWQoKTsKKyAgICB0ZXh0dXJlRGVzYy5mVGV4
dHVyZUhhbmRsZSA9IHRleHR1cmVJZDsKICAgICBTa0F1dG9UVW5yZWY8R3JUZXh0dXJlPiB0YXJn
ZXQoZ3JDb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVRleHR1cmUodGV4dHVyZURlc2MpKTsKICAgICBT
a0F1dG9UVW5yZWY8U2tEZXZpY2U+IGRldmljZShuZXcgU2tHcHVEZXZpY2UoZ3JDb250ZXh0LCB0
YXJnZXQuZ2V0KCkpKTsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNrQ2FudmFzKGRldmljZS5n
ZXQoKSkpOwpAQCAtNjcsOSArNjgsOSBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2
b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ckJpbmRpbmcqIGJpbmRpbmcsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0
KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cisg
ICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYmluZGluZywg
dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyKQpAQCAtOTcsNyArOTgsNyBAQCBMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3Jt
YXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyog
YmluZGluZywgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIE1ha2Ugc3VyZSBTS0lBIHVz
ZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKQEAgLTEwNSw3ICsxMDYsNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDbwogICAgIGNv
bnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKIAogICAgIC8vIENyZWF0ZSBhbiBh
Y2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KLSAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZh
cyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSk7
CisgICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhj
b250ZXh0LCBiaW5kaW5nLCB0ZXh0dXJlKTsKIAogICAgIGNhbnZhcy0+Y2xpcFJlY3QoU2tSZWN0
KGRlc3RSZWN0KSk7CiAgICAgLy8gVGhlIGNvbXBvc2l0b3IgZXhwZWN0cyB0aGUgdGV4dHVyZXMg
dG8gYmUgdXBzaWRlLWRvd24gc28gaXQgY2FuIGZsaXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggNGExMGM4NThlNGNkYThjMjUyYWMxNmRmYTA3ZDA5YTVkOTA4ZWVjMy4uYjQ1NzA3ZjJk
ZDhjY2YxOTUwNmQ2NmZkMzE3N2Y0MzU3MzRjNDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRl
eHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yQmluZGluZyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3JCaW5kaW5nKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDAxNTRmYjI4MzE0ZjNlNmM5MjQwNDdiYjQ4MzY3MzY5MmRmY2ZhYjcuLmZhNWE4MmI1ZWU0
MTU2YmI1MmEyZmU1NDk4MDlkMTg3NDU4YjVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcApAQCAtNTQsOSArNTQsMTEgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
KiBiaW5kaW5nLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKICAgICAgICAgewotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4
dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKKyAgICAgICAgICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgYmluZGlu
Zyk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgYmluZGluZy0+dGV4dHVyZUlkKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpKTsK
KyAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQs
IHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgpAQCAtODgsMTAgKzkwLDggQEAgcHVibGljOgogICAgICAgICBtX3RleFN1YkltYWdlLnNl
dFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
VGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRv
cik7Ci0KICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVyIGdvIG91dHNpZGUgdGhl
IGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlzIHJlcXVlc3RlZCBiZWNh
dXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2UuCiAgICAgICAgIEludFJl
Y3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAKaW5kZXggYmJkZjg5ZGFmMDE2OGNjODA0MTk2YmQ5ZjMxM2IzMGE4OWYz
MzFjNi4uYzk1ZGY5ZjI3MTA5YzZiNzRmNWJjZDQ0ZGY4ODA0ODliOGI2Nzc5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xNjEsMTMgKzE2MSwxMyBAQCBwcml2
YXRlOgogfTsKIAogCi1QYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJD
aHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1w
bCogb3duZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NSZWZQ
dHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IsIFBh
c3NPd25QdHI8VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc+IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
ckJpbmRpbmcpCiB7CiAjaWYgVVNFKFNLSUEpCiAgICAgaWYgKG93bmVyLT5zZXR0aW5ncygpLmFj
Y2VsZXJhdGVQYWludGluZyAmJiAhY29udGV4dFN1cHBvcnRzQWNjZWxlcmF0ZWRQYWludGluZyhj
b250ZXh0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKLSAgICBPd25Q
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXll
clJlbmRlcmVyQ2hyb21pdW0ob3duZXIsIGNvbnRleHQpKSk7CisgICAgT3duUHRyPExheWVyUmVu
ZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKG93bmVyLCBjb250ZXh0LCBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IsIGNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvckJpbmRpbmcpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0
aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNzUsMTAgKzE3NSwxNCBA
QCBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0SQogfQogCiBMYXllclJlbmRlcmVyQ2hyb21pdW06Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bShDQ0xheWVyVHJlZUhvc3RJbXBsKiBvd25lciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3I+IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VGV4dHVyZUFsbG9jYXRv
ckJpbmRpbmc+IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcpCiAgICAgOiBtX293bmVy
KG93bmVyKQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkKDApCisgICAgLCBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcihjb250
ZW50c1RleHR1cmVBbGxvY2F0b3IpCisgICAgLCBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmcoY29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZykKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9zaGFyZWRH
ZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCkBAIC0yOTcs
NyArMzAxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFZpc2libGUoYm9vbCB2
aXNpYmxlKQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJTdXJmYWNl
VGV4dHVyZXMoKQogewogICAgIGlmIChtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcikKLSAg
ICAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4
dHVyZXMobV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgICAgIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5kZWxldGVBbGxUZXh0dXJlcygpOwogfQogCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlld3BvcnRDaGFuZ2VkKCkKQEAgLTU4MSw3ICs1
ODUsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IEND
VGlsZURyYXdRdWFkKiBxdWFkKQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJv
Z3JhbSh1bmlmb3Jtcy5wcm9ncmFtKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51
bmlmb3JtMWkodW5pZm9ybXMuc2FtcGxlckxvY2F0aW9uLCAwKSk7CiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkp
OwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWQtPnRleHR1cmVJZCgpKSk7CisgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpLT50ZXh0dXJlSWQocXVhZC0+dGV4dHVy
ZUlkKCkpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9N
SU5fRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIo
KSkpOwogCkBAIC02NzMsNyArNjc3LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdDYW52YXNRdWFkKGNvbnN0IENDQ2FudmFzRHJhd1F1YWQqIHF1YWQpCiAgICAgY29uc3QgQ0ND
YW52YXNMYXllckltcGw6OlByb2dyYW0qIHByb2dyYW0gPSBjYW52YXNMYXllclByb2dyYW0oKTsK
ICAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkUwKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZC0+dGV4dHVyZUlkKCkpKTsKKyAgICBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCA9IHF1YWQtPmRvdWJsZUJ1ZmZlcmVkKCkgPyBjb250ZW50
c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCktPnRleHR1cmVJZChxdWFkLT50ZXh0dXJlSWQoKSkg
OiBxdWFkLT50ZXh0dXJlSWQoKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKIApA
QCAtNzIyLDcgKzcyNyw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hEcmF3
aW5nRnJhbWUoKQogICAgIHNpemVfdCBwcmVmZXJyZWRMaW1pdCA9IHJlY2xhaW1MaW1pdCA+IGNv
bnRlbnRzTWVtb3J5VXNlQnl0ZXMgPyByZWNsYWltTGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5
dGVzIDogMDsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVk
TWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQpOwotICAgIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9yZW5k
ZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAKICAgICBpZiAoc2V0dGluZ3MoKS5j
b21wb3NpdGVPZmZzY3JlZW4pCiAgICAgICAgIGNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5
KCk7CkBAIC04NjcsNyArODcxLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJl
bmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogICAgIGlmICghcmVu
ZGVyU3VyZmFjZS0+cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSh0aGlzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgcmVuZGVyU3VyZmFjZS0+Y29udGVudHNUZXh0dXJlKCktPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKG1fY29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9j
YXRvci5nZXQoKSk7CisgICAgcmVuZGVyU3VyZmFjZS0+Y29udGVudHNUZXh0dXJlKCktPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKG1fY29udGV4dC5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJV
RyApCiAgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9D
T01QTEVURSkgewpAQCAtOTM5LDE3ICs5NDMsMTUgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKIAogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCks
IG1fY29udGV4dC0+Zmx1c2goKSk7CiAKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdl
ciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVz
KHZpZXdwb3J0U2l6ZSgpKSwKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yID0g
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBt
X3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1p
dEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5
dGVzKHZpZXdwb3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwot
ICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
KTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQogICAgICAg
ICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRy
YWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKLSAgICBpZiAo
bV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgewotICAgICAgICBt
X2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7
CisgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24pCiAg
ICAgICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9y
YWdlRXh0KHRydWUpOwotICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBjODk2YjFkZjI2ZjNlZmVhYzExYjMyNzFjNTk1N2Ey
ZjRiZjU4ZTkyLi5hNWViZTZlMjQ3M2M4MjgzYWVmODE4YWRiYjVkMzJjNTUyYjM0MzdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBM
YXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsKIGNsYXNzIExh
eWVyUmVuZGVyZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRl
cmVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RJbXBsKiwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiwgUGFzc1JlZlB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+LCBQYXNzT3duUHRy
PFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nPik7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBpbiBv
cmRlciB0byBhbGxvdyB0aGUgTGF5ZXJSZW5kZXJlckNocm9taXVtIHRvIGRlc3RydWN0CiAgICAg
dm9pZCBjbG9zZSgpOwpAQCAtMTQwLDYgKzE0MCw3IEBAIHB1YmxpYzoKICAgICBUZXh0dXJlTWFu
YWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAgICBUZXh0dXJlQWxsb2NhdG9yKiBy
ZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3Vy
ZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KICAgICBUZXh0dXJlQWxsb2NhdG9yKiBjb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvci5nZXQoKTsgfQorICAgIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBjb250ZW50c1Rl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0
b3JCaW5kaW5nLmdldCgpOyB9CiAKICAgICBDQ0hlYWRzVXBEaXNwbGF5KiBoZWFkc1VwRGlzcGxh
eSgpIHsgcmV0dXJuIG1faGVhZHNVcERpc3BsYXkuZ2V0KCk7IH0KIApAQCAtMTU5LDcgKzE2MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0aW9u
LCBpbnQgYWxwaGFMb2NhdGlvbiwgaW50IHF1YWRMb2NhdGlvbik7CiAKIHByaXZhdGU6Ci0gICAg
TGF5ZXJSZW5kZXJlckNocm9taXVtKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKENDTGF5ZXJUcmVl
SG9zdEltcGwqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc1JlZlB0cjxUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3I+LCBQYXNzT3duUHRyPFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
Pik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKICAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IEND
RHJhd1F1YWQqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKQEAgLTIzMiw4
ICsyMzMsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpOYXRpdmVU
ZXh0dXJlUHJvZ3JhbT4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW07CiAKICAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyOwotICAg
IE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yOwotICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVBbGxvY2F0b3I7CisgICAgUmVmUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4g
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcjsKKyAgICBSZWZQdHI8VHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKKyAgICBPd25QdHI8VGV4
dHVyZUFsbG9jYXRvckJpbmRpbmc+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZzsK
IAogICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5PiBtX2hlYWRzVXBEaXNwbGF5OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMTc5ZmVhNmUxMmJmMTAzYzViMDc0MzVjZjI0
YTNhNDhmOGNkOTMyMy4uMTkxMzYyMDg3ZWI2ODg3MmExMWYwYmRlN2UxZTVmYzdlNzkzZWI1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBJbnRTaXplOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5h
Z2VyOwogCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gewpAQCAtNTAsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJl
Y3QgKi8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJl
LmNwcAppbmRleCA1YmIxOWZhODdkZWFkMjdjZTdlMWM3OTNhOGZjMzU4MmMwZDNmYmQxLi5iZDdl
MWY3ZTVhNDdhMDk4NWUwNzk5NzY1MDM4YTE3MWQyNmNjODExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuY3BwCkBAIC04OSwyMiArODksMjQgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZl
KCkKICAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogfQog
Ci12b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKIHsKLSAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rv
a2VuKSk7Ci0gICAgaWYgKCFtX3RleHR1cmVJZCkKLSAgICAgICAgbV90ZXh0dXJlSWQgPSBtX3Rl
eHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKKyAgICBB
U1NFUlQoY29udGV4dCA9PSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0b3IoKS0+Y29udGV4dCgp
KTsKKyAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV90ZXh0dXJlSWQpOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQor
dm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5nKQogewotICAgIGFsbG9jYXRlKGFs
bG9jYXRvcik7Ci0gICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKKyAgICB1bnNpZ25lZCB0ZXh0dXJlID0gYmluZGluZy0+
dGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKKyAgICBpZiAoIXRleHR1cmUpCisgICAgICAgIHRleHR1
cmUgPSBiaW5kaW5nLT5jcmVhdGVUZXh0dXJlKG1fdGV4dHVyZUlkLCBtX3NpemUsIG1fZm9ybWF0
KTsKKworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlKTsKIH0KIAotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0
dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQogewotICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7CisgICAgQVNT
RVJUKGNvbnRleHQgPT0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdG9yKCktPmNvbnRleHQoKSk7
CiAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwgMCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4
dHVyZS5oCmluZGV4IDc2ZDYyYThiYjg5YWQ2ZDQxZjYzMGZiNjRiNmU2OGM5YjgzZmI3YWUuLjJh
MDc1YjM3OTg5ZTY4ZDA1N2UyYjI3NjU3NTgyY2QxYjFiMGMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOwogCiBjbGFzcyBN
YW5hZ2VkVGV4dHVyZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFuYWdlZFRleHR1cmUp
OwpAQCAtNTUsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3RleHR1cmVNYW5h
Z2VyLT5pc1Byb3RlY3RlZChtX3Rva2VuKTsKICAgICB9CiAKLSAgICB2b2lkIGFsbG9jYXRlKFRl
eHR1cmVBbGxvY2F0b3IqKTsKLSAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBiaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyopOworICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHVuc2lnbmVkIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9ybWF0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggNTE2Y2VhOTBhN2RhNzNh
ZDJlMDUzOWNmODZjZTdiOWJlODE5YzQzMS4uYjYxMzBlMTNmYTNjMmM0YzNjOGQ5NTU5NTVkNTIx
NzQxNjBjZDRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtMzQsNiArMzQsMjQgQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQYXNzdGhyb3Vn
aFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5k
aW5nKCkKK3sKK30KKworUGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6flBhc3N0
aHJvdWdoVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKQoreworfQorCit1bnNpZ25lZCBQYXNzdGhy
b3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpjcmVhdGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1
cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgUGFzc3Rocm91Z2hUZXh0dXJlQWxs
b2NhdG9yQmluZGluZzo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlKQoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQogCiBuYW1lc3BhY2Ugewogc2l6ZV90IG1lbW9yeUxpbWl0
Qnl0ZXMoc2l6ZV90IHZpZXdwb3J0TXVsdGlwbGllciwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXplLCBzaXplX3QgbWluTWVnYWJ5dGVzLCBzaXplX3QgbWF4TWVnYWJ5dGVzKQpAQCAtOTQsMTIg
KzExMiwxMyBAQCBzaXplX3QgVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKGNvbnN0IElu
dFNpemUmIHNpemUsIEdDM0RlbnVtIHRleHR1cmVGb3JtYQogfQogCiAKLVRleHR1cmVNYW5hZ2Vy
OjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZl
cnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKK1RleHR1cmVNYW5hZ2Vy
OjpUZXh0dXJlTWFuYWdlcihQYXNzUmVmUHRyPFRleHR1cmVBbGxvY2F0b3I+IGFsbG9jYXRvciwg
c2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5
dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCiAgICAgOiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMobWF4
TWVtb3J5TGltaXRCeXRlcykKICAgICAsIG1fcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKQogICAgICwgbV9tZW1vcnlVc2VCeXRlcygwKQogICAgICwg
bV9tYXhUZXh0dXJlU2l6ZShtYXhUZXh0dXJlU2l6ZSkKICAgICAsIG1fbmV4dFRva2VuKDEpCisg
ICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCiB7CiB9CiAKQEAgLTE5Miw5ICsyMTEsNiBAQCB1
bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6cmVwbGFjZVRleHR1cmUoVGV4dHVyZVRva2VuIG5ld1Rv
a2VuLCBUZXh0dXJlSW5mbyBuZXdJbgogICAgICAgICBpZiAobmV3SW5mby5zaXplICE9IGluZm8u
c2l6ZSB8fCBuZXdJbmZvLmZvcm1hdCAhPSBpbmZvLmZvcm1hdCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBuZXdJbmZvLnRleHR1cmVJZCA9IGluZm8udGV4dHVyZUlkOwotI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgbmV3SW5mby5hbGxvY2F0b3IgPSBpbmZvLmFsbG9jYXRvcjsKLSNl
bmRpZgogICAgICAgICBtX3RleHR1cmVzLnJlbW92ZSh0b2tlbik7CiAgICAgICAgIG1fdGV4dHVy
ZUxSVVNldC5yZW1vdmUodG9rZW4pOwogICAgICAgICBtX3RleHR1cmVzLnNldChuZXdUb2tlbiwg
bmV3SW5mbyk7CkBAIC0yMTMsMjYgKzIyOSwxMCBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjphZGRU
ZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKICAgICBtX3RleHR1
cmVMUlVTZXQuYWRkKHRva2VuKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZp
Y3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBpZiAoYWxs
b2NhdG9yKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ldmljdGVkVGV4dHVy
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX2V2aWN0ZWRUZXh0dXJlc1tpXS50
ZXh0dXJlSWQpIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZXZp
Y3RlZFRleHR1cmVzW2ldLmFsbG9jYXRvciA9PSBhbGxvY2F0b3IpOwotI2VuZGlmCi0gICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRl
eHR1cmVJZCwgbV9ldmljdGVkVGV4dHVyZXNbaV0uc2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0u
Zm9ybWF0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBtX2V2aWN0ZWRU
ZXh0dXJlcy5jbGVhcigpOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZERlbGV0
ZUFsbFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgVGV4dHVyZU1h
bmFnZXI6OmRlbGV0ZUFsbFRleHR1cmVzKCkKIHsKICAgICB1bnByb3RlY3RBbGxUZXh0dXJlcygp
OwogICAgIHJlZHVjZU1lbW9yeVRvTGltaXQoMCk7Ci0gICAgZGVsZXRlRXZpY3RlZFRleHR1cmVz
KGFsbG9jYXRvcik7CiB9CiAKIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbW92ZVRleHR1cmUoVGV4
dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZvKQpAQCAtMjQzLDI4ICsyNDMsMTggQEAg
dm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRl
eHR1cmVJbmZvIGluZm8pCiAgICAgbV90ZXh0dXJlcy5yZW1vdmUodG9rZW4pOwogICAgIEFTU0VS
VChtX3RleHR1cmVMUlVTZXQuY29udGFpbnModG9rZW4pKTsKICAgICBtX3RleHR1cmVMUlVTZXQu
cmVtb3ZlKHRva2VuKTsKLSAgICBFdmljdGlvbkVudHJ5IGVudHJ5OwotICAgIGVudHJ5LnRleHR1
cmVJZCA9IGluZm8udGV4dHVyZUlkOwotICAgIGVudHJ5LnNpemUgPSBpbmZvLnNpemU7Ci0gICAg
ZW50cnkuZm9ybWF0ID0gaW5mby5mb3JtYXQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGVudHJ5LmFs
bG9jYXRvciA9IGluZm8uYWxsb2NhdG9yOwotI2VuZGlmCi0gICAgbV9ldmljdGVkVGV4dHVyZXMu
YXBwZW5kKGVudHJ5KTsKKyAgICBtX2FsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShpbmZvLnRleHR1
cmVJZCwgaW5mby5zaXplLCBpbmZvLmZvcm1hdCk7CiB9CiAKLXVuc2lnbmVkIFRleHR1cmVNYW5h
Z2VyOjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJl
VG9rZW4gdG9rZW4pCit1bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRl
eHR1cmVUb2tlbiB0b2tlbikKIHsKICAgICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4
dHVyZXMuZmluZCh0b2tlbik7CiAgICAgQVNTRVJUKGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpOwog
ICAgIFRleHR1cmVJbmZvKiBpbmZvID0gJml0LmdldCgpLT5zZWNvbmQ7CiAgICAgQVNTRVJUKGlu
Zm8tPmlzUHJvdGVjdGVkKTsKIAotICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IGFsbG9jYXRvci0+
Y3JlYXRlVGV4dHVyZShpbmZvLT5zaXplLCBpbmZvLT5mb3JtYXQpOworICAgIHVuc2lnbmVkIHRl
eHR1cmVJZCA9IG1fYWxsb2NhdG9yLT5jcmVhdGVUZXh0dXJlKGluZm8tPnNpemUsIGluZm8tPmZv
cm1hdCk7CiAgICAgaW5mby0+dGV4dHVyZUlkID0gdGV4dHVyZUlkOwotI2lmbmRlZiBOREVCVUcK
LSAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Ci0jZW5kaWYKICAgICByZXR1cm4gdGV4
dHVyZUlkOwogfQogCkBAIC0yOTQsOSArMjg0LDYgQEAgYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVx
dWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGYK
ICAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKICAgICBpbmZvLnRleHR1cmVJZCA9IDA7CiAgICAg
aW5mby5pc1Byb3RlY3RlZCA9IHRydWU7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGluZm8uYWxsb2Nh
dG9yID0gMDsKLSNlbmRpZgogICAgIC8vIEF2b2lkIGNodXJuaW5nIGJ5IHJldXNpbmcgdGhlIHRl
eHR1cmUgaWYgaXQgaXMgYWJvdXQgdG8gYmUgcmVjbGFpbWVkIGFuZAogICAgIC8vIGl0IGhhcyB0
aGUgc2FtZSBzaXplIGFuZCBmb3JtYXQgYXMgdGhlIHJlcXVlc3RpbmcgdGV4dHVyZS4KICAgICBp
ZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX3ByZWZlcnJlZE1l
bW9yeUxpbWl0Qnl0ZXMpIHsKQEAgLTMwNSw2ICsyOTIsNyBAQCBib29sIFRleHR1cmVNYW5hZ2Vy
OjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWdu
ZWQgZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGFkZFRleHR1cmUodG9r
ZW4sIGluZm8pOworICAgIHRleHR1cmVJZCA9IGFsbG9jYXRlVGV4dHVyZSh0b2tlbik7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmluZGV4IGE2NmU5ZDUzNmFhOWNm
YWY3MmYwN2JiNjdjZDAwNDgyNzdkNGNjMTAuLjRmMzA5NmI1NGNhYzNlMmFjNzY1YWUzZjI5OTk0
Njk2ZGM2YzkxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAtMzIsMjYgKzMyLDU1IEBACiAj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBpbnQgVGV4dHVyZVRva2VuOwogCi1j
bGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMg
UmVmQ291bnRlZDxUZXh0dXJlQWxsb2NhdG9yPiB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+VGV4
dHVyZUFsbG9jYXRvcigpIHsgfQorCiAgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJl
KGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0p
ID0gMDsKIAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0K
KyNpZm5kZWYgTkRFQlVHCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgp
IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorfTsKKworY2xhc3MgVGV4dHVyZUFsbG9jYXRvckJpbmRp
bmcgeworcHVibGljOgorICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwg
Y29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IHRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlKSA9IDA7Cit9OworCitjbGFzcyBQYXNzdGhyb3Vn
aFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYXNzdGhyb3VnaFRleHR1cmVBbGxv
Y2F0b3JCaW5kaW5nPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkpOworICAgIH0KKyAgICB2aXJ0
dWFsIH5QYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCk7CisKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYs
IEdDM0RlbnVtIGZvcm1hdCk7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWdu
ZWQgdGV4dHVyZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0dXJlSWQodW5zaWduZWQgdGV4
dHVyZSkgeyByZXR1cm4gdGV4dHVyZTsgfQorCitwcml2YXRlOgorICAgIFBhc3N0aHJvdWdoVGV4
dHVyZUFsbG9jYXRvckJpbmRpbmcoKTsKIH07CiAKIGNsYXNzIFRleHR1cmVNYW5hZ2VyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8VGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShzaXplX3QgbWF4TWVtb3J5TGlt
aXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJl
U2l6ZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRlKFBhc3NS
ZWZQdHI8VGV4dHVyZUFsbG9jYXRvcj4gYWxsb2NhdG9yLCBzaXplX3QgbWF4TWVtb3J5TGltaXRC
eXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIobWF4
TWVtb3J5TGltaXRCeXRlcywgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNp
emUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFuYWdlcihhbGxvY2F0
b3IsIG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRl
eHR1cmVTaXplKSk7CiAgICAgfQogCiAgICAgLy8gQWJzb2x1dGUgbWF4aW11bSBsaW1pdCBmb3Ig
dGV4dHVyZSBhbGxvY2F0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4KQEAgLTc5LDI1ICsxMDgsMjUg
QEAgcHVibGljOgogICAgIHZvaWQgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICBib29sIGlz
UHJvdGVjdGVkKFRleHR1cmVUb2tlbik7CiAKLSAgICB1bnNpZ25lZCBhbGxvY2F0ZVRleHR1cmUo
VGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVUb2tlbik7Ci0gICAgdm9pZCBkZWxldGVFdmljdGVk
VGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOworICAgIHVuc2lnbmVkIGFsbG9jYXRlVGV4dHVy
ZShUZXh0dXJlVG9rZW4pOwogCi0gICAgdm9pZCBldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRl
eHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIGRlbGV0ZUFsbFRleHR1cmVzKCk7CiAKICAgICB2
b2lkIHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKICAgICBzaXplX3QgY3VycmVudE1lbW9y
eVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQogCisjaWZuZGVm
IE5ERUJVRworICAgIFRleHR1cmVBbGxvY2F0b3IgKmFsbG9jYXRvcigpIHsgcmV0dXJuIG1fYWxs
b2NhdG9yLmdldCgpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKLSAgICBUZXh0dXJlTWFuYWdlcihz
aXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0
ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgVGV4dHVyZU1hbmFnZXIoUGFzc1JlZlB0cjxU
ZXh0dXJlQWxsb2NhdG9yPiwgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogCiAgICAgc3RydWN0
IFRleHR1cmVJbmZvIHsKICAgICAgICAgSW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBm
b3JtYXQ7CiAgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKICAgICAgICAgYm9vbCBpc1Byb3Rl
Y3RlZDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cjsKLSNlbmRpZgogICAgIH07CiAKICAgICB2b2lkIGFkZFRleHR1cmUoVGV4dHVyZVRva2VuLCBU
ZXh0dXJlSW5mbyk7CkBAIC0xMTMsMTcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1f
bWVtb3J5VXNlQnl0ZXM7CiAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CiAgICAgVGV4dHVyZVRv
a2VuIG1fbmV4dFRva2VuOwotCi0gICAgc3RydWN0IEV2aWN0aW9uRW50cnkgewotICAgICAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAgIEludFNpemUgc2l6ZTsKLSAgICAgICAgR0MzRGVu
dW0gZm9ybWF0OwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yOwotI2VuZGlmCi0gICAgfTsKLQotICAgIFZlY3RvcjxFdmljdGlvbkVudHJ5PiBtX2V2
aWN0ZWRUZXh0dXJlczsKKyAgICBSZWZQdHI8VGV4dHVyZUFsbG9jYXRvcj4gbV9hbGxvY2F0b3I7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCmluZGV4IGE4
YTU0OTI5YTJmY2FiMTkzNGVmNjQ0OTFkN2JmMDA3Yzc5ODgxNzguLjkxNzQ3NDAzMjMzMDRlNzc0
ZWI2MGYzN2VjMTViZDY0YzU0ZGEzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFs
bG9jYXRvci5oCkBAIC0zNCwxNSArMzQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3IgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBjcmVhdGUo
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IoY29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihjb250ZXh0KSk7CiAgICAgfQogICAgIHZp
cnR1YWwgflRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcigpOwogCiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSBmb3JtYXQpOwogCisjaWZuZGVmIE5ERUJVRworICAgIHZpcnR1YWwgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyNlbmRp
ZgorCiAgICAgc2l6ZV90IGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudE1lbW9yeVVzZUJ5dGVzOyB9CiAKICAgICBlbnVtIFRleHR1cmVVc2FnZUhpbnQgeyBB
bnksIEZyYW1lYnVmZmVyQXR0YWNobWVudCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFk
LmNwcAppbmRleCA1NmY1MDgzYTU1ZmMzYTQxYTYxYjNlMDQwMmM1ZmZhYjZiZGY3YTExLi43ZGEz
ZTg3ZTcyZmIxNTAxYmQ2NDhhY2ZmZjFjNGQ3MDRkYzk3MTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Nh
bnZhc0RyYXdRdWFkLmNwcApAQCAtMjksMTYgKzI5LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc093blB0cjxDQ0NhbnZhc0RyYXdRdWFkPiBDQ0NhbnZhc0RyYXdRdWFkOjpjcmVh
dGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVt
dWx0aXBsaWVkQWxwaGEpCitQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IENDQ2FudmFzRHJh
d1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIGhhc0FscGhh
LCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgYm9vbCBkb3VibGVCdWZmZXJlZCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDQ2FudmFzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFk
UmVjdCwgdGV4dHVyZUlkLCBoYXNBbHBoYSwgcHJlbXVsdGlwbGllZEFscGhhKSk7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ0NhbnZhc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJl
Y3QsIHRleHR1cmVJZCwgaGFzQWxwaGEsIHByZW11bHRpcGxpZWRBbHBoYSwgZG91YmxlQnVmZmVy
ZWQpKTsKIH0KIAotQ0NDYW52YXNEcmF3UXVhZDo6Q0NDYW52YXNEcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
dW5zaWduZWQgdGV4dHVyZUlkLCBib29sIGhhc0FscGhhLCBib29sIHByZW11bHRpcGxpZWRBbHBo
YSkKK0NDQ2FudmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGJvb2wg
ZG91YmxlQnVmZmVyZWQpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3
UXVhZDo6Q2FudmFzQ29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJl
SWQpCiAgICAgLCBtX2hhc0FscGhhKGhhc0FscGhhKQogICAgICwgbV9wcmVtdWx0aXBsaWVkQWxw
aGEocHJlbXVsdGlwbGllZEFscGhhKQorICAgICwgbV9kb3VibGVCdWZmZXJlZChkb3VibGVCdWZm
ZXJlZCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oCmluZGV4IGFhODVkYmQx
MzRkZTgwNDEzNmJhNjM5MDI5ZTY5MWNjYjU5YWIyZmYuLjZjM2NjY2YyOWYxZThjN2ZlZWFiNzZi
ZDgxNDgxOGQ4YzU5YzE2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmgKQEAgLTM1
LDE4ICszNSwyMCBAQCBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDQ2FudmFzRHJhd1F1YWQg
OiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NDYW52YXNE
cmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NDYW52YXNEcmF3UXVh
ZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2ln
bmVkIHRleHR1cmVfaWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0NhbnZhc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZV9pZCwgYm9v
bCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGJvb2wgZG91YmxlQnVmZmVyZWQp
OwogCiAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gIG1fdGV4dHVyZUlk
OyB9CiAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICBtX2hhc0FscGhhOyB9CiAg
ICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25zdCB7IHJldHVybiAgbV9wcmVtdWx0aXBs
aWVkQWxwaGE7IH0KKyAgICBib29sIGRvdWJsZUJ1ZmZlcmVkKCkgY29uc3QgeyByZXR1cm4gIG1f
ZG91YmxlQnVmZmVyZWQ7IH0KIAogcHJpdmF0ZToKLSAgICBDQ0NhbnZhc0RyYXdRdWFkKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQs
IGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKTsKKyAgICBDQ0NhbnZhc0Ry
YXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVk
IHRleHR1cmVfaWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBib29s
IGRvdWJsZUJ1ZmZlcmVkKTsKICAgICAKICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKICAgICBi
b29sIG1faGFzQWxwaGE7CiAgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBib29s
IG1fZG91YmxlQnVmZmVyZWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1w
bC5jcHAKaW5kZXggMmJiM2VmZjIyNzg5NTMxNTFjYmE3YWMxZGZjYzE0MTdkNDVlY2Y5Ni4uMGQ2
MTNhYjY4YWQ2MmI4NzI2Y2RlNzgzMWVmZDBkYTZmMTQzY2ZkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2FudmFzTGF5ZXJJbXBsLmNwcApAQCAtNDIsNiArNDIsNyBAQCBDQ0NhbnZhc0xheWVySW1wbDo6
Q0NDYW52YXNMYXllckltcGwoaW50IGlkKQogICAgICwgbV90ZXh0dXJlSWQoMCkKICAgICAsIG1f
aGFzQWxwaGEodHJ1ZSkKICAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHRydWUpCisgICAgLCBt
X2RvdWJsZUJ1ZmZlcmVkKGZhbHNlKQogewogfQogCkBAIC01Miw3ICs1Myw3IEBAIENDQ2FudmFz
TGF5ZXJJbXBsOjp+Q0NDYW52YXNMYXllckltcGwoKQogdm9pZCBDQ0NhbnZhc0xheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUpCiB7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBi
b3VuZHMoKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKENDQ2FudmFzRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX3RleHR1cmVJZCwgbV9oYXNBbHBoYSwgbV9wcmVt
dWx0aXBsaWVkQWxwaGEpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoQ0NDYW52YXNEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hhc0FscGhh
LCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV9kb3VibGVCdWZmZXJlZCkpOwogfQogCiB2b2lkIEND
Q2FudmFzTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQg
aW5kZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKaW5kZXggOTEyNmE3
ZDQ0NTAxZTYzMjViNWVmZDRiNTdjYmE5ZTQ2YmM4YTc1YS4uZjA2MDNmZTFiZWY0M2M3NzEwZTVk
YmUxMmM2NGE4YTNmODYwZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCkBA
IC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCBp
ZCkgeyBtX3RleHR1cmVJZCA9IGlkOyB9CiAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGhhc0Fs
cGhhKSB7IG1faGFzQWxwaGEgPSBoYXNBbHBoYTsgfQogICAgIHZvaWQgc2V0UHJlbXVsdGlwbGll
ZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKSB7IG1fcHJlbXVsdGlwbGllZEFscGhhID0g
cHJlbXVsdGlwbGllZEFscGhhOyB9CisgICAgdm9pZCBzZXREb3VibGVCdWZmZXJlZChib29sIGRv
dWJsZUJ1ZmZlcmVkKSB7IG1fZG91YmxlQnVmZmVyZWQgPSBkb3VibGVCdWZmZXJlZDsgfQorCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IENDQ2FudmFzTGF5ZXJJbXBsKGludCk7CiAKQEAgLTU4LDYg
KzYwLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKICAgICBib29sIG1f
aGFzQWxwaGE7CiAgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBib29sIG1fZG91
YmxlQnVmZmVyZWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmlu
ZGV4IDcwOGJjZmY4ODAxYjc4ODgxMDYwYjUyOTg1OGIyODliOTUzMjhhZWMuLmFiN2E2ZGE5OWY2
YzY1MGIwNzU0YjYzMzA2YjY4ZTA2MzI2YzY5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERp
c3BsYXkuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3
KCkKICAgICB7CiAgICAgICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2Fu
dmFzKTsKIAotICAgICAgICBtX2h1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIG1fbGF5
ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1f
aHVkVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCk7CiAgICAgICAgIGJvb2wgdXBsb2FkZWRW
aWFNYXAgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fdXNlTWFwU3ViRm9yVXBsb2FkcykgewogICAg
ICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CkBAIC0xNDgs
NyArMTQ4LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KCkKICAgICBjb25zdCBQcm9n
cmFtKiBwcm9ncmFtID0gbV9sYXllclJlbmRlcmVyLT5oZWFkc1VwRGlzcGxheVByb2dyYW0oKTsK
ICAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RTApKTsKLSAgICBtX2h1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIG1fbGF5ZXJSZW5k
ZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgbV9odWRUZXh0dXJl
LT5iaW5kVGV4dHVyZShjb250ZXh0KTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJv
Z3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5p
Zm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYTJmYjgyMmM1NmJkYjM1ZmNj
ZDNiOTlhNGQxNGRlZWE4ZDkxMzI4Yi4uNTBlYTY0NWE2OGI0NDcyNzRhYzI1NjQ5YzdiODRhMzZi
OTcyMzI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC04NSw2ICs4NSw3
IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAgICAgICAgbV9wcm94eSA9
IENDVGhyZWFkUHJveHk6OmNyZWF0ZSh0aGlzKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9wcm94
eSA9IENDU2luZ2xlVGhyZWFkUHJveHk6OmNyZWF0ZSh0aGlzKTsKKwogICAgIG1fcHJveHktPnN0
YXJ0KCk7CiAKICAgICBpZiAoIW1fcHJveHktPmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkpCkBA
IC05OCw5ICs5OSwxMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiAgICAg
Ly8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUgY2FwYWJpbGl0eS4K
ICAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1fc2V0dGluZ3MucGFydGlh
bFRleHR1cmVVcGRhdGVzICYmIG1fcHJveHktPnBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0
eSgpOwogCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAorICAg
IG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobV9wcm94
eS0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0
ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJl
U2l6ZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE1LDExICsxMTgsMTIgQEAgQ0NM
YXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKICAgICBudW1MYXllclRyZWVJbnN0YW5j
ZXMtLTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNP
bkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisKICAgICBpZiAobV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyKQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRl
QWxsVGV4dHVyZXMoYWxsb2NhdG9yKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
LT5kZWxldGVBbGxUZXh0dXJlcygpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
QW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCkBAIC0xNDAsNyArMTQ0LDYgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKQogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1p
dFRvIiwgdGhpcywgMCk7CiAKICAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1l
bW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6
ZSgpKSk7Ci0gICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVy
ZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKIH0KIAogLy8gVGhpcyBm
dW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8gYW4gaW1wbCB0cmVlLiBXaGVu
IG1vZGlmeWluZwpAQCAtMzAzLDEwICszMDYsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlk
QmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fcHJveHkt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5jb250ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIp
Ci0gICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+ZXZpY3RBbmREZWxldGVBbGxUZXh0
dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBjb250
ZW50c1RleHR1cmVNYW5hZ2VyKCktPmRlbGV0ZUFsbFRleHR1cmVzKCk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0
dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKTsKLSAgICAgICAg
Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICB9CiAKICAgICAvLyBFbnN1cmUgdGhh
dCB0aGUgZHJvcHBlZCB0aWxlcyBhcmUgcHJvcGFnYXRlZCB0byB0aGUgaW1wbCB0cmVlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBkOTJhZGMxNjZhZTY3ZTNhZjA1NDI5NTEwYzk3
ZDNmZTM2ODM1MDlmLi4xZDUxYjJhMGUzMWIwMzJiNmEyYjc2ZDRlNzZmYTJmMWEyZjY0YzU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vzcyk7CiAgICAg
dm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3
RnJhbWUoKTsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQt
PmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQotICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0
dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBkZWxldGVDb250
ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKCk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKQEAgLTE4MSw2ICsxODEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoZmxvYXQgbWluU2NhbGUsIGZs
b2F0IG1heFNjYWxlKTsKIAogICAgIFRleHR1cmVNYW5hZ2VyKiBjb250ZW50c1RleHR1cmVNYW5h
Z2VyKCkgY29uc3Q7CisgICAgVGV4dHVyZUFsbG9jYXRvciogdGV4dHVyZUFsbG9jYXRvcigpIGNv
bnN0OwogCiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAg
ICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCA2YzJjNzQyNmZjMGI5NTAwMWRlZWU4YTcwOTRlYzljZDhmNTBjOTVmLi42
YjY3MWY4MmE5NzBmOTU1MzRhZGJlMjljNmI1YjYxNjYyNTM0NzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjg5LDYgKzI4OSwxMSBAQCBUZXh0dXJlQWxs
b2NhdG9yKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBj
b25zdAogICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpIDogMDsKIH0KIAorVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcq
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKSBj
b25zdAoreworICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKSA6IDA7Cit9CisKIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIg
JiYgIWlzQ29udGV4dExvc3QoKSk7CkBAIC0zNDEsMTcgKzM0NiwxNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgICAgICBtX2xheWVyUmVu
ZGVyZXItPnNldFZpc2libGUodmlzaWJsZSk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0SW1w
bDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCkKK2Jvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgUGFzc1JlZlB0cjxUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3I+IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciwgUGFzc093blB0
cjxUZXh0dXJlQWxsb2NhdG9yQmluZGluZz4gY29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGlu
ZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyOwot
ICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBj
b250ZXh0KTsKKyAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVh
dGUodGhpcywgY29udGV4dCwgY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLCBjb250ZW50c1RleHR1
cmVBbGxvY2F0b3JCaW5kaW5nKTsKIAogICAgIC8vIElmIGNyZWF0aW9uIGZhaWxlZCwgYW5kIHdl
IGhhZCBhc2tlZCBmb3IgYWNjZWxlcmF0ZWQgcGFpbnRpbmcsIGRpc2FibGUgYWNjZWxlcmF0ZWQg
cGFpbnRpbmcKICAgICAvLyBhbmQgdHJ5IGNyZWF0aW5nIHRoZSByZW5kZXJlciBhZ2Fpbi4KICAg
ICBpZiAoIWxheWVyUmVuZGVyZXIgJiYgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcpIHsK
ICAgICAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBmYWxzZTsKIAotICAgICAg
ICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29u
dGV4dCk7CisgICAgICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNy
ZWF0ZSh0aGlzLCBjb250ZXh0LCBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IsIGNvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvckJpbmRpbmcpOwogICAgIH0KIAogICAgIGlmIChtX2xheWVyUmVuZGVyZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZGViYTZjODZiOGJjMmNm
YWFkNDQ2NDlkMjIzOTBmZGVjNmYxYWJlMi4uMGEyYTlhMjYwMzk5NWExMWExYjQyMTQ0ZDUwMTdi
NTY3Yjk4Mjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNDIs
NyArNDIsOCBAQCBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDUGFnZVNjYWxlQW5p
bWF0aW9uOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07
Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOworY2xhc3MgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc7
CitjbGFzcyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I7CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllczsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCkBAIC04MywxMSArODQs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IGZy
YW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQogCi0gICAgYm9vbCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7Cisg
ICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiwgUGFzc1JlZlB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+LCBQYXNzT3duUHRyPFRl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nPik7CiAgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7CiAgICAg
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJl
bmRlcmVyLmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwogICAgIFRleHR1cmVBbGxvY2F0b3IqIGNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0OworICAgIFRleHR1cmVBbGxvY2F0b3JCaW5k
aW5nKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkgY29uc3Q7CiAKICAgICB2b2lk
IHN3YXBCdWZmZXJzKCk7CiAgICAgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaAppbmRleCA5MzdjMTU0ZmY2OWJhODUzYmJmYzkzNDU2ZDc3NjY3MTBjNzBhMjI0Li5jYTZk
NzdmMzFhZTlkYTI5MWFjMzYyMTI0NjA4YzBhN2FiNmMwYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC00
Myw2ICs0Myw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBzdHJ1Y3QgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllczsKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0
dXJlTWFuYWdlcjsKIAogLy8gQWJzdHJhY3QgY2xhc3MgcmVzcG9uc2libGUgZm9yIHByb3h5aW5n
IGNvbW1hbmRzIGZyb20gdGhlIG1haW4tdGhyZWFkIHNpZGUgb2YKQEAgLTgzLDYgKzg0LDggQEAg
cHVibGljOgogICAgIC8vIHVwZGF0ZXMgYXJlIHJlcXVpcmVkLgogICAgIHZpcnR1YWwgYm9vbCBw
YXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFs
IFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpID0gMDsKKwogICAg
IC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRo
cmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggYTRjOTI1NjlkN2Zm
Mzk3ZmE1MDNkZTNiODY5YWNlMTAyYWMzMTQ1MS4uNzNkNGI3Nzc2ZGNhZWUwYTQ4YjZmNzJkY2Ri
OTY5MmNkZjcwMDk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0xOTEs
NyArMTkxLDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckkKIAogICAgIEdMQyhjb250ZXh0M0Qs
IGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsK
ICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0gICAgbV9jb250ZW50c1RleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQzRCwgbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1
cmVBbGxvY2F0b3IoKSk7CisgICAgbV9jb250ZW50c1RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRl
eHQzRCk7CiAKICAgICBpZiAoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAg
ICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkUxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CmluZGV4IDcyYmVjMmE3MTY2NGFmNDNjZDY0ZDAxNGQyOGI4NDI2NTA5NWIyMDMuLjkxOWVkODVh
ODI2YjRjMTcxNDQ2NjkwYmYxODM3YjEwODYzYTFiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAKICAgICB7CiAgICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAgICBib29sIG9rID0gbV9sYXllclRyZWVI
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CisgICAgICAgIGJvb2wg
b2sgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
LCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShjb250ZXh0KSwgUGFzc3Rocm91Z2hU
ZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKCkpOwogICAgICAgICBpZiAob2spCiAgICAg
ICAgICAgICBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXll
clRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICByZXR1
cm4gb2s7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bW1pdCgpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmcoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVwZGF0ZXIp
OwogICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUo
bV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwpAQCAtMjAyLDEyICsyMDIsMTcgQEAgdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhy
ZWFkKCkpOwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0g
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICB9CiAgICAgbV9sYXllclRyZWVI
b3N0ID0gMDsKIH0KIAorVGV4dHVyZUFsbG9jYXRvciogQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkKK3sKKyAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0SW1w
bCk7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcigpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUu
Zy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1Npbmds
ZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNDIsOCArMjQ3LDcg
QEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRJZk5lZWRlZCgpCiAg
ICAgICAgIGJvb2wgb2s7CiAgICAgICAgIHsKICAgICAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsOwotICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50
c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcigpKTsKLSAgICAgICAgICAgIG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CisgICAgICAgICAgICBvayA9IG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKGNvbnRleHQpLCBQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0
b3JCaW5kaW5nOjpjcmVhdGUoKSk7CiAgICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAg
ICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDRmYWEyMjk5OTEyYWVjOWM0ZTZhYjRi
YTcwMjdkODFjODA2ZDQ1ZWUuLjZiMDIwNzY4ZmMyMmJmNGM0ZjAwYzYwOTBkOTUwNjE5ZWUyMWVh
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTU1LDYgKzU1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCk7CiAgICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENs
aWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxl
dGVPbkltcGxUaHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRi
OGNjODcyYWIuLjc2NTBlMzk3YzA0ODZlNGQ0ZTM2YzkxN2IwZDU0OGE3NTJlNmFhYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNywxMSArMzcsMTEgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQ1RleHR1cmVVcGRhdGVy
OjpDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLSAgICA6IG1f
YWxsb2NhdG9yKGFsbG9jYXRvcikKK0NDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIo
VGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIGFsbG9jYXRvckJpbmRpbmcpCisgICAgOiBtX2FsbG9j
YXRvckJpbmRpbmcoYWxsb2NhdG9yQmluZGluZykKICAgICAsIG1fZW50cnlJbmRleCgwKQogewot
ICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yQmluZGluZyk7
CiB9CiAKIENDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKQEAgLTY5LDcgKzY5
LDcgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHNpemVfdCBjb3VudCkKICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUlu
ZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwogICAgIGZvciAoOyBtX2VudHJ5SW5kZXgg
PCBtYXhJbmRleDsgKyttX2VudHJ5SW5kZXgpIHsKICAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5
ID0gbV9lbnRyaWVzW21fZW50cnlJbmRleF07Ci0gICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBk
YXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5t
X2Rlc3RSZWN0KTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQs
IG1fYWxsb2NhdG9yQmluZGluZywgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0
KTsKICAgICB9CiAKICAgICBpZiAobWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzlhYzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJl
ZmNjZWMxNWJiMzAuLjViYTAwMzZjNTIzNzhhZWYxOWRlOTNmNTE0ZjRiNTg3OGE5NzkxMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTMzLDExICszMywxMSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLWNsYXNzIFRleHR1cmVB
bGxvY2F0b3I7CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yQmluZGluZzsKIAogY2xhc3MgQ0NUZXh0
dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgQ0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2Nh
dG9yKik7CisgICAgQ0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yQmluZGluZyopOwog
ICAgIH5DQ1RleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFy
KCk7CiAKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IoKSB7IHJldHVybiBtX2FsbG9j
YXRvcjsgfQorICAgIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBhbGxvY2F0b3JCaW5kaW5nKCkg
eyByZXR1cm4gbV9hbGxvY2F0b3JCaW5kaW5nOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFVw
ZGF0ZUVudHJ5IHsKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW50UmVjdCBt
X2Rlc3RSZWN0OwogICAgIH07CiAKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsK
KyAgICBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyogbV9hbGxvY2F0b3JCaW5kaW5nOwogICAgIHNp
emVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCAyMGFjNTMxODBlOWFjYzE0NmQxNzY1
NzFjMmY2YjQ3ZDBkNTlkZjNmLi45ZGUyOGNmMGI2NmZkYWZkOTBjNzM3MDYxMTNkMDgzZTJmNGE3
ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjYsOCArMjYsMTAgQEAKIAog
I2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkRlZmVycmVkVGV4dHVy
ZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
VHJhY2VFdmVudC5oIgorI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgpAQCAtNjcs
NiArNjksNyBAQCBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCog
bGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50
T25JbXBsVGhyZWFkKDApCiAgICAgLCBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVh
ZCgwKQogICAgICwgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQo
ZmFsc2UpCisgICAgLCBtX2RlZmVycmVkVGV4dHVyZUFsbG9jYXRvcihEZWZlcnJlZFRleHR1cmVB
bGxvY2F0b3I6OmNyZWF0ZSgpKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpD
Q1RocmVhZFByb3h5IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAg
LTM4OCw2ICszOTEsMTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0
KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBpZiAobV9hbmlt
YXRlUmVxdWVzdGVkKQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgLy8gQ29weSBh
bmQgY2xlYXIgZGVsZXRlZCB0ZXh0dXJlIHZlY3RvciBmb3IgcGFzc2luZyB0byBpbXBsIHRocmVh
ZC4KKyAgICBPd25QdHI8VmVjdG9yPHVuc2lnbmVkPiA+IGRlbGV0ZWRUZXh0dXJlcyA9IGFkb3B0
UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KG1fZGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLT5kZWxl
dGVkVGV4dHVyZXMoKSkpOworICAgIG1fZGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLT5kZWxldGVk
VGV4dHVyZXMoKS5jbGVhcigpOworCiAgICAgLy8gTm90aWZ5IHRoZSBpbXBsIHRocmVhZCB0aGF0
IHRoZSBiZWdpbkZyYW1lIGhhcyBjb21wbGV0ZWQuIFRoaXMgd2lsbAogICAgIC8vIGJlZ2luIHRo
ZSBjb21taXQgcHJvY2Vzcywgd2hpY2ggaXMgYmxvY2tpbmcgZnJvbSB0aGUgbWFpbiB0aHJlYWQn
cwogICAgIC8vIHBvaW50IG9mIHZpZXcsIGJ1dCBhc3luY2hyb25vdXNseSBwZXJmb3JtZWQgb24g
dGhlIGltcGwgdGhyZWFkLApAQCAtMzk1LDcgKzQwMiw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2lu
VGltCiAgICAgewogICAgICAgICBUUkFDRV9FVkVOVCgiY29tbWl0IiwgdGhpcywgMCk7CiAgICAg
ICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIENDUHJveHk6OmltcGxU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
JmNvbXBsZXRpb24pKSk7CisgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2so
Y3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLCBkZWxl
dGVkVGV4dHVyZXMucmVsZWFzZSgpKSk7CiAgICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOwogICAg
IH0KIApAQCAtNDA0LDcgKzQxMSwxMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFT
U0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBz
ZXF1ZW5jZU51bWJlcik7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBs
ZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQorVGV4dHVyZUFs
bG9jYXRvciogQ0NUaHJlYWRQcm94eTo6Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkKK3sKKyAg
ICByZXR1cm4gbV9kZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7Cit9CisKK3ZvaWQgQ0NU
aHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiBjb21wbGV0aW9uLCBQYXNzT3duUHRyPFZlY3Rvcjx1bnNpZ25lZD4gPiBkZWxldGVkVGV4
dHVyZXMpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21w
bGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0
aW9uRXZlbnRPbkltcGxUaHJlYWQpOwpAQCAtNDE3LDkgKzQyOSwxMCBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbgogICAgIH0KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKKyAgICBtX2NvbW1pdERlbGV0ZWRUZXh0dXJlc09uSW1wbFRocmVh
ZCA9IGRlbGV0ZWRUZXh0dXJlczsKIAogICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
ID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKSkpOwogICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAKICAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CkBAIC00NjQsNiAr
NDc3LDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIAog
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7CiAKKyAgICAvLyBEZWxl
dGUgdGV4dHVyZXMgbm8gbG9uZ2VyIHVzZWQgYWZ0ZXIgY29tbWl0IGZpbmlzaGVkLgorICAgIFZl
Y3Rvcjx1bnNpZ25lZD46Oml0ZXJhdG9yIGl0ID0gbV9jb21taXREZWxldGVkVGV4dHVyZXNPbklt
cGxUaHJlYWQtPmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IG1fY29tbWl0RGVsZXRlZFRleHR1
cmVzT25JbXBsVGhyZWFkLT5lbmQoKTsgaXQrKykKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpLT5kZWxldGVUZXh0dXJlKCppdCk7
CisKICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZCA9IHRy
dWU7CiAKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZC0+c2lnbmFsKCk7
CkBAIC01NDYsMTEgKzU2NCwxNSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXll
clJlbmRlcmVyT25JbXBsVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZQogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVh
ZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UmVmKGNvbnRleHRQdHIpKTsKLSAgICAqaW5p
dGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNvbnRleHQpOworICAgIFJlZlB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IGNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRl
KGNvbnRleHQpOworICAgIE93blB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nPiBj
b250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nID0gRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9y
QmluZGluZzo6Y3JlYXRlKGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcik7CisgICAgKmluaXRpYWxp
emVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihjb250ZXh0LCBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IsIGNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvckJpbmRpbmcucmVsZWFzZSgpKTsKICAgICBpZiAoKmluaXRpYWxpemVTdWNjZWVkZWQpIHsK
ICAgICAgICAgKmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy0+dXNpbmdTd2FwQ29t
cGxldGVDYWxsYmFjaykKICAgICAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRN
YXhGcmFtZXNQZW5kaW5nKDIpOworICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLT51c2luZ1RleHR1
cmVTdG9yYWdlRXh0ZW5zaW9uKQorICAgICAgICAgICAgY29udGVudHNUZXh0dXJlQWxsb2NhdG9y
LT5zZXRVc2VUZXh0dXJlU3RvcmFnZUV4dCh0cnVlKTsKIAogICAgICAgICBtX2lucHV0SGFuZGxl
ck9uSW1wbFRocmVhZCA9IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7CiAgICAgICAgICpjb21wb3NpdG9ySWRlbnRpZmllciA9IG1faW5wdXRIYW5kbGVy
T25JbXBsVGhyZWFkLT5pZGVudGlmaWVyKCk7CkBAIC01NjMsNyArNTg1LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiBjb21wbGV0aW8KIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJU
cmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25J
bXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJl
YWQoKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgbV9pbnB1dEhhbmRs
ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC5jbGVh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IGExMWI1Mjc4NTk5MzFjZmI5OGY4NzI0
YTUxMjQzYTA5YjRlY2MzYjkuLjkyN2IyN2YyMjE1MGMxNjI5NDI0ZjYzNjZkODkxMzI0MTM2YWM5
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgQ0NT
Y2hlZHVsZXI7CiBjbGFzcyBDQ1Njb3BlZFRocmVhZFByb3h5OwogY2xhc3MgQ0NUZXh0dXJlVXBk
YXRlcjsKIGNsYXNzIENDVGhyZWFkOworY2xhc3MgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOwog
CiBjbGFzcyBDQ1RocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQsIENDU2NoZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTYzLDYgKzY0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCk7CiAgICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNv
bnN0OworICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9u
CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpOwpA
QCAtOTQsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxDQ1RocmVh
ZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAg
ICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7Ci0gICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAgICB2b2lkIGJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25QdHI8VmVjdG9y
PHVuc2lnbmVkPiA+IGRlbGV0ZWRUZXh0dXJlcyk7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tP
bkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJp
bmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJ
bXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CkBAIC0xMzMsNiArMTM1LDEwIEBA
IHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRp
ZENvbW1pdEFuZERyYXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRG
cmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKKworICAgIFJlZlB0cjxEZWZl
cnJlZFRleHR1cmVBbGxvY2F0b3I+IG1fZGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOworCisgICAg
T3duUHRyPFZlY3Rvcjx1bnNpZ25lZD4gPiBtX2NvbW1pdERlbGV0ZWRUZXh0dXJlc09uSW1wbFRo
cmVhZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggMzQ0
ZDc0MjQ1ZjhlYzFmNWZkYjZjMmNiMjFkY2RiOTFjYWI0OTE4Mi4uYmI0OTZlNjE4YzEwMWUxOTAz
ODU3MDlkMzNiY2ZhODVlNjBhYTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpiaW5kQ29udGVudHNU
ZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCA9IHRpbGUgPyB0aWxlLT50ZXh0dXJlSWQoKSA6IDA7CiAgICAg
QVNTRVJUKHRleHR1cmVJZCk7CiAKLSAgICBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpOworICAgIGxh
eWVyUmVuZGVyZXItPmNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIGxheWVyUmVuZGVyZXItPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmco
KS0+dGV4dHVyZUlkKHRleHR1cmVJZCkpOwogfQogCiB2b2lkIENDVGlsZWRMYXllckltcGw6OmR1
bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IDA5YWZiMDhkM2VkZGUxNTMxZTVhY2Zi
YTZhMDE1ODE5Mzg4YzUxNWYuLmU0NGY0MTEzNTljMDg3NDllNjAyZTViNDNiYTUwOTQ1ZmI5YjRh
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0xODksOCArMTg5LDcg
QEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVUb1RleHR1cmUoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyLAogewogICAgIFRleHR1cmUmIHRleHR1cmUgPSBtX3Rl
eHR1cmVzW2luZGV4XTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVu
ZGVyZXItPmNvbnRleHQoKTsKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBsYXll
clJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpOwotICAgIHRleHR1cmUu
bV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgIHRleHR1cmUu
bV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0KTsKICAgICBHQzNEZW51bSBmb3JtYXQgPSB0
ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7CiAgICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4
dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA4NjgzYjg0YjAz
Y2EzNmZmY2Q4NGMyNWRiNjE5NTRmNmUyNjY0ZGMyLi4wNDVmZTgzNWVkZTdiNWZjMDgyOWI3NGVk
ZWI5ZjM3MWJiZDNhODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1
ZUxheWVycykKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKICAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBC
bGVuZFN0YXRlVHJhY2tlckNvbnRleHQoKSksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9y
VXNlT25UaGlzVGhyZWFkKTsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihjb250ZXh0KTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250
ZXh0LCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShjb250ZXh0KSwgUGFzc3Rocm91
Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKCkpOwogICAgIG1faG9zdEltcGwtPnNl
dFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiAg
ICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAgICAgUmVzaGFwZVRyYWNr
ZXJDb250ZXh0KiByZXNoYXBlVHJhY2tlciA9IG5ldyBSZXNoYXBlVHJhY2tlckNvbnRleHQoKTsK
ICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKHJl
c2hhcGVUcmFja2VyKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3Rs
eVRvSG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJl
YWQpOwotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwor
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKGNvbnRleHQpLCBQYXNzdGhyb3VnaFRleHR1cmVBbGxv
Y2F0b3JCaW5kaW5nOjpjcmVhdGUoKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXpl
KEludFNpemUoMTAsIDEwKSk7CiAKICAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9w
dFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwpAQCAtNTE2LDcgKzUxNiw3IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFn
ZVJlY3QpCiAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dh
cEVuYWJsZWQgPSB0cnVlOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBsYXllclRy
ZWVIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7
Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQp
OworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
LCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShjb250ZXh0KSwgUGFzc3Rocm91Z2hU
ZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKCkpOwogICAgIGxheWVyVHJlZUhvc3RJbXBs
LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MDAsIDUwMCkpOwogCiAgICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGYwYjVjNDExYjY1NmFlZGU3NTk1NzEwZTRkOGNmZDdk
MjRkYjUzM2MuLmIwMDA5ZDU1ODA2ZjQyNTc0NmQ3MDA0MTdjMjZkZjdhYzBhNDQ4NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtNjQsOCArNjQsMjUgQEAgcHVibGljOgogCiBjbGFzcyBNb2Nr
VGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKIHB1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNb2NrVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1vY2tUZXh0dXJlQWxsb2NhdG9yKGNvbnRleHQpKTsKKyAgICB9CisKICAgICBN
T0NLX01FVEhPRDIoY3JlYXRlVGV4dHVyZSwgdW5zaWduZWQoY29uc3QgSW50U2l6ZSYsIEdDM0Rl
bnVtKSk7CiAgICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRleHR1cmUsIHZvaWQodW5zaWduZWQsIGNv
bnN0IEludFNpemUmLCBHQzNEZW51bSkpOworCisjaWZuZGVmIE5ERUJVRworICAgIHZpcnR1YWwg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0K
KyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1vY2tUZXh0dXJlQWxsb2NhdG9yKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
bV9jb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKQEAgLTkwLDE4ICsxMDcsMTkgQEAgcHJv
dGVjdGVkOgogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgbWFpbk1vY2sgPSAqc3RhdGljX2Nh
c3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RX
ZWJHcmFwaGljc0NvbnRleHQzRChtYWluQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBNb2NrQ2Fu
dmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBs
Q29udGV4dC5nZXQoKSkpOwogCi0gICAgICAgIE1vY2tUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRv
ck1vY2s7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmYWxsb2NhdG9yTW9jayk7
CisgICAgICAgIFJlZlB0cjxNb2NrVGV4dHVyZUFsbG9jYXRvcj4gYWxsb2NhdG9yTW9jayA9IE1v
Y2tUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoaW1wbENvbnRleHQpOworICAgICAgICBPd25QdHI8
VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc+IGFsbG9jYXRvckJpbmRpbmcgPSBQYXNzdGhyb3VnaFRl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpjcmVhdGUoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKGFsbG9jYXRvckJpbmRpbmcuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IEludFNp
emUgc2l6ZSgzMDAsIDE1MCk7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlU2l6ZSA9
IHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0OwotICAgICAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtYXhUZXh0
dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUsIG1heFRleHR1cmVTaXplKTsKKyAgICAgICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
YWxsb2NhdG9yTW9jay5nZXQoKSwgbWF4VGV4dHVyZVNpemUsIG1heFRleHR1cmVTaXplLCBtYXhU
ZXh0dXJlU2l6ZSk7CiAKICAgICAgICAgaWYgKHRocmVhZGVkKQogICAgICAgICAgICAgQ0NQcm94
eTo6c2V0SW1wbFRocmVhZChuZXcgRmFrZUNDVGhyZWFkKTsKIAotICAgICAgICBjb25zdCBXZWJH
TElkIGJhY2tUZXh0dXJlSWQgPSAxOwotICAgICAgICBjb25zdCBXZWJHTElkIGZyb250VGV4dHVy
ZUlkID0gMjsKKyAgICAgICAgY29uc3QgV2ViR0xJZCBmcm9udFRleHR1cmVJZCA9IDE7CisgICAg
ICAgIGNvbnN0IFdlYkdMSWQgYmFja1RleHR1cmVJZCA9IDI7CiAgICAgICAgIGNvbnN0IFdlYkdM
SWQgZmJvSWQgPSAzOwogICAgICAgICB7CiAgICAgICAgICAgICBJblNlcXVlbmNlIHNlcXVlbmNl
OwpAQCAtMTE0LDcgKzEzMiw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAgLldp
bGxPbmNlKFJldHVybihmYm9JZCkpOwogCiAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRleHR1
cmUgYW5kIGRvIHRoZSBjb3B5IChvbiB0aGUgaW1wbCB0aHJlYWQpLgotICAgICAgICAgICAgICAg
IEVYUEVDVF9DQUxMKGFsbG9jYXRvck1vY2ssIGNyZWF0ZVRleHR1cmUoc2l6ZSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEpKQorICAgICAgICAgICAgICAgIEVYUEVDVF9DQUxMKCphbGxvY2F0b3JN
b2NrLmdldCgpLCBjcmVhdGVUZXh0dXJlKHNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkK
ICAgICAgICAgICAgICAgICAgICAgLldpbGxPbmNlKFJldHVybihmcm9udFRleHR1cmVJZCkpOwog
ICAgICAgICAgICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2NrLCBiaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgZnJvbnRUZXh0dXJlSWQpKTsKICAgICAgICAgICAgICAg
ICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgZmJvSWQpKTsKQEAgLTEyNiw3ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwobWFpbk1vY2ssIGRlbGV0ZUZyYW1lYnVmZmVyKGZi
b0lkKSk7CiAKICAgICAgICAgICAgICAgICAvLyBUZWFyZG93biBUZXh0dXJlTWFuYWdlci4KLSAg
ICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChhbGxvY2F0b3JNb2NrLCBkZWxldGVUZXh0dXJlKGZy
b250VGV4dHVyZUlkLCBzaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpOworICAgICAgICAg
ICAgICAgIEVYUEVDVF9DQUxMKCphbGxvY2F0b3JNb2NrLmdldCgpLCBkZWxldGVUZXh0dXJlKGZy
b250VGV4dHVyZUlkLCBzaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTE1Niw3ICsxNzQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IH0KICAgICAgICAgY2FudmFzLmNsZWFyKCk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1
Y2VNZW1vcnlUb0xpbWl0KDApOwotICAgICAgICB0ZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3Rl
ZFRleHR1cmVzKCZhbGxvY2F0b3JNb2NrKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAKaW5kZXggN2MwODhk
YWJjOGRmZjJkMzMyMzc3ZTM1YzBiYTU2MTAxNzBiYmRmZC4uNzZhZmI0MjYyMzgzMTFjNjk3OWE5
YTc2NmZlZWE5MmYyMjRhMTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UZXh0dXJlTWFuYWdlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcApAQCAtMzUsMTEgKzM1LDE3IEBAIG5hbWVzcGFj
ZSB7CiAKIGNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0
b3IgewogcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZha2VUZXh0dXJlQWxsb2NhdG9y
PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWtlVGV4dHVy
ZUFsbG9jYXRvcigpKTsKKyAgICB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJl
KGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgfQor
Citwcml2YXRlOgorICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yKCkgeyB9CiB9OwogCi1GYWtlVGV4
dHVyZUFsbG9jYXRvciBmYWtlVGV4dHVyZUFsbG9jYXRvcjsKIGNvbnN0IEludFNpemUgdGV4dHVy
ZVNpemUoMjU2LCAyNTYpOwogY29uc3QgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBOwogCkBAIC01MCwxNiArNTYsMTMgQEAgc2l6ZV90IHRleHR1cmVzTWVt
b3J5U2l6ZShzaXplX3QgdGV4dHVyZUNvdW50KQogCiBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiBjcmVhdGVUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMsIHNpemVfdCBwcmVmZXJy
ZWRUZXh0dXJlcykKIHsKLSAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0dXJl
c01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4
dHVyZXMpLCAxMDI0KTsKKyAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShGYWtlVGV4
dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKCksIHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyks
IHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIDEwMjQpOwogfQogCiBib29s
IHJlcXVlc3RUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBUZXh0dXJlVG9rZW4gdG9r
ZW4pCiB7CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwotICAgIGJvb2wgcmVzdWx0ID0gbWFuYWdl
ci0+cmVxdWVzdFRleHR1cmUodG9rZW4sIHRleHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0LCB0ZXh0
dXJlSWQpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIG1hbmFnZXItPmFsbG9jYXRlVGV4dHVy
ZSgmZmFrZVRleHR1cmVBbGxvY2F0b3IsIHRva2VuKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBtYW5hZ2VyLT5yZXF1ZXN0VGV4dHVyZSh0b2tlbiwgdGV4dHVyZVNpemUsIHRleHR1
cmVGb3JtYXQsIHRleHR1cmVJZCk7CiB9CiAKIFRFU1QoVGV4dHVyZU1hbmFnZXJUZXN0LCByZXF1
ZXN0VGV4dHVyZUluUHJlZmVycmVkTGltaXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAwZGFjM2FhZjhj
NjdiZmRhYTEwZmUxYTFiNmJkZDJkNzc1OTQyYjI0Li41MDkwNTg0MjQyOTRiYjlkOTg5N2Y0ZTJm
YjQwOGU4NjBjZTg1N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTQwLDggKzQwLDE1IEBAIG5hbWVz
cGFjZSB7CiAKIGNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxv
Y2F0b3IgewogcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZha2VUZXh0dXJlQWxsb2Nh
dG9yPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWtlVGV4
dHVyZUFsbG9jYXRvcigpKTsKKyAgICB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0
dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsg
fQorCitwcml2YXRlOgorICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yKCkgeyB9CiB9OwogCiBjbGFz
cyBGYWtlVGlsZWRMYXllckNocm9taXVtOwpAQCAtNTMsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0
dXJlKCkgeyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikgeyB9CiAgICAgfTsKIAogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBh
cmVDb3VudCgwKSB7IH0KQEAgLTE2MywxMyArMTcwLDEzIEBAIHZvaWQgRmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QKIAogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIHsKLSAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEZha2VU
ZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoKSwgNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBs
KDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBPd25QdHI8
VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc+IGFsbG9jYXRvckJpbmRpbmcgPSBQYXNzdGhyb3VnaFRl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpjcmVhdGUoKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXIoYWxsb2NhdG9yQmluZGluZy5nZXQoKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4K
ICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTE5OCwxNCArMjA1
LDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAKIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogewotICAgIE93
blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoRmFrZVRleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZSgpLCA0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkp
OwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwotCisgICAgT3duUHRyPFRl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nPiBhbGxvY2F0b3JCaW5kaW5nID0gUGFzc3Rocm91Z2hUZXh0
dXJlQWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKCk7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKGFsbG9jYXRvckJpbmRpbmcuZ2V0KCkpOwogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMC4gU2V0dXAgNXg1IHRpbGVzIHdpdGggb25lIHZpc2libGUgdGlsZSBpbiB0aGUgY2VudGVy
LgogICAgIEludFNpemUgY29udGVudEJvdW5kcyg1MDAsIDUwMCk7CiAgICAgSW50UmVjdCBjb250
ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKQEAgLTI2NCwxNCArMjcw
LDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkp
CiAgICAgLy8gV2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3Qs
IHNvIHdlIHdpbGwgcnVuIG91dCBvZiBtZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBp
bnQgbWVtb3J5TGltaXQgPSA0ICogMTAwICogMTAwOyAvLyAyIHRpbGVzLCA0IGJ5dGVzIHBlciBw
aXhlbC4KIAotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCAvIDIsIDEwMjQpOwor
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKEZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoKSwgbWVtb3J5TGltaXQsIG1l
bW9yeUxpbWl0IC8gMiwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAg
ICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBG
YWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0
dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9j
YXRvcik7Ci0KKyAgICBPd25QdHI8VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc+IGFsbG9jYXRvckJp
bmRpbmcgPSBQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpjcmVhdGUoKTsKKyAg
ICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoYWxsb2NhdG9yQmluZGluZy5nZXQoKSk7CiAgICAg
Ly8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0
aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNl
dFZpc2libGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwpAQCAtMzAwLDEzICszMDUsMTMgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKIAogVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiB7Ci0gICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShGYWtlVGV4dHVy
ZUFsbG9jYXRvcjo6Y3JlYXRlKCksIDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAg
ICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXll
ckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7
CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgT3duUHRyPFRleHR1
cmVBbGxvY2F0b3JCaW5kaW5nPiBhbGxvY2F0b3JCaW5kaW5nID0gUGFzc3Rocm91Z2hUZXh0dXJl
QWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKCk7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KGFsbG9jYXRvckJpbmRpbmcuZ2V0KCkpOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4
MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125893</attachid>
            <date>2012-02-07 11:54:43 -0800</date>
            <delta_ts>2012-10-08 16:11:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76295-20120207145441.patch</filename>
            <type>text/plain</type>
            <size>104505</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFmN2NlYzkwY2Y0OWMx
ZTg1MmFlYjhiYTBkNTE4OWRiOWI1YzQ3Zi4uYmNiOWYyYTVmOGI0M2ExMzk2Mzg0ZmJhY2NkYjA0
MTkzOTk3ZjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAxMi0wMi0wNyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmVwbGFjZSBUZXh0dXJlTWFuYWdlciBldmljdGlvbiBsaXN0IHdpdGggZGVmZXJyZWQgdGV4dHVy
ZSBhbGxvY2F0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluc3RlYWQgb2YgaW1wbGljaXRseSBkZWZlcnJpbmcgdGV4dHVyZSBjcmVhdGlvbi9kZWxl
dGlvbiBpbnNpZGUKKyAgICAgICAgVGV4dHVyZU1hbmFnZXIgYWRkIGFuIGV4cGxpY2l0IGRlZmVy
cmVkIHRleHR1cmUgYWxsb2NhdG9yIHRoYXQgdXNlcworICAgICAgICBmYWtlIHRleHR1cmUgSURz
IGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBkZWZlciB0ZXh0dXJlIGNyZWF0aW9uCisgICAgICAg
IHVudGlsIHVzZSBvbiBpbXBsIHRocmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAg
ICAgKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
OgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRl
eHR1cmVBbGxvY2F0b3I6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6On5EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGVUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRl
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5k
aW5nOjpEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6On5EZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3JCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmc6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yQmluZGluZzo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZl
cnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjp0ZXh0dXJlSWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlZFRleHR1cmVz
KToKKyAgICAgICAgKERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKToKKyAgICAg
ICAgKFRleHR1cmVFbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3Q2FudmFzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6
CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYW5h
Z2VkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKE1hbmFnZWRUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXNzdGhyb3VnaFRl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3Rocm91Z2hUZXh0
dXJlQWxsb2NhdG9yQmluZGluZzo6flBhc3N0aHJvdWdoVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6
Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXNzdGhyb3VnaFRleHR1cmVBbGxv
Y2F0b3JCaW5kaW5nOjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YW5hZ2VyOjpUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdl
cjo6cmVwbGFjZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmRl
bGV0ZUFsbFRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpyZW1v
dmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvcjo6flRleHR1cmVBbGxvY2F0b3Ip
OgorICAgICAgICAoVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
QWxsb2NhdG9yOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvckJp
bmRpbmc6On5UZXh0dXJlQWxsb2NhdG9yQmluZGluZyk6CisgICAgICAgIChQYXNzdGhyb3VnaFRl
eHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3N0aHJvdWdoVGV4
dHVyZUFsbG9jYXRvckJpbmRpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXNzdGhy
b3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjp0ZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChUZXh0dXJlTWFuYWdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdG9yKToKKyAgICAgICAgKFRl
eHR1cmVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNvbnRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJhd1F1YWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaDoKKyAgICAg
ICAgKENDQ2FudmFzRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVh
ZDo6ZG91YmxlQnVmZmVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFzTGF5
ZXJJbXBsOjpDQ0NhbnZhc0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xh
eWVySW1wbDo6c2V0RG91YmxlQnVmZmVyZWQpOgorICAgICAgICAoQ0NDYW52YXNMYXllckltcGwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09u
SW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29t
bWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGlk
QmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250
ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2luZ2xlVGhyZWFkUHJveHk6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3Jl
YXRlQ29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1NpbmdsZVRocmVhZFByb3h5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVw
ZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YWxsb2NhdG9yQmluZGluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNv
bXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaWxlZExheWVySW1wbDo6YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVUb1RleHR1cmUpOgorCiAy
MDEyLTAyLTA3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBhZGQgZ2VuZXJpYyBzdXBwb3J0IGZvciB1bmRvLWluZyBET00gZWRp
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDIxM2RjZmM0MzBiMDMyN2M2ZmRkNGY5
NzJkMmMwMjRjZjYwMjg1ZDYuLjg3Mzk2YTE4NDU3OWUwZWZmZjNmMDBiOGQwZDAzOGVhNGZkMTk1
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDIt
MDcgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIFJlcGxhY2UgVGV4dHVyZU1hbmFnZXIgZXZpY3Rpb24gbGlzdCB3aXRoIGRlZmVycmVk
IHRleHR1cmUgYWxsb2NhdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUcmFjayBjaGFuZ2VzIHRvIFRleHR1cmVNYW5hZ2VyLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNsZVRl
c3QpOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHA6CisgICAgICAgIChX
VEY6OkZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUpOgorICAgICAgICAoRmFrZVRleHR1cmVB
bGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpGYWtlVGV4dHVyZUFsbG9jYXRvcjo6RmFrZVRleHR1
cmVBbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpUZXh0dXJlTWFuYWdlclRlc3Q6OlRleHR1cmVN
YW5hZ2VyVGVzdCk6CisgICAgICAgIChXVEY6OlRleHR1cmVNYW5hZ2VyVGVzdDo6Y3JlYXRlVGV4
dHVyZU1hbmFnZXIpOgorICAgICAgICAoV1RGOjpUZXh0dXJlTWFuYWdlclRlc3Q6OnJlcXVlc3RU
ZXh0dXJlKToKKyAgICAgICAgKFRleHR1cmVNYW5hZ2VyVGVzdCk6CisgICAgICAgICogdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VUZXh0dXJlQWxs
b2NhdG9yOjpjcmVhdGUpOgorICAgICAgICAoRmFrZVRleHR1cmVBbGxvY2F0b3IpOgorICAgICAg
ICAoV1RGOjpGYWtlVGV4dHVyZUFsbG9jYXRvcjo6RmFrZVRleHR1cmVBbGxvY2F0b3IpOgorICAg
ICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAyMDEyLTAyLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTA2OTM1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA3YTM0MGY4YjYyZmYxNDFlYTdiZmQ1NDcz
OTc1MTc2OTVjZTYzMzQuLjRkMDQwNWI2MTlkODAwMzgxNDNhZjg5YzRlZjEzZjk4ZDRkYTQzZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTMxNDEsNiArMzE0MSw4IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNzRm9udExvYWRpbmcu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNz
Rm9udExvYWRpbmcubW0nLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJv
bWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2Fj
aGVBbmRyb2lkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBkOTdlNTJhZWRlMGY5ODBhZGExNWRlMGExNGExZDI4ZDg2
YTFlODguLjM3YzI1NGFmMDdjNGZkZWQ0ZDBmNDIwMjkyMjE3MGU5NjZiNzRjZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00
Niw5ICs0NiwxMCBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+
VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvckJpbmRpbmcqIGJpbmRpbmcsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVS
ZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
CisgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBiaW5kaW5nKTsKKyAgICB0ZXh0
dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKQEAgLTk4LDExICs5OSwxMCBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgICAgICAq
cmVzdWx0aW5nT3BhcXVlUmVjdCA9IGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+b3BhcXVl
UmVnaW9uKCkuYXNSZWN0KCk7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIFBsYXRmb3JtQ2FudmFz
OjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwogCi0gICAgdGV4dHVyZS0+YmluZFRleHR1
cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIu
cGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5m
b3JtYXQoKSwgY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0ZTE2MjI5NWI4NmUwMDg5M2MzM2VmMDNkNGI2MmQy
YzFlNTJiZDVmLi4wNzgzMmUxYmFjYTE3ZWNlNjAzMzU4MmVmMWE4MjRkNTQyZmRmMjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0
dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRl
eGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVu
dHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7Ci0gICAgdm9pZCB1cGRhdGVU
ZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2Vk
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgTWFu
YWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCmluZGV4IGUyYWI3OTgzODZmY2NmMDcwMTNkNjZiYjNmMjhmZTdkOGY0ZWMyN2Mu
LmJjYzRhZGFmYzcxZWQ4YmE4NjU5MzYwNTVlMDQwYjMwOTgzNDIzYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4
dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VSZWN0
KTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yQmluZGluZyogYmluZGluZywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShj
b250ZXh0LCBhbGxvY2F0b3IpOworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwg
YmluZGluZyk7CiAgICAgQVNTRVJUKG1fcGl4ZWxEYXRhLmdldCgpKTsKICAgICB0ZXh0dXJlVXBk
YXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBk
ZXN0UmVjdCwgbV9waXhlbERhdGEuZ2V0KCkpOwogICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggMWM1NjRjZGMxODNlYTQ5NTkxZjY5MDZlZmViZDNhOGQ5YjVmODBj
Yy4uZTRkYjk1YjMwY2QwMTgyMzVjZDFhOTE4NzNmYWIyOGQ0OTI0NzNkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1
cmU+KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1
cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTRmZTM1YTU4MDVmNmZkMDdmMzM3NDM0ZWY0NTk1
ZjQ3OTU0Nzc2MC4uM2JkNzY5Y2FkZGJmOTgxOWIwMGZkZTM0NzEzOGVkZjJlOTQ3ZDQ1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAg
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQKICAgICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9m
cm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250VGV4dHVyZS0+
YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSk7CisgICAgbV9mcm9udFRl
eHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yQmluZGluZygpKTsK
IAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZibykpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5m
cmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fYmFja1RleHR1cmVJZCwgMCkpOwpAQCAtMTU0LDYgKzE1NCw3IEBAIHZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikK
ICAgICBDYW52YXNMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKIAogICAg
IENDQ2FudmFzTGF5ZXJJbXBsKiBjYW52YXNMYXllciA9IHN0YXRpY19jYXN0PENDQ2FudmFzTGF5
ZXJJbXBsKj4obGF5ZXIpOworICAgIGNhbnZhc0xheWVyLT5zZXREb3VibGVCdWZmZXJlZChtX3Vz
ZURvdWJsZUJ1ZmZlcmluZyk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQogICAgICAg
ICBjYW52YXNMYXllci0+c2V0VGV4dHVyZUlkKG1fZnJvbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSk7
CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmYyMzhkODA3ZGJjNzZiZjA2YjY4YzQ0YjdiZTU2N2U3ZDg3M2M5NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Rl
ZmVycmVkVGV4dHVyZUFsbG9jYXRvci5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkRlZmVycmVkVGV4dHVyZUFsbG9j
YXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RlZmVycmVkVGV4dHVyZUFsbG9jYXRv
cjo6RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yKCkKKyAgICA6IG1fbmV4dFRleHR1cmVJZCgxKQor
eworfQorCitEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6On5EZWZlcnJlZFRleHR1cmVBbGxvY2F0
b3IoKQoreworfQorCit1bnNpZ25lZCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRl
eHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQoreworICAgIHJldHVy
biBtX25leHRUZXh0dXJlSWQrKzsKK30KKwordm9pZCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3I6
OmRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplLCBH
QzNEZW51bSBmb3JtYXQpCit7CisgICAgbV9kZWxldGVkVGV4dHVyZXMuYXBwZW5kKHRleHR1cmVJ
ZCk7Cit9CisKK0RlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OkRlZmVycmVkVGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmcoUGFzc1JlZlB0cjxUZXh0dXJlQWxsb2NhdG9yPiBhbGxvY2F0b3Ip
CisgICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCit7Cit9CisKK0RlZmVycmVkVGV4dHVyZUFs
bG9jYXRvckJpbmRpbmc6On5EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkKK3sKKyAg
ICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsKKyAgICBmb3Ig
KDsgaXQgIT0gbV90ZXh0dXJlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbV9hbGxvY2F0b3ItPmRl
bGV0ZVRleHR1cmUoaXQtPnNlY29uZC50ZXh0dXJlSWQsIGl0LT5zZWNvbmQuc2l6ZSwgaXQtPnNl
Y29uZC5mb3JtYXQpOworfQorCit1bnNpZ25lZCBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5k
aW5nOjpjcmVhdGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNpemUmIHNpemUs
IEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBtX2FsbG9jYXRv
ci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpOworICAgIFRleHR1cmVFbnRyeSBlbnRyeTsK
KyAgICBlbnRyeS50ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CisgICAgZW50cnkuc2l6ZSA9IHNpemU7
CisgICAgZW50cnkuZm9ybWF0ID0gZm9ybWF0OworICAgIG1fdGV4dHVyZXMuYWRkKHRleHR1cmUs
IGVudHJ5KTsKKyAgICByZXR1cm4gdGV4dHVyZUlkOworfQorCit2b2lkIERlZmVycmVkVGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmc6OmRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSkKK3sKKyAg
ICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0ZXh0dXJlKTsKKyAg
ICBpZiAoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSkgeworICAgICAgICBtX2FsbG9jYXRvci0+ZGVs
ZXRlVGV4dHVyZShpdC0+c2Vjb25kLnRleHR1cmVJZCwgaXQtPnNlY29uZC5zaXplLCBpdC0+c2Vj
b25kLmZvcm1hdCk7CisgICAgICAgIG1fdGV4dHVyZXMucmVtb3ZlKGl0KTsKKyAgICB9Cit9CisK
K3Vuc2lnbmVkIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OnRleHR1cmVJZCh1bnNp
Z25lZCB0ZXh0dXJlKQoreworICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJl
cy5maW5kKHRleHR1cmUpOworICAgIGlmIChpdCA9PSBtX3RleHR1cmVzLmVuZCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBpdC0+c2Vjb25kLnRleHR1cmVJZDsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVm
ZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9EZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2VkYjYx
ZjIwNjZhYWFiMjM2YTcxMThhNzkwOGUzMTA1MTY4NGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRUZXh0dXJlQWxs
b2NhdG9yLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGVmZXJy
ZWRUZXh0dXJlQWxsb2NhdG9yX2gKKyNkZWZpbmUgRGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yX2gK
KworI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUZXh0dXJlIGFsbG9jYXRvciB0aGF0IGdl
bmVyYXRlcyB1c2VzIGZha2UgdGV4dHVyZSBJRHMgYW5kIGFsbG93cworLy8gcmVhbCB0ZXh0dXJl
IElEIGNyZWF0aW9uIHRvIGJlIGRlZmVycmVkLgorY2xhc3MgRGVmZXJyZWRUZXh0dXJlQWxsb2Nh
dG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERlZmVycmVkVGV4dHVyZUFsbG9jYXRvcik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgfQorICAg
IHZpcnR1YWwgfkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvcigpOworCisgICAgdmlydHVhbCB1bnNp
Z25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOworICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNp
emUmLCBHQzNEZW51bSBmb3JtYXQpOworCisgICAgVmVjdG9yPHVuc2lnbmVkPiYgZGVsZXRlZFRl
eHR1cmVzKCkgeyByZXR1cm4gbV9kZWxldGVkVGV4dHVyZXM7IH0KKworcHJvdGVjdGVkOgorICAg
IERlZmVycmVkVGV4dHVyZUFsbG9jYXRvcigpOworCisgICAgdW5zaWduZWQgbV9uZXh0VGV4dHVy
ZUlkOworCisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2RlbGV0ZWRUZXh0dXJlczsKK307CisKKy8v
IEJpbmRzIHRleHR1cmUgSURzIGdlbmVyYXRlZCBieSBhIGRlZmVycmVkIHRleHR1cmUgYWxsb2Nh
dG9yIHRvCisvLyB0ZXh0dXJlIElEcyBnZW5lcmF0ZWQgYnkgYSBkaWZmZXJlbnQgdGV4dHVyZSBh
bGxvY2F0b3IuCitjbGFzcyBEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nIDogcHVibGlj
IFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nPiBjcmVhdGUoUGFzc1JlZlB0cjxUZXh0
dXJlQWxsb2NhdG9yPiBhbGxvY2F0b3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IERlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoYWxsb2NhdG9yKSk7CisgICAgfQor
ICAgIHZpcnR1YWwgfkRlZmVycmVkVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKTsKKworICAgIHZp
cnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0gZm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1
bnNpZ25lZCB0ZXh0dXJlKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHRleHR1cmVJZCh1bnNpZ25l
ZCB0ZXh0dXJlKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEZWZlcnJlZFRleHR1cmVBbGxv
Y2F0b3JCaW5kaW5nKFBhc3NSZWZQdHI8VGV4dHVyZUFsbG9jYXRvcj4pOworCisgICAgc3RydWN0
IFRleHR1cmVFbnRyeSB7CisgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICAgICAgSW50
U2l6ZSBzaXplOworICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CisgICAgfTsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8dW5zaWduZWQsIFRleHR1cmVFbnRyeT4gVGV4dHVyZU1hcDsKKyAgICBUZXh0dXJl
TWFwIG1fdGV4dHVyZXM7CisgICAgUmVmUHRyPFRleHR1cmVBbGxvY2F0b3I+IG1fYWxsb2NhdG9y
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDE5
ZGZhMmYwMDZjOTg4NDc3MGU2NzZjNDU4NWJlOTQ2NzEzNGYzYjMuLmVjMzY1MGZjOTM5Yjg2NjQ1
MjJjODVjMjliNmVkYzJiZjg1OGViYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApA
QCAtMzgsMTEgKzM4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBQYXNzT3du
UHRyPFNrQ2FudmFzPiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIGJp
bmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgLy8gQWxsb2NhdGUgc28gdGhhdCB3
ZSBoYXZlIGEgdmFsaWQgdGV4dHVyZSBpZC4KLSAgICB0ZXh0dXJlLT5hbGxvY2F0ZShhbGxvY2F0
b3IpOworICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IGJpbmRpbmctPnRleHR1cmVJZCh0ZXh0dXJl
LT50ZXh0dXJlSWQoKSk7CisgICAgaWYgKCF0ZXh0dXJlSWQpCisgICAgICAgIHRleHR1cmVJZCA9
IGJpbmRpbmctPmNyZWF0ZVRleHR1cmUodGV4dHVyZS0+dGV4dHVyZUlkKCksIHRleHR1cmUtPnNp
emUoKSwgdGV4dHVyZS0+Zm9ybWF0KCkpOwogCiAgICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBj
b250ZXh0LT5nckNvbnRleHQoKTsKICAgICBJbnRTaXplIGNhbnZhc1NpemUgPSB0ZXh0dXJlLT5z
aXplKCk7CkBAIC01MSw3ICs1Miw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPFNrQ2FudmFzPiBjcmVh
dGVBY2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICB0ZXh0
dXJlRGVzYy5mV2lkdGggPSBjYW52YXNTaXplLndpZHRoKCk7CiAgICAgdGV4dHVyZURlc2MuZkhl
aWdodCA9IGNhbnZhc1NpemUuaGVpZ2h0KCk7CiAgICAgdGV4dHVyZURlc2MuZkNvbmZpZyA9IGtS
R0JBXzg4ODhfR3JQaXhlbENvbmZpZzsKLSAgICB0ZXh0dXJlRGVzYy5mVGV4dHVyZUhhbmRsZSA9
IHRleHR1cmUtPnRleHR1cmVJZCgpOworICAgIHRleHR1cmVEZXNjLmZUZXh0dXJlSGFuZGxlID0g
dGV4dHVyZUlkOwogICAgIFNrQXV0b1RVbnJlZjxHclRleHR1cmU+IHRhcmdldChnckNvbnRleHQt
PmNyZWF0ZVBsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlRGVzYykpOwogICAgIFNrQXV0b1RVbnJlZjxT
a0RldmljZT4gZGV2aWNlKG5ldyBTa0dwdURldmljZShnckNvbnRleHQsIHRhcmdldC5nZXQoKSkp
OwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2tDYW52YXMoZGV2aWNlLmdldCgpKSk7CkBAIC02
Nyw5ICs2OCw5IEBAIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyogYmlu
ZGluZywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
CiB7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxs
b2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB0ZXh0dXJlVXBk
YXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBiaW5kaW5nLCB0ZXh0dXJlKCksIHNv
dXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+
IHBhaW50ZXIpCkBAIC05Nyw3ICs5OCw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRU
ZXhlbEZvcm1hdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAg
cmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAK
LXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBiaW5kaW5nLCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVj
dCBHTCBjb250ZXh0LgogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMTA1
LDcgKzEwNiw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvCiAgICAgY29udGV4dC0+Z3JDb250
ZXh0KCktPnJlc2V0Q29udGV4dCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNh
bnZhcyB0byBkcmF3IG9uLgotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNj
ZWxlcmF0ZWRDYW52YXMoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKKyAgICBPd25QdHI8
U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQsIGJpbmRp
bmcsIHRleHR1cmUpOwogCiAgICAgY2FudmFzLT5jbGlwUmVjdChTa1JlY3QoZGVzdFJlY3QpKTsK
ICAgICAvLyBUaGUgY29tcG9zaXRvciBleHBlY3RzIHRoZSB0ZXh0dXJlcyB0byBiZSB1cHNpZGUt
ZG93biBzbyBpdCBjYW4gZmxpcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0YTEwYzg1
OGU0Y2RhOGMyNTJhYzE2ZGZhMDdkMDlhNWQ5MDhlZWMzLi5iNDU3MDdmMmRkOGNjZjE5NTA2ZDY2
ZmQzMTc3ZjQzNTczNGM0NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAg
ICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5n
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7
IH0KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIq
KTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvckJpbmRp
bmcqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMWU0NGU4NzAy
M2ZlZDVmNDY5MzVkZjdjM2ZiZDM2MmU1NGFiMDQyOS4uNjJkMzdiNzAxYjQwM2E5OTE4ZWJjMDQ4
YzY2NWYzMTYyMmYzODE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC01
NCw5ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIGJpbmRpbmcsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250
ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAg
ICAgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBiaW5kaW5nKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBi
aW5kaW5nLT50ZXh0dXJlSWQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSkpOworICAgICAgICAgICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC04OCwx
MCArOTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXpl
KHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsKLSAg
ICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQogICAgICAg
ICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1hZ2UgcGl4ZWxz
LCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2UgdGhlIHRleHR1
cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBjbGlwcGVkU291
cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAppbmRleCBiYWU0ZGEzNTQxMTliNjcxOTc2MGNhYjFlZmZlZGQ0OTM0ZjcwNDA1Li41YmI0ZDdi
NmFhNTZlNjNhMjJiNGFiOGU3NmU1Y2JlNzNjZmYzZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTE2MCw5ICsxNjAsOSBAQCBwcml2YXRlOgogfTsKIAogCi1Q
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NSZWZQdHI8VHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yPiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IsIFBhc3NPd25QdHI8VGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmc+IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcpCiB7Ci0g
ICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihu
ZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKG93bmVyLCBjb250ZXh0KSkpOworICAgIE93blB0cjxM
YXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVu
ZGVyZXJDaHJvbWl1bShvd25lciwgY29udGV4dCwgY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLCBj
b250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKSkpOwogICAgIGlmICghbGF5ZXJSZW5kZXJl
ci0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTcwLDEwICsx
NzAsMTQgQEAgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdEkKIH0KIAogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NMYXllclRyZWVIb3N0SW1wbCogb3duZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8VHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3duUHRyPFRleHR1cmVB
bGxvY2F0b3JCaW5kaW5nPiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKQogICAgIDog
bV9vd25lcihvd25lcikKICAgICAsIG1fY3VycmVudFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1f
b2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQorICAgICwgbV9jb250ZW50c1RleHR1cmVBbGxvY2F0
b3IoY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKQorICAgICwgbV9jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3JCaW5kaW5nKGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcpCiAgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1f
c2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQpA
QCAtMjk0LDcgKzI5OCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxl
KGJvb2wgdmlzaWJsZSkKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlUmVuZGVy
U3VyZmFjZVRleHR1cmVzKCkKIHsKICAgICBpZiAobV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFn
ZXIpCi0gICAgICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5ldmljdEFuZERlbGV0
ZUFsbFRleHR1cmVzKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAg
ICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+ZGVsZXRlQWxsVGV4dHVyZXMoKTsK
IH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdlZCgpCkBAIC01
NzksNyArNTgzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChj
b25zdCBDQ1RpbGVEcmF3UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PnVzZVByb2dyYW0odW5pZm9ybXMucHJvZ3JhbSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+dW5pZm9ybTFpKHVuaWZvcm1zLnNhbXBsZXJMb2NhdGlvbiwgMCkpOwogICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTApKTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQoKSkpOworICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKS0+dGV4dHVyZUlkKHF1YWQt
PnRleHR1cmVJZCgpKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUlOX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBxdWFkLT50ZXh0dXJl
RmlsdGVyKCkpKTsKIApAQCAtNjcyLDcgKzY3Niw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3Q2FudmFzUXVhZChjb25zdCBDQ0NhbnZhc0RyYXdRdWFkKiBxdWFkKQogICAgIGNv
bnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBwcm9ncmFtID0gY2FudmFzTGF5ZXJQcm9n
cmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWQtPnRleHR1cmVJZCgpKSk7Cisg
ICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQgPSBxdWFkLT5kb3VibGVCdWZmZXJlZCgpID8g
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpLT50ZXh0dXJlSWQocXVhZC0+dGV4dHVy
ZUlkKCkpIDogcXVhZC0+dGV4dHVyZUlkKCk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgp
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVS
LCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFS
KSk7CiAKQEAgLTgwMyw3ICs4MDgsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Zmlu
aXNoRHJhd2luZ0ZyYW1lKCkKICAgICBzaXplX3QgcHJlZmVycmVkTGltaXQgPSByZWNsYWltTGlt
aXQgPiBjb250ZW50c01lbW9yeVVzZUJ5dGVzID8gcmVjbGFpbUxpbWl0IC0gY29udGVudHNNZW1v
cnlVc2VCeXRlcyA6IDA7CiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnNldFBy
ZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTGltaXQpOwogICAgIG1fcmVuZGVyU3Vy
ZmFjZVRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0KTsK
LSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVz
KG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogCiAgICAgaWYgKHNldHRp
bmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKQogICAgICAgICBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRv
RGlzcGxheSgpOwpAQCAtOTQ4LDcgKzk1Miw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKICAgICBp
ZiAoIXJlbmRlclN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1cmUodGhpcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgpLT5m
cmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1
cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgp
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCkpOwogCiAjaWYgIWRlZmluZWQg
KCBOREVCVUcgKQogICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVJfQ09NUExFVEUpIHsKQEAgLTEwMjAsMTcgKzEwMjQsMTUgQEAgYm9vbCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKIAogICAgIEdMQyhtX2NvbnRl
eHQuZ2V0KCksIG1fY29udGV4dC0+Zmx1c2goKSk7CiAKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hM
aW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
KTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUobV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6
OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xh
aW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVy
ZVNpemUpOwotICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKLSAgICBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250
ZXh0LmdldCgpKTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50
KQogICAgICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNh
Z2VIaW50KFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsK
LSAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgewot
ICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VF
eHQodHJ1ZSk7CisgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRl
bnNpb24pCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRl
eHR1cmVTdG9yYWdlRXh0KHRydWUpOwotICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA0YmNiMjU4Mjg2NGVmMmVlNDRmYjEw
ZDBhNTAwMTk2NzhiOTU4NGVlLi5lZTAxYzk1YmNlNzkzZmM2NTAyOGZmMTAzMWJiYjkyOTY4ZTc0
OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNzEsNyArNzEsNyBA
QCBjbGFzcyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcjsK
IGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TGF5ZXJSZW5kZXJlckNocm9taXVtKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxM
YXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RJbXBsKiwgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVu
ZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgUGFzc1JlZlB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+LCBQ
YXNzT3duUHRyPFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nPik7CiAKICAgICAvLyBNdXN0IGJlIGNh
bGxlZCBpbiBvcmRlciB0byBhbGxvdyB0aGUgTGF5ZXJSZW5kZXJlckNocm9taXVtIHRvIGRlc3Ry
dWN0CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBU
ZXh0dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAgICBUZXh0dXJlQWxs
b2NhdG9yKiByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KICAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQorICAgIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBj
b250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkgeyByZXR1cm4gbV9jb250ZW50c1RleHR1
cmVBbGxvY2F0b3JCaW5kaW5nLmdldCgpOyB9CiAKICAgICBDQ0hlYWRzVXBEaXNwbGF5KiBoZWFk
c1VwRGlzcGxheSgpIHsgcmV0dXJuIG1faGVhZHNVcERpc3BsYXkuZ2V0KCk7IH0KIApAQCAtMTU1
LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJp
eExvY2F0aW9uLCBpbnQgYWxwaGFMb2NhdGlvbiwgaW50IHF1YWRMb2NhdGlvbik7CiAKIHByaXZh
dGU6Ci0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKENDTGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKEND
TGF5ZXJUcmVlSG9zdEltcGwqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc1Jl
ZlB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+LCBQYXNzT3duUHRyPFRleHR1cmVBbGxvY2F0
b3JCaW5kaW5nPik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKICAgICB2b2lkIGRyYXdRdWFk
KGNvbnN0IENDRHJhd1F1YWQqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsK
QEAgLTIyOCw4ICsyMjksOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBs
OjpOYXRpdmVUZXh0dXJlUHJvZ3JhbT4gbV92aWRlb0xheWVyTmF0aXZlVGV4dHVyZVByb2dyYW07
CiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5h
Z2VyOwotICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yOwotICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3I7CisgICAgUmVmUHRyPFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcjsKKyAgICBSZWZQdHI8VHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKKyAgICBP
d25QdHI8VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9y
QmluZGluZzsKIAogICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5PiBtX2hlYWRzVXBEaXNwbGF5
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMTc5ZmVhNmUxMmJmMTAzYzVi
MDc0MzVjZjI0YTNhNDhmOGNkOTMyMy4uMTkxMzYyMDg3ZWI2ODg3MmExMWYwYmRlN2UxZTVmYzdl
NzkzZWI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzgsNyArMzgsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBJbnRTaXplOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRl
eHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gewpAQCAtNTAsNyArNDksNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0
KCk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5h
Z2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFn
ZWRUZXh0dXJlLmNwcAppbmRleCBiMjlkYjBlZDllMjhkYzZkMGVmM2Y3OTBhNDU1YjFkMmIxZjEw
MDg5Li5hZGM3YjY3MzZkYzA4MGVlNTYzNzYwMDBiMTM2MDMyYzg2M2E0MWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVy
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFu
YWdlZFRleHR1cmUuY3BwCkBAIC0xMTAsMjIgKzExMCwyNCBAQCB2b2lkIE1hbmFnZWRUZXh0dXJl
Ojp1bnJlc2VydmUoKQogICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90
b2tlbik7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1cmU6OmFsbG9jYXRlKFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQogewotICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNU
ZXh0dXJlKG1fdG9rZW4pKTsKLSAgICBpZiAoIW1fdGV4dHVyZUlkKQotICAgICAgICBtX3RleHR1
cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShhbGxvY2F0b3IsIG1fdG9r
ZW4pOworICAgIEFTU0VSVChjb250ZXh0ID09IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRvcigp
LT5jb250ZXh0KCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1cmU6OmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIGJpbmRpbmcpCiB7Ci0gICAg
YWxsb2NhdGUoYWxsb2NhdG9yKTsKLSAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOworICAgIHVuc2lnbmVkIHRleHR1cmUg
PSBiaW5kaW5nLT50ZXh0dXJlSWQobV90ZXh0dXJlSWQpOworICAgIGlmICghdGV4dHVyZSkKKyAg
ICAgICAgdGV4dHVyZSA9IGJpbmRpbmctPmNyZWF0ZVRleHR1cmUobV90ZXh0dXJlSWQsIG1fc2l6
ZSwgbV9mb3JtYXQpOworCisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUpOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpmcmFt
ZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yKQordm9pZCBNYW5hZ2VkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7Ci0gICAgYWxsb2NhdGUoYWxsb2NhdG9y
KTsKKyAgICBBU1NFUlQoY29udGV4dCA9PSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0b3IoKS0+
Y29udGV4dCgpKTsKICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5U
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkLCAwKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFu
YWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L01hbmFnZWRUZXh0dXJlLmgKaW5kZXggZWQ0ZDQ1MGU5NjljZTBhYjU0N2E5YWM1MTM4ZDRjMDkz
ZDgzOWQ2Mi4uNmM0OTU5YzI3NzJkNmU4NmM3ZTcxZmM2MWEwZjYyZjRiOGZiN2VkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRl
eHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc7
CiAKIGNsYXNzIE1hbmFnZWRUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYW5h
Z2VkVGV4dHVyZSk7CkBAIC01Nyw5ICs1OCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
dGV4dHVyZU1hbmFnZXIgJiYgbV90ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQobV90b2tlbik7
CiAgICAgfQogCi0gICAgdm9pZCBhbGxvY2F0ZShUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9p
ZCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKLSAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciopOworICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAg
ICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmcqKTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNE
Kik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICB1
bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuY3BwCmluZGV4IGY1MGFmNDdlZGU1ZmFlODdhMTlhOGRlMTkwNTdlZGYyNDNmN2RiOWYu
LjVmMTIwNTUxZTJlY2NkOTdjYjVhZjgzZGFkOWU4YzRlOWI4ZTI1ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5jcHAKQEAgLTM1LDYgKzM1LDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGluZzo6
UGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpCit7Cit9CisKK1Bhc3N0aHJvdWdo
VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6On5QYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5k
aW5nKCkKK3sKK30KKwordW5zaWduZWQgUGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGlu
Zzo6Y3JlYXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVu
dW0gZm9ybWF0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCit2b2lkIFBhc3N0aHJvdWdoVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OmRlbGV0ZVRleHR1
cmUodW5zaWduZWQgdGV4dHVyZSkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KIAog
bmFtZXNwYWNlIHsKIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCB2aWV3cG9ydE11bHRp
cGxpZXIsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgc2l6ZV90IG1pbk1lZ2FieXRlcywg
c2l6ZV90IG1heE1lZ2FieXRlcykKQEAgLTk1LDEyICsxMTMsMTMgQEAgc2l6ZV90IFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSB0ZXh0
dXJlRm9ybWEKIH0KIAogCi1UZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1h
eE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQg
bWF4VGV4dHVyZVNpemUpCitUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIoUGFzc1JlZlB0
cjxUZXh0dXJlQWxsb2NhdG9yPiBhbGxvY2F0b3IsIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVz
LCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQog
ICAgIDogbV9tYXhNZW1vcnlMaW1pdEJ5dGVzKG1heE1lbW9yeUxpbWl0Qnl0ZXMpCiAgICAgLCBt
X3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcykKICAg
ICAsIG1fbWVtb3J5VXNlQnl0ZXMoMCkKICAgICAsIG1fbWF4VGV4dHVyZVNpemUobWF4VGV4dHVy
ZVNpemUpCiAgICAgLCBtX25leHRUb2tlbigxKQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9y
KQogewogfQogCkBAIC0yMTUsOSArMjM0LDYgQEAgdW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OnJl
cGxhY2VUZXh0dXJlKFRleHR1cmVUb2tlbiBuZXdUb2tlbiwgVGV4dHVyZUluZm8gbmV3SW4KICAg
ICAgICAgaWYgKG5ld0luZm8uc2l6ZSAhPSBpbmZvLnNpemUgfHwgbmV3SW5mby5mb3JtYXQgIT0g
aW5mby5mb3JtYXQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbmV3SW5mby50ZXh0
dXJlSWQgPSBpbmZvLnRleHR1cmVJZDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG5ld0luZm8u
YWxsb2NhdG9yID0gaW5mby5hbGxvY2F0b3I7Ci0jZW5kaWYKICAgICAgICAgbV90ZXh0dXJlcy5y
ZW1vdmUodG9rZW4pOwogICAgICAgICBtX3RleHR1cmVMUlVTZXQucmVtb3ZlKHRva2VuKTsKICAg
ICAgICAgbV90ZXh0dXJlcy5zZXQobmV3VG9rZW4sIG5ld0luZm8pOwpAQCAtMjM2LDI2ICsyNTIs
MTAgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4s
IFRleHR1cmVJbmZvIGluZm8pCiAgICAgbV90ZXh0dXJlTFJVU2V0LmFkZCh0b2tlbik7CiB9CiAK
LXZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCi17Ci0gICAgaWYgKGFsbG9jYXRvcikgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZXZpY3RlZFRleHR1cmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAobV9ldmljdGVkVGV4dHVyZXNbaV0udGV4dHVyZUlkKSB7Ci0jaWZuZGVmIE5ERUJV
RwotICAgICAgICAgICAgICAgIEFTU0VSVChtX2V2aWN0ZWRUZXh0dXJlc1tpXS5hbGxvY2F0b3Ig
PT0gYWxsb2NhdG9yKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGFsbG9jYXRvci0+ZGVsZXRl
VGV4dHVyZShtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0dXJlSWQsIG1fZXZpY3RlZFRleHR1cmVz
W2ldLnNpemUsIG1fZXZpY3RlZFRleHR1cmVzW2ldLmZvcm1hdCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgbV9ldmljdGVkVGV4dHVyZXMuY2xlYXIoKTsKLX0KLQotdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyhUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCit2b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWxldGVBbGxUZXh0dXJlcygp
CiB7CiAgICAgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICByZWR1Y2VNZW1vcnlUb0xpbWl0
KDApOwotICAgIGRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhhbGxvY2F0b3IpOwogfQogCiB2b2lkIFRl
eHR1cmVNYW5hZ2VyOjpyZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUlu
Zm8gaW5mbykKQEAgLTI2NiwyOCArMjY2LDE4IEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbW92
ZVRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZvKQogICAgIG1fdGV4
dHVyZXMucmVtb3ZlKHRva2VuKTsKICAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5z
KHRva2VuKSk7CiAgICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7Ci0gICAgRXZpY3Rp
b25FbnRyeSBlbnRyeTsKLSAgICBlbnRyeS50ZXh0dXJlSWQgPSBpbmZvLnRleHR1cmVJZDsKLSAg
ICBlbnRyeS5zaXplID0gaW5mby5zaXplOwotICAgIGVudHJ5LmZvcm1hdCA9IGluZm8uZm9ybWF0
OwotI2lmbmRlZiBOREVCVUcKLSAgICBlbnRyeS5hbGxvY2F0b3IgPSBpbmZvLmFsbG9jYXRvcjsK
LSNlbmRpZgotICAgIG1fZXZpY3RlZFRleHR1cmVzLmFwcGVuZChlbnRyeSk7CisgICAgbV9hbGxv
Y2F0b3ItPmRlbGV0ZVRleHR1cmUoaW5mby50ZXh0dXJlSWQsIGluZm8uc2l6ZSwgaW5mby5mb3Jt
YXQpOwogfQogCi11bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRva2VuKQordW5zaWduZWQgVGV4
dHVyZU1hbmFnZXI6OmFsbG9jYXRlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4pCiB7CiAgICAg
VGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwogICAgIEFT
U0VSVChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKICAgICBUZXh0dXJlSW5mbyogaW5mbyA9ICZp
dC5nZXQoKS0+c2Vjb25kOwogICAgIEFTU0VSVChpbmZvLT5pc1Byb3RlY3RlZCk7CiAKLSAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQgPSBhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoaW5mby0+c2l6ZSwg
aW5mby0+Zm9ybWF0KTsKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBtX2FsbG9jYXRvci0+Y3Jl
YXRlVGV4dHVyZShpbmZvLT5zaXplLCBpbmZvLT5mb3JtYXQpOwogICAgIGluZm8tPnRleHR1cmVJ
ZCA9IHRleHR1cmVJZDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgaW5mby0+YWxsb2NhdG9yID0gYWxs
b2NhdG9yOwotI2VuZGlmCiAgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0KIApAQCAtMzE3LDkgKzMw
Nyw2IEBAIGJvb2wgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0
b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmCiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7
CiAgICAgaW5mby50ZXh0dXJlSWQgPSAwOwogICAgIGluZm8uaXNQcm90ZWN0ZWQgPSB0cnVlOwot
I2lmbmRlZiBOREVCVUcKLSAgICBpbmZvLmFsbG9jYXRvciA9IDA7Ci0jZW5kaWYKICAgICAvLyBB
dm9pZCBjaHVybmluZyBieSByZXVzaW5nIHRoZSB0ZXh0dXJlIGlmIGl0IGlzIGFib3V0IHRvIGJl
IHJlY2xhaW1lZCBhbmQKICAgICAvLyBpdCBoYXMgdGhlIHNhbWUgc2l6ZSBhbmQgZm9ybWF0IGFz
IHRoZSByZXF1ZXN0aW5nIHRleHR1cmUuCiAgICAgaWYgKG1fbWVtb3J5VXNlQnl0ZXMgKyBtZW1v
cnlSZXF1aXJlZEJ5dGVzID4gbV9wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKSB7CkBAIC0zMjgs
NiArMzE1LDcgQEAgYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRv
a2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGYKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBhZGRUZXh0dXJlKHRva2VuLCBpbmZvKTsKKyAgICB0ZXh0dXJlSWQg
PSBhbGxvY2F0ZVRleHR1cmUodG9rZW4pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuaAppbmRleCBiOGIyYjFmNDJmMzdjYWFjYmZlYWVhYTEzNjI4NTE2N2E2ZGFmOGZi
Li4wMjVhZmU1NGU3MDAxNjE3ZTA4ZmEzNTU4N2NjZDVhNDU5ZjUyMzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQwLDIxICs0MSw0OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBNYW5hZ2VkVGV4dHVyZTsKIHR5cGVkZWYgaW50IFRleHR1cmVUb2tlbjsKIAotY2xhc3Mg
VGV4dHVyZUFsbG9jYXRvciB7CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFJlZkNv
dW50ZWQ8VGV4dHVyZUFsbG9jYXRvcj4gewogcHVibGljOgorICAgIHZpcnR1YWwgflRleHR1cmVB
bGxvY2F0b3IoKSB7IH0KKwogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25z
dCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSA9IDA7
CiAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkgeyB9CisjaWZu
ZGVmIE5ERUJVRworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJl
dHVybiAwOyB9CisjZW5kaWYKK307CisKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5UZXh0dXJlQWxsb2NhdG9yQmluZGluZygpIHsgfQorCisg
ICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0
IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
VGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0ZXh0
dXJlSWQodW5zaWduZWQgdGV4dHVyZSkgPSAwOworfTsKKworY2xhc3MgUGFzc3Rocm91Z2hUZXh0
dXJlQWxsb2NhdG9yQmluZGluZyA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9y
QmluZGluZz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFz
c3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpKTsKKyAgICB9CisgICAgdmlydHVhbCB+
UGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmluZGluZygpOworCisgICAgdmlydHVhbCB1bnNp
Z25lZCBjcmVhdGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNpemUmLCBHQzNE
ZW51bSBmb3JtYXQpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRl
eHR1cmUpOworICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmUp
IHsgcmV0dXJuIHRleHR1cmU7IH0KKworcHJpdmF0ZToKKyAgICBQYXNzdGhyb3VnaFRleHR1cmVB
bGxvY2F0b3JCaW5kaW5nKCk7CiB9OwogCiBjbGFzcyBUZXh0dXJlTWFuYWdlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hbmFnZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0
ZXMsIHNpemVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShQYXNzUmVmUHRy
PFRleHR1cmVBbGxvY2F0b3I+IGFsbG9jYXRvciwgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMs
IHNpemVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKG1heE1lbW9y
eUxpbWl0Qnl0ZXMsIHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIoYWxsb2NhdG9yLCBt
YXhNZW1vcnlMaW1pdEJ5dGVzLCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBtYXhUZXh0dXJl
U2l6ZSkpOwogICAgIH0KICAgICB+VGV4dHVyZU1hbmFnZXIoKTsKIApAQCAtODYsMjUgKzExNSwy
NSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIGJvb2wg
aXNQcm90ZWN0ZWQoVGV4dHVyZVRva2VuKTsKIAotICAgIHVuc2lnbmVkIGFsbG9jYXRlVGV4dHVy
ZShUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZVRva2VuKTsKLSAgICB2b2lkIGRlbGV0ZUV2aWN0
ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdW5zaWduZWQgYWxsb2NhdGVUZXh0
dXJlKFRleHR1cmVUb2tlbik7CiAKLSAgICB2b2lkIGV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMo
VGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKTsKIAogICAg
IHZvaWQgcmVkdWNlTWVtb3J5VG9MaW1pdChzaXplX3QpOwogICAgIHNpemVfdCBjdXJyZW50TWVt
b3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVVzZUJ5dGVzOyB9CiAKKyNpZm5k
ZWYgTkRFQlVHCisgICAgVGV4dHVyZUFsbG9jYXRvciAqYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9h
bGxvY2F0b3IuZ2V0KCk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgotICAgIFRleHR1cmVNYW5hZ2Vy
KHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRC
eXRlcywgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBUZXh0dXJlTWFuYWdlcihQYXNzUmVmUHRy
PFRleHR1cmVBbGxvY2F0b3I+LCBzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHBy
ZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CiAKICAgICBzdHJ1
Y3QgVGV4dHVyZUluZm8gewogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIEdDM0RlbnVt
IGZvcm1hdDsKICAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwogICAgICAgICBib29sIGlzUHJv
dGVjdGVkOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yOwotI2VuZGlmCiAgICAgfTsKIAogICAgIHZvaWQgYWRkVGV4dHVyZShUZXh0dXJlVG9rZW4s
IFRleHR1cmVJbmZvKTsKQEAgLTEyMiwxNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qg
bV9tZW1vcnlVc2VCeXRlczsKICAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKICAgICBUZXh0dXJl
VG9rZW4gbV9uZXh0VG9rZW47Ci0KLSAgICBzdHJ1Y3QgRXZpY3Rpb25FbnRyeSB7Ci0gICAgICAg
IHVuc2lnbmVkIHRleHR1cmVJZDsKLSAgICAgICAgSW50U2l6ZSBzaXplOwotICAgICAgICBHQzNE
ZW51bSBmb3JtYXQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3I7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgVmVjdG9yPEV2aWN0aW9uRW50cnk+IG1f
ZXZpY3RlZFRleHR1cmVzOworICAgIFJlZlB0cjxUZXh0dXJlQWxsb2NhdG9yPiBtX2FsbG9jYXRv
cjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5kZXgg
YThhNTQ5MjlhMmZjYWIxOTM0ZWY2NDQ5MWQ3YmYwMDdjNzk4ODE3OC4uOTE3NDc0MDMyMzMwNGU3
NzRlYjYwZjM3ZWMxNWJkNjRjNTRkYTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yLmgKQEAgLTM0LDE1ICszNCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0
ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKGNvbnRleHQpKTsKICAgICB9CiAgICAg
dmlydHVhbCB+VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKCk7CiAKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6
ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAKKyNpZm5kZWYgTkRFQlVHCisgICAgdmlydHVhbCBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorI2Vu
ZGlmCisKICAgICBzaXplX3QgY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50TWVtb3J5VXNlQnl0ZXM7IH0KIAogICAgIGVudW0gVGV4dHVyZVVzYWdlSGludCB7
IEFueSwgRnJhbWVidWZmZXJBdHRhY2htZW50IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1
YWQuY3BwCmluZGV4IDU2ZjUwODNhNTVmYzNhNDFhNjFiM2UwNDAyYzVmZmFiNmJkZjdhMTEuLjdk
YTNlODdlNzJmYjE1MDFiZDY0OGFjZmZmMWM0ZDcwNGRjOTcxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2FudmFzRHJhd1F1YWQuY3BwCkBAIC0yOSwxNiArMjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IENDQ2FudmFzRHJhd1F1YWQ6OmNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIGhhc0FscGhhLCBib29sIHBy
ZW11bHRpcGxpZWRBbHBoYSkKK1Bhc3NPd25QdHI8Q0NDYW52YXNEcmF3UXVhZD4gQ0NDYW52YXNE
cmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgaGFzQWxw
aGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBib29sIGRvdWJsZUJ1ZmZlcmVkKQogewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ0NDYW52YXNEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCB0ZXh0dXJlSWQsIGhhc0FscGhhLCBwcmVtdWx0aXBsaWVkQWxwaGEpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDQ2FudmFzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFk
UmVjdCwgdGV4dHVyZUlkLCBoYXNBbHBoYSwgcHJlbXVsdGlwbGllZEFscGhhLCBkb3VibGVCdWZm
ZXJlZCkpOwogfQogCi1DQ0NhbnZhc0RyYXdRdWFkOjpDQ0NhbnZhc0RyYXdRdWFkKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFs
cGhhKQorQ0NDYW52YXNEcmF3UXVhZDo6Q0NDYW52YXNEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWdu
ZWQgdGV4dHVyZUlkLCBib29sIGhhc0FscGhhLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgYm9v
bCBkb3VibGVCdWZmZXJlZCkKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0Ry
YXdRdWFkOjpDYW52YXNDb250ZW50LCBxdWFkUmVjdCkKICAgICAsIG1fdGV4dHVyZUlkKHRleHR1
cmVJZCkKICAgICAsIG1faGFzQWxwaGEoaGFzQWxwaGEpCiAgICAgLCBtX3ByZW11bHRpcGxpZWRB
bHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpCisgICAgLCBtX2RvdWJsZUJ1ZmZlcmVkKGRvdWJsZUJ1
ZmZlcmVkKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmgKaW5kZXggYWE4NWRi
ZDEzNGRlODA0MTM2YmE2MzkwMjllNjkxY2NiNTlhYjJmZi4uNmMzY2NjZjI5ZjFlOGM3ZmVlYWI3
NmJkODE0ODE4ZDhjNTljMTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaApAQCAt
MzUsMTggKzM1LDIwIEBAIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NDYW52YXNEcmF3UXVh
ZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0NhbnZh
c0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0NhbnZhc0RyYXdR
dWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5z
aWduZWQgdGV4dHVyZV9pZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEp
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBi
b29sIGhhc0FscGhhLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgYm9vbCBkb3VibGVCdWZmZXJl
ZCk7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiAgbV90ZXh0dXJl
SWQ7IH0KICAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gIG1faGFzQWxwaGE7IH0K
ICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICBtX3ByZW11bHRp
cGxpZWRBbHBoYTsgfQorICAgIGJvb2wgZG91YmxlQnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiAg
bV9kb3VibGVCdWZmZXJlZDsgfQogCiBwcml2YXRlOgotICAgIENDQ2FudmFzRHJhd1F1YWQoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZV9p
ZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEpOworICAgIENDQ2FudmFz
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWdu
ZWQgdGV4dHVyZV9pZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGJv
b2wgZG91YmxlQnVmZmVyZWQpOwogICAgIAogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwogICAg
IGJvb2wgbV9oYXNBbHBoYTsKICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOworICAgIGJv
b2wgbV9kb3VibGVCdWZmZXJlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJ
bXBsLmNwcAppbmRleCAyYmIzZWZmMjI3ODk1MzE1MWNiYTdhYzFkZmNjMTQxN2Q0NWVjZjk2Li4w
ZDYxM2FiNjhhZDYyYjg3MjZjZGU3ODMxZWZkMGRhNmYxNDNjZmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDYW52YXNMYXllckltcGwuY3BwCkBAIC00Miw2ICs0Miw3IEBAIENDQ2FudmFzTGF5ZXJJbXBs
OjpDQ0NhbnZhc0xheWVySW1wbChpbnQgaWQpCiAgICAgLCBtX3RleHR1cmVJZCgwKQogICAgICwg
bV9oYXNBbHBoYSh0cnVlKQogICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEodHJ1ZSkKKyAgICAs
IG1fZG91YmxlQnVmZmVyZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTUyLDcgKzUzLDcgQEAgQ0NDYW52
YXNMYXllckltcGw6On5DQ0NhbnZhc0xheWVySW1wbCgpCiB2b2lkIENDQ2FudmFzTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSkKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCks
IGJvdW5kcygpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NDYW52YXNEcmF3UXVhZDo6Y3JlYXRl
KHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hhc0FscGhhLCBtX3By
ZW11bHRpcGxpZWRBbHBoYSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ0NhbnZhc0RyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlSWQsIG1faGFzQWxw
aGEsIG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX2RvdWJsZUJ1ZmZlcmVkKSk7CiB9CiAKIHZvaWQg
Q0NDYW52YXNMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGlu
dCBpbmRlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAppbmRleCA5MTI2
YTdkNDQ1MDFlNjMyNWI1ZWZkNGI1N2NiYTllNDZiYzhhNzVhLi5mMDYwM2ZlMWJlZjQzYzc3MTBl
NWRiZTEyYzY0YThhM2Y4NjBkYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgK
QEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVk
IGlkKSB7IG1fdGV4dHVyZUlkID0gaWQ7IH0KICAgICB2b2lkIHNldEhhc0FscGhhKGJvb2wgaGFz
QWxwaGEpIHsgbV9oYXNBbHBoYSA9IGhhc0FscGhhOyB9CiAgICAgdm9pZCBzZXRQcmVtdWx0aXBs
aWVkQWxwaGEoYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEpIHsgbV9wcmVtdWx0aXBsaWVkQWxwaGEg
PSBwcmVtdWx0aXBsaWVkQWxwaGE7IH0KKyAgICB2b2lkIHNldERvdWJsZUJ1ZmZlcmVkKGJvb2wg
ZG91YmxlQnVmZmVyZWQpIHsgbV9kb3VibGVCdWZmZXJlZCA9IGRvdWJsZUJ1ZmZlcmVkOyB9CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NDYW52YXNMYXllckltcGwoaW50KTsKIApAQCAtNTgs
NiArNjAsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwogICAgIGJvb2wg
bV9oYXNBbHBoYTsKICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOworICAgIGJvb2wgbV9k
b3VibGVCdWZmZXJlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAK
aW5kZXggNzA4YmNmZjg4MDFiNzg4ODEwNjBiNTI5ODU4YjI4OWI5NTMyOGFlYy4uYWI3YTZkYTk5
ZjZjNjUwYjA3NTRiNjMzMDZiNjhlMDYzMjZjNjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRy
YXcoKQogICAgIHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZj
YW52YXMpOwogCi0gICAgICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgbV9s
YXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAg
bV9odWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0KTsKICAgICAgICAgYm9vbCB1cGxvYWRl
ZFZpYU1hcCA9IGZhbHNlOwogICAgICAgICBpZiAobV91c2VNYXBTdWJGb3JVcGxvYWRzKSB7CiAg
ICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoKQogICAgIGNvbnN0IFBy
b2dyYW0qIHByb2dyYW0gPSBtX2xheWVyUmVuZGVyZXItPmhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgp
OwogICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMCkpOwotICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgbV9sYXllclJl
bmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2h1ZFRleHR1
cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQ
cm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51
bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA1MGQ3NmE1ZThjNTQyZDc2
MGIxYzY5MDA1MGQ2NjgzNGZiNzk4NTE4Li5jYjI0YzhmNjVhODkyZGI4ODg3MWY4MmVkYmNjNjAw
YzU2MDQ0NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTg3LDYgKzg3
LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogICAgICAgICBtX3Byb3h5
ID0gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlKHRoaXMpOwogICAgIH0gZWxzZQogICAgICAgICBtX3By
b3h5ID0gQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y3JlYXRlKHRoaXMpOworCiAgICAgbV9wcm94eS0+
c3RhcnQoKTsKIAogICAgIGlmICghbV9wcm94eS0+aW5pdGlhbGl6ZUNvbnRleHQoKSkKQEAgLTEy
MiwxOSArMTIzLDIwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcigpCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUg
Y2FwYWJpbGl0eS4KICAgICBtX3NldHRpbmdzLnBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1fc2V0
dGluZ3MucGFydGlhbFRleHR1cmVVcGRhdGVzICYmIG1fcHJveHktPnBhcnRpYWxUZXh0dXJlVXBk
YXRlQ2FwYWJpbGl0eSgpOwogCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLAorICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUobV9wcm94eS0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6
aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1p
dEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KS5tYXhUZXh0dXJlU2l6ZSk7CiAKICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRy
dWU7CiB9CiAKLQotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNP
bkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisKICAgICBpZiAobV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyKQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRl
QWxsVGV4dHVyZXMoYWxsb2NhdG9yKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
LT5kZWxldGVBbGxUZXh0dXJlcygpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
QW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCkBAIC0xNTUsNyArMTU3LDYgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKQogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1p
dFRvIiwgdGhpcywgMCk7CiAKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1l
bW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6
ZSgpKSk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVy
ZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKIH0KIAogLy8gVGhpcyBm
dW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8gYW4gaW1wbCB0cmVlLiBXaGVu
IG1vZGlmeWluZwpAQCAtMzI3LDEwICszMjgsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlk
QmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fcHJveHkt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5jb250ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIp
Ci0gICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+ZXZpY3RBbmREZWxldGVBbGxUZXh0
dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBjb250
ZW50c1RleHR1cmVNYW5hZ2VyKCktPmRlbGV0ZUFsbFRleHR1cmVzKCk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0
dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKTsKLSAgICAgICAg
Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICB9CiAKICAgICAvLyBFbnN1cmUgdGhh
dCB0aGUgZHJvcHBlZCB0aWxlcyBhcmUgcHJvcGFnYXRlZCB0byB0aGUgaW1wbCB0cmVlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCAyMjI0ZjdjYzE2MDgyOTA2MjEwZGJkZDFiZDQy
YjExZWIwY2E3NzFkLi4yZmU4OWJmYWEzM2UwZTAwMDU3NWQ5Y2EyZWZjZGYwZTM2ZWQ3MjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vzcyk7CiAgICAg
dm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3
RnJhbWUoKTsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQt
PmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQotICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0
dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBkZWxldGVDb250
ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKCk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKQEAgLTE3OCw2ICsxNzgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoZmxvYXQgbWluU2NhbGUsIGZs
b2F0IG1heFNjYWxlKTsKIAogICAgIFRleHR1cmVNYW5hZ2VyKiBjb250ZW50c1RleHR1cmVNYW5h
Z2VyKCkgY29uc3Q7CisgICAgVGV4dHVyZUFsbG9jYXRvciogdGV4dHVyZUFsbG9jYXRvcigpIGNv
bnN0OwogCiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAg
ICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCBlOTMwYmMyOWU4NmMwNzcwMmUwNzI2ZjM1ZjM3ZWFhNWE1OGFkYzgyLi45
MDAzZjNhYzUwMzJiZDkxODEzNTYzOWQ2M2E0Y2VkZDg4NDkxZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjk4LDYgKzI5OCwxMSBAQCBUZXh0dXJlQWxs
b2NhdG9yKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBj
b25zdAogICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpIDogMDsKIH0KIAorVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcq
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKSBj
b25zdAoreworICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKSA6IDA7Cit9CisKIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIg
JiYgIWlzQ29udGV4dExvc3QoKSk7CkBAIC0zNTAsMTAgKzM1NSwxMCBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgICAgICBtX2xheWVyUmVu
ZGVyZXItPnNldFZpc2libGUodmlzaWJsZSk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0SW1w
bDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCkKK2Jvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgUGFzc1JlZlB0cjxUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3I+IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciwgUGFzc093blB0
cjxUZXh0dXJlQWxsb2NhdG9yQmluZGluZz4gY29udGVudHNUZXh0dXJlQWxsb2NhdG9yQmluZGlu
ZykKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyOwot
ICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBj
b250ZXh0KTsKKyAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVh
dGUodGhpcywgY29udGV4dCwgY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLCBjb250ZW50c1RleHR1
cmVBbGxvY2F0b3JCaW5kaW5nKTsKIAogICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCiAgICAgICAg
IG1fbGF5ZXJSZW5kZXJlci0+Y2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAppbmRleCA1NjlkNjlmYTNlZDY4MGZhNTE3ZTk4YjBiMWY0NTU0OTAwODU2NDQ1Li42OGU1
ZTM2OTk5NGJiMzdhMDI5Nzk2YTRlMGY2NTBkMmZjZGM0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCkBAIC0zOCw3ICszOCw4IEBAIGNsYXNzIENDQ29tcGxldGlvbkV2
ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNs
YXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CitjbGFz
cyBUZXh0dXJlQWxsb2NhdG9yQmluZGluZzsKK2NsYXNzIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
cjsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogY2xhc3MgVHJhbnNmb3JtYXRp
b25NYXRyaXg7CiAKQEAgLTgwLDExICs4MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5pc2hB
bGxSZW5kZXJpbmcoKTsKICAgICBpbnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lTnVtYmVyOyB9CiAKLSAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVy
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzUmVmUHRyPFRyYWNraW5nVGV4dHVy
ZUFsbG9jYXRvcj4sIFBhc3NPd25QdHI8VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc+KTsKICAgICBi
b29sIGlzQ29udGV4dExvc3QoKTsKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVu
ZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7
CiAgICAgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3Q7
CisgICAgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKICAgICB2b2lkIG9uU3dh
cEJ1ZmZlcnNDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGEzYWE3MTYwNzFjMzQyYWI2OThl
M2UwZTkzZDIyOTgyMzczZTc1ZmEuLjFhMjQ2OGY2NzhkNzA0MmQyZTI4MTM4YTBjOTBmYmE2NjVm
YjNkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgQ0NMYXllclRyZWVI
b3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOworY2xhc3MgVGV4
dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCiAvLyBBYnN0cmFjdCBjbGFz
cyByZXNwb25zaWJsZSBmb3IgcHJveHlpbmcgY29tbWFuZHMgZnJvbSB0aGUgbWFpbi10aHJlYWQg
c2lkZSBvZgpAQCAtODQsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgLy8gdXBkYXRlcyBhcmUgcmVx
dWlyZWQuCiAgICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgp
IGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkgPSAwOworCiAgICAgLy8gRGVidWcgaG9va3MKICNpZm5kZWYgTkRFQlVH
CiAgICAgc3RhdGljIGJvb2wgaXNNYWluVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmNwcAppbmRleCBhNGM5MjU2OWQ3ZmYzOTdmYTUwM2RlM2I4NjlhY2UxMDJhYzMxNDUxLi43
M2Q0Yjc3NzZkY2FlZTBhNDhiNmY3MmRjZGI5NjkyY2RmNzAwOTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFj
ZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xh
eWVySQogCiAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+
dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDAp
KTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNELCBsYXllclJl
bmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2NvbnRlbnRz
VGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNEKTsKIAogICAgIGlmIChzaGFkZXJNYXNrU2Ft
cGxlckxvY2F0aW9uICE9IC0xKSB7CiAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzBkZWMwNTRjNTI1MjE2M2QzZGYwZDdm
OTM0NWYzNzQxNjhkZmYyYS4uNWYxNTAwN2E2ZTU4Y2JjZDYwMGVmMDAwOGZhNGM1ZDM5ZGRhNDNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTEzMCw3ICsx
MzAsOCBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVy
KCkKICAgICBBU1NFUlQobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24pOwogICAgIHsKICAg
ICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgICAgIGJvb2wgb2sgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZv
cmVJbml0aWFsaXphdGlvbi5yZWxlYXNlKCkpOworICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQgPSBtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbjsKKyAgICAgICAg
Ym9vbCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1f
Y29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSwgVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yOjpjcmVhdGUoY29udGV4dCksIFBhc3N0aHJvdWdoVGV4dHVyZUFsbG9jYXRvckJpbmRp
bmc6OmNyZWF0ZSgpKTsKICAgICAgICAgaWYgKG9rKSB7CiAgICAgICAgICAgICBtX2xheWVyUmVu
ZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpOwpAQCAtMTY3LDcgKzE2OCw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6ZG9Db21taXQoKQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1p
dCgpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Cisg
ICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCB1cGRhdGVyKTsKICAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5z
ZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKQEAgLTIxNiwxMiArMjE3LDE3
IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgQVNTRVJUKENDUHJveHk6
OmlzTWFpblRocmVhZCgpKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNP
bkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9y
KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgfQogICAgIG1f
bGF5ZXJUcmVlSG9zdCA9IDA7CiB9CiAKK1RleHR1cmVBbGxvY2F0b3IqIENDU2luZ2xlVGhyZWFk
UHJveHk6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpCit7CisgICAgQVNTRVJUKG1fbGF5ZXJU
cmVlSG9zdEltcGwpOworICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1Rl
eHR1cmVBbGxvY2F0b3IoKTsKK30KKwogLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGlu
ZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKIHZv
aWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlSW1tZWRpYXRlbHkoKQogewpAQCAtMjU2
LDggKzI2Miw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0SWZO
ZWVkZWQoKQogICAgICAgICBib29sIG9rOwogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgICAgICBvayA9IG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOworICAgICAgICAgICAgb2sg
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShjb250ZXh0KSwgUGFzc3Rocm91Z2hUZXh0
dXJlQWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgaWYgKG9rKQogICAg
ICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCA0MzQ1ZWQ2MmY2MDRi
N2JjMGI4ZTFiNjE3MWViODQyYjJkZmY2ZDA2Li4zOTQ1NzVhNmRmMGQ4NzdkMDhiNzRjYzJlOTA3
MzcwOGNlNmE5ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC01
Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpOwogICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNh
cGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBUZXh0dXJlQWxs
b2NhdG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKTsKIAogICAgIC8vIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVm
ZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUx
ODIwZjMxNGZkYjhjYzg3MmFiLi43NjUwZTM5N2MwNDg2ZTRkNGUzNmM5MTdiMGQ1NDhhNzUyZTZh
YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMzcsMTEgKzM3LDEx
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUZXh0
dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
Ci0gICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1
cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nKiBhbGxvY2F0b3JCaW5kaW5nKQorICAg
IDogbV9hbGxvY2F0b3JCaW5kaW5nKGFsbG9jYXRvckJpbmRpbmcpCiAgICAgLCBtX2VudHJ5SW5k
ZXgoMCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIEFTU0VSVChtX2FsbG9jYXRv
ckJpbmRpbmcpOwogfQogCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBA
IC02OSw3ICs2OSw3IEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiAgICAgc2l6ZV90IG1heEluZGV4ID0gbWlu
KG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKDsgbV9l
bnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7CiAgICAgICAgIFVwZGF0ZUVu
dHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwotICAgICAgICBlbnRyeS5tX3Rl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVj
dCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVj
dChjb250ZXh0LCBtX2FsbG9jYXRvckJpbmRpbmcsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnku
bV9kZXN0UmVjdCk7CiAgICAgfQogCiAgICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRh
OWE2NDgyOWUyZWZjY2VjMTViYjMwLi41YmEwMDM2YzUyMzc4YWVmMTlkZTkzZjUxNGY0YjU4Nzhh
OTc5MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMywxMSArMzMsMTEg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFz
cyBUZXh0dXJlQWxsb2NhdG9yOworY2xhc3MgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc7CiAKIGNs
YXNzIENDVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4
dHVyZUFsbG9jYXRvciopOworICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvckJp
bmRpbmcqKTsKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmQoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhcigpOwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKCkgeyByZXR1
cm4gbV9hbGxvY2F0b3I7IH0KKyAgICBUZXh0dXJlQWxsb2NhdG9yQmluZGluZyogYWxsb2NhdG9y
QmluZGluZygpIHsgcmV0dXJuIG1fYWxsb2NhdG9yQmluZGluZzsgfQogCiBwcml2YXRlOgogICAg
IHN0cnVjdCBVcGRhdGVFbnRyeSB7CkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IEludFJlY3QgbV9kZXN0UmVjdDsKICAgICB9OwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9h
bGxvY2F0b3I7CisgICAgVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcqIG1fYWxsb2NhdG9yQmluZGlu
ZzsKICAgICBzaXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9l
bnRyaWVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNGIyMDNmMzU0Yjk5
M2Y2MzMxMzA2YmVjMmMwZWFlYWJkODNmNDhmMy4uMDQzM2MyNzg3YTNlMzFhOTI2MTM4NjU1N2Mz
ZTRmNDg0Mzg1NzRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDggKzI2
LDEwIEBACiAKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKKyNpbmNsdWRlICJEZWZl
cnJlZFRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0
b3IuaCIKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIu
aCIKQEAgLTY4LDYgKzcwLDcgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xheWVy
VHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQogICAgICwgbV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQoMCkKICAgICAsIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25J
bXBsVGhyZWFkKGZhbHNlKQorICAgICwgbV9kZWZlcnJlZFRleHR1cmVBbGxvY2F0b3IoRGVmZXJy
ZWRUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoKSkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CkBAIC00MDUsNiArNDA4LDEwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAg
aWYgKG1fYW5pbWF0ZVJlcXVlc3RlZCkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIAorICAg
IC8vIENvcHkgYW5kIGNsZWFyIGRlbGV0ZWQgdGV4dHVyZSB2ZWN0b3IgZm9yIHBhc3NpbmcgdG8g
aW1wbCB0aHJlYWQuCisgICAgT3duUHRyPFZlY3Rvcjx1bnNpZ25lZD4gPiBkZWxldGVkVGV4dHVy
ZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPihtX2RlZmVycmVkVGV4dHVyZUFsbG9j
YXRvci0+ZGVsZXRlZFRleHR1cmVzKCkpKTsKKyAgICBtX2RlZmVycmVkVGV4dHVyZUFsbG9jYXRv
ci0+ZGVsZXRlZFRleHR1cmVzKCkuY2xlYXIoKTsKKwogICAgIC8vIE5vdGlmeSB0aGUgaW1wbCB0
aHJlYWQgdGhhdCB0aGUgYmVnaW5GcmFtZSBoYXMgY29tcGxldGVkLiBUaGlzIHdpbGwKICAgICAv
LyBiZWdpbiB0aGUgY29tbWl0IHByb2Nlc3MsIHdoaWNoIGlzIGJsb2NraW5nIGZyb20gdGhlIG1h
aW4gdGhyZWFkJ3MKICAgICAvLyBwb2ludCBvZiB2aWV3LCBidXQgYXN5bmNocm9ub3VzbHkgcGVy
Zm9ybWVkIG9uIHRoZSBpbXBsIHRocmVhZCwKQEAgLTQxMiw3ICs0MTksNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbQogICAgIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoImNvbW1pdCIsIHRoaXMs
IDApOwogICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwotICAgICAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCkt
PnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0
aW9uKSwgZGVsZXRlZFRleHR1cmVzLnJlbGVhc2UoKSkpOwogICAgICAgICBjb21wbGV0aW9uLndh
aXQoKTsKICAgICB9CiAKQEAgLTQyMSw3ICs0MjgsMTIgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5U
aW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VO
dW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikK
K1RleHR1cmVBbGxvY2F0b3IqIENDVGhyZWFkUHJveHk6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpCit7CisgICAgcmV0dXJuIG1fZGVmZXJyZWRUZXh0dXJlQWxsb2NhdG9yLmdldCgpOworfQor
Cit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgUGFzc093blB0cjxWZWN0b3I8dW5zaWduZWQ+ID4g
ZGVsZXRlZFRleHR1cmVzKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoIW1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKQEAgLTQzNCw5ICs0NDYsMTAgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24KICAgICB9CiAKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVu
dE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CisgICAgbV9jb21taXREZWxldGVkVGV4dHVyZXNP
bkltcGxUaHJlYWQgPSBkZWxldGVkVGV4dHVyZXM7CiAKICAgICBBU1NFUlQoIW1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisgICAgbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCkpKTsKICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
OwogCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwpA
QCAtNDgxLDYgKzQ5NCwxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNv
bW1pdCgpCiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb21taXRDb21wbGV0ZSgpOwogCisg
ICAgLy8gRGVsZXRlIHRleHR1cmVzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGNvbW1pdCBmaW5pc2hl
ZC4KKyAgICBWZWN0b3I8dW5zaWduZWQ+OjppdGVyYXRvciBpdCA9IG1fY29tbWl0RGVsZXRlZFRl
eHR1cmVzT25JbXBsVGhyZWFkLT5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBtX2NvbW1pdERl
bGV0ZWRUZXh0dXJlc09uSW1wbFRocmVhZC0+ZW5kKCk7IGl0KyspCisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvckJpbmRpbmcoKS0+ZGVsZXRlVGV4
dHVyZSgqaXQpOworCiAgICAgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxU
aHJlYWQgPSB0cnVlOwogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQt
PnNpZ25hbCgpOwpAQCAtNTcyLDEyICs1OTAsMTcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGwK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXJPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1fY29udGV4dEJlZm9yZUlu
aXRpYWxpemF0aW9uT25JbXBsVGhyZWFkOworICAgIFJlZlB0cjxUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I+IGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
cjo6Y3JlYXRlKGNvbnRleHQpOworICAgIE93blB0cjxEZWZlcnJlZFRleHR1cmVBbGxvY2F0b3JC
aW5kaW5nPiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nID0gRGVmZXJyZWRUZXh0dXJl
QWxsb2NhdG9yQmluZGluZzo6Y3JlYXRlKGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcik7CiAgICAg
QVNTRVJUKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkKTsKLSAgICAq
aW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkLnJlbGVh
c2UoKSk7CisgICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1w
bFRocmVhZC5yZWxlYXNlKCksIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciwgY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yQmluZGluZy5yZWxlYXNlKCkpOwogICAgIGlmICgqaW5pdGlhbGl6ZVN1Y2Nl
ZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLT51c2lu
Z1N3YXBDb21wbGV0ZUNhbGxiYWNrKQogICAgICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJl
YWQtPnNldE1heEZyYW1lc1BlbmRpbmcoMik7CisgICAgICAgIGlmIChjYXBhYmlsaXRpZXMtPnVz
aW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24pCisgICAgICAgICAgICBjb250ZW50c1RleHR1cmVB
bGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwogICAgIH0KIAogICAgIGNv
bXBsZXRpb24tPnNpZ25hbCgpOwpAQCAtNTg3LDcgKzYxMCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RD
bG9zZWRPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAg
bV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKCk7CiAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC5jbGVhcigpOwogICAgIG1faW5wdXRIYW5kbGVyT25JbXBs
VGhyZWFkLmNsZWFyKCk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBiNjVhNmM2MDRlMjkyM2ZjOGYwOWNmOWFjN2Y1NTk2
ZDBhYjBjZGQwLi5kZGEyM2IxYTJiODZlZWE4YmE1NzNkMjg2ZmJiOWJkNzE1MzhiNTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENDU2NoZWR1bGVy
OwogY2xhc3MgQ0NTY29wZWRUaHJlYWRQcm94eTsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBj
bGFzcyBDQ1RocmVhZDsKK2NsYXNzIERlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3Mg
Q0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogICAg
IHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpOwog
CiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZp
cnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKQEAgLTk1LDcg
Kzk3LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+
IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBv
YnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCosIENDVGhyZWFkOjpUYXNrKiopOwotICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CisgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBQYXNzT3duUHRyPFZlY3Rvcjx1bnNpZ25l
ZD4gPiBkZWxldGVkVGV4dHVyZXMpOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhy
ZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpAQCAtMTQwLDYgKzE0MiwxMCBAQCBwcml2YXRl
OgogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRB
bmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05l
d2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisKKyAgICBSZWZQdHI8RGVmZXJyZWRUZXh0
dXJlQWxsb2NhdG9yPiBtX2RlZmVycmVkVGV4dHVyZUFsbG9jYXRvcjsKKworICAgIE93blB0cjxW
ZWN0b3I8dW5zaWduZWQ+ID4gbV9jb21taXREZWxldGVkVGV4dHVyZXNPbkltcGxUaHJlYWQ7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDgwYTA0MzVmZDll
MWNhNmFhZTg2MThkZThkODg3YWZjYmQ5NmU4ZTUuLjJhYjlhNWQwYmI4MmI0MDNiMDdhZTc5NWYw
MWE5NTkxMmU4NWMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YmluZENvbnRlbnRzVGV4dHVyZShM
YXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlSWQgPSB0aWxlID8gdGlsZS0+dGV4dHVyZUlkKCkgOiAwOwogICAgIEFTU0VSVCh0
ZXh0dXJlSWQpOwogCi0gICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICBsYXllclJlbmRl
cmVyLT5jb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBsYXllclJlbmRlcmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3JCaW5kaW5nKCktPnRleHR1
cmVJZCh0ZXh0dXJlSWQpKTsKIH0KIAogdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBmZjgxYWNkYTgyNzA3MTdkZGE2YTNjMGJlODJlNjZh
NDdlMGQ4MzZiLi5jYmU0N2M4M2ZlODk4YjQyYTRhMjM0ODI5ZmIwMmM1ZTk0ZjlmZDVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMTk4LDggKzE5OCw3IEBAIHZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lVG9UZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwKIHsKICAgICBUZXh0dXJlJiB0ZXh0dXJlID0gbV90ZXh0dXJlc1tp
bmRleF07CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5j
b250ZXh0KCk7Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yID0gbGF5ZXJSZW5kZXJl
ci0+cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IoKTsKLSAgICB0ZXh0dXJlLm1fdGV4dHVy
ZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlLm1fdGV4dHVy
ZS0+YmluZFRleHR1cmUoY29udGV4dCk7CiAgICAgR0MzRGVudW0gZm9ybWF0ID0gdGV4dHVyZS5t
X3RleHR1cmUtPmZvcm1hdCgpOwogICAgIEludFNpemUgZGltZW5zaW9ucyA9IHRleHR1cmUubV90
ZXh0dXJlLT5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZjU5ODkzZGU5MDY0MThmOGNi
ZDc1NzQwYWUyOTM5ZTIzY2MyMzUwYS4uNDE1M2YwMmExOTI2OTc4YzczOWYwN2I2ZTY1MTFjZWQz
MTAzODQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMp
CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAgICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgQmxlbmRTdGF0
ZVRyYWNrZXJDb250ZXh0KCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhp
c1RocmVhZCk7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4
dCk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoY29udGV4dCksIFBhc3N0aHJvdWdoVGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmc6OmNyZWF0ZSgpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CkBAIC01MTgsNyArNTE4LDcgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4
dCogcmVzaGFwZVRyYWNrZXIgPSBuZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihyZXNoYXBlVHJh
Y2tlciksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RX
aW5kb3csIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkKTsKLSAg
ICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKKyAgICBtX2hv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3I6OmNyZWF0ZShjb250ZXh0KSwgUGFzc3Rocm91Z2hUZXh0dXJlQWxsb2NhdG9yQmlu
ZGluZzo6Y3JlYXRlKCkpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDEwLCAxMCkpOwogCiAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3
IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsKQEAgLTU2OCw3ICs1NjgsNyBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0KQog
ICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVk
ID0gdHJ1ZTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9zdElt
cGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwotICAgIGxh
eWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKKyAgICBs
YXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoY29udGV4dCksIFBhc3N0aHJvdWdoVGV4dHVyZUFs
bG9jYXRvckJpbmRpbmc6OmNyZWF0ZSgpKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoNTAwLCA1MDApKTsKIAogICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
cm9vdCA9IGFkb3B0UmVmKG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCA0YjNkZDI3ZDMxZDg4MjEwNGM3MGNmZmY1MDI0ZmI4MDQ0N2VhMTQx
Li4zZjg1ZWE1N2NmNWRjOGY2YzA4MDc1N2VhNmExMzFmNGQyZDUzMWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTY1LDggKzY1LDI1IEBAIHB1YmxpYzoKIAogY2xhc3MgTW9ja1RleHR1cmVB
bGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CiBwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TW9ja1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNb2NrVGV4dHVyZUFsbG9jYXRvcihjb250ZXh0KSk7CisgICAgfQorCiAgICAgTU9DS19NRVRI
T0QyKGNyZWF0ZVRleHR1cmUsIHVuc2lnbmVkKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkpOwog
ICAgIE1PQ0tfTUVUSE9EMyhkZWxldGVUZXh0dXJlLCB2b2lkKHVuc2lnbmVkLCBjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0pKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICB2aXJ0dWFsIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNb2NrVGV4dHVyZUFsbG9jYXRvcihQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0
KQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCkBAIC04NSwxOCArMTAyLDE5IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIG1haW5Nb2NrID0gKnN0YXRpY19jYXN0PE1vY2tD
YW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhp
Y3NDb250ZXh0M0QobWFpbkNvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgTW9ja0NhbnZhc0NvbnRl
eHQmIGltcGxNb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRleHQu
Z2V0KCkpKTsKIAotICAgICAgICBNb2NrVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3JNb2NrOwot
ICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJmFsbG9jYXRvck1vY2spOworICAgICAg
ICBSZWZQdHI8TW9ja1RleHR1cmVBbGxvY2F0b3I+IGFsbG9jYXRvck1vY2sgPSBNb2NrVGV4dHVy
ZUFsbG9jYXRvcjo6Y3JlYXRlKGltcGxDb250ZXh0KTsKKyAgICAgICAgT3duUHRyPFRleHR1cmVB
bGxvY2F0b3JCaW5kaW5nPiBhbGxvY2F0b3JCaW5kaW5nID0gUGFzc3Rocm91Z2hUZXh0dXJlQWxs
b2NhdG9yQmluZGluZzo6Y3JlYXRlKCk7CisgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cihhbGxvY2F0b3JCaW5kaW5nLmdldCgpKTsKIAogICAgICAgICBjb25zdCBJbnRTaXplIHNpemUo
MzAwLCAxNTApOwogICAgICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZVNpemUgPSBzaXplLndp
ZHRoKCkgKiBzaXplLmhlaWdodCgpICogNDsKLSAgICAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobWF4VGV4dHVyZVNpemUs
IG1heFRleHR1cmVTaXplLCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKGFsbG9jYXRv
ck1vY2suZ2V0KCksIG1heFRleHR1cmVTaXplLCBtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNp
emUpOwogCiAgICAgICAgIGlmICh0aHJlYWRlZCkKICAgICAgICAgICAgIENDUHJveHk6OnNldElt
cGxUaHJlYWQobmV3IEZha2VDQ1RocmVhZCk7CiAKLSAgICAgICAgY29uc3QgV2ViR0xJZCBiYWNr
VGV4dHVyZUlkID0gMTsKLSAgICAgICAgY29uc3QgV2ViR0xJZCBmcm9udFRleHR1cmVJZCA9IDI7
CisgICAgICAgIGNvbnN0IFdlYkdMSWQgZnJvbnRUZXh0dXJlSWQgPSAxOworICAgICAgICBjb25z
dCBXZWJHTElkIGJhY2tUZXh0dXJlSWQgPSAyOwogICAgICAgICBjb25zdCBXZWJHTElkIGZib0lk
ID0gMzsKICAgICAgICAgewogICAgICAgICAgICAgSW5TZXF1ZW5jZSBzZXF1ZW5jZTsKQEAgLTEw
OSw3ICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgICAgIC5XaWxsT25jZShS
ZXR1cm4oZmJvSWQpKTsKIAogICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0ZXh0dXJlIGFuZCBk
byB0aGUgY29weSAob24gdGhlIGltcGwgdGhyZWFkKS4KLSAgICAgICAgICAgICAgICBFWFBFQ1Rf
Q0FMTChhbGxvY2F0b3JNb2NrLCBjcmVhdGVUZXh0dXJlKHNpemUsIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBKSkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTCgqYWxsb2NhdG9yTW9jay5nZXQo
KSwgY3JlYXRlVGV4dHVyZShzaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCiAgICAgICAg
ICAgICAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oZnJvbnRUZXh0dXJlSWQpKTsKICAgICAgICAg
ICAgICAgICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIGZyb250VGV4dHVyZUlkKSk7CiAgICAgICAgICAgICAgICAgRVhQRUNU
X0NBTEwoaW1wbE1vY2ssIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIGZib0lkKSk7CkBAIC0xMjEsNyArMTM5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAg
ICAgICAgIEVYUEVDVF9DQUxMKG1haW5Nb2NrLCBkZWxldGVGcmFtZWJ1ZmZlcihmYm9JZCkpOwog
CiAgICAgICAgICAgICAgICAgLy8gVGVhcmRvd24gVGV4dHVyZU1hbmFnZXIuCi0gICAgICAgICAg
ICAgICAgRVhQRUNUX0NBTEwoYWxsb2NhdG9yTW9jaywgZGVsZXRlVGV4dHVyZShmcm9udFRleHR1
cmVJZCwgc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKTsKKyAgICAgICAgICAgICAgICBF
WFBFQ1RfQ0FMTCgqYWxsb2NhdG9yTW9jay5nZXQoKSwgZGVsZXRlVGV4dHVyZShmcm9udFRleHR1
cmVJZCwgc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCkBAIC0xNTIsNyArMTcwLDYgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
ICAgIGNhbnZhcy5jbGVhcigpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5
VG9MaW1pdCgwKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJl
cygmYWxsb2NhdG9yTW9jayk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTWFuYWdlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UZXh0dXJlTWFuYWdlclRlc3QuY3BwCmluZGV4IGRhNGFhMDMyNjFkZmEx
MmZmMzYwM2U1ZWUwYTBkY2UwYTM3MmE1OTUuLjc2MjE2ZDkyNThjYTg2NjJlMWMyZDVkNzNlNzZl
MDlkNjU3MmMxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4
dHVyZU1hbmFnZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVNYW5hZ2VyVGVzdC5jcHAKQEAgLTM2LDE1ICszNiwyNCBAQCBuYW1lc3BhY2UgewogCiBj
bGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKIHB1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWtlVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFrZVRleHR1cmVBbGxvY2F0
b3IoKSk7CisgICAgfQogICAgIHZpcnR1YWwgfkZha2VUZXh0dXJlQWxsb2NhdG9yKCkgeyB9CisK
ICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0Rl
bnVtKSB7IHJldHVybiAxOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWdu
ZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyB9CisKK3ByaXZhdGU6CisgICAgRmFrZVRl
eHR1cmVBbGxvY2F0b3IoKSB7IH0KIH07CiAKIGNsYXNzIFRleHR1cmVNYW5hZ2VyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFuYWdlclRlc3QoKQot
ICAgICAgICA6IG1fdGV4dHVyZVNpemUoMjU2LCAyNTYpCisgICAgICAgIDogbV9mYWtlVGV4dHVy
ZUFsbG9jYXRvcihGYWtlVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKCkpCisgICAgICAgICwgbV90
ZXh0dXJlU2l6ZSgyNTYsIDI1NikKICAgICAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEpCiAgICAgewogICAgIH0KQEAgLTYwLDIwICs2OSwxNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVUZXh0dXJlTWFuYWdlcihz
aXplX3QgbWF4VGV4dHVyZXMsIHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhU
ZXh0dXJlcyksIHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIDEwMjQpOwor
ICAgICAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtX2Zha2VUZXh0dXJlQWxsb2Nh
dG9yLCB0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlc01lbW9yeVNpemUo
cHJlZmVycmVkVGV4dHVyZXMpLCAxMDI0KTsKICAgICB9CiAKICAgICBib29sIHJlcXVlc3RUZXh0
dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBUZXh0dXJlVG9rZW4gdG9rZW4pCiAgICAgewog
ICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbWFuYWdl
ci0+cmVxdWVzdFRleHR1cmUodG9rZW4sIG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1hdCwg
dGV4dHVyZUlkKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIG1hbmFnZXItPmFs
bG9jYXRlVGV4dHVyZSgmbV9mYWtlVGV4dHVyZUFsbG9jYXRvciwgdG9rZW4pOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gbWFuYWdlci0+cmVxdWVzdFRleHR1cmUodG9r
ZW4sIG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1hdCwgdGV4dHVyZUlkKTsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgbV9mYWtlVGV4dHVyZUFsbG9jYXRv
cjsKKyAgICBSZWZQdHI8RmFrZVRleHR1cmVBbGxvY2F0b3I+IG1fZmFrZVRleHR1cmVBbGxvY2F0
b3I7CiAgICAgY29uc3QgSW50U2l6ZSBtX3RleHR1cmVTaXplOwogICAgIGNvbnN0IEdDM0RlbnVt
IG1fdGV4dHVyZUZvcm1hdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA2MDY5ZmQxODEzODhiYjU0
NjlkOWI2MTNmOGM3NTNkNmE1YmZiODk5Li5iYmZlNGI3NDIwMjRkZjg3OTBhYTMwMWM0NTcwYTA2
ZjQxZDQzNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTUwLDggKzUwLDE1IEBAIG5hbWVzcGFjZSB7
CiAKIGNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3Ig
ewogcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZha2VUZXh0dXJlQWxsb2NhdG9yPiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWtlVGV4dHVyZUFs
bG9jYXRvcigpKTsKKyAgICB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNv
bnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgfQorCitw
cml2YXRlOgorICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yKCkgeyB9CiB9OwogCiBjbGFzcyBGYWtl
VGlsZWRMYXllckNocm9taXVtOwpAQCAtNjMsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRl
eHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkg
eyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yQmluZGluZyosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9
CiAgICAgfTsKIAogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3Vu
dCgwKSB7IH0KQEAgLTIwNCwxMyArMjExLDEzIEBAIHZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QKIAog
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIHsKLSAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEZha2VUZXh0dXJl
QWxsb2NhdG9yOjpjcmVhdGUoKSwgNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAg
ICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsK
IAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBPd25QdHI8VGV4dHVy
ZUFsbG9jYXRvckJpbmRpbmc+IGFsbG9jYXRvckJpbmRpbmcgPSBQYXNzdGhyb3VnaFRleHR1cmVB
bGxvY2F0b3JCaW5kaW5nOjpjcmVhdGUoKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
YWxsb2NhdG9yQmluZGluZy5nZXQoKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgx
MDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTIzOSwxNCArMjQ2LDEzIEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAKIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogewotICAgIE93blB0cjxU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoRmFrZVRleHR1cmVBbGxv
Y2F0b3I6OmNyZWF0ZSgpLCA0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0g
ICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVV
cGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwotCisgICAgT3duUHRyPFRleHR1cmVB
bGxvY2F0b3JCaW5kaW5nPiBhbGxvY2F0b3JCaW5kaW5nID0gUGFzc3Rocm91Z2hUZXh0dXJlQWxs
b2NhdG9yQmluZGluZzo6Y3JlYXRlKCk7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKGFs
bG9jYXRvckJpbmRpbmcuZ2V0KCkpOwogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4g
U2V0dXAgNXg1IHRpbGVzIHdpdGggb25lIHZpc2libGUgdGlsZSBpbiB0aGUgY2VudGVyLgogICAg
IEludFNpemUgY29udGVudEJvdW5kcyg1MDAsIDUwMCk7CiAgICAgSW50UmVjdCBjb250ZW50UmVj
dChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKQEAgLTMwNSwxNCArMzExLDEzIEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAg
Ly8gV2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNvIHdl
IHdpbGwgcnVuIG91dCBvZiBtZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQgbWVt
b3J5TGltaXQgPSA0ICogMTAwICogMTAwOyAvLyAyIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhlbC4K
IAotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCAvIDIsIDEwMjQpOworICAgIE93
blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKEZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoKSwgbWVtb3J5TGltaXQsIG1lbW9yeUxp
bWl0IC8gMiwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQ
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxs
b2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7
Ci0KKyAgICBPd25QdHI8VGV4dHVyZUFsbG9jYXRvckJpbmRpbmc+IGFsbG9jYXRvckJpbmRpbmcg
PSBQYXNzdGhyb3VnaFRleHR1cmVBbGxvY2F0b3JCaW5kaW5nOjpjcmVhdGUoKTsKKyAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXIoYWxsb2NhdG9yQmluZGluZy5nZXQoKSk7CiAgICAgLy8gVGhp
cyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgog
ICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QodmlzaWJsZVJlY3QpOwpAQCAtMzQxLDEzICszNDYsMTMgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKIAogVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiB7Ci0gICAgT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCox
MDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShGYWtlVGV4dHVyZUFsbG9j
YXRvcjo6Y3JlYXRlKCksIDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxl
ZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+
IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAg
ICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgT3duUHRyPFRleHR1cmVBbGxv
Y2F0b3JCaW5kaW5nPiBhbGxvY2F0b3JCaW5kaW5nID0gUGFzc3Rocm91Z2hUZXh0dXJlQWxsb2Nh
dG9yQmluZGluZzo6Y3JlYXRlKCk7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKGFsbG9j
YXRvckJpbmRpbmcuZ2V0KCkpOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBz
byB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXIt
PnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CkBAIC0zODUsMTEgKzM5MCwxMSBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5k
c0FyZVNjYWxlZCkKICAgICAvLyBUaGUgdXBkYXRlUmVjdCAodGhhdCBpbmRpY2F0ZXMgd2hhdCB3
YXMgYWN0dWFsbHkgcGFpbnRlZCkgc2hvdWxkIGJlIGluCiAgICAgLy8gbGF5ZXIgc3BhY2UsIG5v
dCB0aGUgY29udGVudCBzcGFjZS4KIAotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAy
NCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoRmFrZVRleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZSgpLCA0KjEw
MjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldp
dGhTY2FsZWRCb3VuZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNj
YWxlZEJvdW5kcyh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxv
Y2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRl
eHR1cmVBbGxvY2F0b3IpOworICAgIE93blB0cjxUZXh0dXJlQWxsb2NhdG9yQmluZGluZz4gYWxs
b2NhdG9yQmluZGluZyA9IFBhc3N0aHJvdWdoVGV4dHVyZUFsbG9jYXRvckJpbmRpbmc6OmNyZWF0
ZSgpOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihhbGxvY2F0b3JCaW5kaW5nLmdldCgp
KTsKIAogICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoMCwgMCwgMzAwLCAyMDApOwogICAgIEludFJl
Y3QgY29udGVudEJvdW5kcygwLCAwLCAyMDAsIDI1MCk7CkBAIC00MzIsNyArNDM3LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAKICAgICAvLyBX
ZSBoYXZlIGVub3VnaCBtZW1vcnkgZm9yIG9ubHkgb25lIG9mIHRoZSB0d28gbGF5ZXJzLgogICAg
IGludCBtZW1vcnlMaW1pdCA9IDQgKiAzMDAgKiAzMDA7IC8vIDQgYnl0ZXMgcGVyIHBpeGVsLgot
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCwgbWVtb3J5TGltaXQpOworICAgIE93
blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKEZha2VUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUoKSwgbWVtb3J5TGltaXQsIG1lbW9yeUxp
bWl0LCBtZW1vcnlMaW1pdCk7CiAKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
cm9vdExheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gY2hpbGRM
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7CkBAIC00NDUsOCArNDUwLDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgcm9vdExheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50UmVjdCk7CiAgICAgY2hpbGRMYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwog
Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIE93blB0cjxUZXh0dXJl
QWxsb2NhdG9yQmluZGluZz4gYWxsb2NhdG9yQmluZGluZyA9IFBhc3N0aHJvdWdoVGV4dHVyZUFs
bG9jYXRvckJpbmRpbmc6OmNyZWF0ZSgpOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihh
bGxvY2F0b3JCaW5kaW5nLmdldCgpKTsKIAogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExh
eWVyKHJvb3RMYXllcik7CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50
U2l6ZSgzMDAsIDMwMCkpOwpAQCAtNDc0LDcgKzQ3OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogCiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogewotICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoRmFrZVRleHR1cmVBbGxvY2F0b3I6
OmNyZWF0ZSgpLCA0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cyBpbiB2YXJpb3VzIHdheXMuCkBAIC01NjgsNyArNTczLDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKIAogVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCox
MDI0LCA2MCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEZha2VUZXh0dXJlQWxsb2NhdG9y
OjpjcmVhdGUoKSwgNjAqMTAyNCoxMDI0LCA2MCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKICAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoNzAwLCA3MDApKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>