<?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>85888</bug_id>
          
          <creation_ts>2012-05-08 09:12:15 -0700</creation_ts>
          <short_desc>Crash using the new WKBundleDOMWindowExtensions APIs</short_desc>
          <delta_ts>2012-05-09 19:10:22 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jessie Berlin">jberlin</reporter>
          <assigned_to name="Jessie Berlin">jberlin</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>jberlin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>618553</commentid>
    <comment_count>0</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-08 09:12:15 -0700</bug_when>
    <thetext>&gt;  1 com.apple.WebCore              0x10f590504 WebCore::DOMWindowProperty** WTF::HashTable&lt;WebCore::DOMWindowProperty*, WebCore::DOMWindowProperty*, WTF::IdentityExtractor, WTF::PtrHash&lt;WebCore::DOMWindowProperty*&gt;, WTF::HashTraits&lt;WebCore::DOMWindowProperty*&gt;, WTF::HashTraits&lt;WebCore::DOMWindowProperty*&gt; &gt;::lookup&lt;WTF::IdentityHashTranslator&lt;WTF::PtrHash&lt;WebCore::DOMWindowProperty*&gt; &gt;, WebCore::DOMWindowProperty*&gt;(WebCore::DOMWindowProperty* const&amp;) + 0xb4
   2 com.apple.WebCore              0x10f5903f8 WTF::HashSet&lt;WebCore::DOMWindowProperty*, WTF::PtrHash&lt;WebCore::DOMWindowProperty*&gt;, WTF::HashTraits&lt;WebCore::DOMWindowProperty*&gt; &gt;::remove(WebCore::DOMWindowProperty* const&amp;) + 0x28
   3 com.apple.WebCore              0x10f58fff9 WebCore::DOMWindow::unregisterProperty(WebCore::DOMWindowProperty*) + 0x19
   4 com.apple.WebCore              0x10f590f55 WebCore::DOMWindowExtension::~DOMWindowExtension() + 0x25
   5 com.apple.WebCore              0x10f590f11 WebCore::DOMWindowExtension::~DOMWindowExtension() + 0x11
   6 com.apple.WebKit2              0x10e95beca WebKit::InjectedBundleDOMWindowExtension::~InjectedBundleDOMWindowExtension() + 0x50
   7 com.apple.WebKit2              0x10e95be61 WebKit::InjectedBundleDOMWindowExtension::~InjectedBundleDOMWindowExtension() + 0x11

A number of things may be/are going wrong here:

1. WKBundlePageWillDestroyGlobalObjectForDOMWindowExtensionCallback is only being invoked when the WKPage is destroyed, and then only for the child frames (among other things, CachedFrame does not ever invoke willDetachPage and therefore never results in this callback being invoked).
2. The DOMWindow may be going away before the DOMWindowExtension is destroyed, but it still holds a reference to m_disconnectedDOMWindow and attempts to unregister from it.
3. Even if CachedFrames did attempt to invoked the callback, the page would be gone so it wouldn&apos;t be possible for the injected bundle to dispatch the callback on the page client.

Brady and I are working on a fix.

&lt;rdar://problem/11349796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619880</commentid>
    <comment_count>1</comment_count>
      <attachid>141020</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-09 14:57:01 -0700</bug_when>
    <thetext>Created attachment 141020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619904</commentid>
    <comment_count>2</comment_count>
      <attachid>141020</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-05-09 15:19:47 -0700</bug_when>
    <thetext>Comment on attachment 141020
Patch

Assuming all green EWS, a big r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619909</commentid>
    <comment_count>3</comment_count>
      <attachid>141020</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-09 15:25:13 -0700</bug_when>
    <thetext>Comment on attachment 141020
Patch

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

&gt; Source/WebCore/dom/Document.cpp:2070
&gt; +    if (DOMWindow* domWindow = this-&gt;domWindow())
&gt; +        domWindow-&gt;willDetachDocumentFromFrame();

I’d just have named this local variable “window”.

&gt; Source/WebCore/loader/appcache/DOMApplicationCache.cpp:70
&gt; +    ApplicationCacheHost* cacheHost = applicationCacheHost();
&gt; +    if (cacheHost)
&gt; +        cacheHost-&gt;setDOMApplicationCache(0);

I’d suggest putting this definitions inside the if statement. I see that the other functions above aren’t doing this, but they should.

&gt; Source/WebCore/page/DOMWindow.cpp:488
&gt;      copyToVector(m_properties, properties);

This existing code needs a why comment, explaining both why copying the vector is needed, and why it’s safe to copy a vector of raw pointers to reference counted objects. I assume the raw pointers are safe because the function can remove the property from the vector, but it’s guaranteed to only be the property we actually called the function on.

&gt; Source/WebCore/page/DOMWindow.cpp:498
&gt; +    Vector&lt;DOMWindowProperty*&gt; properties;
&gt; +    copyToVector(m_properties, properties);
&gt; +    for (size_t i = 0; i &lt; properties.size(); ++i)
&gt; +        properties[i]-&gt;willDestroyGlobalObjectInFrame();

To avoid writing this loop many times we could use a function template. An example of how to do this is &lt;http://trac.webkit.org/changeset/116254/trunk/Source/WebCore/page/ContentSecurityPolicy.cpp&gt;.

&gt; Source/WebCore/page/Frame.cpp:265
&gt; +    // Prepare for destruction now, so any onUnload handlers get run and the DOMWindow is notified

What this comment calls onUnload handlers are actually “unload event handlers”.

&gt; Source/WebCore/page/Frame.cpp:267
&gt; +    // - if we wait until the view is destroyed, then things won&apos;t be hooked up enough for these
&gt; +    // calls to work.

I think this is just a second sentence, so you should remove the hyphen and add a period and capital letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619946</commentid>
    <comment_count>4</comment_count>
      <attachid>141020</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 15:54:19 -0700</bug_when>
    <thetext>Comment on attachment 141020
Patch

Attachment 141020 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12654735</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619975</commentid>
    <comment_count>5</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-09 16:12:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 141020 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141020&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:2070
&gt; &gt; +    if (DOMWindow* domWindow = this-&gt;domWindow())
&gt; &gt; +        domWindow-&gt;willDetachDocumentFromFrame();
&gt; 
&gt; I’d just have named this local variable “window”.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/loader/appcache/DOMApplicationCache.cpp:70
&gt; &gt; +    ApplicationCacheHost* cacheHost = applicationCacheHost();
&gt; &gt; +    if (cacheHost)
&gt; &gt; +        cacheHost-&gt;setDOMApplicationCache(0);
&gt; 
&gt; I’d suggest putting this definitions inside the if statement. I see that the other functions above aren’t doing this, but they should.

Done for all the other functions that I was already touching.

&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:488
&gt; &gt;      copyToVector(m_properties, properties);
&gt; 
&gt; This existing code needs a why comment, explaining both why copying the vector is needed, and why it’s safe to copy a vector of raw pointers to reference counted objects. I assume the raw pointers are safe because the function can remove the property from the vector, but it’s guaranteed to only be the property we actually called the function on.

m_properties is a HashSet&lt;DOMWindowProperty*&gt;.

&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:498
&gt; &gt; +    Vector&lt;DOMWindowProperty*&gt; properties;
&gt; &gt; +    copyToVector(m_properties, properties);
&gt; &gt; +    for (size_t i = 0; i &lt; properties.size(); ++i)
&gt; &gt; +        properties[i]-&gt;willDestroyGlobalObjectInFrame();
&gt; 
&gt; To avoid writing this loop many times we could use a function template. An example of how to do this is &lt;http://trac.webkit.org/changeset/116254/trunk/Source/WebCore/page/ContentSecurityPolicy.cpp&gt;.

I think I am going to have to skip this for now in the interest of time.

&gt; 
&gt; &gt; Source/WebCore/page/Frame.cpp:265
&gt; &gt; +    // Prepare for destruction now, so any onUnload handlers get run and the DOMWindow is notified
&gt; 
&gt; What this comment calls onUnload handlers are actually “unload event handlers”.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/page/Frame.cpp:267
&gt; &gt; +    // - if we wait until the view is destroyed, then things won&apos;t be hooked up enough for these
&gt; &gt; +    // calls to work.
&gt; 
&gt; I think this is just a second sentence, so you should remove the hyphen and add a period and capital letter.

Fixed.

Chromium build-fix patch with these fixes coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619995</commentid>
    <comment_count>6</comment_count>
      <attachid>141045</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-09 16:26:41 -0700</bug_when>
    <thetext>Created attachment 141045
Patch with Chromium build fix and addressing some comments from Darin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620165</commentid>
    <comment_count>7</comment_count>
      <attachid>141045</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-09 19:10:14 -0700</bug_when>
    <thetext>Comment on attachment 141045
Patch with Chromium build fix and addressing some comments from Darin

Committed in http://trac.webkit.org/changeset/116595</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141020</attachid>
            <date>2012-05-09 14:57:01 -0700</date>
            <delta_ts>2012-05-09 16:26:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>domWindowExtensionsCrash.patch</filename>
            <type>text/plain</type>
            <size>74023</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZDRlNDU5Li43YTFiY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU0
IEBACisyMDEyLTA1LTA5ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ3Jhc2ggdXNpbmcgdGhlIG5ldyBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbnMgQVBJ
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1ODg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0tCdW5k
bGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFj
ayB3YXMgb25seSBiZWluZyBpbnZva2VkIHdoZW4KKyAgICAgICAgdGhlIFdLUGFnZSB3YXMgZGVz
dHJveWVkLCBhbmQgdGhlbiBvbmx5IGZvciB0aGUgY2hpbGQgZnJhbWVzLiBJbiBhZGRpdGlvbiwg
dGhlCisgICAgICAgIERPTVdpbmRvd0V4dGVuc2lvbiB3YXMgaG9sZGluZyBvbnRvIGEgZGVzdHJv
eWVkIERPTVdpbmRvdyBhbmQgYXR0ZW1wdGluZyB0byB1bnJlZ2lzdGVyIGZyb20KKyAgICAgICAg
d2hlbiB0aGUgV0syIHdyYXBwZXIgb2JqZWN0IHdhcyBhdHRlbXB0aW5nIHRvIGRlc3Ryb3kgdGhl
IERPTVdpbmRvd0V4dGVuc2lvbi4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBpc3N1ZSBoZXJl
IHdhcyB0aGF0IHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIHdlcmUgZ2V0dGluZyBkaXNjb25uZWN0
RnJhbWUKKyAgICAgICAgYW5kIHdpbGxEZXRhY2hQYWdlIGNhbGxlZCBvbiB0aGVtIGF0IHRoZSB3
cm9uZyB0aW1lcy4KKworICAgICAgICBSZW5hbWUgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5l
Y3RGcmFtZSBhbmQgcmVjb25uZWN0RnJhbWUgdG8gZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hl
CisgICAgICAgIGFuZCByZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUgZm9yIGNsYXJpdHkuCisK
KyAgICAgICAgT25seSBpbnZva2UgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZv
clBhZ2VDYWNoZSB3aGVuIHRoZSBmcmFtZSBpcyBnb2luZyBpbnRvIHRoZQorICAgICAgICBwYWdl
IGNhY2hlLgorCisgICAgICAgIEluIHRoZSBjYXNlcyB3aGVyZSB0aGUgRE9NV2luZG93IGlzIGdl
dHRpbmcgZGVzdHJveWVkLCB0aGUgZnJhbWUgaXMgYmVpbmcgZGVzdHJveWVkLCBvciB0aGUKKyAg
ICAgICAgRE9NV2luZG93IGlzIGdldHRpbmcgY2xlYXJlZCBiZWNhdXNlIHRoZSBmcmFtZSBpcyBi
ZWluZyBuYXZpZ2F0ZWQsIGludm9rZQorICAgICAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERl
c3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lIGluc3RlYWQgb2YgZGlzY29ubmVjdEZyYW1lLgorCisg
ICAgICAgIEludm9rZSBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZy
b21GcmFtZSB3aGVuIGEgZG9jdW1lbnQgaXMgYmVpbmcgZGV0YWNoZWQKKyAgICAgICAgYmVjYXVz
ZSB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQgKGUuZy4gZmFzdC9zdG9yYWdlL3N0b3JhZ2Ut
ZGV0YWNoZWQtaWZyYW1lLmh0bWwpIGFuZAorICAgICAgICB3b24ndCBiZSBpbW1lZGlhdGVseSBk
ZXN0cm95ZWQuCisKKyAgICAgICAgSW52b2tlIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUgd2hlbiBhIGNhY2hlZCBmcmFtZSBpcworICAgICAg
ICBiZWluZyBkZXN0cm95ZWQuCisKKyAgICAgICAgTmV3IFdLMiBBUEkgVGVzdDogRE9NV2luZG93
RXh0ZW5zaW9uTm9DYWNoZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVk
RGF0YWJhc2U6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSk6CisgICAgICAgIFVwZGF0ZWQg
Zm9yIGRpc2Nvbm5lY3RGcmFtZSByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2U6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIFVw
ZGF0ZWQgZm9yIHJlY29ubmVjdEZyYW1lIHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1l
KToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgc3VzcGVuZGVkIElEQkZhY3RvcnkuCisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5GcmFtZSk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIElEQkZhY3RvcnkuCisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OndpbGxEZXRhY2hHbG9iYWxPYmpl
Y3RGcm9tRnJhbWUpOgorICAgICAgICBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaDoKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToK
KyAgICAgICAgVGVsbCB0aGUgRE9NV2luZG93IGJlZm9yZSBkZXRhY2hpbmcgdGhlIERvY3VtZW50
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgICogaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6ZGVzdHJveSk6CisgICAg
ICAgIFRlbGwgdGhlIERPTVdpbmRvdy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xlYXIpOgorICAgICAgICBVc2Ug
RG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbiBzbyB0aGF0IHRoZSBET01XaW5kb3cgaXMg
dG9sZCBhYm91dCB0aGUgbWFpbiBmcmFtZQorICAgICAgICBuYXZpZ2F0aW9uIGJlZm9yZSBkZXRh
Y2hpbmcgdGhlIERvY3VtZW50LgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6
ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKToKKyAgICAgICAgVXBkYXRlZCBmb3IgdGhlIGRp
c2Nvbm5lY3RGcmFtZSByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNh
Y2hlOjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICBVcGRhdGVkIGZvciB0
aGUgcmVjb25uZWN0RnJhbWUgcmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRp
b25DYWNoZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKToKKyAgICAgICAgQ292ZXIg
dGhlIGNhc2VzIGZvcm1lcmx5IGNvdmVyZWQgYnkgZGlzY29ubmVjdEZyYW1lICh3aGljaCB3YXMg
c29tZXRpbWVzIGJlaW5nIGNhbGxlZCB3aGVuCisgICAgICAgIGNhbGxlZCB3aGVuIHRoZSBmcmFt
ZSB3YXMgZGVzdHJveWVkKS4KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5oOgorCisgICAgICAgICogbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nv
bm5lY3RGcmFtZUZvclBhZ2VDYWNoZSk6CisgICAgICAgIFVwZGF0ZWQgZm9yIHRoZSBkaXNjb25u
ZWN0RnJhbWUgcmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9u
czo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKToKKyAgICAgICAgVXBkYXRlZCBmb3IgdGhl
IHJlY29ubmVjdEZyYW1lIHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlm
aWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSk6CisgICAgICAg
IEdldCByaWQgb2YgdGhlIHN1c3BlbmRlZCBub3RpZmljYXRpb24gY2VudGVyLgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJ
bkZyYW1lKToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgbm90aWZpY2F0aW9uIGNlbnRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXRhY2hHbG9iYWxP
YmplY3RGcm9tRnJhbWUpOgorICAgICAgICBEbyBub3QgYWxsb3cgdXNlIG9mIHRoZSBub3RpZmlj
YXRpb24gY2VudGVyIGJ5IGRldGFjaGVkIGZyYW1lcy4KKyAgICAgICAgKiBub3RpZmljYXRpb25z
L0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaDoKKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2xlYXJET01XaW5kb3dQcm9wZXJ0aWVz
KToKKyAgICAgICAgRG8gbm90IGNhbGwgZGlzY29ubmVjdERPTVdpbmRvd1Byb3BlcnRpZXMuIEl0
IGlzIG5vdyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcnMgdG8KKyAgICAgICAgdGVs
bCB0aGUgRE9NV2luZG93UHJvcGVydGllcyB0aGUgY29ycmVjdCBjYXVzZSBvZiBiZWluZyBjbGVh
cmVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp+RE9NV2luZG93KToKKyAgICAgICAg
TWFrZSBzdXJlIHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIHN0aWxsIGtub3cgdGhhdCB0aGUgRE9N
V2luZG93IGlzIGdvaW5nIGF3YXkuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZyYW1l
RGVzdHJveWVkKToKKyAgICAgICAgSW52b2tlIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFt
ZSBvbiB0aGUgRE9NV2luZG93UHJvcGVydGllcy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6d2lsbERldGFjaFBhZ2UpOgorICAgICAgICBJdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRv
IHRlbGwgdGhlIERPTVdpbmRvd1Byb3BlcnRpZXMgYW55dGhpbmcgaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6d2lsbERlc3Ryb3lDYWNoZWRGcmFtZSk6CisgICAgICAgIFRlbGwg
dGhlIERPTVdpbmRvd1Byb3BlcnRpZXMuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Ondp
bGxEZXN0cm95RG9jdW1lbnRJbkZyYW1lKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OndpbGxEZXRhY2hEb2N1bWVudEZyb21GcmFtZSk6CisgICAgICAgIERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbGVhcik6CisgICAgICAgIERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNjb25uZWN0RE9NV2luZG93UHJvcGVy
dGllcyk6CisgICAgICAgIFVwZGF0ZWQgZm9yIHRoZSBkaXNjb25uZWN0RnJhbWUgcmVuYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZWNvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVz
KToKKyAgICAgICAgRGl0dG8uCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKworICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvd0V4dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgTW92ZSB0aGUgcmVz
cG9uc2liaWxpdHkgZm9yIHRyYWNraW5nIHRoZSBkaXNjb25uZWN0ZWQgRE9NV2luZG93IHRvIERP
TVdpbmRvd1Byb3BlcnR5LCBzaW5jZQorICAgICAgICBET01XaW5kb3dQcm9wZXJ0eSB3aWxsIG5l
ZWQgaXQgdG8gdW5yZWdpc3RlciB0aGUgcHJvcGVydHkgd2hlbiBhIGNhY2hlZCBmcmFtZSBpcyBk
ZXN0cm95ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OmRpc2Nvbm5l
Y3RGcmFtZUZvclBhZ2VDYWNoZSk6CisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0byBjaGVjayBm
b3IgZGlzY29ubmVjdEZyYW1lIGJlaW5nIGNhbGxlZCB0d2ljZSAtIGl0IGlzIG5vdyBvbmx5IGNh
bGxlZCB3aGVuCisgICAgICAgIGEgZnJhbWUgZ29lcyBpbnRvIHRoZSBwYWdlIGNhY2hlLgorICAg
ICAgICBMZXQgdGhlIERPTVdpbmRvd1Byb3BlcnR5IGtlZXAgdHJhY2sgb2YgdGhlIGRpc2Nvbm5l
Y3RlZCBET01XaW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OnJl
Y29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIExldCB0aGUgRE9NV2luZG93UHJv
cGVydHkga2VlcCB0cmFjayBvZiB0aGUgZGlzY29ubmVjdGVkIERPTVdpbmRvdy4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNh
Y2hlZEZyYW1lKToKKyAgICAgICAgRGlzcGF0Y2ggdGhlIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0
Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUpOgorICAgICAgICBE
aXR0bywgYnV0IG9ubHkgaWYgdGhlIGNhbGxiYWNrIGhhc24ndCBhbHJlYWR5IGJlZW4gc2VudCBi
ZWNhdXNlIHRoZSBmcmFtZSBoYXMgYmVlbiBkZXRhY2hlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvd0V4dGVuc2lvbjo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSk6CisgICAg
ICAgIFNlbmQgdGhlIGNhbGxiYWNrIGJlY2F1c2Ugbm90aGluZyBpbnRlcmVzdGluZyBjYW4gYmUg
ZG9uZSBpbiB0aGUgZnJhbWUgb25jZSBpdCBoYXMgYmVlbgorICAgICAgICBkZXRhY2hlZC4KKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOgorCisgICAgICAgICogcGFnZS9ET01X
aW5kb3dQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6
RE9NV2luZG93UHJvcGVydHkpOgorICAgICAgICBLZWVwIHRyYWNrIG9mIHRoZSBkaXNjb25uZWN0
ZWQgRE9NV2luZG93IHNvIGl0IGNhbiBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhlIHByb3BlcnR5
IHdoZW4gYQorICAgICAgICBjYWNoZWQgZnJhbWUgaXMgZGVzdHJveWVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93UHJvcGVydHk6On5ET01XaW5kb3dQcm9wZXJ0eSk6CisgICAgICAgIEFs
c28gdW5yZWdpc3RlciB0aGUgcHJvcGVydHkgd2hlbiBhIERPTVdpbmRvd1Byb3BlcnR5IGZvciBh
IGNhY2hlZCBmcmFtZSBpcyBkZXN0cm95ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQ
cm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKToKKyAgICAgICAgS2VlcCB0cmFj
ayBvZiB0aGUgZGlzY29ubmVjdGVkIERPTVdpbmRvdy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2Jh
bE9iamVjdEluQ2FjaGVkRnJhbWUpOgorICAgICAgICBVbnJlZ2lzdGVyIHRoZSBwcm9wZXJ0eSBm
cm9tIHRoZSBkaXNjb25uZWN0ZWQgRE9NV2luZG93LgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSk6CisgICAgICAgIFVu
cmVnaXN0ZXIgdGhlIHByb3BlcnR5IGZyb20gdGhlIERPTVdpbmRvdyBhbmQgc3RvcCBrZWVwaW5n
IHRyYWNrIG9mIHRoZSBmcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5
Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKToKKyAgICAgICAgRG8gbm90IHNldCBt
X2ZyYW1lIHRvIDAgYmVjYXVzZSBkZXRhY2hlZCBmcmFtZXMgc3RpbGwgaGF2ZSBhY2Nlc3MgdG8g
dGhlIERPTVdpbmRvdywgZXZlbiBpZgorICAgICAgICB0aGV5IGNhbid0IGRvIGFueXRoaW5nIG1l
YW5pbmdmdWwgd2l0aCBpdC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd1Byb3BlcnR5Lmg6CisK
KyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRW
aWV3KToKKyAgICAgICAgVGVsbCB0aGUgRE9NV2luZG93IHRoYXQgdGhlIERvY3VtZW50IGlzIGJl
aW5nIGRldGFjaGVkIHNvIGl0IGNhbiB0ZWxsIHRoZQorICAgICAgICBET01XaW5kb3dQcm9wZXJ0
aWVzLgorCiAyMDEyLTA1LTA4ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgU2hyaW5rIEVsZW1lbnRBdHRyaWJ1dGVEYXRhIGJ5IGZhY3RvcmluZyBv
dXQgQXR0ciBvYmplY3QgY291bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCA0YmFk
ZTcwLi45ZjRjYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU4LDE4ICs1OCwz
NiBAQCBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6
ZnJvbShET01XaW5kb3cqIHdpbmRvdykKICAgICByZXR1cm4gc3VwcGxlbWVudDsKIH0KIAotdm9p
ZCBET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmRpc2Nvbm5lY3RGcmFtZSgpCit2b2lkIERPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkKIHsKICAg
ICBtX3N1c3BlbmRlZElEQkZhY3RvcnkgPSBtX2lkYkZhY3RvcnkucmVsZWFzZSgpOwotICAgIERP
TVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKKyAgICBET01XaW5kb3dQcm9wZXJ0
eTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCk7CiB9CiAKLXZvaWQgRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlOjpyZWNvbm5lY3RGcmFtZShGcmFtZSogZnJhbWUpCit2b2lkIERPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZTo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWUoZnJhbWUpOworICAg
IERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoZnJhbWUpOwog
ICAgIG1faWRiRmFjdG9yeSA9IG1fc3VzcGVuZGVkSURCRmFjdG9yeS5yZWxlYXNlKCk7CiB9CiAK
K3ZvaWQgRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdElu
Q2FjaGVkRnJhbWUoKQoreworICAgIG1fc3VzcGVuZGVkSURCRmFjdG9yeSA9IG51bGxwdHI7Cisg
ICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFt
ZSgpOworfQorCit2b2lkIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6d2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RJbkZyYW1lKCkKK3sKKyAgICBtX2lkYkZhY3RvcnkgPSBudWxscHRyOworICAgIERP
TVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKTsKK30KKwor
dm9pZCBET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9t
RnJhbWUoKQoreworICAgIG1faWRiRmFjdG9yeSA9IG51bGxwdHI7CisgICAgRE9NV2luZG93UHJv
cGVydHk6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKTsKK30KKwogSURCRmFjdG9y
eSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjp3ZWJraXRJbmRleGVkREIoRE9NV2luZG93KiB3
aW5kb3cpCiB7CiAgICAgcmV0dXJuIGZyb20od2luZG93KS0+d2Via2l0SW5kZXhlZERCKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5oCmluZGV4IGQxYTEwYjEuLmZkMzJmOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZS5oCkBAIC00Myw4ICs0MywxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSURCRmFj
dG9yeSogd2Via2l0SW5kZXhlZERCKERPTVdpbmRvdyopOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
c2Nvbm5lY3RGcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFt
ZShGcmFtZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWVGb3JQ
YWdlQ2FjaGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9t
UGFnZUNhY2hlKEZyYW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpIE9WRVJSSURFOwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZShET01XaW5kb3cqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM1ODAzZmIuLjIzY2U0MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtMjA2NCw2ICsyMDY0LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgp
CiAgICAgbV9yZW5kZXJBcmVuYS5jbGVhcigpOwogfQogCit2b2lkIERvY3VtZW50OjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24oKQoreworICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRvdyA9IHRoaXMt
PmRvbVdpbmRvdygpKQorICAgICAgICBkb21XaW5kb3ctPndpbGxEZXRhY2hEb2N1bWVudEZyb21G
cmFtZSgpOworICAgIGRldGFjaCgpOworfQorCiB2b2lkIERvY3VtZW50OjpyZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpCiB7CiAgICAgRXZlbnRUYXJnZXQ6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDMzMDRiNTMuLmEzYjUyYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC01NzcsNiArNTc3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2b2lkIHByZXBhcmVG
b3JEZXN0cnVjdGlvbigpOwogCiAgICAgLy8gT3ZlcnJpZGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBtZXRob2RzIHRvIGRvIGFkZGl0aW9uYWwgd29yawogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24pIE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCAzYzMwYjQw
Li44N2Q0YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMjUw
LDYgKzI1MCw4IEBAIHZvaWQgQ2FjaGVkRnJhbWU6OmRlc3Ryb3koKQogICAgIEFTU0VSVChtX3Zp
ZXcpOwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpID09IG1fdmlldy0+ZnJhbWUoKSk7
CiAKKyAgICBtX2RvbVdpbmRvdy0+d2lsbERlc3Ryb3lDYWNoZWRGcmFtZSgpOworCiAgICAgaWYg
KCFtX2lzTWFpbkZyYW1lKSB7CiAgICAgICAgIG1fdmlldy0+ZnJhbWUoKS0+ZGV0YWNoRnJvbVBh
Z2UoKTsKICAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZGV0YWNoVmlld3NBbmRE
b2N1bWVudExvYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
OTMwYmIyYi4uMDg5ZTAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC01MTYsNyArNTE2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoYm9vbCBjbGVhcldpbmRv
d1Byb3BlcnRpZXMsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzLCBib28KICAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+c3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKICAgICAgICAgaWYgKG1fZnJh
bWUtPmRvY3VtZW50KCktPmF0dGFjaGVkKCkpIHsKICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPndpbGxSZW1vdmUoKTsKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRl
dGFjaCgpOworICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZUZvckRlc3Ry
dWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5jcHAKaW5kZXggMTFkY2JiOC4uYmZjYjNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAt
NDcsMjIgKzQ3LDMwIEBAIERPTUFwcGxpY2F0aW9uQ2FjaGU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUo
RnJhbWUqIGZyYW1lKQogICAgICAgICBjYWNoZUhvc3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUo
dGhpcyk7CiB9CiAKLXZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6ZGlzY29ubmVjdEZyYW1lKCkK
K3ZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkK
IHsKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRpb25DYWNo
ZUhvc3QoKTsKICAgICBpZiAoY2FjaGVIb3N0KQogICAgICAgICBjYWNoZUhvc3QtPnNldERPTUFw
cGxpY2F0aW9uQ2FjaGUoMCk7Ci0gICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFt
ZSgpOworICAgIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUo
KTsKIH0KIAotdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjpyZWNvbm5lY3RGcmFtZShGcmFtZSog
ZnJhbWUpCit2b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VD
YWNoZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgRE9NV2luZG93UHJvcGVydHk6OnJlY29ubmVjdEZy
YW1lKGZyYW1lKTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9tUGFn
ZUNhY2hlKGZyYW1lKTsKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0gYXBw
bGljYXRpb25DYWNoZUhvc3QoKTsKICAgICBpZiAoY2FjaGVIb3N0KQogICAgICAgICBjYWNoZUhv
c3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUodGhpcyk7CiB9CiAKK3ZvaWQgRE9NQXBwbGljYXRp
b25DYWNoZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkKK3sKKyAgICBBcHBsaWNh
dGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRpb25DYWNoZUhvc3QoKTsKKyAgICBp
ZiAoY2FjaGVIb3N0KQorICAgICAgICBjYWNoZUhvc3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUo
MCk7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFt
ZSgpOworfQorCiBBcHBsaWNhdGlvbkNhY2hlSG9zdCogRE9NQXBwbGljYXRpb25DYWNoZTo6YXBw
bGljYXRpb25DYWNoZUhvc3QoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFt
ZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCBlM2IyYTJlLi4yZTgw
MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBs
aWNhdGlvbkNhY2hlLmgKQEAgLTQ3LDggKzQ3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERPTUFwcGxpY2F0aW9uQ2FjaGU+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBET01BcHBsaWNhdGlvbkNhY2hlKGZyYW1lKSk7IH0KICAgICB+RE9NQXBw
bGljYXRpb25DYWNoZSgpIHsgQVNTRVJUKCFtX2ZyYW1lKTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGRpc2Nvbm5lY3RGcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RG
cmFtZShGcmFtZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWVG
b3JQYWdlQ2FjaGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWVG
cm9tUGFnZUNhY2hlKEZyYW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpIE9WRVJSSURFOwogCiAgICAgdW5zaWduZWQgc2hvcnQg
c3RhdHVzKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGUoRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9u
cy5jcHAKaW5kZXggODZjYTAyOC4uNDAxNzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCkBAIC02MywxOCAr
NjMsMzYgQEAgTm90aWZpY2F0aW9uQ2VudGVyKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJr
aXROb3RpZmljYXRpb25zKERPTVdpbmRvdyogd2luZG8KICAgICByZXR1cm4gRE9NV2luZG93Tm90
aWZpY2F0aW9uczo6ZnJvbSh3aW5kb3cpLT53ZWJraXROb3RpZmljYXRpb25zKCk7CiB9CiAKLXZv
aWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lKCkKK3ZvaWQgRE9NV2lu
ZG93Tm90aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkKIHsKICAgICBt
X3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlciA9IG1fbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVh
c2UoKTsKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgRE9N
V2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpOwogfQogCi12b2lk
IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OnJlY29ubmVjdEZyYW1lKEZyYW1lKiBmcmFtZSkKK3Zv
aWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZy
YW1lKiBmcmFtZSkKIHsKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWUoZnJh
bWUpOworICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUo
ZnJhbWUpOwogICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbV9zdXNwZW5kZWROb3RpZmljYXRp
b25DZW50ZXIucmVsZWFzZSgpOwogfQogCit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6Ondp
bGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpCit7CisgICAgbV9zdXNwZW5kZWRO
b3RpZmljYXRpb25DZW50ZXIgPSBudWxscHRyOworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxs
RGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKTsKK30KKwordm9pZCBET01XaW5kb3dO
b3RpZmljYXRpb25zOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQoreworICAgIG1f
bm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0cjsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZp
Y2F0aW9uczo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpCit7CisgICAgbV9ub3Rp
ZmljYXRpb25DZW50ZXIgPSBudWxscHRyOworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGV0
YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7Cit9CisKIE5vdGlmaWNhdGlvbkNlbnRlciogRE9N
V2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucygpCiB7CiAgICAgaWYgKCFt
X3dpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oCmluZGV4IGRi
ZWRlZjYuLjIyZTI2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
RE9NV2luZG93Tm90aWZpY2F0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oCkBAIC00NSw4ICs0NSwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhET01XaW5k
b3cqKTsKICAgICBzdGF0aWMgRE9NV2luZG93Tm90aWZpY2F0aW9ucyogZnJvbShET01XaW5kb3cq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWUoRnJhbWUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJh
bWUoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBET01XaW5kb3dOb3RpZmlj
YXRpb25zKERPTVdpbmRvdyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDliODRi
NjcuLmM5ZDY3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTQyNyw2ICs0Mjcs
MTEgQEAgRE9NV2luZG93Ojp+RE9NV2luZG93KCkKICAgICB9CiAjZW5kaWYKIAorICAgIGlmICht
X3N1c3BlbmRlZEZvclBhZ2VDYWNoZSkKKyAgICAgICAgd2lsbERlc3Ryb3lDYWNoZWRGcmFtZSgp
OworICAgIGVsc2UKKyAgICAgICAgd2lsbERlc3Ryb3lEb2N1bWVudEluRnJhbWUoKTsKKwogICAg
IC8vIEFzIHRoZSBBU1NFUlRzIGFib3ZlIGluZGljYXRlLCB0aGlzIGNsZWFyIHNob3VsZCBvbmx5
IGJlIG5lY2VzYXJ5IGlmIHRoaXMgRE9NV2luZG93IGlzIHN1c3BlbmRlZCBmb3IgdGhlIHBhZ2Ug
Y2FjaGUuCiAgICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gcmlzayBhbnkgb2YgdGhlc2Ugb2Jq
ZWN0cyBoYW5naW5nIGFyb3VuZCBhZnRlciB3ZSd2ZSBiZWVuIGRlc3Ryb3llZC4KICAgICBjbGVh
ckRPTVdpbmRvd1Byb3BlcnRpZXMoKTsKQEAgLTQ2Nyw2ICs0NzIsNyBAQCBQYWdlKiBET01XaW5k
b3c6OnBhZ2UoKQogCiB2b2lkIERPTVdpbmRvdzo6ZnJhbWVEZXN0cm95ZWQoKQogeworICAgIHdp
bGxEZXN0cm95RG9jdW1lbnRJbkZyYW1lKCk7CiAgICAgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
OjpmcmFtZURlc3Ryb3llZCgpOwogICAgIGNsZWFyRE9NV2luZG93UHJvcGVydGllcygpOwogfQpA
QCAtNDc0LDExICs0ODAsMzAgQEAgdm9pZCBET01XaW5kb3c6OmZyYW1lRGVzdHJveWVkKCkKIHZv
aWQgRE9NV2luZG93Ojp3aWxsRGV0YWNoUGFnZSgpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChtX2ZyYW1lLCB0aGlzKTsKK30KIAordm9pZCBE
T01XaW5kb3c6OndpbGxEZXN0cm95Q2FjaGVkRnJhbWUoKQorewogICAgIFZlY3RvcjxET01XaW5k
b3dQcm9wZXJ0eSo+IHByb3BlcnRpZXM7CiAgICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywg
cHJvcGVydGllcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUo
KTsgKytpKQotICAgICAgICBwcm9wZXJ0aWVzW2ldLT53aWxsRGV0YWNoUGFnZSgpOworICAgICAg
ICBwcm9wZXJ0aWVzW2ldLT53aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKTsK
K30KKwordm9pZCBET01XaW5kb3c6OndpbGxEZXN0cm95RG9jdW1lbnRJbkZyYW1lKCkKK3sKKyAg
ICBWZWN0b3I8RE9NV2luZG93UHJvcGVydHkqPiBwcm9wZXJ0aWVzOworICAgIGNvcHlUb1ZlY3Rv
cihtX3Byb3BlcnRpZXMsIHByb3BlcnRpZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cHJvcGVydGllcy5zaXplKCk7ICsraSkKKyAgICAgICAgcHJvcGVydGllc1tpXS0+d2lsbERlc3Ry
b3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Ojp3aWxsRGV0YWNo
RG9jdW1lbnRGcm9tRnJhbWUoKQoreworICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHBy
b3BlcnRpZXM7CisgICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUoKTsgKytpKQorICAgICAg
ICBwcm9wZXJ0aWVzW2ldLT53aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7CiB9CiAK
IHZvaWQgRE9NV2luZG93OjpyZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5KiBwcm9w
ZXJ0eSkKQEAgLTQ5OSw2ICs1MjQsNyBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogICAgIGlm
IChtX3N1c3BlbmRlZEZvclBhZ2VDYWNoZSkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIHdp
bGxEZXN0cm95RG9jdW1lbnRJbkZyYW1lKCk7CiAgICAgY2xlYXJET01XaW5kb3dQcm9wZXJ0aWVz
KCk7CiB9CiAKQEAgLTUxOSw3ICs1NDUsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzY29ubmVjdERP
TVdpbmRvd1Byb3BlcnRpZXMoKQogICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3Bl
cnRpZXM7CiAgICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUoKTsgKytpKQotICAgICAgICBw
cm9wZXJ0aWVzW2ldLT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICAgICAgcHJvcGVydGllc1tpXS0+
ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpyZWNv
bm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKCkKQEAgLTUyOCwxMiArNTU0LDExIEBAIHZvaWQgRE9N
V2luZG93OjpyZWNvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKCkKICAgICBWZWN0b3I8RE9NV2lu
ZG93UHJvcGVydHkqPiBwcm9wZXJ0aWVzOwogICAgIGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMs
IHByb3BlcnRpZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgcHJvcGVydGllc1tpXS0+cmVjb25uZWN0RnJhbWUobV9mcmFtZSk7
CisgICAgICAgIHByb3BlcnRpZXNbaV0tPnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShtX2Zy
YW1lKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OmNsZWFyRE9NV2luZG93UHJvcGVydGllcygpCiB7
Ci0gICAgZGlzY29ubmVjdERPTVdpbmRvd1Byb3BlcnRpZXMoKTsKICAgICBtX3Byb3BlcnRpZXMu
Y2xlYXIoKTsKIAogICAgIG1fc2NyZWVuID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4
IDRkNTg5N2QuLjc4ZmI2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMzkwLDYgKzM5
MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gYnkgdGhlIGRvY3VtZW50IHRo
YXQgaXMgY3VycmVudGx5IGFjdGl2ZSBpbiBtX2ZyYW1lLgogICAgICAgICBib29sIGlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpIGNvbnN0OwogCisgICAgICAgIHZvaWQgd2lsbERldGFjaERv
Y3VtZW50RnJvbUZyYW1lKCk7CisgICAgICAgIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRGcmFtZSgp
OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgRE9NV2luZG93KEZyYW1lKik7CiAK
QEAgLTQxMSw2ICs0MTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xl
YXJET01XaW5kb3dQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdERPTVdpbmRv
d1Byb3BlcnRpZXMoKTsKICAgICAgICAgdm9pZCByZWNvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVz
KCk7CisgICAgICAgIHZvaWQgd2lsbERlc3Ryb3lEb2N1bWVudEluRnJhbWUoKTsKIAogICAgICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgICAgIEtVUkwg
bV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKaW5kZXgg
NGE5YTQxYS4uZTQ3NTUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3dFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5z
aW9uLmNwcApAQCAtMzYsOTAgKzM2LDgyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIERPTVdpbmRv
d0V4dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogICAgICwgbV93b3Js
ZCh3b3JsZCkKLSAgICAsIG1fZGlzY29ubmVjdGVkRE9NV2luZG93KDApCiAgICAgLCBtX3dhc0Rl
dGFjaGVkKGZhbHNlKQogewogICAgIEFTU0VSVCh0aGlzLT5mcmFtZSgpKTsKICAgICBBU1NFUlQo
bV93b3JsZCk7CiB9CiAKLURPTVdpbmRvd0V4dGVuc2lvbjo6fkRPTVdpbmRvd0V4dGVuc2lvbigp
Cit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkK
IHsKLSAgICAvLyBET01XaW5kb3dFeHRlbnNpb24gbGlmZXRpbWUgaXNuJ3QgdGllZCBkaXJlY3Rs
eSB0byB0aGUgRE9NV2luZG93IGl0c2VsZiBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCBpdCB1bnJl
Z2lzdGVyCi0gICAgLy8gaXRzZWxmIGZyb20gYW55IERPTVdpbmRvdyBpdCBpcyBhc3NvY2lhdGVk
IHdpdGggd2hlbiBkZXN0cm95ZWQuCi0gICAgLy8gVGhpcyBtaWdodCBoYXBwZW4gaWYgdGhlIERP
TVdpbmRvd0V4dGVuc2lvbiBpcyBkZXN0cm95ZWQgd2hpbGUgaXRzIERPTVdpbmRvdyBpcyBpbiBh
IENhY2hlZFBhZ2UuCi0gICAgaWYgKG1fZGlzY29ubmVjdGVkRE9NV2luZG93KQotICAgICAgICBt
X2Rpc2Nvbm5lY3RlZERPTVdpbmRvdy0+dW5yZWdpc3RlclByb3BlcnR5KHRoaXMpOwotfQotCi12
b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6ZGlzY29ubmVjdEZyYW1lKCkKLXsKLSAgICAvLyBUaGUg
RE9NV2luZG93IGRlc3RydWN0b3IgY2FsbHMgZGlzY29ubmVjdEZyYW1lIG9uIGFsbCBpdHMgRE9N
V2luZG93UHJvcGVydGllcywgZXZlbiBpZiBpdAotICAgIC8vIGRpZCB0aGF0IGFscmVhZHkgd2hl
biBlbnRlcmluZyB0aGUgcGFnZSBjYWNoZS4KLSAgICBpZiAobV9kaXNjb25uZWN0ZWRGcmFtZSkg
ewotICAgICAgICBBU1NFUlQoIWZyYW1lKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01X
aW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3Rp
bGwgd29yayB0byBkby4KICAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0b3Ig
PSB0aGlzOwogICAgIAotICAgIC8vIERPTVdpbmRvd1Byb3BlcnRpZXMgYXJlIGRpc2Nvbm5lY3Rl
ZCBmcm9tIGZyYW1lcyBhZnRlciB0aGV5IGFyZSBkZXRhY2hlZC4KLSAgICAvLyBET01XaW5kb3dF
eHRlbnNpb25zIG9ubHkgd2FudCB0byBzdGF5IHByZXBhcmVkIGZvciBjbGllbnQgY2FsbGJhY2tz
IGlmIHRoZXkndmUgbmV2ZXIgYmVlbiBkZXRhY2hlZC4KLSAgICBpZiAoIW1fd2FzRGV0YWNoZWQp
IHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVu
c2lvbkZyb21HbG9iYWxPYmplY3QodGhpcyk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaFdpbGxEaXNjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCh0aGlzKTsKIAotICAgICAgICBt
X2Rpc2Nvbm5lY3RlZEZyYW1lID0gZnJhbWU7Ci0gICAgICAgIG1fZGlzY29ubmVjdGVkRE9NV2lu
ZG93ID0gZnJhbWUtPmRvbVdpbmRvdygpOwotICAgIH0KKyAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1l
ID0gZnJhbWU7CiAKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7Cisg
ICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpOwogfQog
Ci12b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6cmVjb25uZWN0RnJhbWUoRnJhbWUqIGZyYW1lKQor
dm9pZCBET01XaW5kb3dFeHRlbnNpb246OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgLy8gRE9NV2luZG93UHJvcGVydGllcyBzaG91bGQgbmV2ZXIgcmVj
b25uZWN0IHRvIGEgZnJhbWUgYWZ0ZXIgdGhleSd2ZSBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHBh
Z2UuCi0gICAgQVNTRVJUKCFtX3dhc0RldGFjaGVkKTsKICAgICBBU1NFUlQobV9kaXNjb25uZWN0
ZWRGcmFtZSA9PSBmcmFtZSk7CiAgICAgCi0gICAgRE9NV2luZG93UHJvcGVydHk6OnJlY29ubmVj
dEZyYW1lKGZyYW1lKTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9t
UGFnZUNhY2hlKGZyYW1lKTsKICAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gMDsKLSAgICBtX2Rp
c2Nvbm5lY3RlZERPTVdpbmRvdyA9IDA7CiAKICAgICB0aGlzLT5mcmFtZSgpLT5sb2FkZXIoKS0+
Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxP
YmplY3QodGhpcyk7CiB9CiAKLXZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGV0YWNoUGFn
ZSgpCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNh
Y2hlZEZyYW1lKCkKIHsKLSAgICAvLyB3aWxsRGV0YWNoUGFnZSBtaWdodCBiZSBjYWxsZWQgbXVs
dGlwbGUgdGltZXMgYnV0IHdlIG9ubHkgd2FudCB0byByZWFjdCBvbmNlLgotICAgIGlmIChtX3dh
c0RldGFjaGVkKQotICAgICAgICByZXR1cm47Ci0gICAgCisgICAgQVNTRVJUKG1fZGlzY29ubmVj
dGVkRnJhbWUpOworCiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1
bHQgaW4gdGhpcyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hp
bGUgdGhlcmUgaXMgc3RpbGwgd29yayB0byBkby4KICAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5z
aW9uPiBwcm90ZWN0b3IgPSB0aGlzOwogICAgIAotICAgIEZyYW1lKiBmcmFtZSA9IG1fZGlzY29u
bmVjdGVkRnJhbWUuZ2V0KCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgZnJhbWUgPSB0aGlz
LT5mcmFtZSgpOwotICAgIEFTU0VSVChmcmFtZSk7CisgICAgbV9kaXNjb25uZWN0ZWRGcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9N
V2luZG93RXh0ZW5zaW9uKHRoaXMpOworICAgIG1fZGlzY29ubmVjdGVkRnJhbWUgPSAwOwogCi0g
ICAgLy8gRE9NV2luZG93RXh0ZW5zaW9uIGxpZmV0aW1lIGlzbid0IHRpZWQgZGlyZWN0bHkgdG8g
dGhlIERPTVdpbmRvdyBpdHNlbGYgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgaXQgdW5yZWdpc3Rl
cgotICAgIC8vIGl0c2VsZiBmcm9tIGFueSBET01XaW5kb3cgaXQgaXMgYXNzb2NpYXRlZCB3aXRo
IHdoZW4gZGV0YWNoZWQuCi0gICAgLy8gVGhpcyBtaWdodCBiZSB0aGUgZGlzY29ubmVjdGVkIERP
TVdpbmRvdyBpZiB0aGUgRE9NV2luZG93IGlzIGluIGEgQ2FjaGVkUGFnZSB0aGF0IGlzIHBydW5l
ZC4KLSAgICBET01XaW5kb3cqIGFzc29jaWF0ZWRET01XaW5kb3cgPSBtX2Rpc2Nvbm5lY3RlZERP
TVdpbmRvdyA/IG1fZGlzY29ubmVjdGVkRE9NV2luZG93IDogZnJhbWUtPmRvbVdpbmRvdygpOwot
ICAgIGFzc29jaWF0ZWRET01XaW5kb3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSh0aGlzKTsKLSAgICBt
X2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyA9IDA7Ci0gICAgCi0gICAgZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbih0aGlzKTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RJbkNhY2hlZEZyYW1lKCk7Cit9CiAKLSAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lID0gMDsKK3Zv
aWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQor
eworICAgIEFTU0VSVCghbV9kaXNjb25uZWN0ZWRGcmFtZSk7CisKKyAgICAvLyBDYWxsaW5nIG91
dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlzIERPTVdpbmRvd0V4dGVuc2lvbiBi
ZWluZyBkZXN0cm95ZWQKKyAgICAvLyB3aGlsZSB0aGVyZSBpcyBzdGlsbCB3b3JrIHRvIGRvLgor
ICAgIFJlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RvciA9IHRoaXM7CisKKyAgICBp
ZiAoIW1fd2FzRGV0YWNoZWQpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KTsKKyAgICAgICAgQVNTRVJUKGZyYW1lKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lv
bih0aGlzKTsKKyAgICB9CisKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RJbkZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGV0
YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkKK3sKKyAgICBBU1NFUlQoIW1fZGlzY29ubmVjdGVk
RnJhbWUpOworICAgIEFTU0VSVCghbV93YXNEZXRhY2hlZCk7CisKKyAgICAvLyBDYWxsaW5nIG91
dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlzIERPTVdpbmRvd0V4dGVuc2lvbiBi
ZWluZyBkZXN0cm95ZWQKKyAgICAvLyB3aGlsZSB0aGVyZSBpcyBzdGlsbCB3b3JrIHRvIGRvLgor
ICAgIFJlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RvciA9IHRoaXM7CisKKyAgICBG
cmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIEFTU0VSVChmcmFtZSk7CisgICAgZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZv
ckRPTVdpbmRvd0V4dGVuc2lvbih0aGlzKTsKIAotICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxs
RGV0YWNoUGFnZSgpOwotICAgIAogICAgIG1fd2FzRGV0YWNoZWQgPSB0cnVlOworICAgIERPTVdp
bmRvd1Byb3BlcnR5Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lv
bi5oCmluZGV4IGMyMGE0ZjcuLjUzYjg3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3dFeHRlbnNpb24uaApAQCAtMzMsNyArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIERPTVdy
YXBwZXJXb3JsZDsKIGNsYXNzIEZyYW1lOwpAQCAtNDUsMTEgKzQ0LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XaW5kb3dFeHRlbnNpb24oZnJhbWUsIHdvcmxk
KSk7CiAgICAgfQogCi0gICAgfkRPTVdpbmRvd0V4dGVuc2lvbigpOwotCi0gICAgdmlydHVhbCB2
b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNvbm5l
Y3RGcmFtZShGcmFtZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoUGFn
ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2Fj
aGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tUGFnZUNh
Y2hlKEZyYW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFs
T2JqZWN0SW5DYWNoZWRGcmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUdsb2JhbE9iamVjdEluRnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpIE9WRVJSSURFOwogCiAgICAgRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KIApAQCAtNTgs
NyArNTcsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3Js
ZDsKICAgICBSZWZQdHI8RnJhbWU+IG1fZGlzY29ubmVjdGVkRnJhbWU7Ci0gICAgRE9NV2luZG93
KiBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdzsKICAgICBib29sIG1fd2FzRGV0YWNoZWQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCmluZGV4IDMxZWE0NGUu
LmY0ZjMyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVy
dHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwCkBA
IC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NV2luZG93UHJvcGVydHk6
OkRPTVdpbmRvd1Byb3BlcnR5KEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCisg
ICAgLCBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdygwKQogewogICAgIGlmIChtX2ZyYW1lKQogICAg
ICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+cmVnaXN0ZXJQcm9wZXJ0eSh0aGlzKTsKQEAgLTQw
LDI1ICs0MSw1MyBAQCBET01XaW5kb3dQcm9wZXJ0eTo6RE9NV2luZG93UHJvcGVydHkoRnJhbWUq
IGZyYW1lKQogCiBET01XaW5kb3dQcm9wZXJ0eTo6fkRPTVdpbmRvd1Byb3BlcnR5KCkKIHsKLSAg
ICBpZiAobV9mcmFtZSkKKyAgICBpZiAobV9mcmFtZSkgeworICAgICAgICBBU1NFUlQoIW1fZGlz
Y29ubmVjdGVkRE9NV2luZG93KTsKICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnVucmVn
aXN0ZXJQcm9wZXJ0eSh0aGlzKTsKKyAgICB9IGVsc2UgaWYgKG1fZGlzY29ubmVjdGVkRE9NV2lu
ZG93KQorICAgICAgICBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdy0+dW5yZWdpc3RlclByb3BlcnR5
KHRoaXMpOwogfQogCi12b2lkIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKQor
dm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkKIHsK
KyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgQVNTRVJUKCFtX2Rpc2Nvbm5lY3RlZERPTVdpbmRv
dyk7CisgICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSBtX2ZyYW1lLT5kb21XaW5kb3coKTsK
ICAgICBtX2ZyYW1lID0gMDsKIH0KIAotdm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0
RnJhbWUoRnJhbWUqIGZyYW1lKQordm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJh
bWVGcm9tUGFnZUNhY2hlKEZyYW1lKiBmcmFtZSkKIHsKICAgICBBU1NFUlQoZnJhbWUpOwogICAg
IEFTU0VSVCghbV9mcmFtZSk7CisgICAgQVNTRVJUKG1fZGlzY29ubmVjdGVkRE9NV2luZG93KTsK
ICAgICBtX2ZyYW1lID0gZnJhbWU7CisgICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSAwOwor
fQorCit2b2lkIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2Fj
aGVkRnJhbWUoKQoreworICAgIEFTU0VSVChtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyk7CisgICAg
Ly8gRE9NV2luZG93UHJvcGVydHkgbGlmZXRpbWUgaXNuJ3QgdGllZCBkaXJlY3RseSB0byB0aGUg
RE9NV2luZG93IGl0c2VsZiBzbyBpdCBpcyBpbXBvcnRhbnQKKyAgICAvLyB0aGF0IGl0IHVucmVn
aXN0ZXIgaXRzZWxmIGZyb20gYW55IERPTVdpbmRvdyBpdCBpcyBhc3NvY2lhdGVkIHdpdGguCisg
ICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSh0aGlzKTsKKyAg
ICBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyA9IDA7Cit9CisKK3ZvaWQgRE9NV2luZG93UHJvcGVy
dHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpCit7CisgICAgQVNTRVJUKG1fZnJh
bWUpOworICAgIEFTU0VSVCghbV9kaXNjb25uZWN0ZWRET01XaW5kb3cpOworICAgIC8vIERPTVdp
bmRvd1Byb3BlcnR5IGxpZmV0aW1lIGlzbid0IHRpZWQgZGlyZWN0bHkgdG8gdGhlIERPTVdpbmRv
dyBpdHNlbGYgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgaXQgdW5yZWdpc3RlcgorICAgIC8vIGl0
c2VsZiBmcm9tIGFueSBET01XaW5kb3cgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIG1fZnJh
bWUtPmRvbVdpbmRvdygpLT51bnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7CisgICAgbV9mcmFtZSA9
IDA7CiB9CiAKLXZvaWQgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXRhY2hQYWdlKCkKK3ZvaWQg
RE9NV2luZG93UHJvcGVydHk6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKQogewot
ICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gaGFuZGxl
IHRoaXMgbm90aWZpY2F0aW9uLgorICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBBU1NFUlQoIW1f
ZGlzY29ubmVjdGVkRE9NV2luZG93KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3dQcm9wZXJ0eS5oCmluZGV4IGJjNjYwMGQuLjQ0MWJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvd1Byb3BlcnR5LmgKQEAgLTI4LDE1ICsyOCwxOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEZyYW1lOwogCiBjbGFzcyBET01XaW5k
b3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRE9NV2luZG93UHJvcGVydHkoRnJh
bWUqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVjb25uZWN0RnJhbWUoRnJhbWUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFj
aFBhZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCk7
CisgICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSopOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7CisgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKTsKIAogICAgIEZy
YW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIApAQCAtNDQsNiArNDcsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+RE9NV2luZG93UHJvcGVydHkoKTsKIAogICAgIEZy
YW1lKiBtX2ZyYW1lOworICAgIERPTVdpbmRvdyogbV9kaXNjb25uZWN0ZWRET01XaW5kb3c7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGIwNjFjM2IuLjQ1Y2YyZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0yNjIsMTIgKzI2MiwxMiBAQCB2b2lkIEZyYW1lOjpzZXRWaWV3KFBh
c3NSZWZQdHI8RnJhbWVWaWV3PiB2aWV3KQogICAgIGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmll
dy0+ZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpOwogCi0gICAgLy8gRGV0YWNoIHRoZSBkb2N1bWVu
dCBub3csIHNvIGFueSBvblVubG9hZCBoYW5kbGVycyBnZXQgcnVuIC0gaWYKLSAgICAvLyB3ZSB3
YWl0IHVudGlsIHRoZSB2aWV3IGlzIGRlc3Ryb3llZCwgdGhlbiB0aGluZ3Mgd29uJ3QgYmUKLSAg
ICAvLyBob29rZWQgdXAgZW5vdWdoIGZvciBzb21lIEphdmFTY3JpcHQgY2FsbHMgdG8gd29yay4K
KyAgICAvLyBQcmVwYXJlIGZvciBkZXN0cnVjdGlvbiBub3csIHNvIGFueSBvblVubG9hZCBoYW5k
bGVycyBnZXQgcnVuIGFuZCB0aGUgRE9NV2luZG93IGlzIG5vdGlmaWVkCisgICAgLy8gLSBpZiB3
ZSB3YWl0IHVudGlsIHRoZSB2aWV3IGlzIGRlc3Ryb3llZCwgdGhlbiB0aGluZ3Mgd29uJ3QgYmUg
aG9va2VkIHVwIGVub3VnaCBmb3IgdGhlc2UKKyAgICAvLyBjYWxscyB0byB3b3JrLgogICAgIGlm
ICghdmlldyAmJiBtX2RvYyAmJiBtX2RvYy0+YXR0YWNoZWQoKSAmJiAhbV9kb2MtPmluUGFnZUNh
Y2hlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgd2lsbFJlbW92ZSBoZXJl
LiBXaHkgaXMgdGhhdCBPSz8KLSAgICAgICAgbV9kb2MtPmRldGFjaCgpOworICAgICAgICBtX2Rv
Yy0+cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CiAgICAgfQogICAgIAogICAgIGlmIChtX3ZpZXcp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGQ2
MmNlYy4uYjcwNzNjNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA1LTA5ICBKZXNzaWUgQmVybGluICA8amJl
cmxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggdXNpbmcgdGhlIG5ldyBXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbnMgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg1ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2FjaGVkIGZyYW1lcyBjYW4gbGl2ZSBzbGlnaHRseSBsb25nZXIgdGhh
biB0aGUgcGFnZSwgYnV0IG1vc3QgY2xpZW50cyB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMKKyAgICAg
ICAgYW5kIGRvIG90aGVyIGNsZWFudXAgaW4gdGhlIHdpbGxEZXN0cm95UGFnZSBjYWxsYmFjaywg
bWFraW5nIHRoZW0gbWlzcyB0aGUKKyAgICAgICAgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JE
T01XaW5kb3dFeHRlbnNpb24gY2FsbGJhY2tzLgorCisgICAgICAgIFRoZSBjYWxscyB0byB3aWxs
RGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbiBpbiB0aGUgRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWMKKyAgICAgICAgdGVzdCB3ZXJlIGFsbCBiZWluZyBpbnZva2VkIHVuZGVy
bmVhdGggV2ViUGFnZTo6Y2xvc2UuIFRoaXMgaXMgdW5yZWFsaXN0aWMuIFVwZGF0ZSB0aGF0IHRl
c3QKKyAgICAgICAgdG8gZGVzdHJveSB0aGUgQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9ucyBpbiBy
ZXNwb25zZSB0byB0aGUgd2lsbERlc3Ryb3lQYWdlIGNhbGxiYWNrLgorCisgICAgICAgIEFkZCBh
IHRlc3QgdG8gdmVyaWZ5IHRoYXQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dF
eHRlbnNpb24gaXMgYmVpbmcgY2FsbGVkIGZvcgorICAgICAgICBwYWdlcyB0aGF0IGRvbid0IGdv
IGludG8gdGhlIHBhZ2UgY2FjaGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGUuY3BwLCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAs
IHNpbXBsZS11bmxvYWQuaHRtbAorICAgICAgICBhbmQgc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRt
bAorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAgICAgICBSZW1vdmUg
dGhlIGV4cGVjdGVkIG1lc3NhZ2VzIGZvciB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdp
bmRvd0V4dGVuc2lvbi4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgRG8gbm90IGJvdGhlciB0byBrZWVwIHRyYWNr
IG9mIHRoZSBsaXZlIGV4dGVuc2lvbiBjb3VudCAtIGFsbCBvZiB0aGVtIGFyZSBleHBlY3RlZCB0
byBiZQorICAgICAgICBsaXZlIHVudGlsIHRoZSB0ZXN0IGNvbXBsZXRlcy4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBGaXggdGhlIGNhbGxzIHRvIEVYUEVDVCB0byBw
YXNzIHRoZSBleHBlY3RlZCB2YWx1ZSBmaXJzdCwgYW5kIHVzZSBFWFBFQ1RfV0tfU1RSRVEgc28g
dGhhdAorICAgICAgICBtZXNzYWdlIGZhaWx1cmVzIHdpbGwgYmUgY2xlYXJlci4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
Ojp3aWxsRGVzdHJveVBhZ2UpOgorICAgICAgICBDbGVhbiB1cCB0aGUgQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9ucy4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJh
c2ljOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbik6CisgICAg
ICAgIEFkZCBhbiBBU1NFUlRfTk9UX1JFQUNIRUQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
OgorICAgICAgICBLZWVwIHRyYWNrIG9mIHRoZSBtZXNzYWdlcyByZWNlaXZlZCBzbyB0aGV5IGNh
biBiZSBjaGVja2VkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgTmF2aWdhdGUgdG8gdW5jYWNoZWFibGUgcGFnZXMgYW5kIGJh
Y2suCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVu
c2lvbk5vQ2FjaGVfQnVuZGxlLmNwcDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAuCisgICAgICAg
IChET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRP
TVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6OkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUpOgorICAg
ICAgICBTZXQgdXAgYWxsIHRoZSBzdGF0ZXMgZm9yIGVhY2ggQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6
ZnJhbWVMb2FkRmluaXNoZWQpOgorICAgICAgICBUZWxsIHRoZSBVSSBQcm9jZXNzIGFib3V0IHRo
ZSBzdGF0ZXMgb2YgdGhlIEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbnMuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpzZW5kRXh0ZW5zaW9uU3RhdGVN
ZXNzYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2Fj
aGU6OmluaXRpYWxpemUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5z
aW9uTm9DYWNoZTo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01X
aW5kb3dFeHRlbnNpb25Ob0NhY2hlOjp3aWxsRGVzdHJveVBhZ2UpOgorICAgICAgICBSZW12b2Ug
dGhlIHJlbWFpbmluZyBCdW5kbGVET01XaW5kb3dFeHRlbnNpb25zLCBzZW5kIHRoZSB1cGRhdGVk
IHN0YXRlLCBhbmQgZmluaXNoIHRoZSB0ZXN0LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9N
V2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6dXBkYXRlRXh0ZW5zaW9uU3RhdGVSZWNvcmQpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6c2VuZEJ1bmRs
ZU1lc3NhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uTm9D
YWNoZTo6Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjp3aWxsRGlzY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QpOgorICAgICAgICBBU1NFUlQgdGhhdCB0aGVzZSBw
YWdlcyBub3QgZ29pbmcgaW50byB0aGUgcGFnZSBjYWNoZSBhcmUgbm90IGdldHRpbmcgZGlzY29u
bmVjdGVkIHRvIGdvIGludG8KKyAgICAgICAgdGhlIHBhZ2UgY2FjaGUuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpkaWRSZWNvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCk6CisgICAgICAgIERpdHRvIGFib3V0IGdldHRpbmcg
cmVjb25uZWN0ZWQgd2hlbiBjb21pbmcgb3V0IG9mIHRoZSBwYWdlIGNhY2hlLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6d2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24pOgorICAgICAgICBUZWxsIHRoZSBVSSBQcm9j
ZXNzLCB1cGRhdGUgdGhlIHN0YXRlLCBhbmQgZ2V0IHJpZCBvZiB0aGUgQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmluaXNoTG9hZEZvckZyYW1l
Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndpbGxEaXNjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiYWNrKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2Jq
ZWN0Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjayk6CisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3NpbXBsZS11bmxvYWQuaHRtbDog
QWRkZWQuCisKIDIwMTItMDUtMDcgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5i
b3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBVbmJyZWFrIGRlYnVnZ2luZyBvZiBXZWJLaXQyLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NWMzNjVjLi4xZGM5Y2U2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQzLDcgKzE0MywxMSBAQAogCQlDNTQwRjc4NDE1MkU1QTlBMDBBNDBD
OEMgLyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAvKiB2ZXJib3Nl
TWFya3VwLmh0bWwgKi87IH07CiAJCUU0OTAyOTY4MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBpbmdT
dHlsZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi87IH07
CiAJCUYzRkMzRUUzMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNGQzNFRTIxMzY3OEI3MzAwMTI2
QTY1IC8qIGxpYmd0ZXN0LmEgKi87IH07CisJCUY2QTZCRkJCMTU1OEFDNDgwMDkyNjEwNyAvKiBz
aW1wbGUtdW5sb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZBNkJGQjkxNTU4QUJGODAwOTI2MTA3IC8qIHNpbXBsZS11bmxvYWQu
aHRtbCAqLzsgfTsKKwkJRjZBNkJGQkMxNTU4QUM0QjAwOTI2MTA3IC8qIHNpbXBsZS1pZnJhbWUt
dW5sb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjZBNkJGQjgxNTU4QUJGODAwOTI2MTA3IC8qIHNpbXBsZS1pZnJhbWUtdW5sb2Fk
Lmh0bWwgKi87IH07CiAJCUY2RjNGMjkxMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjNG
MjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRjZGNDlD
NjkxNTU0NUM4RTAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGNDlDNjcxNTU0NUM4
RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovOyB9OworCQlGNkY0
OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGNDlD
NjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNw
cCAqLzsgfTsKIAkJRjZGRERERDMxNDI0MUFENDAwNEYxNzI5IC8qIFByaXZhdGVCcm93c2luZ1B1
c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJv
d3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi87IH07CiAJCUY2RkREREQ2MTQy
NDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGRERERDUxNDI0MUM0ODAwNEYxNzI5IC8q
IHB1c2gtc3RhdGUuaHRtbCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwpA
QCAtMTkwLDcgKzE5NCw5IEBACiAJCQkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8qIHB1c2gt
c3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlCQ0JEMzczNzEyNUFCQkVCMDBE
MkMyOUYgLyogaWNvbi5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUEwMkM4NzAxMjVE
NENGRDAwRTNGNEJEIC8qIGZpbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlGNkE2
QkZCQzE1NThBQzRCMDA5MjYxMDcgLyogc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJRjZBNkJGQkIxNTU4QUM0ODAwOTI2MTA3IC8q
IHNpbXBsZS11bmxvYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMEFEQkU5NjEy
RkNBNzlCMDBEMkMxMjkgLyogc2ltcGxlLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlCQ0FBNDg1NjE0QTA0NDRDMDA4OEZBQzQgLyogc2ltcGxlLXRhbGwuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDMDFBMjNGMjEyNjYxNTY3MDBDOUVENTUgLyogc3BhY2ViYXIt
c2Nyb2xsaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0zNTYsNyArMzYyLDExIEBA
CiAJCUM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSB2ZXJib3NlTWFya3VwLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBpbmdTdHlsZUNy
YXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVHlwaW5nU3R5
bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNGQzNFRTIxMzY3OEI3
MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGliZ3Rlc3QuYTsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRjZBNkJGQjgxNTU4QUJGODAwOTI2MTA3IC8q
IHNpbXBsZS1pZnJhbWUtdW5sb2FkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
c2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY2QTZCRkI5MTU1OEFCRjgwMDkyNjEwNyAvKiBzaW1wbGUtdW5sb2FkLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLXVubG9hZC5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjZGM0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29va2llTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5
RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RjQ5QzY3MTU1NDVDOEQwMDA3RjM5
RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNkZEREREMjE0MjQxQUQ0MDA0RjE3MjkgLyogUHJpdmF0ZUJy
b3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkZERERENTE0MjQxQzQ4MDA0
RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInB1
c2gtc3RhdGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmls
ZVJlZmVyZW5jZSBzZWN0aW9uICovCkBAIC01MDEsNiArNTExLDggQEAKIAkJCQlGNkYzRjI5MDEz
MzQyRkVCMDBBNkJGMTkgLyogQ29va2llTWFuYWdlci5jcHAgKi8sCiAJCQkJNTEzOTNFMUUxNTIz
OTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCAqLywKIAkJCQk1MTM5
M0UxRDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNw
cCAqLywKKwkJCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9u
Tm9DYWNoZS5jcHAgKi8sCisJCQkJRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRv
d0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLywKIAkJCQlCQ0I2ODAzRjEyNkZCRkUxMDA2
NDJBNjEgLyogRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcCAqLywKIAkJCQlC
Q0I2ODA0MTEyNkZCRkYxMDA2NDJBNjEgLyogRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENy
YXNoX0J1bmRsZS5jcHAgKi8sCiAJCQkJQzA0NUY5NDQxMzg1QzJFOTAwQzBGM0NEIC8qIERvd25s
b2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgKi8sCkBAIC01ODksNyArNjAxLDkgQEAKIAkJ
CQkxQURCRUZCQzEzMEM2QTAxMDBENjFEMTkgLyogc2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0
aW5nLmh0bWwgKi8sCiAJCQkJQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8qIHNpbXBsZS1mb3Jt
Lmh0bWwgKi8sCiAJCQkJMzNEQzg5MEUxNDE5NTM5MzAwNzQ3RUY3IC8qIHNpbXBsZS1pZnJhbWUu
aHRtbCAqLywKKwkJCQlGNkE2QkZCODE1NThBQkY4MDA5MjYxMDcgLyogc2ltcGxlLWlmcmFtZS11
bmxvYWQuaHRtbCAqLywKIAkJCQlCQ0FBNDg1NTE0QTAyMTY0MDA4OEZBQzQgLyogc2ltcGxlLXRh
bGwuaHRtbCAqLywKKwkJCQlGNkE2QkZCOTE1NThBQkY4MDA5MjYxMDcgLyogc2ltcGxlLXVubG9h
ZC5odG1sICovLAogCQkJCUJDOTA5Nzc4MTI1NTcxQUIwMDA4Mzc1NiAvKiBzaW1wbGUuaHRtbCAq
LywKIAkJCQlDMDJCNzg4MjEyNjYxNTQxMDAyNkJGMEYgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0
bWwgKi8sCiAJCQkJNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1m
b3JtLmh0bWwgKi8sCkBAIC04NjQsNiArODc4LDcgQEAKIAkJCQk1MUZDRjc5QTE1MzRBQzZEMDAx
MDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTEzOTNFMjAxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAvKiBXaWxs
U2VuZFN1Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY2RjQ5QzY5MTU1NDVDOEUw
MDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtODk1LDYgKzkxMCw3IEBACiAJCQkJNTFGQ0Y3QTExNTM0QjJBMDAwMTA0NDkxIC8qIFNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTM5M0UyMjE1MjM5NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxs
U2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNkY0OUM2QjE1
NTQ1Q0E3MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcAppbmRleCBiNzhlZTkxLi44YmU0
NDQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIGJvb2wgZmluaXNoZWQ7Ci1zdGF0aWMgaW50
IGxpdmVET01FeHRlbnNpb25Db3VudDsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkTWVz
c2FnZXNbXSA9IHsKICJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lIGNhbGxlZCIsCkBA
IC02MCwxMyArNTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlc1tdID0g
ewogIkRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIs
CiAiTWFpbiBmcmFtZSBmaW5pc2hlZCBsb2FkaW5nIiwKICJFeHRlbnNpb24gc3RhdGVzOlxuRmly
c3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBh
Z2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFn
ZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJm
cmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBm
cmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEaXNjb25uZWN0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZy
YW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEaXNjb25uZWN0ZWQiLAotIldpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCi0iV2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKLSJXaWxsRGVzdHJveUdsb2Jh
bE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAotIldpbGxEZXN0cm95R2xvYmFs
T2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCi0iV2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKLSJXaWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAotIkV4dGVuc2lvbiBzdGF0ZXM6XG5G
aXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3Qg
cGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBw
YWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1
YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcblNlY29uZCBwYWdlLCBtYWlu
IGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJh
bWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZCIsCisiRXh0ZW5zaW9uIHN0YXRlczpc
bkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gUmVtb3ZlZFxuRmlyc3Qg
cGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gUmVtb3ZlZFxuRmlyc3QgcGFn
ZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gUmVtb3ZlZFxuRmlyc3QgcGFnZSwgc3ViZnJh
bWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIFJlbW92ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1l
LCBzdGFuZGFyZCB3b3JsZCAtIFJlbW92ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24t
c3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkIiwKICJUZXN0Q29tcGxldGUiCiB9OwogCkBAIC04MCwx
NSArNzMsOCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZwogICAgIFdLU3RyaW5nUmVmIGJvZHlT
dHJpbmcgPSAoV0tTdHJpbmdSZWYpbWVzc2FnZUJvZHk7CiAgICAgbWVzc2FnZXMuYXBwZW5kKGJv
ZHlTdHJpbmcpOwogICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSIpKQotICAgICAgICBs
aXZlRE9NRXh0ZW5zaW9uQ291bnQrKzsKLSAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5k
b3dFeHRlbnNpb24iKSkgewotICAgICAgICBsaXZlRE9NRXh0ZW5zaW9uQ291bnQtLTsKLSAgICAg
ICAgaWYgKCFsaXZlRE9NRXh0ZW5zaW9uQ291bnQpCi0gICAgICAgICAgICBmaW5pc2hlZCA9IHRy
dWU7Ci0gICAgfSBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiRGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJUZXN0Q29tcGxldGUiKSkKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZEZpbmlzaExvYWRGb3JNYWluRnJh
bWUiKSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiVGVzdENv
bXBsZXRlIikpCiAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKLSAgICAKIH0KIAogVEVTVChXZWJL
aXQyLCBET01XaW5kb3dFeHRlbnNpb25CYXNpYykKQEAgLTEyOSwyMCArMTE1LDIwIEBAIFRFU1Qo
V2ViS2l0MiwgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMpCiAKICAgICBVdGlsOjpydW4oJmZpbmlz
aGVkKTsKICAgICBmaW5pc2hlZCA9IGZhbHNlOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUg
MiBkaXNjb25uZWN0ZWQgZXh0ZW5zaW9ucyBpbiB0aGUgcGFnZSBjYWNoZSBhbmQgdGhlIDQgYWN0
aXZlIGV4dGVuc2lvbnMgYXJlIGFsbCBkZXN0cm95ZWQuCisKKyAgICAvLyBNYWtlIHN1cmUgdGhl
IDIgZGlzY29ubmVjdGVkIGV4dGVuc2lvbnMgaW4gdGhlIHBhZ2UgY2FjaGUgYW5kIHRoZSA0IGFj
dGl2ZSBleHRlbnNpb25zIGFyZSBhbGwgcmVtb3ZlZC4KICAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3
LnBhZ2UoKSk7CiAKICAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKICAgICAgICAgCiAgICAgY29u
c3Qgc2l6ZV90IGV4cGVjdGVkU2l6ZSA9IHNpemVvZihleHBlY3RlZE1lc3NhZ2VzKSAvIHNpemVv
Zihjb25zdCBjaGFyKik7Ci0gICAgRVhQRUNUX0VRKG1lc3NhZ2VzLnNpemUoKSwgZXhwZWN0ZWRT
aXplKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTaXplLCBtZXNzYWdlcy5zaXplKCkpOwogICAg
IAogICAgIGlmIChtZXNzYWdlcy5zaXplKCkgIT0gZXhwZWN0ZWRTaXplKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgRVhQRUNUX0VRKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZXNbaV0uZ2V0KCksIGV4cGVjdGVkTWVzc2FnZXNbaV0pLCB0cnVlKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGV4cGVjdGVkTWVzc2FnZXNbaV0sIG1lc3NhZ2VzW2ldLmdldCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNf
QnVuZGxlLmNwcAppbmRleCA2MWFjMWJkLi5iYjViMWViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5z
aW9uQmFzaWNfQnVuZGxlLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIv
V0tCdW5kbGVTY3JpcHRXb3JsZC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDxhc3NlcnQuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDYsMTQgKzQ1
LDE1IEBAIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0
ZW5zaW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmCiAKIAogZW51bSBFeHRlbnNpb25TdGF0ZSB7
Ci0gICAgVW5jcmVhdGVkID0gMCwgQ29ubmVjdGVkLCBEaXNjb25uZWN0ZWQsIERlc3Ryb3llZAor
ICAgIFVuY3JlYXRlZCA9IDAsIENvbm5lY3RlZCwgRGlzY29ubmVjdGVkLCBEZXN0cm95ZWQsIFJl
bW92ZWQKIH07CiAKLWNvbnN0IGNoYXIqIHN0YXRlTmFtZXNbNF0gPSB7Citjb25zdCBjaGFyKiBz
dGF0ZU5hbWVzWzVdID0gewogICAgICJVbmNyZWF0ZWQiLAogICAgICJDb25uZWN0ZWQiLAogICAg
ICJEaXNjb25uZWN0ZWQiLAotICAgICJEZXN0cm95ZWQiCisgICAgIkRlc3Ryb3llZCIsCisgICAg
IlJlbW92ZWQiCiB9OwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC02Nyw2ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBl
UmVmIHVzZXJEYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJl
ZiwgV0tCdW5kbGVQYWdlUmVmKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lQYWdlKFdL
QnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpOwogICAgIAogICAgIHZvaWQgZ2xvYmFsT2JqZWN0
SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxk
UmVmKTsKICAgICB2b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2Jh
bE9iamVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CkBAIC04NSw3ICs4Niw2IEBA
IHByaXZhdGU6CiAgICAgRXh0ZW5zaW9uUmVjb3JkIG1fZXh0ZW5zaW9uUmVjb3Jkc1s2XTsKICAg
ICBIYXNoTWFwPFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBpbnQ+IG1fZXh0ZW5zaW9u
VG9SZWNvcmRNYXA7CiAgICAgYm9vbCBtX2ZpbmlzaGVkT25lTWFpbkZyYW1lTG9hZDsKLSAgICBp
bnQgbV9udW1iZXJPZkRlc3Ryb3llZEV4dGVuc2lvbnM7CiB9OwogCiBzdGF0aWMgSW5qZWN0ZWRC
dW5kbGVUZXN0OjpSZWdpc3RlcjxET01XaW5kb3dFeHRlbnNpb25CYXNpYz4gcmVnaXN0cmFyKCJE
T01XaW5kb3dFeHRlbnNpb25CYXNpYyIpOwpAQCAtOTMsNyArOTMsNiBAQCBzdGF0aWMgSW5qZWN0
ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxET01XaW5kb3dFeHRlbnNpb25CYXNpYz4gcmVnaXN0cmFy
KCJET01XaW5kbwogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OkRPTVdpbmRvd0V4dGVuc2lvbkJh
c2ljKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogSW5qZWN0ZWRCdW5kbGVU
ZXN0KGlkZW50aWZpZXIpCiAgICAgLCBtX2ZpbmlzaGVkT25lTWFpbkZyYW1lTG9hZChmYWxzZSkK
LSAgICAsIG1fbnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25zKDApCiB7CiAgICAgbV9leHRlbnNp
b25SZWNvcmRzWzBdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29y
bGQiOwogICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1sxXS5uYW1lID0gIkZpcnN0IHBhZ2UsIG1haW4g
ZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CkBAIC0xNjcsNiArMTY2LDIxIEBAIHZvaWQgRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWM6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBX
S0J1bmRsZVBhZ2VSZWYKICAgICAKICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KHBhZ2UsICZwYWdlTG9hZGVyQ2xpZW50KTsKIH0KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25C
YXNpYzo6d2lsbERlc3Ryb3lQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpCit7Cisg
ICAgSGFzaE1hcDxXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgaW50Pjo6aXRlcmF0b3Ig
aXQgPSBtX2V4dGVuc2lvblRvUmVjb3JkTWFwLmJlZ2luKCk7CisgICAgSGFzaE1hcDxXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgaW50Pjo6aXRlcmF0b3IgZW5kID0gbV9leHRlbnNpb25U
b1JlY29yZE1hcC5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IHVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKGl0LT5maXJzdCwgUmVtb3ZlZCk7CisgICAgICAg
IFdLUmVsZWFzZShpdC0+Zmlyc3QpOworICAgIH0KKworICAgIG1fZXh0ZW5zaW9uVG9SZWNvcmRN
YXAuY2xlYXIoKTsKKworICAgIHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKKyAgICBzZW5k
QnVuZGxlTWVzc2FnZSgiVGVzdENvbXBsZXRlIik7Cit9CiAgICAgCiB2b2lkIERPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljOjp1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvblJlZiBleHRlbnNpb24sIEV4dGVuc2lvblN0YXRlIHN0YXRlKQogewpAQCAtMjEx
LDE5ICsyMjUsMTEgQEAgdm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6ZGlkUmVjb25uZWN0
RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV0tCdW4KICAgICBzZW5kQnVuZGxlTWVz
c2FnZSgiRGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVk
Iik7CiB9CiAKLXZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxEZXN0cm95R2xvYmFs
T2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVm
IGV4dGVuc2lvbikKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmKQogewotICAgIG1fbnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25zKys7Ci0KLSAgICB1cGRh
dGVFeHRlbnNpb25TdGF0ZVJlY29yZChleHRlbnNpb24sIERlc3Ryb3llZCk7Ci0gICAgc2VuZEJ1
bmRsZU1lc3NhZ2UoIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9u
IGNhbGxlZCIpOwotICAgIAotICAgIGlmIChtX251bWJlck9mRGVzdHJveWVkRXh0ZW5zaW9ucyA9
PSA2KSB7Ci0gICAgICAgIHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKLSAgICAgICAgc2Vu
ZEJ1bmRsZU1lc3NhZ2UoIlRlc3RDb21wbGV0ZSIpOwotICAgIH0KLSAgICAKLSAgICBXS1JlbGVh
c2UoZXh0ZW5zaW9uKTsKKyAgICAvLyBBbGwgb2YgdGhlIGl0ZW1zIGFyZSBjYW5kaWRhdGVzIGZv
ciB0aGUgcGFnZSBjYWNoZSBhbmQgc2hvdWxkIG5vdCBiZSBldmljdGVkIGZyb20gdGhlIHBhZ2UK
KyAgICAvLyBjYWNoZSBiZWZvcmUgdGhlIHRlc3QgY29tcGxldGVzLgorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFj
ayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU5ZDBkMQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0Nh
Y2hlLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
KiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyBib29sIGZpbmlzaGVkOworCitzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRN
ZXNzYWdlc1tdID0geworIkdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVkIiwK
KyJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lIGNhbGxlZCIsCisiR2xvYmFsT2JqZWN0
SXNBdmFpbGFibGVGb3JGcmFtZSBjYWxsZWQiLAorIkdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9y
RnJhbWUgY2FsbGVkIiwKKyJTdWJmcmFtZSBmaW5pc2hlZCBsb2FkaW5nIiwKKyJFeHRlbnNpb24g
c3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0
ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3Rl
ZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJz
dCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5TZWNvbmQg
cGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcblNlY29uZCBwYWdl
LCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcbkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gVW5jcmVhdGVkXG5GaXJzdCBwYWdlLCBtYWlu
IGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcbkZpcnN0IHBhZ2UsIHN1YmZy
YW1lLCBzdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIG5v
bi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZCIsCisiTWFpbiBmcmFtZSBmaW5pc2hlZCBsb2Fk
aW5nIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRh
cmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFy
ZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxk
IC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0g
Q29ubmVjdGVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBVbmNy
ZWF0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBVbmNy
ZWF0ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gVW5jcmVhdGVk
XG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRc
bkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmlyc3Qg
cGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZCIsCisiV2lsbERl
c3Ryb3lET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAorIldpbGxEZXN0
cm95RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJXaWxsRGVzdHJv
eURPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiV2lsbERlc3Ryb3lE
T01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAorIkdsb2JhbE9iamVjdElz
QXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVkIiwKKyJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZy
YW1lIGNhbGxlZCIsCisiTWFpbiBmcmFtZSBmaW5pc2hlZCBsb2FkaW5nIiwKKyJFeHRlbnNpb24g
c3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95
ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3ll
ZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJz
dCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5TZWNvbmQg
cGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcblNlY29uZCBwYWdl
LCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gVW5jcmVhdGVkXG5GaXJzdCBwYWdlLCBtYWlu
IGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcbkZpcnN0IHBhZ2UsIHN1YmZy
YW1lLCBzdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIG5v
bi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZCIsCisiV2lsbERlc3Ryb3lET01XaW5kb3dFeHRl
bnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAorIldpbGxEZXN0cm95RE9NV2luZG93RXh0ZW5z
aW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZy
YW1lIGNhbGxlZCIsCisiR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSBjYWxsZWQiLAor
Ikdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVkIiwKKyJHbG9iYWxPYmplY3RJ
c0F2YWlsYWJsZUZvckZyYW1lIGNhbGxlZCIsCisiU3ViZnJhbWUgZmluaXNoZWQgbG9hZGluZyIs
CisiRXh0ZW5zaW9uIHN0YXRlczpcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdv
cmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29y
bGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERl
c3Ryb3llZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ry
b3llZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVk
XG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVk
XG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmly
c3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJz
dCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2Us
IHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWQiLAorIk1haW4gZnJhbWUg
ZmluaXNoZWQgbG9hZGluZyIsCisiRXh0ZW5zaW9uIHN0YXRlczpcbkZpcnN0IHBhZ2UsIG1haW4g
ZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBtYWluIGZyYW1l
LCBub24tc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBz
dGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFu
ZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJk
IHdvcmxkIC0gRGVzdHJveWVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJk
IHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3Js
ZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxk
IC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25u
ZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0
ZWQiLAorIkV4dGVuc2lvbiBzdGF0ZXM6XG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFy
ZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJk
IHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQg
LSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBE
ZXN0cm95ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ry
b3llZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ry
b3llZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkXG5G
aXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkXG5GaXJz
dCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkXG5GaXJzdCBwYWdlLCBz
dWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gUmVtb3ZlZCIsCisiVGVzdENvbXBsZXRlIgor
fTsKKworc3RhdGljIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gPiBtZXNzYWdlczsK
Kworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250
ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBj
b25zdCB2b2lkKikKK3sKKyAgICBBU1NFUlRfTk9UX05VTEwobWVzc2FnZUJvZHkpOworICAgIEVY
UEVDVF9FUShXS1N0cmluZ0dldFR5cGVJRCgpLCBXS0dldFR5cGVJRChtZXNzYWdlQm9keSkpOwor
CisgICAgV0tTdHJpbmdSZWYgYm9keVN0cmluZyA9IChXS1N0cmluZ1JlZiltZXNzYWdlQm9keTsK
KyAgICBtZXNzYWdlcy5hcHBlbmQoYm9keVN0cmluZyk7CisKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUi
KSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiVGVzdENvbXBs
ZXRlIikpCisgICAgICBmaW5pc2hlZCA9IHRydWU7Cit9CisKK1RFU1QoV2ViS2l0MiwgRE9NV2lu
ZG93RXh0ZW5zaW9uTm9DYWNoZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4g
cGFnZUdyb3VwKEFkb3B0V0ssIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVQYWdlR3Jv
dXAiKSkpOworCisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ss
IFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkRPTVdpbmRvd0V4dGVu
c2lvbk5vQ2FjaGUiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKKworICAgIFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xpZW50OworICAgIG1lbXNldCgmaW5qZWN0ZWRC
dW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3RlZEJ1bmRsZUNsaWVudCkpOworICAgIGluamVj
dGVkQnVuZGxlQ2xpZW50LnZlcnNpb24gPSBrV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRD
dXJyZW50VmVyc2lvbjsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5jbGllbnRJbmZvID0gMDsK
KyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLQ29udGV4
dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksICZpbmplY3RlZEJ1bmRsZUNs
aWVudCk7CisKKyAgICAvLyBGSVhNRSA4NTg5MTogSW5zdGVhZCBvZiB1c2luZyB1bmxvYWQgaGFu
ZGxlcnMgdG8gcHJldmVudCB1c2Ugb2YgdGhlIHBhZ2UgY2FjaGUsIHNldCB0aGUKKyAgICAvLyBj
YWNoZSBtb2RlbCB0byBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3LCB3aGljaCBzZXRzIHBhZ2Ug
Y2FjaGUgY2FwYWNpdHkgdG8gMC4KKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRl
eHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGV4dGVu
c2lvbnMgZm9yIGVhY2ggZnJhbWUgYXJlIGluc3RhbGxlZCBpbiBlYWNoIHdvcmxkLgorICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB1cmwxKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291
cmNlKCJzaW1wbGUtaWZyYW1lLXVubG9hZCIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwo
d2ViVmlldy5wYWdlKCksIHVybDEuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7
CisgICAgZmluaXNoZWQgPSBmYWxzZTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aG9zZSBmaXJzdCA0
IGV4dGVuc2lvbnMgYXJlIGRlc3Ryb3llZCwgYW5kIDIgbmV3IG9uZXMgYXJlIGluc3RhbGxlZC4K
KyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsMihBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxG
b3JSZXNvdXJjZSgic2ltcGxlLXVubG9hZCIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwo
d2ViVmlldy5wYWdlKCksIHVybDIuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7
CisgICAgZmluaXNoZWQgPSBmYWxzZTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aG9zZSAyIGFyZSBk
ZXN0cm95ZWQsIGFuZCB0aGUgZmlyc3QgNCBhcmUgcmVjcmVhdGVkLgorICAgIFdLUGFnZUdvQmFj
ayh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5p
c2hlZCA9IGZhbHNlOworCisgICAgV0tQYWdlQ2xvc2Uod2ViVmlldy5wYWdlKCkpOworCisgICAg
VXRpbDo6cnVuKCZmaW5pc2hlZCk7CisKKyAgICBjb25zdCBzaXplX3QgZXhwZWN0ZWRTaXplID0g
c2l6ZW9mKGV4cGVjdGVkTWVzc2FnZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKKyAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRTaXplLCBtZXNzYWdlcy5zaXplKCkpOworCisgICAgaWYgKG1lc3NhZ2Vz
LnNpemUoKSAhPSBleHBlY3RlZFNpemUpCisgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1lc3NhZ2VzLnNpemUoKTsgKytpKQorICAgICAgRVhQRUNUX1dLX1NUUkVR
KGV4cGVjdGVkTWVzc2FnZXNbaV0sIG1lc3NhZ2VzW2ldLmdldCgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRs
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNjMGM3MgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dF
eHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tCdW5kbGVQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlw
dFdvcmxkLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2soV0tCdW5k
bGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKK3N0YXRpYyB2b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWVDYWxs
YmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29y
bGRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworc3RhdGljIHZvaWQgd2lsbERpc2Nvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2soV0tCdW5kbGVQYWdl
UmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CitzdGF0aWMgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9i
amVjdENhbGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25S
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwor
ZW51bSBFeHRlbnNpb25TdGF0ZSB7CisgICAgVW5jcmVhdGVkID0gMCwgQ29ubmVjdGVkLCBEaXNj
b25uZWN0ZWQsIERlc3Ryb3llZCwgUmVtb3ZlZAorfTsKKworY29uc3QgY2hhciogc3RhdGVzWzVd
ID0geworICAgICJVbmNyZWF0ZWQiLAorICAgICJDb25uZWN0ZWQiLAorICAgICJEaXNjb25uZWN0
ZWQiLAorICAgICJEZXN0cm95ZWQiLAorICAgICJSZW1vdmVkIgorfTsKKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgRXh0ZW5zaW9uU3RhdGUgc3RhdGU7Cit9
IEV4dGVuc2lvblJlY29yZDsKKworY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZSA6IHB1
YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworcHVibGljOgorICAgIERPTVdpbmRvd0V4dGVuc2lv
bk5vQ2FjaGUoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpOworCisgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSk7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZik7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdl
UmVmKTsKKworICAgIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRs
ZUZyYW1lUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmKTsKKyAgICB2b2lkIHdpbGxEaXNjb25u
ZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvblJlZik7CisgICAgdm9pZCBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ds
b2JhbE9iamVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZik7CisgICAgdm9pZCB3aWxs
RGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvblJlZik7CisKKyAgICB2b2lkIGZyYW1lTG9hZEZpbmlzaGVkKFdLQnVuZGxlRnJh
bWVSZWYpOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlRXh0ZW5zaW9uU3RhdGVSZWNvcmQo
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIEV4dGVuc2lvblN0YXRlKTsKKyAgICB2b2lk
IHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKKyAgICB2b2lkIHNlbmRCdW5kbGVNZXNzYWdl
KGNvbnN0IGNoYXIqKTsKKworICAgIFdLQnVuZGxlUGFnZUdyb3VwUmVmIG1fcGFnZUdyb3VwOwor
ICAgIFdLQnVuZGxlUmVmIG1fYnVuZGxlOworICAgIEV4dGVuc2lvblJlY29yZCBtX2V4dGVuc2lv
blJlY29yZHNbMTBdOworICAgIEhhc2hNYXA8V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYs
IGludD4gbV9leHRlbnNpb25Ub1JlY29yZE1hcDsKKyAgICBpbnQgbV9udW1iZXJNYWluRnJhbWVM
b2FkczsKK307CisKK3N0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERPTVdpbmRv
d0V4dGVuc2lvbk5vQ2FjaGU+IHJlZ2lzdHJhcigiRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZSIp
OworCitET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0
KGlkZW50aWZpZXIpCisgICAgLCBtX251bWJlck1haW5GcmFtZUxvYWRzKDApCit7CisgICAgbV9l
eHRlbnNpb25SZWNvcmRzWzBdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRh
cmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1sxXS5uYW1lID0gIkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CisgICAgbV9leHRlbnNpb25SZWNvcmRz
WzJdLm5hbWUgPSAiRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIjsKKyAgICBt
X2V4dGVuc2lvblJlY29yZHNbM10ubmFtZSA9ICJGaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0
YW5kYXJkIHdvcmxkIjsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbNF0ubmFtZSA9ICJTZWNvbmQg
cGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jk
c1s1XS5uYW1lID0gIlNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQi
OworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s2XS5uYW1lID0gIkZpcnN0IHBhZ2UsIG1haW4gZnJh
bWUsIHN0YW5kYXJkIHdvcmxkIjsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbN10ubmFtZSA9ICJG
aXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQiOworICAgIG1fZXh0ZW5z
aW9uUmVjb3Jkc1s4XS5uYW1lID0gIkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3Js
ZCI7CisgICAgbV9leHRlbnNpb25SZWNvcmRzWzldLm5hbWUgPSAiRmlyc3QgcGFnZSwgc3ViZnJh
bWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEw
OyArK2kpCisgICAgICBtX2V4dGVuc2lvblJlY29yZHNbaV0uc3RhdGUgPSBVbmNyZWF0ZWQ7Cit9
CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6ZnJhbWVMb2FkRmluaXNoZWQoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSkKK3sKKyAgICBib29sIG1haW5GcmFtZSA9ICFXS0J1bmRsZUZy
YW1lR2V0UGFyZW50RnJhbWUoZnJhbWUpOworICAgIGlmIChtYWluRnJhbWUpCisgICAgICAgIG1f
bnVtYmVyTWFpbkZyYW1lTG9hZHMrKzsKKworICAgIGNoYXIgYm9keVsxNjM4NF07CisgICAgc3By
aW50Zihib2R5LCAiJXMgZmluaXNoZWQgbG9hZGluZyIsIG1haW5GcmFtZSA/ICJNYWluIGZyYW1l
IiA6ICJTdWJmcmFtZSIpOworCisgICAgLy8gT25seSBjb25zaWRlciBsb2FkIGZpbmlzaGVkIGZv
ciB0aGUgbWFpbiBmcmFtZQorICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBtYWluRnJhbWUgPyAiRGlk
RmluaXNoTG9hZEZvck1haW5GcmFtZSIgOiAiRGlkRmluaXNoTG9hZEZvckZyYW1lIjsKKworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcobmFtZSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYm9k
eSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgp
LCBtZXNzYWdlQm9keS5nZXQoKSk7CisKKyAgICBzZW5kRXh0ZW5zaW9uU3RhdGVNZXNzYWdlKCk7
Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6c2VuZEV4dGVuc2lvblN0YXRl
TWVzc2FnZSgpCit7CisgICAgY2hhciBib2R5WzE2Mzg0XTsKKyAgICBzcHJpbnRmKGJvZHksICJF
eHRlbnNpb24gc3RhdGVzOlxuJXMgLSAlc1xuJXMgLSAlc1xuJXMgLSAlc1xuJXMgLSAlc1xuJXMg
LSAlc1xuJXMgLSAlc1xuJXMgLSAlc1xuJXMgLSAlc1xuJXMgLSAlc1xuJXMgLSAlcyIsCisgICAg
ICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbMF0ubmFtZSwgc3RhdGVzW21fZXh0ZW5zaW9uUmVj
b3Jkc1swXS5zdGF0ZV0sCisgICAgICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbMV0ubmFtZSwg
c3RhdGVzW21fZXh0ZW5zaW9uUmVjb3Jkc1sxXS5zdGF0ZV0sCisgICAgICAgICAgICBtX2V4dGVu
c2lvblJlY29yZHNbMl0ubmFtZSwgc3RhdGVzW21fZXh0ZW5zaW9uUmVjb3Jkc1syXS5zdGF0ZV0s
CisgICAgICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbM10ubmFtZSwgc3RhdGVzW21fZXh0ZW5z
aW9uUmVjb3Jkc1szXS5zdGF0ZV0sCisgICAgICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbNF0u
bmFtZSwgc3RhdGVzW21fZXh0ZW5zaW9uUmVjb3Jkc1s0XS5zdGF0ZV0sCisgICAgICAgICAgICBt
X2V4dGVuc2lvblJlY29yZHNbNV0ubmFtZSwgc3RhdGVzW21fZXh0ZW5zaW9uUmVjb3Jkc1s1XS5z
dGF0ZV0sCisgICAgICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbNl0ubmFtZSwgc3RhdGVzW21f
ZXh0ZW5zaW9uUmVjb3Jkc1s2XS5zdGF0ZV0sCisgICAgICAgICAgICBtX2V4dGVuc2lvblJlY29y
ZHNbN10ubmFtZSwgc3RhdGVzW21fZXh0ZW5zaW9uUmVjb3Jkc1s3XS5zdGF0ZV0sCisgICAgICAg
ICAgICBtX2V4dGVuc2lvblJlY29yZHNbOF0ubmFtZSwgc3RhdGVzW21fZXh0ZW5zaW9uUmVjb3Jk
c1s4XS5zdGF0ZV0sCisgICAgICAgICAgICBtX2V4dGVuc2lvblJlY29yZHNbOV0ubmFtZSwgc3Rh
dGVzW21fZXh0ZW5zaW9uUmVjb3Jkc1s5XS5zdGF0ZV0pOworCisgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiRXh0ZW5zaW9uU3RhdGVzIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYm9keSkp
OworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6
aW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKK3sKKyAg
ICBhc3NlcnQoV0tHZXRUeXBlSUQodXNlckRhdGEpID09IFdLQnVuZGxlUGFnZUdyb3VwR2V0VHlw
ZUlEKCkpOworICAgIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9IHN0YXRpY19jYXN0
PFdLQnVuZGxlUGFnZUdyb3VwUmVmPih1c2VyRGF0YSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gc291cmNlKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJh
bGVydCgnVW5pbXBvcnRhbnQgYWxlcnQnKTsiKSk7CisgICAgV0tCdW5kbGVBZGRVc2VyU2NyaXB0
KGJ1bmRsZSwgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKSwgc291
cmNlLmdldCgpLCAwLCAwLCAwLCBrV0tJbmplY3RBdERvY3VtZW50U3RhcnQsIGtXS0luamVjdElu
QWxsRnJhbWVzKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpkaWRDcmVh
dGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCit7CisgICAg
bV9idW5kbGUgPSBidW5kbGU7CisKKyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgcGFnZUxv
YWRlckNsaWVudDsKKyAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihwYWdl
TG9hZGVyQ2xpZW50KSk7CisKKyAgICBwYWdlTG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAgcGFnZUxvYWRlckNsaWVudC5j
bGllbnRJbmZvID0gdGhpczsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JG
cmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNrOworICAgIHBhZ2VMb2FkZXJDbGll
bnQuZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSA9IGdsb2JhbE9iamVjdElzQXZhaWxh
YmxlRm9yRnJhbWVDYWxsYmFjazsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LndpbGxEaXNjb25uZWN0
RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCA9IHdpbGxEaXNjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiYWNrOworICAgIHBhZ2VMb2FkZXJDbGll
bnQuZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgPSBkaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdENhbGxiYWNrOworICAgIHBhZ2VM
b2FkZXJDbGllbnQud2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24g
PSB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrOwor
CisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmcGFnZUxvYWRlckNs
aWVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6d2lsbERlc3Ryb3lQ
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpCit7CisgICAgSGFzaE1hcDxXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgaW50Pjo6aXRlcmF0b3IgaXQgPSBtX2V4dGVuc2lvblRv
UmVjb3JkTWFwLmJlZ2luKCk7CisgICAgSGFzaE1hcDxXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
blJlZiwgaW50Pjo6aXRlcmF0b3IgZW5kID0gbV9leHRlbnNpb25Ub1JlY29yZE1hcC5lbmQoKTsK
KyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIHVwZGF0ZUV4dGVuc2lvblN0
YXRlUmVjb3JkKGl0LT5maXJzdCwgUmVtb3ZlZCk7CisgICAgICAgIFdLUmVsZWFzZShpdC0+Zmly
c3QpOworICAgIH0KKworICAgIG1fZXh0ZW5zaW9uVG9SZWNvcmRNYXAuY2xlYXIoKTsKKworICAg
IHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKKyAgICBzZW5kQnVuZGxlTWVzc2FnZSgiVGVz
dENvbXBsZXRlIik7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6dXBkYXRl
RXh0ZW5zaW9uU3RhdGVSZWNvcmQoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5z
aW9uLCBFeHRlbnNpb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICBpbnQgaW5kZXggPSBtX2V4dGVuc2lv
blRvUmVjb3JkTWFwLmdldChleHRlbnNpb24pOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1tpbmRl
eF0uc3RhdGUgPSBzdGF0ZTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpz
ZW5kQnVuZGxlTWVzc2FnZShjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB3a01lc3NhZ2UgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKG1lc3NhZ2UpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCB3a01l
c3NhZ2UuZ2V0KCksIHdrTWVzc2FnZS5nZXQoKSk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5z
aW9uTm9DYWNoZTo6Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKQoreworICAgIFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiA9IFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uQ3JlYXRlKGZyYW1lLCB3b3JsZCk7CisKKyAgICBpbnQgaW5kZXg7CisgICAgYm9vbCBzdGFu
ZGFyZDsKKyAgICBzdGFuZGFyZCA9IHdvcmxkID09IFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxX
b3JsZCgpOworCisgICAgYm9vbCBtYWluRnJhbWUgPSAhV0tCdW5kbGVGcmFtZUdldFBhcmVudEZy
YW1lKGZyYW1lKTsKKyAgICBzd2l0Y2ggKG1fbnVtYmVyTWFpbkZyYW1lTG9hZHMpIHsKKyAgICBj
YXNlIDA6CisgICAgICAgIGluZGV4ID0gbWFpbkZyYW1lID8gKHN0YW5kYXJkID8gMCA6IDEpIDog
KHN0YW5kYXJkID8gMiA6IDMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAg
IGluZGV4ID0gc3RhbmRhcmQgPyA0IDogNTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgor
ICAgICAgICBpbmRleCA9IG1haW5GcmFtZSA/IChzdGFuZGFyZCA/IDYgOiA3KSA6IChzdGFuZGFy
ZCA/IDggOiA5KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1fZXh0ZW5zaW9u
VG9SZWNvcmRNYXAuc2V0KGV4dGVuc2lvbiwgaW5kZXgpOworCisgICAgdXBkYXRlRXh0ZW5zaW9u
U3RhdGVSZWNvcmQoZXh0ZW5zaW9uLCBDb25uZWN0ZWQpOworICAgIHNlbmRCdW5kbGVNZXNzYWdl
KCJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lIGNhbGxlZCIpOworfQorCit2b2lkIERP
TVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6OndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUdsb2JhbE9iamVjdChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24p
Cit7CisgICAgLy8gTm8gaXRlbXMgc2hvdWxkIGJlIGdvaW5nIGludG8gYSAwLWNhcGFjaXR5IHBh
Z2UgY2FjaGUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93
RXh0ZW5zaW9uTm9DYWNoZTo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxP
YmplY3QoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYpCit7CisgICAgLy8gTm8gaXRlbXMg
c2hvdWxkIGJlIGNvbWluZyBvdXQgb2YgYSAwLWNhcGFjaXR5IHBhZ2UgY2FjaGUuCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6
d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQoreworICAgIHNlbmRCdW5kbGVNZXNzYWdlKCJX
aWxsRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIpOworICAg
IHVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKGV4dGVuc2lvbiwgRGVzdHJveWVkKTsKKyAgICBt
X2V4dGVuc2lvblRvUmVjb3JkTWFwLnJlbW92ZShleHRlbnNpb24pOworICAgIFdLUmVsZWFzZShl
eHRlbnNpb24pOworfQorCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFj
ayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgKChET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
KiljbGllbnRJbmZvKS0+ZnJhbWVMb2FkRmluaXNoZWQoZnJhbWUpOworfQorCitzdGF0aWMgdm9p
ZCBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVm
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgICgoRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZSopY2xpZW50SW5mbyktPmdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoZnJhbWUsIHdv
cmxkKTsKK30KKworc3RhdGljIHZvaWQgd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25G
cm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvblJlZiBleHRlbnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
KChET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlKiljbGllbnRJbmZvKS0+d2lsbERpc2Nvbm5lY3RE
T01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KGV4dGVuc2lvbik7Cit9CisKK3N0YXRp
YyB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJh
Y2soV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNp
b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgKChET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlKiljbGllbnRJbmZvKS0+ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9i
YWxPYmplY3QoZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiAsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgKChET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlKiljbGllbnRJbmZvKS0+d2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oZXh0ZW5zaW9uKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL3NpbXBsZS1pZnJhbWUtdW5sb2FkLmh0bWwgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjg4NjBjCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3NpbXBsZS1pZnJhbWUtdW5sb2Fk
Lmh0bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4KKzxib2R5IG9udW5sb2FkPSIvKiBkaXNhYmxl
IHBhZ2UgY2FjaGUgKi8iPgorICBTaW1wbGUgSFRNTCBmaWxlIHdpdGggYW4gdW5sb2FkIGhhbmRs
ZXIuCisgIDxpZnJhbWUgc3JjPSJzaW1wbGUtdW5sb2FkLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L3NpbXBsZS11bmxvYWQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9z
aW1wbGUtdW5sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUz
OGUyNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9zaW1wbGUtdW5sb2FkLmh0bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5IG9udW5s
b2FkPSIvKiBkaXNhYmxlIHBhZ2UgY2FjaGUgKi8iPgorICBTaW1wbGUgSFRNTCBmaWxlIHdpdGgg
YW4gdW5sb2FkIGhhbmRsZXIuCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="147087"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="147101"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141045</attachid>
            <date>2012-05-09 16:26:41 -0700</date>
            <delta_ts>2012-05-09 19:10:14 -0700</delta_ts>
            <desc>Patch with Chromium build fix and addressing some comments from Darin</desc>
            <filename>fixWithChromiumBuildFix.patch</filename>
            <type>text/plain</type>
            <size>76806</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZDRlNDU5Li41MDY5MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYy
IEBACisyMDEyLTA1LTA5ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ3Jhc2ggdXNpbmcgdGhlIG5ldyBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbnMgQVBJ
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1ODg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0tCdW5k
bGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFj
ayB3YXMgb25seSBiZWluZyBpbnZva2VkIHdoZW4KKyAgICAgICAgdGhlIFdLUGFnZSB3YXMgZGVz
dHJveWVkLCBhbmQgdGhlbiBvbmx5IGZvciB0aGUgY2hpbGQgZnJhbWVzLiBJbiBhZGRpdGlvbiwg
dGhlCisgICAgICAgIERPTVdpbmRvd0V4dGVuc2lvbiB3YXMgaG9sZGluZyBvbnRvIGEgZGVzdHJv
eWVkIERPTVdpbmRvdyBhbmQgYXR0ZW1wdGluZyB0byB1bnJlZ2lzdGVyIGZyb20KKyAgICAgICAg
d2hlbiB0aGUgV0syIHdyYXBwZXIgb2JqZWN0IHdhcyBhdHRlbXB0aW5nIHRvIGRlc3Ryb3kgdGhl
IERPTVdpbmRvd0V4dGVuc2lvbi4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBpc3N1ZSBoZXJl
IHdhcyB0aGF0IHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIHdlcmUgZ2V0dGluZyBkaXNjb25uZWN0
RnJhbWUKKyAgICAgICAgYW5kIHdpbGxEZXRhY2hQYWdlIGNhbGxlZCBvbiB0aGVtIGF0IHRoZSB3
cm9uZyB0aW1lcy4KKworICAgICAgICBSZW5hbWUgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5l
Y3RGcmFtZSBhbmQgcmVjb25uZWN0RnJhbWUgdG8gZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hl
CisgICAgICAgIGFuZCByZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUgZm9yIGNsYXJpdHkuCisK
KyAgICAgICAgT25seSBpbnZva2UgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZv
clBhZ2VDYWNoZSB3aGVuIHRoZSBmcmFtZSBpcyBnb2luZyBpbnRvIHRoZQorICAgICAgICBwYWdl
IGNhY2hlLgorCisgICAgICAgIEluIHRoZSBjYXNlcyB3aGVyZSB0aGUgRE9NV2luZG93IGlzIGdl
dHRpbmcgZGVzdHJveWVkLCB0aGUgZnJhbWUgaXMgYmVpbmcgZGVzdHJveWVkLCBvciB0aGUKKyAg
ICAgICAgRE9NV2luZG93IGlzIGdldHRpbmcgY2xlYXJlZCBiZWNhdXNlIHRoZSBmcmFtZSBpcyBi
ZWluZyBuYXZpZ2F0ZWQsIGludm9rZQorICAgICAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERl
c3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lIGluc3RlYWQgb2YgZGlzY29ubmVjdEZyYW1lLgorCisg
ICAgICAgIEludm9rZSBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZy
b21GcmFtZSB3aGVuIGEgZG9jdW1lbnQgaXMgYmVpbmcgZGV0YWNoZWQKKyAgICAgICAgYmVjYXVz
ZSB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQgKGUuZy4gZmFzdC9zdG9yYWdlL3N0b3JhZ2Ut
ZGV0YWNoZWQtaWZyYW1lLmh0bWwpIGFuZAorICAgICAgICB3b24ndCBiZSBpbW1lZGlhdGVseSBk
ZXN0cm95ZWQuCisKKyAgICAgICAgSW52b2tlIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUgd2hlbiBhIGNhY2hlZCBmcmFtZSBpcworICAgICAg
ICBiZWluZyBkZXN0cm95ZWQuCisKKyAgICAgICAgTmV3IFdLMiBBUEkgVGVzdDogRE9NV2luZG93
RXh0ZW5zaW9uTm9DYWNoZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVk
RGF0YWJhc2U6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSk6CisgICAgICAgIFVwZGF0ZWQg
Zm9yIGRpc2Nvbm5lY3RGcmFtZSByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2U6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIFVw
ZGF0ZWQgZm9yIHJlY29ubmVjdEZyYW1lIHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1l
KToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgc3VzcGVuZGVkIElEQkZhY3RvcnkuCisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5GcmFtZSk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIElEQkZhY3RvcnkuCisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OndpbGxEZXRhY2hHbG9iYWxPYmpl
Y3RGcm9tRnJhbWUpOgorICAgICAgICBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaDoKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToK
KyAgICAgICAgVGVsbCB0aGUgRE9NV2luZG93IGJlZm9yZSBkZXRhY2hpbmcgdGhlIERvY3VtZW50
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgICogaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6ZGVzdHJveSk6CisgICAg
ICAgIFRlbGwgdGhlIERPTVdpbmRvdy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xlYXIpOgorICAgICAgICBVc2Ug
RG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbiBzbyB0aGF0IHRoZSBET01XaW5kb3cgaXMg
dG9sZCBhYm91dCB0aGUgbWFpbiBmcmFtZQorICAgICAgICBuYXZpZ2F0aW9uIGJlZm9yZSBkZXRh
Y2hpbmcgdGhlIERvY3VtZW50LgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6
ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKToKKyAgICAgICAgVXBkYXRlZCBmb3IgdGhlIGRp
c2Nvbm5lY3RGcmFtZSByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNh
Y2hlOjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICBVcGRhdGVkIGZvciB0
aGUgcmVjb25uZWN0RnJhbWUgcmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRp
b25DYWNoZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKToKKyAgICAgICAgQ292ZXIg
dGhlIGNhc2VzIGZvcm1lcmx5IGNvdmVyZWQgYnkgZGlzY29ubmVjdEZyYW1lICh3aGljaCB3YXMg
c29tZXRpbWVzIGJlaW5nIGNhbGxlZCB3aGVuCisgICAgICAgIGNhbGxlZCB3aGVuIHRoZSBmcmFt
ZSB3YXMgZGVzdHJveWVkKS4KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5oOgorCisgICAgICAgICogbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nv
bm5lY3RGcmFtZUZvclBhZ2VDYWNoZSk6CisgICAgICAgIFVwZGF0ZWQgZm9yIHRoZSBkaXNjb25u
ZWN0RnJhbWUgcmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9u
czo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKToKKyAgICAgICAgVXBkYXRlZCBmb3IgdGhl
IHJlY29ubmVjdEZyYW1lIHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlm
aWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSk6CisgICAgICAg
IEdldCByaWQgb2YgdGhlIHN1c3BlbmRlZCBub3RpZmljYXRpb24gY2VudGVyLgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJ
bkZyYW1lKToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgbm90aWZpY2F0aW9uIGNlbnRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXRhY2hHbG9iYWxP
YmplY3RGcm9tRnJhbWUpOgorICAgICAgICBEbyBub3QgYWxsb3cgdXNlIG9mIHRoZSBub3RpZmlj
YXRpb24gY2VudGVyIGJ5IGRldGFjaGVkIGZyYW1lcy4KKyAgICAgICAgKiBub3RpZmljYXRpb25z
L0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaDoKKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2xlYXJET01XaW5kb3dQcm9wZXJ0aWVz
KToKKyAgICAgICAgRG8gbm90IGNhbGwgZGlzY29ubmVjdERPTVdpbmRvd1Byb3BlcnRpZXMuIEl0
IGlzIG5vdyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcnMgdG8KKyAgICAgICAgdGVs
bCB0aGUgRE9NV2luZG93UHJvcGVydGllcyB0aGUgY29ycmVjdCBjYXVzZSBvZiBiZWluZyBjbGVh
cmVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp+RE9NV2luZG93KToKKyAgICAgICAg
TWFrZSBzdXJlIHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIHN0aWxsIGtub3cgdGhhdCB0aGUgRE9N
V2luZG93IGlzIGdvaW5nIGF3YXkuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZyYW1l
RGVzdHJveWVkKToKKyAgICAgICAgSW52b2tlIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFt
ZSBvbiB0aGUgRE9NV2luZG93UHJvcGVydGllcy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6d2lsbERldGFjaFBhZ2UpOgorICAgICAgICBJdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRv
IHRlbGwgdGhlIERPTVdpbmRvd1Byb3BlcnRpZXMgYW55dGhpbmcgaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6d2lsbERlc3Ryb3lDYWNoZWRGcmFtZSk6CisgICAgICAgIFRlbGwg
dGhlIERPTVdpbmRvd1Byb3BlcnRpZXMuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Ondp
bGxEZXN0cm95RG9jdW1lbnRJbkZyYW1lKToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OndpbGxEZXRhY2hEb2N1bWVudEZyb21GcmFtZSk6CisgICAgICAgIERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbGVhcik6CisgICAgICAgIERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNjb25uZWN0RE9NV2luZG93UHJvcGVy
dGllcyk6CisgICAgICAgIFVwZGF0ZWQgZm9yIHRoZSBkaXNjb25uZWN0RnJhbWUgcmVuYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZWNvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVz
KToKKyAgICAgICAgRGl0dG8uCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKworICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvd0V4dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgTW92ZSB0aGUgcmVz
cG9uc2liaWxpdHkgZm9yIHRyYWNraW5nIHRoZSBkaXNjb25uZWN0ZWQgRE9NV2luZG93IHRvIERP
TVdpbmRvd1Byb3BlcnR5LCBzaW5jZQorICAgICAgICBET01XaW5kb3dQcm9wZXJ0eSB3aWxsIG5l
ZWQgaXQgdG8gdW5yZWdpc3RlciB0aGUgcHJvcGVydHkgd2hlbiBhIGNhY2hlZCBmcmFtZSBpcyBk
ZXN0cm95ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OmRpc2Nvbm5l
Y3RGcmFtZUZvclBhZ2VDYWNoZSk6CisgICAgICAgIFJlbW92ZSB0aGUgY29kZSB0byBjaGVjayBm
b3IgZGlzY29ubmVjdEZyYW1lIGJlaW5nIGNhbGxlZCB0d2ljZSAtIGl0IGlzIG5vdyBvbmx5IGNh
bGxlZCB3aGVuCisgICAgICAgIGEgZnJhbWUgZ29lcyBpbnRvIHRoZSBwYWdlIGNhY2hlLgorICAg
ICAgICBMZXQgdGhlIERPTVdpbmRvd1Byb3BlcnR5IGtlZXAgdHJhY2sgb2YgdGhlIGRpc2Nvbm5l
Y3RlZCBET01XaW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb246OnJl
Y29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIExldCB0aGUgRE9NV2luZG93UHJv
cGVydHkga2VlcCB0cmFjayBvZiB0aGUgZGlzY29ubmVjdGVkIERPTVdpbmRvdy4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNh
Y2hlZEZyYW1lKToKKyAgICAgICAgRGlzcGF0Y2ggdGhlIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0
Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUpOgorICAgICAgICBE
aXR0bywgYnV0IG9ubHkgaWYgdGhlIGNhbGxiYWNrIGhhc24ndCBhbHJlYWR5IGJlZW4gc2VudCBi
ZWNhdXNlIHRoZSBmcmFtZSBoYXMgYmVlbiBkZXRhY2hlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvd0V4dGVuc2lvbjo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSk6CisgICAg
ICAgIFNlbmQgdGhlIGNhbGxiYWNrIGJlY2F1c2Ugbm90aGluZyBpbnRlcmVzdGluZyBjYW4gYmUg
ZG9uZSBpbiB0aGUgZnJhbWUgb25jZSBpdCBoYXMgYmVlbgorICAgICAgICBkZXRhY2hlZC4KKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oOgorCisgICAgICAgICogcGFnZS9ET01X
aW5kb3dQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQcm9wZXJ0eTo6
RE9NV2luZG93UHJvcGVydHkpOgorICAgICAgICBLZWVwIHRyYWNrIG9mIHRoZSBkaXNjb25uZWN0
ZWQgRE9NV2luZG93IHNvIGl0IGNhbiBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhlIHByb3BlcnR5
IHdoZW4gYQorICAgICAgICBjYWNoZWQgZnJhbWUgaXMgZGVzdHJveWVkLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93UHJvcGVydHk6On5ET01XaW5kb3dQcm9wZXJ0eSk6CisgICAgICAgIEFs
c28gdW5yZWdpc3RlciB0aGUgcHJvcGVydHkgd2hlbiBhIERPTVdpbmRvd1Byb3BlcnR5IGZvciBh
IGNhY2hlZCBmcmFtZSBpcyBkZXN0cm95ZWQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dQ
cm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKToKKyAgICAgICAgS2VlcCB0cmFj
ayBvZiB0aGUgZGlzY29ubmVjdGVkIERPTVdpbmRvdy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2Jh
bE9iamVjdEluQ2FjaGVkRnJhbWUpOgorICAgICAgICBVbnJlZ2lzdGVyIHRoZSBwcm9wZXJ0eSBm
cm9tIHRoZSBkaXNjb25uZWN0ZWQgRE9NV2luZG93LgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSk6CisgICAgICAgIFVu
cmVnaXN0ZXIgdGhlIHByb3BlcnR5IGZyb20gdGhlIERPTVdpbmRvdyBhbmQgc3RvcCBrZWVwaW5n
IHRyYWNrIG9mIHRoZSBmcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5
Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKToKKyAgICAgICAgRG8gbm90IHNldCBt
X2ZyYW1lIHRvIDAgYmVjYXVzZSBkZXRhY2hlZCBmcmFtZXMgc3RpbGwgaGF2ZSBhY2Nlc3MgdG8g
dGhlIERPTVdpbmRvdywgZXZlbiBpZgorICAgICAgICB0aGV5IGNhbid0IGRvIGFueXRoaW5nIG1l
YW5pbmdmdWwgd2l0aCBpdC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd1Byb3BlcnR5Lmg6CisK
KyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRW
aWV3KToKKyAgICAgICAgVGVsbCB0aGUgRE9NV2luZG93IHRoYXQgdGhlIERvY3VtZW50IGlzIGJl
aW5nIGRldGFjaGVkIHNvIGl0IGNhbiB0ZWxsIHRoZQorICAgICAgICBET01XaW5kb3dQcm9wZXJ0
aWVzLgorCisgICAgICAgICogcGFnZS9Qb2ludGVyTG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQb2ludGVyTG9jazo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKToKKyAgICAgICAgVXBk
YXRlZCBmb3IgZGlzY29ubmVjdEZyYW1lIHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlBvaW50
ZXJMb2NrOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUpOgorICAgICAgICBDb3ZlciB0
aGUgY2FzZXMgZm9ybWVybHkgY292ZXJlZCBieSBkaXNjb25uZWN0RnJhbWUgKHdoaWNoIHdhcyBz
b21ldGltZXMgYmVpbmcgY2FsbGVkIHdoZW4KKyAgICAgICAgY2FsbGVkIHdoZW4gdGhlIGZyYW1l
IHdhcyBkZXN0cm95ZWQpLgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suaDoKKwogMjAxMi0w
NS0wOCAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFNocmluayBFbGVtZW50QXR0cmlidXRlRGF0YSBieSBmYWN0b3Jpbmcgb3V0IEF0dHIgb2JqZWN0
IGNvdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggNGJhZGU3MC4uOWY0Y2JiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01OCwxOCArNTgsMzYgQEAgRE9NV2luZG93
SW5kZXhlZERhdGFiYXNlKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmZyb20oRE9NV2luZG93
KiB3aW5kb3cpCiAgICAgcmV0dXJuIHN1cHBsZW1lbnQ7CiB9CiAKLXZvaWQgRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlOjpkaXNjb25uZWN0RnJhbWUoKQordm9pZCBET01XaW5kb3dJbmRleGVkRGF0
YWJhc2U6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpCiB7CiAgICAgbV9zdXNwZW5kZWRJ
REJGYWN0b3J5ID0gbV9pZGJGYWN0b3J5LnJlbGVhc2UoKTsKLSAgICBET01XaW5kb3dQcm9wZXJ0
eTo6ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RG
cmFtZUZvclBhZ2VDYWNoZSgpOwogfQogCi12b2lkIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6
cmVjb25uZWN0RnJhbWUoRnJhbWUqIGZyYW1lKQordm9pZCBET01XaW5kb3dJbmRleGVkRGF0YWJh
c2U6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgRE9N
V2luZG93UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lKGZyYW1lKTsKKyAgICBET01XaW5kb3dQcm9w
ZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKGZyYW1lKTsKICAgICBtX2lkYkZhY3Rv
cnkgPSBtX3N1c3BlbmRlZElEQkZhY3RvcnkucmVsZWFzZSgpOwogfQogCit2b2lkIERPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkK
K3sKKyAgICBtX3N1c3BlbmRlZElEQkZhY3RvcnkgPSBudWxscHRyOworICAgIERPTVdpbmRvd1By
b3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKTsKK30KKwordm9p
ZCBET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFt
ZSgpCit7CisgICAgbV9pZGJGYWN0b3J5ID0gbnVsbHB0cjsKKyAgICBET01XaW5kb3dQcm9wZXJ0
eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93
SW5kZXhlZERhdGFiYXNlOjp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkKK3sKKyAg
ICBtX2lkYkZhY3RvcnkgPSBudWxscHRyOworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGV0
YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7Cit9CisKIElEQkZhY3RvcnkqIERPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZTo6d2Via2l0SW5kZXhlZERCKERPTVdpbmRvdyogd2luZG93KQogewogICAg
IHJldHVybiBmcm9tKHdpbmRvdyktPndlYmtpdEluZGV4ZWREQigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJh
c2UuaAppbmRleCBkMWExMGIxLi5mZDMyZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaApAQCAt
NDMsOCArNDMsMTEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIElEQkZhY3RvcnkqIHdlYmtpdElu
ZGV4ZWREQihET01XaW5kb3cqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWUoRnJhbWUqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFt
ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdElu
Q2FjaGVkRnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RJbkZyYW1lKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hH
bG9iYWxPYmplY3RGcm9tRnJhbWUoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UoRE9NV2luZG93Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCAzNTgwM2ZiLi5lNzZkMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTIwNjQsNiArMjA2NCwxMyBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2goKQogICAgIG1fcmVuZGVy
QXJlbmEuY2xlYXIoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9u
KCkKK3sKKyAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSB0aGlzLT5kb21XaW5kb3coKSkKKyAg
ICAgICAgd2luZG93LT53aWxsRGV0YWNoRG9jdW1lbnRGcm9tRnJhbWUoKTsKKyAgICBkZXRhY2go
KTsKK30KKwogdm9pZCBEb2N1bWVudDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKQogewogICAg
IEV2ZW50VGFyZ2V0OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCAzMzA0YjUzLi5hM2I1MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTc3LDYg
KzU3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoKCk7CisgICAgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKIAog
ICAgIC8vIE92ZXJyaWRlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbWV0aG9kcyB0byBkbyBhZGRp
dGlvbmFsIHdvcmsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0
aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uKSBPVkVSUklERTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggM2MzMGI0MC4uODdkNGFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTI1MCw2ICsyNTAsOCBAQCB2b2lkIENh
Y2hlZEZyYW1lOjpkZXN0cm95KCkKICAgICBBU1NFUlQobV92aWV3KTsKICAgICBBU1NFUlQobV9k
b2N1bWVudC0+ZnJhbWUoKSA9PSBtX3ZpZXctPmZyYW1lKCkpOwogCisgICAgbV9kb21XaW5kb3ct
PndpbGxEZXN0cm95Q2FjaGVkRnJhbWUoKTsKKwogICAgIGlmICghbV9pc01haW5GcmFtZSkgewog
ICAgICAgICBtX3ZpZXctPmZyYW1lKCktPmRldGFjaEZyb21QYWdlKCk7CiAgICAgICAgIG1fdmll
dy0+ZnJhbWUoKS0+bG9hZGVyKCktPmRldGFjaFZpZXdzQW5kRG9jdW1lbnRMb2FkZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDkzMGJiMmIuLjA4OWUwMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNTE2LDcgKzUxNiw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNsZWFyKGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNs
ZWFyU2NyaXB0T2JqZWN0cywgYm9vCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnN0b3BB
Y3RpdmVET01PYmplY3RzKCk7CiAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5hdHRh
Y2hlZCgpKSB7CiAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT53aWxsUmVtb3ZlKCk7
Ci0gICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZXRhY2goKTsKKyAgICAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9m
U3VidHJlZShtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4
IDExZGNiYjguLmFlZTU3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTQ3LDIyICs0NywyNyBAQCBET01B
cHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKEZyYW1lKiBmcmFtZSkKICAgICAg
ICAgY2FjaGVIb3N0LT5zZXRET01BcHBsaWNhdGlvbkNhY2hlKHRoaXMpOwogfQogCi12b2lkIERP
TUFwcGxpY2F0aW9uQ2FjaGU6OmRpc2Nvbm5lY3RGcmFtZSgpCit2b2lkIERPTUFwcGxpY2F0aW9u
Q2FjaGU6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpCiB7Ci0gICAgQXBwbGljYXRpb25D
YWNoZUhvc3QqIGNhY2hlSG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7Ci0gICAgaWYgKGNh
Y2hlSG9zdCkKKyAgICBpZiAoQXBwbGljYXRpb25DYWNoZUhvc3QqIGNhY2hlSG9zdCA9IGFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkpCiAgICAgICAgIGNhY2hlSG9zdC0+c2V0RE9NQXBwbGljYXRpb25D
YWNoZSgwKTsKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7CisgICAg
RE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpOwogfQogCi12
b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OnJlY29ubmVjdEZyYW1lKEZyYW1lKiBmcmFtZSkKK3Zv
aWQgRE9NQXBwbGljYXRpb25DYWNoZTo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZyYW1l
KiBmcmFtZSkKIHsKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWUoZnJhbWUp
OwotICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjYWNoZUhvc3QgPSBhcHBsaWNhdGlvbkNhY2hl
SG9zdCgpOwotICAgIGlmIChjYWNoZUhvc3QpCisgICAgRE9NV2luZG93UHJvcGVydHk6OnJlY29u
bmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShmcmFtZSk7CisgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0KiBjYWNoZUhvc3QgPSBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpKQogICAgICAgICBjYWNoZUhv
c3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUodGhpcyk7CiB9CiAKK3ZvaWQgRE9NQXBwbGljYXRp
b25DYWNoZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkKK3sKKyAgICBpZiAoQXBw
bGljYXRpb25DYWNoZUhvc3QqIGNhY2hlSG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkpCisg
ICAgICAgIGNhY2hlSG9zdC0+c2V0RE9NQXBwbGljYXRpb25DYWNoZSgwKTsKKyAgICBET01XaW5k
b3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7Cit9CisKIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KiBET01BcHBsaWNhdGlvbkNhY2hlOjphcHBsaWNhdGlvbkNhY2hlSG9z
dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IGUzYjJhMmUuLjJlODAzMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaApA
QCAtNDcsOCArNDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NQXBwbGlj
YXRpb25DYWNoZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERP
TUFwcGxpY2F0aW9uQ2FjaGUoZnJhbWUpKTsgfQogICAgIH5ET01BcHBsaWNhdGlvbkNhY2hlKCkg
eyBBU1NFUlQoIW1fZnJhbWUpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1l
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lKEZyYW1lKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoRnJh
bWUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJ
bkZyYW1lKCkgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXMoKSBjb25zdDsK
ICAgICB2b2lkIHVwZGF0ZShFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcAppbmRleCA4NmNh
MDI4Li40MDE3M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAKQEAgLTYzLDE4ICs2MywzNiBAQCBOb3RpZmlj
YXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMo
RE9NV2luZG93KiB3aW5kbwogICAgIHJldHVybiBET01XaW5kb3dOb3RpZmljYXRpb25zOjpmcm9t
KHdpbmRvdyktPndlYmtpdE5vdGlmaWNhdGlvbnMoKTsKIH0KIAotdm9pZCBET01XaW5kb3dOb3Rp
ZmljYXRpb25zOjpkaXNjb25uZWN0RnJhbWUoKQordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25z
OjpkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKQogewogICAgIG1fc3VzcGVuZGVkTm90aWZp
Y2F0aW9uQ2VudGVyID0gbV9ub3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOwotICAgIERPTVdp
bmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6
ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCk7CiB9CiAKLXZvaWQgRE9NV2luZG93Tm90aWZp
Y2F0aW9uczo6cmVjb25uZWN0RnJhbWUoRnJhbWUqIGZyYW1lKQordm9pZCBET01XaW5kb3dOb3Rp
ZmljYXRpb25zOjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoRnJhbWUqIGZyYW1lKQogewot
ICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZShmcmFtZSk7CisgICAgRE9NV2lu
ZG93UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShmcmFtZSk7CiAgICAgbV9u
b3RpZmljYXRpb25DZW50ZXIgPSBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlci5yZWxlYXNl
KCk7CiB9CiAKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RJbkNhY2hlZEZyYW1lKCkKK3sKKyAgICBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRl
ciA9IG51bGxwdHI7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5DYWNoZWRGcmFtZSgpOworfQorCit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6Ondp
bGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpCit7CisgICAgbV9ub3RpZmljYXRpb25DZW50
ZXIgPSBudWxscHRyOworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9i
amVjdEluRnJhbWUoKTsKK30KKwordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGV0
YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkKK3sKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9
IG51bGxwdHI7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RG
cm9tRnJhbWUoKTsKK30KKwogTm90aWZpY2F0aW9uQ2VudGVyKiBET01XaW5kb3dOb3RpZmljYXRp
b25zOjp3ZWJraXROb3RpZmljYXRpb25zKCkKIHsKICAgICBpZiAoIW1fd2luZG93LT5pc0N1cnJl
bnRseURpc3BsYXllZEluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmgKaW5kZXggZGJlZGVmNi4uMjJlMjZkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmlj
YXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmgKQEAgLTQ1LDggKzQ1LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTm90aWZp
Y2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKERPTVdpbmRvdyopOwogICAgIHN0YXRp
YyBET01XaW5kb3dOb3RpZmljYXRpb25zKiBmcm9tKERPTVdpbmRvdyopOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNv
bm5lY3RGcmFtZShGcmFtZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0
RnJhbWVGb3JQYWdlQ2FjaGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0
RnJhbWVGcm9tUGFnZUNhY2hlKEZyYW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpIE9WRVJSSURFOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggOWI4NGI2Ny4uZGVmMGU2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDI3LDYgKzQyNywxMSBAQCBET01XaW5kb3c6
On5ET01XaW5kb3coKQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKG1fc3VzcGVuZGVkRm9yUGFn
ZUNhY2hlKQorICAgICAgICB3aWxsRGVzdHJveUNhY2hlZEZyYW1lKCk7CisgICAgZWxzZQorICAg
ICAgICB3aWxsRGVzdHJveURvY3VtZW50SW5GcmFtZSgpOworCiAgICAgLy8gQXMgdGhlIEFTU0VS
VHMgYWJvdmUgaW5kaWNhdGUsIHRoaXMgY2xlYXIgc2hvdWxkIG9ubHkgYmUgbmVjZXNhcnkgaWYg
dGhpcyBET01XaW5kb3cgaXMgc3VzcGVuZGVkIGZvciB0aGUgcGFnZSBjYWNoZS4KICAgICAvLyBC
dXQgd2UgZG9uJ3Qgd2FudCB0byByaXNrIGFueSBvZiB0aGVzZSBvYmplY3RzIGhhbmdpbmcgYXJv
dW5kIGFmdGVyIHdlJ3ZlIGJlZW4gZGVzdHJveWVkLgogICAgIGNsZWFyRE9NV2luZG93UHJvcGVy
dGllcygpOwpAQCAtNDY3LDYgKzQ3Miw3IEBAIFBhZ2UqIERPTVdpbmRvdzo6cGFnZSgpCiAKIHZv
aWQgRE9NV2luZG93OjpmcmFtZURlc3Ryb3llZCgpCiB7CisgICAgd2lsbERlc3Ryb3lEb2N1bWVu
dEluRnJhbWUoKTsKICAgICBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lRGVzdHJveWVk
KCk7CiAgICAgY2xlYXJET01XaW5kb3dQcm9wZXJ0aWVzKCk7CiB9CkBAIC00NzQsMTEgKzQ4MCwz
NiBAQCB2b2lkIERPTVdpbmRvdzo6ZnJhbWVEZXN0cm95ZWQoKQogdm9pZCBET01XaW5kb3c6Ondp
bGxEZXRhY2hQYWdlKCkKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2lu
ZG93RGlzY2FyZGVkKG1fZnJhbWUsIHRoaXMpOworfQogCit2b2lkIERPTVdpbmRvdzo6d2lsbERl
c3Ryb3lDYWNoZWRGcmFtZSgpCit7CisgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNvcHkgbV9w
cm9wZXJ0aWVzIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGJlY2F1c2UgdGhlIERPTVdpbmRvd1Byb3Bl
cnRpZXMgbWF5CisgICAgLy8gdW5yZWdpc3RlciB0aGVtc2VsdmVzIGZyb20gdGhlIERPTVdpbmRv
dyBhcyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2Fj
aGVkRnJhbWUuCiAgICAgVmVjdG9yPERPTVdpbmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKICAg
ICBjb3B5VG9WZWN0b3IobV9wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByb3BlcnRpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHByb3BlcnRpZXNb
aV0tPndpbGxEZXRhY2hQYWdlKCk7CisgICAgICAgIHByb3BlcnRpZXNbaV0tPndpbGxEZXN0cm95
R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpOworfQorCit2b2lkIERPTVdpbmRvdzo6d2lsbERl
c3Ryb3lEb2N1bWVudEluRnJhbWUoKQoreworICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjb3B5
IG1fcHJvcGVydGllcyB0byBhIHNlcGFyYXRlIHZlY3RvciBiZWNhdXNlIHRoZSBET01XaW5kb3dQ
cm9wZXJ0aWVzIG1heQorICAgIC8vIHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBmcm9tIHRoZSBET01X
aW5kb3cgYXMgYSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJ
bkZyYW1lLgorICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3BlcnRpZXM7CisgICAg
Y29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUoKTsgKytpKQorICAgICAgICBwcm9wZXJ0aWVzW2ld
LT53aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKTsKK30KKwordm9pZCBET01XaW5kb3c6
OndpbGxEZXRhY2hEb2N1bWVudEZyb21GcmFtZSgpCit7CisgICAgLy8gSXQgaXMgbmVjZXNzYXJ5
IHRvIGNvcHkgbV9wcm9wZXJ0aWVzIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGJlY2F1c2UgdGhlIERP
TVdpbmRvd1Byb3BlcnRpZXMgbWF5CisgICAgLy8gdW5yZWdpc3RlciB0aGVtc2VsdmVzIGZyb20g
dGhlIERPTVdpbmRvdyBhcyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byB3aWxsRGV0YWNoR2xvYmFs
T2JqZWN0RnJvbUZyYW1lLgorICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3BlcnRp
ZXM7CisgICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNpemUoKTsgKytpKQorICAgICAgICBwcm9w
ZXJ0aWVzW2ldLT53aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7CiB9CiAKIHZvaWQg
RE9NV2luZG93OjpyZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5KiBwcm9wZXJ0eSkK
QEAgLTQ5OSw2ICs1MzAsNyBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogICAgIGlmIChtX3N1
c3BlbmRlZEZvclBhZ2VDYWNoZSkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIHdpbGxEZXN0
cm95RG9jdW1lbnRJbkZyYW1lKCk7CiAgICAgY2xlYXJET01XaW5kb3dQcm9wZXJ0aWVzKCk7CiB9
CiAKQEAgLTUxNiwyNCArNTQ4LDI3IEBAIHZvaWQgRE9NV2luZG93OjpyZXN1bWVGcm9tUGFnZUNh
Y2hlKCkKIAogdm9pZCBET01XaW5kb3c6OmRpc2Nvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKCkK
IHsKKyAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY29weSBtX3Byb3BlcnRpZXMgdG8gYSBzZXBh
cmF0ZSB2ZWN0b3IgYmVjYXVzZSB0aGUgRE9NV2luZG93UHJvcGVydGllcyBtYXkKKyAgICAvLyB1
bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgZnJvbSB0aGUgRE9NV2luZG93IGFzIGEgcmVzdWx0IG9mIHRo
ZSBjYWxsIHRvIGRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZS4KICAgICBWZWN0b3I8RE9NV2lu
ZG93UHJvcGVydHkqPiBwcm9wZXJ0aWVzOwogICAgIGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMs
IHByb3BlcnRpZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgcHJvcGVydGllc1tpXS0+ZGlzY29ubmVjdEZyYW1lKCk7CisgICAg
ICAgIHByb3BlcnRpZXNbaV0tPmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpOwogfQogCiB2
b2lkIERPTVdpbmRvdzo6cmVjb25uZWN0RE9NV2luZG93UHJvcGVydGllcygpCiB7CiAgICAgQVNT
RVJUKG1fc3VzcGVuZGVkRm9yUGFnZUNhY2hlKTsKKyAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8g
Y29weSBtX3Byb3BlcnRpZXMgdG8gYSBzZXBhcmF0ZSB2ZWN0b3IgYmVjYXVzZSB0aGUgRE9NV2lu
ZG93UHJvcGVydGllcyBtYXkKKyAgICAvLyB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgZnJvbSB0aGUg
RE9NV2luZG93IGFzIGEgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIHJlY29ubmVjdEZyb21QYWdlQ2Fj
aGUuCiAgICAgVmVjdG9yPERPTVdpbmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKICAgICBjb3B5
VG9WZWN0b3IobV9wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByb3BlcnRpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHByb3BlcnRpZXNbaV0tPnJl
Y29ubmVjdEZyYW1lKG1fZnJhbWUpOworICAgICAgICBwcm9wZXJ0aWVzW2ldLT5yZWNvbm5lY3RG
cmFtZUZyb21QYWdlQ2FjaGUobV9mcmFtZSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpjbGVhckRP
TVdpbmRvd1Byb3BlcnRpZXMoKQogewotICAgIGRpc2Nvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVz
KCk7CiAgICAgbV9wcm9wZXJ0aWVzLmNsZWFyKCk7CiAKICAgICBtX3NjcmVlbiA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAppbmRleCA0ZDU4OTdkLi43OGZiNmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKQEAgLTM5MCw2ICszOTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIGJ5IHRoZSBkb2N1bWVudCB0aGF0IGlzIGN1cnJlbnRseSBhY3RpdmUgaW4gbV9mcmFtZS4K
ICAgICAgICAgYm9vbCBpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSBjb25zdDsKIAorICAg
ICAgICB2b2lkIHdpbGxEZXRhY2hEb2N1bWVudEZyb21GcmFtZSgpOworICAgICAgICB2b2lkIHdp
bGxEZXN0cm95Q2FjaGVkRnJhbWUoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0
IERPTVdpbmRvdyhGcmFtZSopOwogCkBAIC00MTEsNiArNDE0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIGNsZWFyRE9NV2luZG93UHJvcGVydGllcygpOwogICAgICAgICB2
b2lkIGRpc2Nvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHZvaWQgcmVjb25u
ZWN0RE9NV2luZG93UHJvcGVydGllcygpOworICAgICAgICB2b2lkIHdpbGxEZXN0cm95RG9jdW1l
bnRJbkZyYW1lKCk7CiAKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5
T3JpZ2luOwogICAgICAgICBLVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3dFeHRlbnNpb24uY3BwCmluZGV4IDRhOWE0MWEuLmU0NzU1MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTM2LDkwICszNiw4MiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbihGcmFt
ZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgOiBET01XaW5kb3dQcm9wZXJ0
eShmcmFtZSkKICAgICAsIG1fd29ybGQod29ybGQpCi0gICAgLCBtX2Rpc2Nvbm5lY3RlZERPTVdp
bmRvdygwKQogICAgICwgbV93YXNEZXRhY2hlZChmYWxzZSkKIHsKICAgICBBU1NFUlQodGhpcy0+
ZnJhbWUoKSk7CiAgICAgQVNTRVJUKG1fd29ybGQpOwogfQogCi1ET01XaW5kb3dFeHRlbnNpb246
On5ET01XaW5kb3dFeHRlbnNpb24oKQordm9pZCBET01XaW5kb3dFeHRlbnNpb246OmRpc2Nvbm5l
Y3RGcmFtZUZvclBhZ2VDYWNoZSgpCiB7Ci0gICAgLy8gRE9NV2luZG93RXh0ZW5zaW9uIGxpZmV0
aW1lIGlzbid0IHRpZWQgZGlyZWN0bHkgdG8gdGhlIERPTVdpbmRvdyBpdHNlbGYgc28gaXQgaXMg
aW1wb3J0YW50IHRoYXQgaXQgdW5yZWdpc3RlcgotICAgIC8vIGl0c2VsZiBmcm9tIGFueSBET01X
aW5kb3cgaXQgaXMgYXNzb2NpYXRlZCB3aXRoIHdoZW4gZGVzdHJveWVkLgotICAgIC8vIFRoaXMg
bWlnaHQgaGFwcGVuIGlmIHRoZSBET01XaW5kb3dFeHRlbnNpb24gaXMgZGVzdHJveWVkIHdoaWxl
IGl0cyBET01XaW5kb3cgaXMgaW4gYSBDYWNoZWRQYWdlLgotICAgIGlmIChtX2Rpc2Nvbm5lY3Rl
ZERPTVdpbmRvdykKLSAgICAgICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3ctPnVucmVnaXN0ZXJQ
cm9wZXJ0eSh0aGlzKTsKLX0KLQotdm9pZCBET01XaW5kb3dFeHRlbnNpb246OmRpc2Nvbm5lY3RG
cmFtZSgpCi17Ci0gICAgLy8gVGhlIERPTVdpbmRvdyBkZXN0cnVjdG9yIGNhbGxzIGRpc2Nvbm5l
Y3RGcmFtZSBvbiBhbGwgaXRzIERPTVdpbmRvd1Byb3BlcnRpZXMsIGV2ZW4gaWYgaXQKLSAgICAv
LyBkaWQgdGhhdCBhbHJlYWR5IHdoZW4gZW50ZXJpbmcgdGhlIHBhZ2UgY2FjaGUuCi0gICAgaWYg
KG1fZGlzY29ubmVjdGVkRnJhbWUpIHsKLSAgICAgICAgQVNTRVJUKCFmcmFtZSgpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgbWln
aHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAogICAg
IC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCiAgICAgUmVmUHRyPERPTVdpbmRv
d0V4dGVuc2lvbj4gcHJvdGVjdG9yID0gdGhpczsKICAgICAKLSAgICAvLyBET01XaW5kb3dQcm9w
ZXJ0aWVzIGFyZSBkaXNjb25uZWN0ZWQgZnJvbSBmcmFtZXMgYWZ0ZXIgdGhleSBhcmUgZGV0YWNo
ZWQuCi0gICAgLy8gRE9NV2luZG93RXh0ZW5zaW9ucyBvbmx5IHdhbnQgdG8gc3RheSBwcmVwYXJl
ZCBmb3IgY2xpZW50IGNhbGxiYWNrcyBpZiB0aGV5J3ZlIG5ldmVyIGJlZW4gZGV0YWNoZWQuCi0g
ICAgaWYgKCFtX3dhc0RldGFjaGVkKSB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2lsbERp
c2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KHRoaXMpOworICAgIEZy
YW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+ZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmpl
Y3QodGhpcyk7CiAKLSAgICAgICAgbV9kaXNjb25uZWN0ZWRGcmFtZSA9IGZyYW1lOwotICAgICAg
ICBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyA9IGZyYW1lLT5kb21XaW5kb3coKTsKLSAgICB9Cisg
ICAgbV9kaXNjb25uZWN0ZWRGcmFtZSA9IGZyYW1lOwogCi0gICAgRE9NV2luZG93UHJvcGVydHk6
OmRpc2Nvbm5lY3RGcmFtZSgpOworICAgIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJh
bWVGb3JQYWdlQ2FjaGUoKTsKIH0KIAotdm9pZCBET01XaW5kb3dFeHRlbnNpb246OnJlY29ubmVj
dEZyYW1lKEZyYW1lKiBmcmFtZSkKK3ZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjpyZWNvbm5lY3RG
cmFtZUZyb21QYWdlQ2FjaGUoRnJhbWUqIGZyYW1lKQogewotICAgIC8vIERPTVdpbmRvd1Byb3Bl
cnRpZXMgc2hvdWxkIG5ldmVyIHJlY29ubmVjdCB0byBhIGZyYW1lIGFmdGVyIHRoZXkndmUgYmVl
biBkZXRhY2hlZCBmcm9tIHRoZSBwYWdlLgotICAgIEFTU0VSVCghbV93YXNEZXRhY2hlZCk7CiAg
ICAgQVNTRVJUKG1fZGlzY29ubmVjdGVkRnJhbWUgPT0gZnJhbWUpOwogICAgIAotICAgIERPTVdp
bmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZShmcmFtZSk7CisgICAgRE9NV2luZG93UHJvcGVy
dHk6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShmcmFtZSk7CiAgICAgbV9kaXNjb25uZWN0
ZWRGcmFtZSA9IDA7Ci0gICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSAwOwogCiAgICAgdGhp
cy0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KHRoaXMpOwogfQogCi12b2lkIERPTVdpbmRvd0V4
dGVuc2lvbjo6d2lsbERldGFjaFBhZ2UoKQordm9pZCBET01XaW5kb3dFeHRlbnNpb246OndpbGxE
ZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpCiB7Ci0gICAgLy8gd2lsbERldGFjaFBh
Z2UgbWlnaHQgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gcmVh
Y3Qgb25jZS4KLSAgICBpZiAobV93YXNEZXRhY2hlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAor
ICAgIEFTU0VSVChtX2Rpc2Nvbm5lY3RlZEZyYW1lKTsKKwogICAgIC8vIENhbGxpbmcgb3V0IHRv
IHRoZSBjbGllbnQgbWlnaHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5n
IGRlc3Ryb3llZAogICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCiAgICAg
UmVmUHRyPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdG9yID0gdGhpczsKICAgICAKLSAgICBG
cmFtZSogZnJhbWUgPSBtX2Rpc2Nvbm5lY3RlZEZyYW1lLmdldCgpOwotICAgIGlmICghZnJhbWUp
Ci0gICAgICAgIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAgICBBU1NFUlQoZnJhbWUpOworICAg
IG1fZGlzY29ubmVjdGVkRnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hXaWxsRGVz
dHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbih0aGlzKTsKKyAgICBtX2Rpc2Nv
bm5lY3RlZEZyYW1lID0gMDsKIAotICAgIC8vIERPTVdpbmRvd0V4dGVuc2lvbiBsaWZldGltZSBp
c24ndCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBET01XaW5kb3cgaXRzZWxmIHNvIGl0IGlzIGltcG9y
dGFudCB0aGF0IGl0IHVucmVnaXN0ZXIKLSAgICAvLyBpdHNlbGYgZnJvbSBhbnkgRE9NV2luZG93
IGl0IGlzIGFzc29jaWF0ZWQgd2l0aCB3aGVuIGRldGFjaGVkLgotICAgIC8vIFRoaXMgbWlnaHQg
YmUgdGhlIGRpc2Nvbm5lY3RlZCBET01XaW5kb3cgaWYgdGhlIERPTVdpbmRvdyBpcyBpbiBhIENh
Y2hlZFBhZ2UgdGhhdCBpcyBwcnVuZWQuCi0gICAgRE9NV2luZG93KiBhc3NvY2lhdGVkRE9NV2lu
ZG93ID0gbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPyBtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyA6
IGZyYW1lLT5kb21XaW5kb3coKTsKLSAgICBhc3NvY2lhdGVkRE9NV2luZG93LT51bnJlZ2lzdGVy
UHJvcGVydHkodGhpcyk7Ci0gICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSAwOwotICAgIAot
ICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CisgICAgRE9NV2luZG93UHJvcGVydHk6
OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpOworfQogCi0gICAgbV9kaXNj
b25uZWN0ZWRGcmFtZSA9IDA7Cit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkZyYW1lKCkKK3sKKyAgICBBU1NFUlQoIW1fZGlzY29ubmVjdGVkRnJhbWUp
OworCisgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhp
cyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCisgICAgLy8gd2hpbGUgdGhlcmUg
aXMgc3RpbGwgd29yayB0byBkby4KKyAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90
ZWN0b3IgPSB0aGlzOworCisgICAgaWYgKCFtX3dhc0RldGFjaGVkKSB7CisgICAgICAgIEZyYW1l
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgICAgIEFTU0VSVChmcmFtZSk7CisgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CisgICAgfQorCisgICAgRE9NV2luZG93UHJv
cGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpOworfQorCit2b2lkIERPTVdp
bmRvd0V4dGVuc2lvbjo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpCit7CisgICAg
QVNTRVJUKCFtX2Rpc2Nvbm5lY3RlZEZyYW1lKTsKKyAgICBBU1NFUlQoIW1fd2FzRGV0YWNoZWQp
OworCisgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhp
cyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCisgICAgLy8gd2hpbGUgdGhlcmUg
aXMgc3RpbGwgd29yayB0byBkby4KKyAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90
ZWN0b3IgPSB0aGlzOworCisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBB
U1NFUlQoZnJhbWUpOworICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CiAKLSAgICBE
T01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaFBhZ2UoKTsKLSAgICAKICAgICBtX3dhc0RldGFj
aGVkID0gdHJ1ZTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaEdsb2JhbE9iamVj
dEZyb21GcmFtZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaAppbmRleCBjMjBhNGY3Li41M2I4NzNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01XaW5kb3c7CiBjbGFzcyBET01XaW5kb3dF
eHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBGcmFtZTsKQEAgLTQ1LDEx
ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV2luZG93
RXh0ZW5zaW9uKGZyYW1lLCB3b3JsZCkpOwogICAgIH0KIAotICAgIH5ET01XaW5kb3dFeHRlbnNp
b24oKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWUoRnJhbWUqKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
Y29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKSBPVkVS
UklERTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dv
cmxkLmdldCgpOyB9CiAKQEAgLTU4LDcgKzU3LDYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxE
T01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2Rpc2Nvbm5lY3Rl
ZEZyYW1lOwotICAgIERPTVdpbmRvdyogbV9kaXNjb25uZWN0ZWRET01XaW5kb3c7CiAgICAgYm9v
bCBtX3dhc0RldGFjaGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3Bl
cnR5LmNwcAppbmRleCAzMWVhNDRlLi5mNGYzMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvd1Byb3BlcnR5LmNwcApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIERPTVdpbmRvd1Byb3BlcnR5OjpET01XaW5kb3dQcm9wZXJ0eShGcmFtZSogZnJhbWUpCiAg
ICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9kaXNjb25uZWN0ZWRET01XaW5kb3coMCkKIHsK
ICAgICBpZiAobV9mcmFtZSkKICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnJlZ2lzdGVy
UHJvcGVydHkodGhpcyk7CkBAIC00MCwyNSArNDEsNTMgQEAgRE9NV2luZG93UHJvcGVydHk6OkRP
TVdpbmRvd1Byb3BlcnR5KEZyYW1lKiBmcmFtZSkKIAogRE9NV2luZG93UHJvcGVydHk6On5ET01X
aW5kb3dQcm9wZXJ0eSgpCiB7Ci0gICAgaWYgKG1fZnJhbWUpCisgICAgaWYgKG1fZnJhbWUpIHsK
KyAgICAgICAgQVNTRVJUKCFtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyk7CiAgICAgICAgIG1fZnJh
bWUtPmRvbVdpbmRvdygpLT51bnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7CisgICAgfSBlbHNlIGlm
IChtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdykKKyAgICAgICAgbV9kaXNjb25uZWN0ZWRET01XaW5k
b3ctPnVucmVnaXN0ZXJQcm9wZXJ0eSh0aGlzKTsKIH0KIAotdm9pZCBET01XaW5kb3dQcm9wZXJ0
eTo6ZGlzY29ubmVjdEZyYW1lKCkKK3ZvaWQgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RG
cmFtZUZvclBhZ2VDYWNoZSgpCiB7CisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIEFTU0VSVCgh
bV9kaXNjb25uZWN0ZWRET01XaW5kb3cpOworICAgIG1fZGlzY29ubmVjdGVkRE9NV2luZG93ID0g
bV9mcmFtZS0+ZG9tV2luZG93KCk7CiAgICAgbV9mcmFtZSA9IDA7CiB9CiAKLXZvaWQgRE9NV2lu
ZG93UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lKEZyYW1lKiBmcmFtZSkKK3ZvaWQgRE9NV2luZG93
UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSogZnJhbWUpCiB7CiAg
ICAgQVNTRVJUKGZyYW1lKTsKICAgICBBU1NFUlQoIW1fZnJhbWUpOworICAgIEFTU0VSVChtX2Rp
c2Nvbm5lY3RlZERPTVdpbmRvdyk7CiAgICAgbV9mcmFtZSA9IGZyYW1lOworICAgIG1fZGlzY29u
bmVjdGVkRE9NV2luZG93ID0gMDsKK30KKwordm9pZCBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERl
c3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKK3sKKyAgICBBU1NFUlQobV9kaXNjb25u
ZWN0ZWRET01XaW5kb3cpOworICAgIC8vIERPTVdpbmRvd1Byb3BlcnR5IGxpZmV0aW1lIGlzbid0
IHRpZWQgZGlyZWN0bHkgdG8gdGhlIERPTVdpbmRvdyBpdHNlbGYgc28gaXQgaXMgaW1wb3J0YW50
CisgICAgLy8gdGhhdCBpdCB1bnJlZ2lzdGVyIGl0c2VsZiBmcm9tIGFueSBET01XaW5kb3cgaXQg
aXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIG1fZGlzY29ubmVjdGVkRE9NV2luZG93LT51bnJlZ2lz
dGVyUHJvcGVydHkodGhpcyk7CisgICAgbV9kaXNjb25uZWN0ZWRET01XaW5kb3cgPSAwOworfQor
Cit2b2lkIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUo
KQoreworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBBU1NFUlQoIW1fZGlzY29ubmVjdGVkRE9N
V2luZG93KTsKKyAgICAvLyBET01XaW5kb3dQcm9wZXJ0eSBsaWZldGltZSBpc24ndCB0aWVkIGRp
cmVjdGx5IHRvIHRoZSBET01XaW5kb3cgaXRzZWxmIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IGl0
IHVucmVnaXN0ZXIKKyAgICAvLyBpdHNlbGYgZnJvbSBhbnkgRE9NV2luZG93IGl0IGlzIGFzc29j
aWF0ZWQgd2l0aC4KKyAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+dW5yZWdpc3RlclByb3BlcnR5
KHRoaXMpOworICAgIG1fZnJhbWUgPSAwOwogfQogCi12b2lkIERPTVdpbmRvd1Byb3BlcnR5Ojp3
aWxsRGV0YWNoUGFnZSgpCit2b2lkIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGV0YWNoR2xvYmFs
T2JqZWN0RnJvbUZyYW1lKCkKIHsKLSAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0
aGlzIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGlzIG5vdGlmaWNhdGlvbi4KKyAgICBBU1NFUlQobV9m
cmFtZSk7CisgICAgQVNTRVJUKCFtX2Rpc2Nvbm5lY3RlZERPTVdpbmRvdyk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaAppbmRleCBiYzY2MDBkLi40NDFiYzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5oCkBAIC0yOCwxNSArMjgs
MTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBG
cmFtZTsKIAogY2xhc3MgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgogICAgIGV4cGxpY2l0
IERPTVdpbmRvd1Byb3BlcnR5KEZyYW1lKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dEZyYW1lKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lKEZyYW1lKik7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxEZXRhY2hQYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5l
Y3RGcmFtZUZvclBhZ2VDYWNoZSgpOworICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFtZUZy
b21QYWdlQ2FjaGUoRnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RJbkNhY2hlZEZyYW1lKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFs
T2JqZWN0SW5GcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoR2xvYmFsT2JqZWN0
RnJvbUZyYW1lKCk7CiAKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
OyB9CiAKQEAgLTQ0LDYgKzQ3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkRPTVdpbmRv
d1Byb3BlcnR5KCk7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBET01XaW5kb3cqIG1fZGlz
Y29ubmVjdGVkRE9NV2luZG93OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBiMDYx
YzNiLi5kNjdhNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMjYyLDEyICsyNjIsMTIgQEAg
dm9pZCBGcmFtZTo6c2V0VmlldyhQYXNzUmVmUHRyPEZyYW1lVmlldz4gdmlldykKICAgICBpZiAo
bV92aWV3KQogICAgICAgICBtX3ZpZXctPmRldGFjaEN1c3RvbVNjcm9sbGJhcnMoKTsKIAotICAg
IC8vIERldGFjaCB0aGUgZG9jdW1lbnQgbm93LCBzbyBhbnkgb25VbmxvYWQgaGFuZGxlcnMgZ2V0
IHJ1biAtIGlmCi0gICAgLy8gd2Ugd2FpdCB1bnRpbCB0aGUgdmlldyBpcyBkZXN0cm95ZWQsIHRo
ZW4gdGhpbmdzIHdvbid0IGJlCi0gICAgLy8gaG9va2VkIHVwIGVub3VnaCBmb3Igc29tZSBKYXZh
U2NyaXB0IGNhbGxzIHRvIHdvcmsuCisgICAgLy8gUHJlcGFyZSBmb3IgZGVzdHJ1Y3Rpb24gbm93
LCBzbyBhbnkgdW5sb2FkIGV2ZW50IGhhbmRsZXJzIGdldCBydW4gYW5kIHRoZSBET01XaW5kb3cg
aXMKKyAgICAvLyBub3RpZmllZC4gSWYgd2Ugd2FpdCB1bnRpbCB0aGUgdmlldyBpcyBkZXN0cm95
ZWQsIHRoZW4gdGhpbmdzIHdvbid0IGJlIGhvb2tlZCB1cCBlbm91Z2ggZm9yCisgICAgLy8gdGhl
c2UgY2FsbHMgdG8gd29yay4KICAgICBpZiAoIXZpZXcgJiYgbV9kb2MgJiYgbV9kb2MtPmF0dGFj
aGVkKCkgJiYgIW1fZG9jLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBk
b24ndCBjYWxsIHdpbGxSZW1vdmUgaGVyZS4gV2h5IGlzIHRoYXQgT0s/Ci0gICAgICAgIG1fZG9j
LT5kZXRhY2goKTsKKyAgICAgICAgbV9kb2MtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwogICAg
IH0KICAgICAKICAgICBpZiAobV92aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmNwcApp
bmRleCA3MjMxMWUwLi45Y2ZmOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJMb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmNwcApA
QCAtNDYsOSArNDYsMTUgQEAgUG9pbnRlckxvY2s6On5Qb2ludGVyTG9jaygpCiAgICAgQVNTRVJU
KCFtX2NvbnRyb2xsZXIpOwogfQogCi12b2lkIFBvaW50ZXJMb2NrOjpkaXNjb25uZWN0RnJhbWUo
KQordm9pZCBQb2ludGVyTG9jazo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkKIHsKLSAg
ICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgRE9NV2luZG93UHJv
cGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpOworICAgIG1fY29udHJvbGxlciA9
IDA7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2s6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFt
ZSgpCit7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5G
cmFtZSgpOwogICAgIG1fY29udHJvbGxlciA9IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxv
Y2suaAppbmRleCAyNDBkNzlhLi5kMWUyNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BvaW50ZXJMb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5o
CkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAgICB+UG9pbnRlckxvY2soKTsKIAogICAgIC8v
IERPTVdpbmRvd1Byb3BlcnR5IEludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0
RnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFn
ZUNhY2hlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5GcmFtZSgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBsb2NrKEVsZW1lbnQqIHRhcmdldCwg
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjayk7CiAgICAgdm9pZCB1bmxvY2soKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZDYyY2VjLi5iNzA3
M2M1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMTItMDUtMDkgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxl
LmNvbT4KKworICAgICAgICBDcmFzaCB1c2luZyB0aGUgbmV3IFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9ucyBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODU4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDYWNoZWQgZnJhbWVzIGNhbiBsaXZlIHNsaWdodGx5IGxvbmdlciB0aGFuIHRoZSBwYWdl
LCBidXQgbW9zdCBjbGllbnRzIHVucmVnaXN0ZXIgdGhlbXNlbHZlcworICAgICAgICBhbmQgZG8g
b3RoZXIgY2xlYW51cCBpbiB0aGUgd2lsbERlc3Ryb3lQYWdlIGNhbGxiYWNrLCBtYWtpbmcgdGhl
bSBtaXNzIHRoZQorICAgICAgICB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4
dGVuc2lvbiBjYWxsYmFja3MuCisKKyAgICAgICAgVGhlIGNhbGxzIHRvIHdpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uIGluIHRoZSBET01XaW5kb3dFeHRlbnNpb25C
YXNpYworICAgICAgICB0ZXN0IHdlcmUgYWxsIGJlaW5nIGludm9rZWQgdW5kZXJuZWF0aCBXZWJQ
YWdlOjpjbG9zZS4gVGhpcyBpcyB1bnJlYWxpc3RpYy4gVXBkYXRlIHRoYXQgdGVzdAorICAgICAg
ICB0byBkZXN0cm95IHRoZSBCdW5kbGVET01XaW5kb3dFeHRlbnNpb25zIGluIHJlc3BvbnNlIHRv
IHRoZSB3aWxsRGVzdHJveVBhZ2UgY2FsbGJhY2suCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byB2
ZXJpZnkgdGhhdCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbiBp
cyBiZWluZyBjYWxsZWQgZm9yCisgICAgICAgIHBhZ2VzIHRoYXQgZG9uJ3QgZ28gaW50byB0aGUg
cGFnZSBjYWNoZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgRE9NV2luZG93RXh0ZW5zaW9uTm9D
YWNoZS5jcHAsIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCwgc2ltcGxlLXVu
bG9hZC5odG1sCisgICAgICAgIGFuZCBzaW1wbGUtaWZyYW1lLXVubG9hZC5odG1sCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIFJlbW92ZSB0aGUgZXhwZWN0
ZWQgbWVzc2FnZXMgZm9yIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5z
aW9uLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorICAgICAgICBEbyBub3QgYm90aGVyIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGxp
dmUgZXh0ZW5zaW9uIGNvdW50IC0gYWxsIG9mIHRoZW0gYXJlIGV4cGVjdGVkIHRvIGJlCisgICAg
ICAgIGxpdmUgdW50aWwgdGhlIHRlc3QgY29tcGxldGVzLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIEZpeCB0aGUgY2FsbHMgdG8gRVhQRUNUIHRvIHBhc3MgdGhlIGV4
cGVjdGVkIHZhbHVlIGZpcnN0LCBhbmQgdXNlIEVYUEVDVF9XS19TVFJFUSBzbyB0aGF0CisgICAg
ICAgIG1lc3NhZ2UgZmFpbHVyZXMgd2lsbCBiZSBjbGVhcmVyLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxEZXN0
cm95UGFnZSk6CisgICAgICAgIENsZWFuIHVwIHRoZSBCdW5kbGVET01XaW5kb3dFeHRlbnNpb25z
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxE
ZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgQWRkIGFu
IEFTU0VSVF9OT1RfUkVBQ0hFRC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAg
IEtlZXAgdHJhY2sgb2YgdGhlIG1lc3NhZ2VzIHJlY2VpdmVkIHNvIHRoZXkgY2FuIGJlIGNoZWNr
ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICBOYXZpZ2F0ZSB0byB1bmNhY2hlYWJsZSBwYWdlcyBhbmQgYmFjay4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZV9CdW5kbGUuY3BwOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcC4KKyAgICAgICAgKERPTVdpbmRv
d0V4dGVuc2lvbk5vQ2FjaGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0
ZW5zaW9uTm9DYWNoZTo6RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZSk6CisgICAgICAgIFNldCB1
cCBhbGwgdGhlIHN0YXRlcyBmb3IgZWFjaCBCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpmcmFtZUxvYWRG
aW5pc2hlZCk6CisgICAgICAgIFRlbGwgdGhlIFVJIFByb2Nlc3MgYWJvdXQgdGhlIHN0YXRlcyBv
ZiB0aGUgQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9ucy4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6OnNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZTo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
OjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRPTVdpbmRvd0V4dGVu
c2lvbk5vQ2FjaGU6OndpbGxEZXN0cm95UGFnZSk6CisgICAgICAgIFJlbXZvZSB0aGUgcmVtYWlu
aW5nIEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbnMsIHNlbmQgdGhlIHVwZGF0ZWQgc3RhdGUsIGFu
ZCBmaW5pc2ggdGhlIHRlc3QuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRl
bnNpb25Ob0NhY2hlOjp1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpzZW5kQnVuZGxlTWVzc2FnZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpnbG9i
YWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRP
TVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6OndpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
RnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIEFTU0VSVCB0aGF0IHRoZXNlIHBhZ2VzIG5vdCBn
b2luZyBpbnRvIHRoZSBwYWdlIGNhY2hlIGFyZSBub3QgZ2V0dGluZyBkaXNjb25uZWN0ZWQgdG8g
Z28gaW50bworICAgICAgICB0aGUgcGFnZSBjYWNoZS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6OmRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lv
blRvR2xvYmFsT2JqZWN0KToKKyAgICAgICAgRGl0dG8gYWJvdXQgZ2V0dGluZyByZWNvbm5lY3Rl
ZCB3aGVuIGNvbWluZyBvdXQgb2YgdGhlIHBhZ2UgY2FjaGUuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZv
ckRPTVdpbmRvd0V4dGVuc2lvbik6CisgICAgICAgIFRlbGwgdGhlIFVJIFByb2Nlc3MsIHVwZGF0
ZSB0aGUgc3RhdGUsIGFuZCBnZXQgcmlkIG9mIHRoZSBCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjayk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1l
Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2lsbERpc2Nvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFj
ayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKToKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9zaW1wbGUtaWZyYW1lLXVubG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvc2ltcGxlLXVubG9hZC5odG1sOiBBZGRlZC4KKwog
MjAxMi0wNS0wNyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4K
IAogICAgICAgICBbUXRdIFVuYnJlYWsgZGVidWdnaW5nIG9mIFdlYktpdDIuCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDg1YzM2NWMuLjFkYzljZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDMsNyArMTQzLDExIEBACiAJCUM1NDBGNzg0MTUyRTVBOUEwMEE0MEM4QyAvKiB2ZXJi
b3NlTWFya3VwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzU0MEY3ODMxNTJFNUE3ODAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRt
bCAqLzsgfTsKIAkJRTQ5MDI5NjgxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDkwMjk2
NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLzsgfTsKIAkJRjNGQzNF
RTMxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGli
Z3Rlc3QuYSAqLzsgfTsKKwkJRjZBNkJGQkIxNTU4QUM0ODAwOTI2MTA3IC8qIHNpbXBsZS11bmxv
YWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNkE2QkZCOTE1NThBQkY4MDA5MjYxMDcgLyogc2ltcGxlLXVubG9hZC5odG1sICovOyB9
OworCQlGNkE2QkZCQzE1NThBQzRCMDA5MjYxMDcgLyogc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NkE2QkZCODE1NThBQkY4MDA5MjYxMDcgLyogc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbCAqLzsg
fTsKIAkJRjZGM0YyOTExMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGM0YyOTAxMzM0MkZF
QjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovOyB9OworCQlGNkY0OUM2OTE1NTQ1QzhF
MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQg
LyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi87IH07CisJCUY2RjQ5QzZCMTU1NDVD
QTcwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhE
MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9Owog
CQlGNkZEREREMzE0MjQxQUQ0MDA0RjE3MjkgLyogUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9I
aXN0b3J5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjZGRERERDIxNDI0MUFENDAwNEYxNzI5IC8qIFByaXZhdGVCcm93c2luZ1B1c2hT
dGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJRjZGRERERDYxNDI0MUM2RjAwNEYx
NzI5IC8qIHB1c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyogcHVzaC1zdGF0
ZS5odG1sICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC0xOTAsNyAr
MTk0LDkgQEAKIAkJCQlGNkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUJDQkQzNzM3MTI1QUJCRUIwMEQyQzI5RiAvKiBp
Y29uLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBFM0Y0
QkQgLyogZmluZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY2QTZCRkJDMTU1OEFD
NEIwMDkyNjEwNyAvKiBzaW1wbGUtaWZyYW1lLXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUJDOTA5Nzg0MTI1NTcxQ0YwMDA4Mzc1NiAvKiBzaW1wbGUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKKwkJCQlGNkE2QkZCQjE1NThBQzQ4MDA5MjYxMDcgLyogc2ltcGxlLXVu
bG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwQURCRTk2MTJGQ0E3OUIwMEQy
QzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUJDQUE0
ODU2MTRBMDQ0NEMwMDg4RkFDNCAvKiBzaW1wbGUtdGFsbC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTM1Niw3ICszNjIsMTEgQEAKIAkJQzU0MEY3
ODMxNTJFNUE3ODAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IHZlcmJvc2VNYXJrdXAuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUeXBpbmdTdHlsZUNyYXNoLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUg
LyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQlGNkE2QkZCODE1NThBQkY4MDA5MjYxMDcgLyogc2ltcGxlLWlm
cmFtZS11bmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaW1wbGUtaWZy
YW1lLXVubG9hZC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZBNkJGQjkx
NTU4QUJGODAwOTI2MTA3IC8qIHNpbXBsZS11bmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJzaW1wbGUtdW5sb2FkLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNkYzRjI5MDEzMzQyRkVCMDBBNkJGMTkgLyogQ29va2llTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb29raWVNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdp
bmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdp
bmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNo
U3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBw
dXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1zdGF0ZS5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNl
IHNlY3Rpb24gKi8KQEAgLTUwMSw2ICs1MTEsOCBAQAogCQkJCUY2RjNGMjkwMTMzNDJGRUIwMEE2
QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLywKIAkJCQk1MTM5M0UxRTE1MjM5NDRBMDA1RjM5
QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovLAogCQkJCTUxMzkzRTFEMTUyMzk0
NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwICovLAorCQkJ
CUY2RjQ5QzY3MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNw
cCAqLywKKwkJCQlGNkY0OUM2NjE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9u
Tm9DYWNoZV9CdW5kbGUuY3BwICovLAogCQkJCUJDQjY4MDNGMTI2RkJGRTEwMDY0MkE2MSAvKiBE
b2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwICovLAogCQkJCUJDQjY4MDQxMTI2
RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxl
LmNwcCAqLywKIAkJCQlDMDQ1Rjk0NDEzODVDMkU5MDBDMEYzQ0QgLyogRG93bmxvYWREZWNpZGVE
ZXN0aW5hdGlvbkNyYXNoLmNwcCAqLywKQEAgLTU4OSw3ICs2MDEsOSBAQAogCQkJCTFBREJFRkJD
MTMwQzZBMDEwMEQ2MUQxOSAvKiBzaW1wbGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcuaHRtbCAq
LywKIAkJCQlDMEFEQkU4NDEyRkNBNkI2MDBEMkMxMjkgLyogc2ltcGxlLWZvcm0uaHRtbCAqLywK
IAkJCQkzM0RDODkwRTE0MTk1MzkzMDA3NDdFRjcgLyogc2ltcGxlLWlmcmFtZS5odG1sICovLAor
CQkJCUY2QTZCRkI4MTU1OEFCRjgwMDkyNjEwNyAvKiBzaW1wbGUtaWZyYW1lLXVubG9hZC5odG1s
ICovLAogCQkJCUJDQUE0ODU1MTRBMDIxNjQwMDg4RkFDNCAvKiBzaW1wbGUtdGFsbC5odG1sICov
LAorCQkJCUY2QTZCRkI5MTU1OEFCRjgwMDkyNjEwNyAvKiBzaW1wbGUtdW5sb2FkLmh0bWwgKi8s
CiAJCQkJQkM5MDk3NzgxMjU1NzFBQjAwMDgzNzU2IC8qIHNpbXBsZS5odG1sICovLAogCQkJCUMw
MkI3ODgyMTI2NjE1NDEwMDI2QkYwRiAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCAqLywKIAkJ
CQk3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAq
LywKQEAgLTg2NCw2ICs4NzgsNyBAQAogCQkJCTUxRkNGNzlBMTUzNEFDNkQwMDEwNDQ5MSAvKiBT
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTM5
M0UyMDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzZFMTgyREExNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjZGNDlDNjkxNTU0NUM4RTAwMDdGMzlEIC8q
IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04OTUsNiAr
OTEwLDcgQEAKIAkJCQk1MUZDRjdBMTE1MzRCMkEwMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMzkzRTIyMTUy
Mzk1MkQwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0
RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3
RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5k
b3dFeHRlbnNpb25CYXNpYy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwCmluZGV4IGI3OGVlOTEuLjhiZTQ0NDAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNp
b25CYXNpYy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdp
bmRvd0V4dGVuc2lvbkJhc2ljLmNwcApAQCAtMzMsNyArMzMsNiBAQAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiBzdGF0aWMgYm9vbCBmaW5pc2hlZDsKLXN0YXRpYyBpbnQgbGl2ZURPTUV4
dGVuc2lvbkNvdW50OwogCiBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlc1tdID0g
ewogIkdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVkIiwKQEAgLTYwLDEzICs1
OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2VzW10gPSB7CiAiRGlkUmVj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKICJNYWluIGZy
YW1lIGZpbmlzaGVkIGxvYWRpbmciLAogIkV4dGVuc2lvbiBzdGF0ZXM6XG5GaXJzdCBwYWdlLCBt
YWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgbWFpbiBm
cmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFt
ZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBub24t
c3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBzdGFu
ZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1z
dGFuZGFyZCB3b3JsZCAtIERpc2Nvbm5lY3RlZCIsCi0iV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKLSJXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZv
ckRPTVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAotIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9y
RE9NV2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCi0iV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JE
T01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIiwKLSJXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbiBjYWxsZWQiLAotIldpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9N
V2luZG93RXh0ZW5zaW9uIGNhbGxlZCIsCi0iRXh0ZW5zaW9uIHN0YXRlczpcbkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBtYWlu
IGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1YmZy
YW1lLCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIG5v
bi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIHN0
YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0
YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3QgcGFn
ZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkXG5GaXJzdCBwYWdlLCBtYWlu
IGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkXG5GaXJzdCBwYWdlLCBzdWJmcmFt
ZSwgc3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0
YW5kYXJkIHdvcmxkIC0gUmVtb3ZlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJk
IHdvcmxkIC0gUmVtb3ZlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3
b3JsZCAtIFJlbW92ZWQiLAogIlRlc3RDb21wbGV0ZSIKIH07CiAKQEAgLTgwLDE1ICs3Myw4IEBA
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnCiAgICAgV0tTdHJpbmdSZWYgYm9keVN0cmluZyA9IChX
S1N0cmluZ1JlZiltZXNzYWdlQm9keTsKICAgICBtZXNzYWdlcy5hcHBlbmQoYm9keVN0cmluZyk7
CiAgICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lIikpCi0gICAgICAgIGxpdmVET01FeHRl
bnNpb25Db3VudCsrOwotICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lv
biIpKSB7Ci0gICAgICAgIGxpdmVET01FeHRlbnNpb25Db3VudC0tOwotICAgICAgICBpZiAoIWxp
dmVET01FeHRlbnNpb25Db3VudCkKLSAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKLSAgICB9
IGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRG
aW5pc2hMb2FkRm9yTWFpbkZyYW1lIikgfHwgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlRlc3RDb21wbGV0ZSIpKQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSIpIHx8IFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJUZXN0Q29tcGxldGUiKSkK
ICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwotICAgIAogfQogCiBURVNUKFdlYktpdDIsIERPTVdp
bmRvd0V4dGVuc2lvbkJhc2ljKQpAQCAtMTI5LDIwICsxMTUsMjAgQEAgVEVTVChXZWJLaXQyLCBE
T01XaW5kb3dFeHRlbnNpb25CYXNpYykKIAogICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwogICAg
IGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoZSAyIGRpc2Nvbm5l
Y3RlZCBleHRlbnNpb25zIGluIHRoZSBwYWdlIGNhY2hlIGFuZCB0aGUgNCBhY3RpdmUgZXh0ZW5z
aW9ucyBhcmUgYWxsIGRlc3Ryb3llZC4KKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgMiBkaXNjb25u
ZWN0ZWQgZXh0ZW5zaW9ucyBpbiB0aGUgcGFnZSBjYWNoZSBhbmQgdGhlIDQgYWN0aXZlIGV4dGVu
c2lvbnMgYXJlIGFsbCByZW1vdmVkLgogICAgIFdLUGFnZUNsb3NlKHdlYlZpZXcucGFnZSgpKTsK
IAogICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwogICAgICAgICAKICAgICBjb25zdCBzaXplX3Qg
ZXhwZWN0ZWRTaXplID0gc2l6ZW9mKGV4cGVjdGVkTWVzc2FnZXMpIC8gc2l6ZW9mKGNvbnN0IGNo
YXIqKTsKLSAgICBFWFBFQ1RfRVEobWVzc2FnZXMuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAg
IEVYUEVDVF9FUShleHBlY3RlZFNpemUsIG1lc3NhZ2VzLnNpemUoKSk7CiAgICAgCiAgICAgaWYg
KG1lc3NhZ2VzLnNpemUoKSAhPSBleHBlY3RlZFNpemUpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VzLnNpemUoKTsgKytpKQotICAgICAg
ICBFWFBFQ1RfRVEoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlc1tpXS5nZXQo
KSwgZXhwZWN0ZWRNZXNzYWdlc1tpXSksIHRydWUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXhwZWN0ZWRNZXNzYWdlc1tpXSwgbWVzc2FnZXNbaV0uZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3Bw
CmluZGV4IDYxYWMxYmQuLmJiNWIxZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19C
dW5kbGUuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNj
cmlwdFdvcmxkLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPGFzc2Vy
dC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC00NiwxNCArNDUsMTUgQEAgc3Rh
dGljIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxs
YmFjayhXS0J1bmRsZVBhZ2VSZWYKIAogCiBlbnVtIEV4dGVuc2lvblN0YXRlIHsKLSAgICBVbmNy
ZWF0ZWQgPSAwLCBDb25uZWN0ZWQsIERpc2Nvbm5lY3RlZCwgRGVzdHJveWVkCisgICAgVW5jcmVh
dGVkID0gMCwgQ29ubmVjdGVkLCBEaXNjb25uZWN0ZWQsIERlc3Ryb3llZCwgUmVtb3ZlZAogfTsK
IAotY29uc3QgY2hhciogc3RhdGVOYW1lc1s0XSA9IHsKK2NvbnN0IGNoYXIqIHN0YXRlTmFtZXNb
NV0gPSB7CiAgICAgIlVuY3JlYXRlZCIsCiAgICAgIkNvbm5lY3RlZCIsCiAgICAgIkRpc2Nvbm5l
Y3RlZCIsCi0gICAgIkRlc3Ryb3llZCIKKyAgICAiRGVzdHJveWVkIiwKKyAgICAiUmVtb3ZlZCIK
IH07CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGEpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRs
ZVBhZ2VSZWYpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYs
IFdLQnVuZGxlUGFnZVJlZik7CiAgICAgCiAgICAgdm9pZCBnbG9iYWxPYmplY3RJc0F2YWlsYWJs
ZUZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYpOwogICAg
IHZvaWQgd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdL
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmKTsKQEAgLTg1LDcgKzg2LDYgQEAgcHJpdmF0ZToK
ICAgICBFeHRlbnNpb25SZWNvcmQgbV9leHRlbnNpb25SZWNvcmRzWzZdOwogICAgIEhhc2hNYXA8
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGludD4gbV9leHRlbnNpb25Ub1JlY29yZE1h
cDsKICAgICBib29sIG1fZmluaXNoZWRPbmVNYWluRnJhbWVMb2FkOwotICAgIGludCBtX251bWJl
ck9mRGVzdHJveWVkRXh0ZW5zaW9uczsKIH07CiAKIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6
OlJlZ2lzdGVyPERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljPiByZWdpc3RyYXIoIkRPTVdpbmRvd0V4
dGVuc2lvbkJhc2ljIik7CkBAIC05Myw3ICs5Myw2IEBAIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVRl
c3Q6OlJlZ2lzdGVyPERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljPiByZWdpc3RyYXIoIkRPTVdpbmRv
CiBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMoY29uc3Qg
c3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRp
ZmllcikKICAgICAsIG1fZmluaXNoZWRPbmVNYWluRnJhbWVMb2FkKGZhbHNlKQotICAgICwgbV9u
dW1iZXJPZkRlc3Ryb3llZEV4dGVuc2lvbnMoMCkKIHsKICAgICBtX2V4dGVuc2lvblJlY29yZHNb
MF0ubmFtZSA9ICJGaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCI7CiAgICAg
bV9leHRlbnNpb25SZWNvcmRzWzFdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9u
LXN0YW5kYXJkIHdvcmxkIjsKQEAgLTE2Nyw2ICsxNjYsMjEgQEAgdm9pZCBET01XaW5kb3dFeHRl
bnNpb25CYXNpYzo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZgogICAgIAogICAgIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJnBh
Z2VMb2FkZXJDbGllbnQpOwogfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjp3aWxs
RGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZikKK3sKKyAgICBIYXNoTWFw
PFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBpbnQ+OjppdGVyYXRvciBpdCA9IG1fZXh0
ZW5zaW9uVG9SZWNvcmRNYXAuYmVnaW4oKTsKKyAgICBIYXNoTWFwPFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmLCBpbnQ+OjppdGVyYXRvciBlbmQgPSBtX2V4dGVuc2lvblRvUmVjb3JkTWFw
LmVuZCgpOworICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgdXBkYXRlRXh0
ZW5zaW9uU3RhdGVSZWNvcmQoaXQtPmZpcnN0LCBSZW1vdmVkKTsKKyAgICAgICAgV0tSZWxlYXNl
KGl0LT5maXJzdCk7CisgICAgfQorCisgICAgbV9leHRlbnNpb25Ub1JlY29yZE1hcC5jbGVhcigp
OworCisgICAgc2VuZEV4dGVuc2lvblN0YXRlTWVzc2FnZSgpOworICAgIHNlbmRCdW5kbGVNZXNz
YWdlKCJUZXN0Q29tcGxldGUiKTsKK30KICAgICAKIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWM6OnVwZGF0ZUV4dGVuc2lvblN0YXRlUmVjb3JkKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmIGV4dGVuc2lvbiwgRXh0ZW5zaW9uU3RhdGUgc3RhdGUpCiB7CkBAIC0yMTEsMTkgKzIyNSwx
MSBAQCB2b2lkIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjpkaWRSZWNvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Ub0dsb2JhbE9iamVjdChXS0J1bgogICAgIHNlbmRCdW5kbGVNZXNzYWdlKCJEaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiKTsKIH0KIAot
dm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JE
T01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9u
KQordm9pZCBET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbnNpb24oV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYpCiB7Ci0g
ICAgbV9udW1iZXJPZkRlc3Ryb3llZEV4dGVuc2lvbnMrKzsKLQotICAgIHVwZGF0ZUV4dGVuc2lv
blN0YXRlUmVjb3JkKGV4dGVuc2lvbiwgRGVzdHJveWVkKTsKLSAgICBzZW5kQnVuZGxlTWVzc2Fn
ZSgiV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24gY2FsbGVkIik7
Ci0gICAgCi0gICAgaWYgKG1fbnVtYmVyT2ZEZXN0cm95ZWRFeHRlbnNpb25zID09IDYpIHsKLSAg
ICAgICAgc2VuZEV4dGVuc2lvblN0YXRlTWVzc2FnZSgpOwotICAgICAgICBzZW5kQnVuZGxlTWVz
c2FnZSgiVGVzdENvbXBsZXRlIik7Ci0gICAgfQotICAgIAotICAgIFdLUmVsZWFzZShleHRlbnNp
b24pOworICAgIC8vIEFsbCBvZiB0aGUgaXRlbXMgYXJlIGNhbmRpZGF0ZXMgZm9yIHRoZSBwYWdl
IGNhY2hlIGFuZCBzaG91bGQgbm90IGJlIGV2aWN0ZWQgZnJvbSB0aGUgcGFnZQorICAgIC8vIGNh
Y2hlIGJlZm9yZSB0aGUgdGVzdCBjb21wbGV0ZXMuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNrKFdLQnVuZGxl
UGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kNTlkMGQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwCkBA
IC0wLDAgKzEsMTMzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6
CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGlj
IGJvb2wgZmluaXNoZWQ7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2VzW10g
PSB7CisiR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSBjYWxsZWQiLAorIkdsb2JhbE9i
amVjdElzQXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVkIiwKKyJHbG9iYWxPYmplY3RJc0F2YWlsYWJs
ZUZvckZyYW1lIGNhbGxlZCIsCisiR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSBjYWxs
ZWQiLAorIlN1YmZyYW1lIGZpbmlzaGVkIGxvYWRpbmciLAorIkV4dGVuc2lvbiBzdGF0ZXM6XG5G
aXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3Qg
cGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBw
YWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1
YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcblNlY29uZCBwYWdlLCBtYWlu
IGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJh
bWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFt
ZSwgc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5v
bi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5k
YXJkIHdvcmxkIC0gVW5jcmVhdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJk
IHdvcmxkIC0gVW5jcmVhdGVkIiwKKyJNYWluIGZyYW1lIGZpbmlzaGVkIGxvYWRpbmciLAorIkV4
dGVuc2lvbiBzdGF0ZXM6XG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAt
IENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0g
Q29ubmVjdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0
ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRc
blNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuU2Vj
b25kIHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmly
c3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcbkZpcnN0IHBh
Z2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmlyc3QgcGFn
ZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gVW5jcmVhdGVkXG5GaXJzdCBwYWdlLCBzdWJm
cmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gVW5jcmVhdGVkIiwKKyJXaWxsRGVzdHJveURPTVdp
bmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiV2lsbERlc3Ryb3lET01XaW5k
b3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCBjYWxsZWQiLAorIldpbGxEZXN0cm95RE9NV2luZG93
RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIiwKKyJXaWxsRGVzdHJveURPTVdpbmRvd0V4
dGVuc2lvblRvR2xvYmFsT2JqZWN0IGNhbGxlZCIsCisiR2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZSBjYWxsZWQiLAorIkdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVk
IiwKKyJNYWluIGZyYW1lIGZpbmlzaGVkIGxvYWRpbmciLAorIkV4dGVuc2lvbiBzdGF0ZXM6XG5G
aXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3Qg
cGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJzdCBw
YWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1
YmZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcblNlY29uZCBwYWdlLCBtYWlu
IGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuU2Vjb25kIHBhZ2UsIG1haW4gZnJh
bWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgbWFpbiBmcmFt
ZSwgc3RhbmRhcmQgd29ybGQgLSBVbmNyZWF0ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5v
bi1zdGFuZGFyZCB3b3JsZCAtIFVuY3JlYXRlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5k
YXJkIHdvcmxkIC0gVW5jcmVhdGVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJk
IHdvcmxkIC0gVW5jcmVhdGVkIiwKKyJXaWxsRGVzdHJveURPTVdpbmRvd0V4dGVuc2lvblRvR2xv
YmFsT2JqZWN0IGNhbGxlZCIsCisiV2lsbERlc3Ryb3lET01XaW5kb3dFeHRlbnNpb25Ub0dsb2Jh
bE9iamVjdCBjYWxsZWQiLAorIkdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVk
IiwKKyJHbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lIGNhbGxlZCIsCisiR2xvYmFsT2Jq
ZWN0SXNBdmFpbGFibGVGb3JGcmFtZSBjYWxsZWQiLAorIkdsb2JhbE9iamVjdElzQXZhaWxhYmxl
Rm9yRnJhbWUgY2FsbGVkIiwKKyJTdWJmcmFtZSBmaW5pc2hlZCBsb2FkaW5nIiwKKyJFeHRlbnNp
b24gc3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEZXN0
cm95ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ry
b3llZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5G
aXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5TZWNv
bmQgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcblNlY29uZCBw
YWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBh
Z2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVjdGVkXG5GaXJzdCBwYWdlLCBt
YWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0ZWRcbkZpcnN0IHBhZ2UsIHN1
YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUs
IG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZCIsCisiTWFpbiBmcmFtZSBmaW5pc2hlZCBs
b2FkaW5nIiwKKyJFeHRlbnNpb24gc3RhdGVzOlxuRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3Rh
bmRhcmQgd29ybGQgLSBEZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFu
ZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdv
cmxkIC0gRGVzdHJveWVkXG5GaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxk
IC0gRGVzdHJveWVkXG5TZWNvbmQgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRhcmQgd29ybGQgLSBE
ZXN0cm95ZWRcblNlY29uZCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBE
ZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gQ29ubmVj
dGVkXG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBDb25uZWN0
ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZFxuRmly
c3QgcGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIENvbm5lY3RlZCIsCisiRXh0
ZW5zaW9uIHN0YXRlczpcbkZpcnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0g
RGVzdHJveWVkXG5GaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBub24tc3RhbmRhcmQgd29ybGQgLSBE
ZXN0cm95ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3ll
ZFxuRmlyc3QgcGFnZSwgc3ViZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIERlc3Ryb3llZFxu
U2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5TZWNv
bmQgcGFnZSwgbWFpbiBmcmFtZSwgbm9uLXN0YW5kYXJkIHdvcmxkIC0gRGVzdHJveWVkXG5GaXJz
dCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIFJlbW92ZWRcbkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCAtIFJlbW92ZWRcbkZpcnN0IHBhZ2UsIHN1
YmZyYW1lLCBzdGFuZGFyZCB3b3JsZCAtIFJlbW92ZWRcbkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBu
b24tc3RhbmRhcmQgd29ybGQgLSBSZW1vdmVkIiwKKyJUZXN0Q29tcGxldGUiCit9OworCitzdGF0
aWMgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiA+IG1lc3NhZ2VzOworCitzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQq
KQoreworICAgIEFTU0VSVF9OT1RfTlVMTChtZXNzYWdlQm9keSk7CisgICAgRVhQRUNUX0VRKFdL
U3RyaW5nR2V0VHlwZUlEKCksIFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSk7CisKKyAgICBXS1N0
cmluZ1JlZiBib2R5U3RyaW5nID0gKFdLU3RyaW5nUmVmKW1lc3NhZ2VCb2R5OworICAgIG1lc3Nh
Z2VzLmFwcGVuZChib2R5U3RyaW5nKTsKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSIpIHx8IFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJUZXN0Q29tcGxldGUiKSkKKyAg
ICAgIGZpbmlzaGVkID0gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQyLCBET01XaW5kb3dFeHRlbnNp
b25Ob0NhY2hlKQoreworICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAo
QWRvcHRXSywgV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZVBhZ2VHcm91cCIpKSk7CisK
KyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3Jl
YXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZSIsIHBhZ2VHcm91cC5nZXQoKSkpOworCisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7CisgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVu
dCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7CisgICAgaW5qZWN0ZWRCdW5kbGVD
bGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEN1cnJlbnRWZXJz
aW9uOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmNsaWVudEluZm8gPSAwOworICAgIGluamVj
dGVkQnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0
ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKKwor
ICAgIC8vIEZJWE1FIDg1ODkxOiBJbnN0ZWFkIG9mIHVzaW5nIHVubG9hZCBoYW5kbGVycyB0byBw
cmV2ZW50IHVzZSBvZiB0aGUgcGFnZSBjYWNoZSwgc2V0IHRoZQorICAgIC8vIGNhY2hlIG1vZGVs
IHRvIGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXcsIHdoaWNoIHNldHMgcGFnZSBjYWNoZSBjYXBh
Y2l0eSB0byAwLgorCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwg
cGFnZUdyb3VwLmdldCgpKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgZXh0ZW5zaW9ucyBmb3Ig
ZWFjaCBmcmFtZSBhcmUgaW5zdGFsbGVkIGluIGVhY2ggd29ybGQuCisgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZWY+IHVybDEoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBs
ZS1pZnJhbWUtdW5sb2FkIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBh
Z2UoKSwgdXJsMS5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5p
c2hlZCA9IGZhbHNlOworCisgICAgLy8gTWFrZSBzdXJlIHRob3NlIGZpcnN0IDQgZXh0ZW5zaW9u
cyBhcmUgZGVzdHJveWVkLCBhbmQgMiBuZXcgb25lcyBhcmUgaW5zdGFsbGVkLgorICAgIFdLUmV0
YWluUHRyPFdLVVJMUmVmPiB1cmwyKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNl
KCJzaW1wbGUtdW5sb2FkIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBh
Z2UoKSwgdXJsMi5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBmaW5p
c2hlZCA9IGZhbHNlOworCisgICAgLy8gTWFrZSBzdXJlIHRob3NlIDIgYXJlIGRlc3Ryb3llZCwg
YW5kIHRoZSBmaXJzdCA0IGFyZSByZWNyZWF0ZWQuCisgICAgV0tQYWdlR29CYWNrKHdlYlZpZXcu
cGFnZSgpKTsKKworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIGZpbmlzaGVkID0gZmFs
c2U7CisKKyAgICBXS1BhZ2VDbG9zZSh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBVdGlsOjpydW4o
JmZpbmlzaGVkKTsKKworICAgIGNvbnN0IHNpemVfdCBleHBlY3RlZFNpemUgPSBzaXplb2YoZXhw
ZWN0ZWRNZXNzYWdlcykgLyBzaXplb2YoY29uc3QgY2hhciopOworICAgIEVYUEVDVF9FUShleHBl
Y3RlZFNpemUsIG1lc3NhZ2VzLnNpemUoKSk7CisKKyAgICBpZiAobWVzc2FnZXMuc2l6ZSgpICE9
IGV4cGVjdGVkU2l6ZSkKKyAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWVzc2FnZXMuc2l6ZSgpOyArK2kpCisgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRN
ZXNzYWdlc1tpXSwgbWVzc2FnZXNbaV0uZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2MwYzcyCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5v
Q2FjaGVfQnVuZGxlLmNwcApAQCAtMCwwICsxLDI3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZUZyYW1lLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1
bmRsZVByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlU2NyaXB0V29ybGQuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYs
IFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwor
c3RhdGljIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrKFdLQnVu
ZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CitzdGF0aWMgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3N0YXRp
YyB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJh
Y2soV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CitzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZv
ckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCitlbnVtIEV4dGVu
c2lvblN0YXRlIHsKKyAgICBVbmNyZWF0ZWQgPSAwLCBDb25uZWN0ZWQsIERpc2Nvbm5lY3RlZCwg
RGVzdHJveWVkLCBSZW1vdmVkCit9OworCitjb25zdCBjaGFyKiBzdGF0ZXNbNV0gPSB7CisgICAg
IlVuY3JlYXRlZCIsCisgICAgIkNvbm5lY3RlZCIsCisgICAgIkRpc2Nvbm5lY3RlZCIsCisgICAg
IkRlc3Ryb3llZCIsCisgICAgIlJlbW92ZWQiCit9OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAg
Y29uc3QgY2hhciogbmFtZTsKKyAgICBFeHRlbnNpb25TdGF0ZSBzdGF0ZTsKK30gRXh0ZW5zaW9u
UmVjb3JkOworCitjbGFzcyBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlIDogcHVibGljIEluamVj
dGVkQnVuZGxlVGVzdCB7CitwdWJsaWM6CisgICAgRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZShj
b25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcik7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpOworCisg
ICAgdm9pZCBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYs
IFdLQnVuZGxlU2NyaXB0V29ybGRSZWYpOworICAgIHZvaWQgd2lsbERpc2Nvbm5lY3RET01XaW5k
b3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVm
KTsKKyAgICB2b2lkIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0
KFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmKTsKKyAgICB2b2lkIHdpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmKTsKKworICAgIHZvaWQgZnJhbWVMb2FkRmluaXNoZWQoV0tCdW5kbGVGcmFtZVJlZik7CisK
K3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvblJlZiwgRXh0ZW5zaW9uU3RhdGUpOworICAgIHZvaWQgc2VuZEV4dGVu
c2lvblN0YXRlTWVzc2FnZSgpOworICAgIHZvaWQgc2VuZEJ1bmRsZU1lc3NhZ2UoY29uc3QgY2hh
ciopOworCisgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdlR3JvdXA7CisgICAgV0tCdW5k
bGVSZWYgbV9idW5kbGU7CisgICAgRXh0ZW5zaW9uUmVjb3JkIG1fZXh0ZW5zaW9uUmVjb3Jkc1sx
MF07CisgICAgSGFzaE1hcDxXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgaW50PiBtX2V4
dGVuc2lvblRvUmVjb3JkTWFwOworICAgIGludCBtX251bWJlck1haW5GcmFtZUxvYWRzOworfTsK
Kworc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8RE9NV2luZG93RXh0ZW5zaW9u
Tm9DYWNoZT4gcmVnaXN0cmFyKCJET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlIik7CisKK0RPTVdp
bmRvd0V4dGVuc2lvbk5vQ2FjaGU6OkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmll
cikKKyAgICAsIG1fbnVtYmVyTWFpbkZyYW1lTG9hZHMoMCkKK3sKKyAgICBtX2V4dGVuc2lvblJl
Y29yZHNbMF0ubmFtZSA9ICJGaXJzdCBwYWdlLCBtYWluIGZyYW1lLCBzdGFuZGFyZCB3b3JsZCI7
CisgICAgbV9leHRlbnNpb25SZWNvcmRzWzFdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFt
ZSwgbm9uLXN0YW5kYXJkIHdvcmxkIjsKKyAgICBtX2V4dGVuc2lvblJlY29yZHNbMl0ubmFtZSA9
ICJGaXJzdCBwYWdlLCBzdWJmcmFtZSwgc3RhbmRhcmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9u
UmVjb3Jkc1szXS5uYW1lID0gIkZpcnN0IHBhZ2UsIHN1YmZyYW1lLCBub24tc3RhbmRhcmQgd29y
bGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s0XS5uYW1lID0gIlNlY29uZCBwYWdlLCBtYWlu
IGZyYW1lLCBzdGFuZGFyZCB3b3JsZCI7CisgICAgbV9leHRlbnNpb25SZWNvcmRzWzVdLm5hbWUg
PSAiU2Vjb25kIHBhZ2UsIG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CisgICAgbV9l
eHRlbnNpb25SZWNvcmRzWzZdLm5hbWUgPSAiRmlyc3QgcGFnZSwgbWFpbiBmcmFtZSwgc3RhbmRh
cmQgd29ybGQiOworICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s3XS5uYW1lID0gIkZpcnN0IHBhZ2Us
IG1haW4gZnJhbWUsIG5vbi1zdGFuZGFyZCB3b3JsZCI7CisgICAgbV9leHRlbnNpb25SZWNvcmRz
WzhdLm5hbWUgPSAiRmlyc3QgcGFnZSwgc3ViZnJhbWUsIHN0YW5kYXJkIHdvcmxkIjsKKyAgICBt
X2V4dGVuc2lvblJlY29yZHNbOV0ubmFtZSA9ICJGaXJzdCBwYWdlLCBzdWJmcmFtZSwgbm9uLXN0
YW5kYXJkIHdvcmxkIjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTA7ICsraSkKKyAg
ICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1tpXS5zdGF0ZSA9IFVuY3JlYXRlZDsKK30KKwordm9pZCBE
T01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpmcmFtZUxvYWRGaW5pc2hlZChXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lKQoreworICAgIGJvb2wgbWFpbkZyYW1lID0gIVdLQnVuZGxlRnJhbWVHZXRQYXJl
bnRGcmFtZShmcmFtZSk7CisgICAgaWYgKG1haW5GcmFtZSkKKyAgICAgICAgbV9udW1iZXJNYWlu
RnJhbWVMb2FkcysrOworCisgICAgY2hhciBib2R5WzE2Mzg0XTsKKyAgICBzcHJpbnRmKGJvZHks
ICIlcyBmaW5pc2hlZCBsb2FkaW5nIiwgbWFpbkZyYW1lID8gIk1haW4gZnJhbWUiIDogIlN1YmZy
YW1lIik7CisKKyAgICAvLyBPbmx5IGNvbnNpZGVyIGxvYWQgZmluaXNoZWQgZm9yIHRoZSBtYWlu
IGZyYW1lCisgICAgY29uc3QgY2hhciogbmFtZSA9IG1haW5GcmFtZSA/ICJEaWRGaW5pc2hMb2Fk
Rm9yTWFpbkZyYW1lIiA6ICJEaWRGaW5pc2hMb2FkRm9yRnJhbWUiOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhuYW1lKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VC
b2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhib2R5KSk7CisgICAg
V0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VC
b2R5LmdldCgpKTsKKworICAgIHNlbmRFeHRlbnNpb25TdGF0ZU1lc3NhZ2UoKTsKK30KKwordm9p
ZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjpzZW5kRXh0ZW5zaW9uU3RhdGVNZXNzYWdlKCkK
K3sKKyAgICBjaGFyIGJvZHlbMTYzODRdOworICAgIHNwcmludGYoYm9keSwgIkV4dGVuc2lvbiBz
dGF0ZXM6XG4lcyAtICVzXG4lcyAtICVzXG4lcyAtICVzXG4lcyAtICVzXG4lcyAtICVzXG4lcyAt
ICVzXG4lcyAtICVzXG4lcyAtICVzXG4lcyAtICVzXG4lcyAtICVzIiwKKyAgICAgICAgICAgIG1f
ZXh0ZW5zaW9uUmVjb3Jkc1swXS5uYW1lLCBzdGF0ZXNbbV9leHRlbnNpb25SZWNvcmRzWzBdLnN0
YXRlXSwKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1sxXS5uYW1lLCBzdGF0ZXNbbV9l
eHRlbnNpb25SZWNvcmRzWzFdLnN0YXRlXSwKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jk
c1syXS5uYW1lLCBzdGF0ZXNbbV9leHRlbnNpb25SZWNvcmRzWzJdLnN0YXRlXSwKKyAgICAgICAg
ICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1szXS5uYW1lLCBzdGF0ZXNbbV9leHRlbnNpb25SZWNvcmRz
WzNdLnN0YXRlXSwKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s0XS5uYW1lLCBzdGF0
ZXNbbV9leHRlbnNpb25SZWNvcmRzWzRdLnN0YXRlXSwKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9u
UmVjb3Jkc1s1XS5uYW1lLCBzdGF0ZXNbbV9leHRlbnNpb25SZWNvcmRzWzVdLnN0YXRlXSwKKyAg
ICAgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s2XS5uYW1lLCBzdGF0ZXNbbV9leHRlbnNpb25S
ZWNvcmRzWzZdLnN0YXRlXSwKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s3XS5uYW1l
LCBzdGF0ZXNbbV9leHRlbnNpb25SZWNvcmRzWzddLnN0YXRlXSwKKyAgICAgICAgICAgIG1fZXh0
ZW5zaW9uUmVjb3Jkc1s4XS5uYW1lLCBzdGF0ZXNbbV9leHRlbnNpb25SZWNvcmRzWzhdLnN0YXRl
XSwKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1s5XS5uYW1lLCBzdGF0ZXNbbV9leHRl
bnNpb25SZWNvcmRzWzldLnN0YXRlXSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFeHRl
bnNpb25TdGF0ZXMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhib2R5KSk7CisgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjppbml0aWFsaXpl
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIGFzc2VydChX
S0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tCdW5kbGVQYWdlR3JvdXBHZXRUeXBlSUQoKSk7Cisg
ICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID0gc3RhdGljX2Nhc3Q8V0tCdW5kbGVQ
YWdlR3JvdXBSZWY+KHVzZXJEYXRhKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBz
b3VyY2UoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFsZXJ0KCdVbmlt
cG9ydGFudCBhbGVydCcpOyIpKTsKKyAgICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoYnVuZGxlLCBw
YWdlR3JvdXAsIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpLCBzb3VyY2UuZ2V0KCks
IDAsIDAsIDAsIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dLSW5qZWN0SW5BbGxGcmFtZXMp
OworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6OmRpZENyZWF0ZVBhZ2UoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKK3sKKyAgICBtX2J1bmRsZSA9
IGJ1bmRsZTsKKworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBwYWdlTG9hZGVyQ2xpZW50
OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGll
bnQpKTsKKworICAgIHBhZ2VMb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8g
PSB0aGlzOworICAgIHBhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlk
RmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2s7CisgICAgcGFnZUxvYWRlckNsaWVudC5nbG9iYWxP
YmplY3RJc0F2YWlsYWJsZUZvckZyYW1lID0gZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFt
ZUNhbGxiYWNrOworICAgIHBhZ2VMb2FkZXJDbGllbnQud2lsbERpc2Nvbm5lY3RET01XaW5kb3dF
eHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0ID0gd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Gcm9tR2xvYmFsT2JqZWN0Q2FsbGJhY2s7CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRSZWNv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdCA9IGRpZFJlY29ubmVjdERPTVdp
bmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2s7CisgICAgcGFnZUxvYWRlckNsaWVu
dC53aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbiA9IHdpbGxEZXN0
cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uQ2FsbGJhY2s7CisKKyAgICBXS0J1
bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZwYWdlTG9hZGVyQ2xpZW50KTsKK30K
Kwordm9pZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjp3aWxsRGVzdHJveVBhZ2UoV0tCdW5k
bGVSZWYsIFdLQnVuZGxlUGFnZVJlZikKK3sKKyAgICBIYXNoTWFwPFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uUmVmLCBpbnQ+OjppdGVyYXRvciBpdCA9IG1fZXh0ZW5zaW9uVG9SZWNvcmRNYXAu
YmVnaW4oKTsKKyAgICBIYXNoTWFwPFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBpbnQ+
OjppdGVyYXRvciBlbmQgPSBtX2V4dGVuc2lvblRvUmVjb3JkTWFwLmVuZCgpOworICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgdXBkYXRlRXh0ZW5zaW9uU3RhdGVSZWNvcmQo
aXQtPmZpcnN0LCBSZW1vdmVkKTsKKyAgICAgICAgV0tSZWxlYXNlKGl0LT5maXJzdCk7CisgICAg
fQorCisgICAgbV9leHRlbnNpb25Ub1JlY29yZE1hcC5jbGVhcigpOworCisgICAgc2VuZEV4dGVu
c2lvblN0YXRlTWVzc2FnZSgpOworICAgIHNlbmRCdW5kbGVNZXNzYWdlKCJUZXN0Q29tcGxldGUi
KTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjp1cGRhdGVFeHRlbnNpb25T
dGF0ZVJlY29yZChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24sIEV4dGVu
c2lvblN0YXRlIHN0YXRlKQoreworICAgIGludCBpbmRleCA9IG1fZXh0ZW5zaW9uVG9SZWNvcmRN
YXAuZ2V0KGV4dGVuc2lvbik7CisgICAgbV9leHRlbnNpb25SZWNvcmRzW2luZGV4XS5zdGF0ZSA9
IHN0YXRlOworfQorCit2b2lkIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6OnNlbmRCdW5kbGVN
ZXNzYWdlKGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrTWVzc2FnZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWVz
c2FnZSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIHdrTWVzc2FnZS5nZXQo
KSwgd2tNZXNzYWdlLmdldCgpKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
OjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpCit7CisgICAgV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25SZWYgZXh0ZW5zaW9uID0gV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25DcmVhdGUo
ZnJhbWUsIHdvcmxkKTsKKworICAgIGludCBpbmRleDsKKyAgICBib29sIHN0YW5kYXJkOworICAg
IHN0YW5kYXJkID0gd29ybGQgPT0gV0tCdW5kbGVTY3JpcHRXb3JsZE5vcm1hbFdvcmxkKCk7CisK
KyAgICBib29sIG1haW5GcmFtZSA9ICFXS0J1bmRsZUZyYW1lR2V0UGFyZW50RnJhbWUoZnJhbWUp
OworICAgIHN3aXRjaCAobV9udW1iZXJNYWluRnJhbWVMb2FkcykgeworICAgIGNhc2UgMDoKKyAg
ICAgICAgaW5kZXggPSBtYWluRnJhbWUgPyAoc3RhbmRhcmQgPyAwIDogMSkgOiAoc3RhbmRhcmQg
PyAyIDogMyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgaW5kZXggPSBz
dGFuZGFyZCA/IDQgOiA1OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGlu
ZGV4ID0gbWFpbkZyYW1lID8gKHN0YW5kYXJkID8gNiA6IDcpIDogKHN0YW5kYXJkID8gOCA6IDkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV9leHRlbnNpb25Ub1JlY29yZE1h
cC5zZXQoZXh0ZW5zaW9uLCBpbmRleCk7CisKKyAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29y
ZChleHRlbnNpb24sIENvbm5lY3RlZCk7CisgICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIkdsb2JhbE9i
amVjdElzQXZhaWxhYmxlRm9yRnJhbWUgY2FsbGVkIik7Cit9CisKK3ZvaWQgRE9NV2luZG93RXh0
ZW5zaW9uTm9DYWNoZTo6d2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFs
T2JqZWN0KFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbikKK3sKKyAgICAv
LyBObyBpdGVtcyBzaG91bGQgYmUgZ29pbmcgaW50byBhIDAtY2FwYWNpdHkgcGFnZSBjYWNoZS4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlOjpkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZikKK3sKKyAgICAvLyBObyBpdGVtcyBzaG91bGQgYmUg
Y29taW5nIG91dCBvZiBhIDAtY2FwYWNpdHkgcGFnZSBjYWNoZS4KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlOjp3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvblJlZiBleHRlbnNpb24pCit7CisgICAgc2VuZEJ1bmRsZU1lc3NhZ2UoIldpbGxEZXN0cm95
RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QgY2FsbGVkIik7CisgICAgdXBkYXRlRXh0
ZW5zaW9uU3RhdGVSZWNvcmQoZXh0ZW5zaW9uLCBEZXN0cm95ZWQpOworICAgIG1fZXh0ZW5zaW9u
VG9SZWNvcmRNYXAucmVtb3ZlKGV4dGVuc2lvbik7CisgICAgV0tSZWxlYXNlKGV4dGVuc2lvbik7
Cit9CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNrKFdLQnVuZGxl
UGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKK3sKKyAgICAoKERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUqKWNsaWVudElu
Zm8pLT5mcmFtZUxvYWRGaW5pc2hlZChmcmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIGdsb2JhbE9i
amVjdElzQXZhaWxhYmxlRm9yRnJhbWVDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit7CisgICAgKChET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlKiljbGllbnRJ
bmZvKS0+Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShmcmFtZSwgd29ybGQpOworfQor
CitzdGF0aWMgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3RDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmIGV4dGVuc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAoKERPTVdpbmRv
d0V4dGVuc2lvbk5vQ2FjaGUqKWNsaWVudEluZm8pLT53aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4
dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZvaWQgZGlk
UmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjayhXS0J1bmRs
ZVBhZ2VSZWYsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAoKERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUqKWNs
aWVudEluZm8pLT5kaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChl
eHRlbnNpb24pOworfQorCitzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVET01XaW5k
b3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uICwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICAoKERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUqKWNsaWVudEluZm8pLT53aWxsRGVzdHJveUds
b2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihleHRlbnNpb24pOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9zaW1wbGUtaWZyYW1lLXVubG9hZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiODg2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvc2ltcGxlLWlmcmFtZS11bmxvYWQuaHRtbApAQCAt
MCwwICsxLDYgQEAKKzxodG1sPgorPGJvZHkgb251bmxvYWQ9Ii8qIGRpc2FibGUgcGFnZSBjYWNo
ZSAqLyI+CisgIFNpbXBsZSBIVE1MIGZpbGUgd2l0aCBhbiB1bmxvYWQgaGFuZGxlci4KKyAgPGlm
cmFtZSBzcmM9InNpbXBsZS11bmxvYWQuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvc2ltcGxlLXVu
bG9hZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3NpbXBsZS11bmxv
YWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTM4ZTI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3NpbXBsZS11
bmxvYWQuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHkgb251bmxvYWQ9Ii8qIGRp
c2FibGUgcGFnZSBjYWNoZSAqLyI+CisgIFNpbXBsZSBIVE1MIGZpbGUgd2l0aCBhbiB1bmxvYWQg
aGFuZGxlci4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>