<?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>223030</bug_id>
          
          <creation_ts>2021-03-10 10:18:12 -0800</creation_ts>
          <short_desc>Use RetainPtr&lt;&gt; / OSObjectPtr&lt;&gt; more in WebKit</short_desc>
          <delta_ts>2021-03-10 17:40:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>223049</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1738108</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 10:18:12 -0800</bug_when>
    <thetext>Use RetainPtr&lt;&gt; / OSObjectPtr&lt;&gt; more in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738115</commentid>
    <comment_count>1</comment_count>
      <attachid>422843</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 10:27:41 -0800</bug_when>
    <thetext>Created attachment 422843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738118</commentid>
    <comment_count>2</comment_count>
      <attachid>422844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 10:33:00 -0800</bug_when>
    <thetext>Created attachment 422844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738121</commentid>
    <comment_count>3</comment_count>
      <attachid>422845</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 10:45:11 -0800</bug_when>
    <thetext>Created attachment 422845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738125</commentid>
    <comment_count>4</comment_count>
      <attachid>422846</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 10:50:22 -0800</bug_when>
    <thetext>Created attachment 422846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738142</commentid>
    <comment_count>5</comment_count>
      <attachid>422849</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 11:06:26 -0800</bug_when>
    <thetext>Created attachment 422849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738150</commentid>
    <comment_count>6</comment_count>
      <attachid>422851</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 11:34:10 -0800</bug_when>
    <thetext>Created attachment 422851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738175</commentid>
    <comment_count>7</comment_count>
      <attachid>422858</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 12:36:00 -0800</bug_when>
    <thetext>Created attachment 422858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738196</commentid>
    <comment_count>8</comment_count>
      <attachid>422863</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 13:10:38 -0800</bug_when>
    <thetext>Created attachment 422863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738241</commentid>
    <comment_count>9</comment_count>
      <attachid>422863</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-10 14:38:49 -0800</bug_when>
    <thetext>Comment on attachment 422863
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:161
&gt; +    inline dispatch_queue_t dispatchQueue() const { return m_notificationQueue.get(); }

Unneeded use of &quot;inline&quot; here and throughout this class.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1569
&gt; +    m_avPlayer = playerRef;

Seems a slight shame that we hold one reference in the object and another in a local variable. Could we just use m_avPlayer directly throughout?

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1609
&gt; +    auto itemRef = adoptF(AVCFPlayerItemCreateWithAsset(kCFAllocatorDefault, avAsset(), m_notificationQueue.get()));
&gt; +    m_avPlayerItem = itemRef;

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1759
&gt; +        static const CFStringRef keyNames[] = {
&gt;              AVCFAssetPropertyPlayable
&gt;          };
&gt; -        propertyKeyName = CFArrayCreate(0, (const void**)keyNames, sizeof(keyNames) / sizeof(keyNames[0]), &amp;kCFTypeArrayCallBacks);
&gt; -    }
&gt; +        return adoptCF(CFArrayCreate(0, (const void**)keyNames, sizeof(keyNames) / sizeof(keyNames[0]), &amp;kCFTypeArrayCallBacks));

Since this code is only called once, we can write it more simply and not try to optimize so much and write such strange code. If this was Objective-C I would just write @[ AVCFAssetPropertyPlayable ] with typecasts. Here we could:

1) Type the local variable to match what the function takes, const void* elements instead of CFStringRef elements.
2) Don&apos;t use a static because this is one time code so it’s fine to dynamically allocate the array.
3) Because of (1) and (2) don’t need to typecast when calling CFArrayCreate.
4) Use std::size instead of sizeof(x) / sizeof(x[0]).

&gt; Source/WebCore/platform/graphics/cg/PathCG.cpp:232
&gt;      bool ret = CGPathContainsPoint(path.get(), 0, point, rule == WindRule::EvenOdd ? true : false);
&gt;      return ret;

This code is funny. Lets write it more the way we would if it was new today:

    return CGPathContainsPoint(path.get(), nullptr, point, rule == WindRule::EvenOdd);

&gt; Source/WebCore/platform/network/cf/CredentialStorageCFNet.cpp:49
&gt; +    auto protectionSpaceCF = createCF(protectionSpace);
&gt; +    auto credentialCF = copyCredentialFromProtectionSpace(protectionSpaceCF.get());
&gt;      return core(credentialCF.get());

Would work fine in a single line:

    return core(copyCredentialFromProtectionSpace(createCF(protectionSpace).get()).get());

&gt; Source/WebCore/platform/text/mac/TextBoundaries.mm:75
&gt;          const char* temp = currentTextBreakLocaleID();

&quot;temp&quot;

&gt; Source/WebCore/platform/text/mac/TextBoundaries.mm:80
&gt; +    if (!locale.get())

Do we need .get() here?

&gt; Source/WebCore/platform/text/mac/TextBoundaries.mm:86
&gt; +    if (!tokenizer.get())

Do we need .get() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738265</commentid>
    <comment_count>10</comment_count>
      <attachid>422878</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 15:14:23 -0800</bug_when>
    <thetext>Created attachment 422878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738272</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 15:23:24 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 422863 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422863&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:161
&gt; &gt; +    inline dispatch_queue_t dispatchQueue() const { return m_notificationQueue.get(); }
&gt; 
&gt; Unneeded use of &quot;inline&quot; here and throughout this class.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1569
&gt; &gt; +    m_avPlayer = playerRef;
&gt; 
&gt; Seems a slight shame that we hold one reference in the object and another in
&gt; a local variable. Could we just use m_avPlayer directly throughout?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1609
&gt; &gt; +    auto itemRef = adoptF(AVCFPlayerItemCreateWithAsset(kCFAllocatorDefault, avAsset(), m_notificationQueue.get()));
&gt; &gt; +    m_avPlayerItem = itemRef;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1759
&gt; &gt; +        static const CFStringRef keyNames[] = {
&gt; &gt;              AVCFAssetPropertyPlayable
&gt; &gt;          };
&gt; &gt; -        propertyKeyName = CFArrayCreate(0, (const void**)keyNames, sizeof(keyNames) / sizeof(keyNames[0]), &amp;kCFTypeArrayCallBacks);
&gt; &gt; -    }
&gt; &gt; +        return adoptCF(CFArrayCreate(0, (const void**)keyNames, sizeof(keyNames) / sizeof(keyNames[0]), &amp;kCFTypeArrayCallBacks));
&gt; 
&gt; Since this code is only called once, we can write it more simply and not try
&gt; to optimize so much and write such strange code. If this was Objective-C I
&gt; would just write @[ AVCFAssetPropertyPlayable ] with typecasts. Here we
&gt; could:
&gt; 
&gt; 1) Type the local variable to match what the function takes, const void*
&gt; elements instead of CFStringRef elements.
&gt; 2) Don&apos;t use a static because this is one time code so it’s fine to
&gt; dynamically allocate the array.
&gt; 3) Because of (1) and (2) don’t need to typecast when calling CFArrayCreate.
&gt; 4) Use std::size instead of sizeof(x) / sizeof(x[0]).
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/PathCG.cpp:232
&gt; &gt;      bool ret = CGPathContainsPoint(path.get(), 0, point, rule == WindRule::EvenOdd ? true : false);
&gt; &gt;      return ret;
&gt; 
&gt; This code is funny. Lets write it more the way we would if it was new today:
&gt; 
&gt;     return CGPathContainsPoint(path.get(), nullptr, point, rule ==
&gt; WindRule::EvenOdd);
&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/CredentialStorageCFNet.cpp:49
&gt; &gt; +    auto protectionSpaceCF = createCF(protectionSpace);
&gt; &gt; +    auto credentialCF = copyCredentialFromProtectionSpace(protectionSpaceCF.get());
&gt; &gt;      return core(credentialCF.get());
&gt; 
&gt; Would work fine in a single line:
&gt; 
&gt;     return
&gt; core(copyCredentialFromProtectionSpace(createCF(protectionSpace).get()).
&gt; get());
&gt; 
&gt; &gt; Source/WebCore/platform/text/mac/TextBoundaries.mm:75
&gt; &gt;          const char* temp = currentTextBreakLocaleID();
&gt; 
&gt; &quot;temp&quot;
&gt; 
&gt; &gt; Source/WebCore/platform/text/mac/TextBoundaries.mm:80
&gt; &gt; +    if (!locale.get())
&gt; 
&gt; Do we need .get() here?
&gt; 
&gt; &gt; Source/WebCore/platform/text/mac/TextBoundaries.mm:86
&gt; &gt; +    if (!tokenizer.get())
&gt; 
&gt; Do we need .get() here?

Yes, they were needed:
./platform/text/mac/TextBoundaries.mm:80:9: error: invalid argument type &apos;WTF::NeverDestroyed&lt;WTF::RetainPtr&lt;const __CFLocale *&gt;, WTF::AnyThreadsAccessTraits&gt;&apos; to unary expression
    if (!locale)
        ^~~~~~~
./platform/text/mac/TextBoundaries.mm:86:9: error: invalid argument type &apos;NeverDestroyed&lt;RetainPtr&lt;CFStringTokenizerRef&gt; &gt;&apos; (aka &apos;NeverDestroyed&lt;RetainPtr&lt;__CFStringTokenizer *&gt; &gt;&apos;) to unary expression
    if (!tokenizer)
        ^~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738276</commentid>
    <comment_count>12</comment_count>
      <attachid>422881</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 15:26:02 -0800</bug_when>
    <thetext>Created attachment 422881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738318</commentid>
    <comment_count>13</comment_count>
      <attachid>422881</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 17:08:25 -0800</bug_when>
    <thetext>Comment on attachment 422881
Patch

Clearing flags on attachment: 422881

Committed r274252 (235156@main): &lt;https://commits.webkit.org/235156@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738319</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-10 17:08:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738320</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-10 17:09:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/75291371&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422843</attachid>
            <date>2021-03-10 10:27:41 -0800</date>
            <delta_ts>2021-03-10 10:43:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310102740.patch</filename>
            <type>text/plain</type>
            <size>220280</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uZmU2ZTk2NGU2MWViOGVjMjE1NjEyZTdiZWIxOTZjNjRiNTY4Y2EyOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM1NDEsOSArMzU0Miw4IEBAIGludCBqc2NtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvJiBt
ZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
OwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElTUEFUQ0hfUVVF
VUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVl
dWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAgICAgICAgYXV0
byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJqc2Mgc2hlbGwg
bWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKKyAgICAg
ICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92ZShxdWV1ZSkp
OwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGljYWxTdGF0ZSA9
IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxTeW5jaHJvbm91
cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9ub3VzPjo6Y3Jl
YXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRiNzdiLi4zN2I3
MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hR
dWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJiBxdWV1ZSkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3BhdGNoX3JldGFp
bihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlzcGF0Y2hfcmVs
ZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1ZXVlOworICAg
IG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dURi93
dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYwN2NkNjMxZDJl
Y2Y1ODgzYzU0N2M0N2M0Mi4uNGYyMTg1NGU5MjMzMTQxMjk1OTBhMDRjNjRiZmUxZDU2N2UwMTI4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApA
QCAtOTIsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBN
ZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3BhdGNoUXVldWUo
ZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0
Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRpZgogCiAgICAg
Y2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMDcsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hR
dWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rp
c3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2OTRiZDhjM2Y1
YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNDk0YmIxMDVhMWM5YzNkN2Y2ZDgzNmY5NDI5
NzQyNzU1N2RjOGEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysr
IGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVudEFwcGx5KHNpemVfdCBp
dGVyYXRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoc2l6ZV90IGluZGV4KT4mJik7CiAKICNpZiBV
U0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyAgICBkaXNwYXRjaF9xdWV1ZV90
IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0K
ICNlbHNlCiAgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7
IH0KICNlbmRpZgpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENPQ09BX0VW
RU5UX0xPT1ApCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKLSAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRj
aF9xdWV1ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZWxzZQogICAgIFJ1bkxvb3AqIG1fcnVuTG9v
cDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb2NvYS5tbQppbmRleCAwODhiMTljYzEwYTY1ZWZmZTVkNGU5ZmMyN2EwODFjMjU2YmEz
NzZmLi41YzBmNWIyNTQ0ZjdiYTVlZTRkNzI1MDYwN2Y3ZmQ2ZmJkMDQ0MzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQpAQCAt
NjgsMTMgKzY4LDEzIEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKICAg
ICBpZiAobV9pbnN0YWxsZWQgfHwgdGltZXJFdmVudFNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX2Fz
eW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVf
Tk9STUFMIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfV0FSTiB8IERJU1BBVENIX01FTU9SWVBS
RVNTVVJFX0NSSVRJQ0FMIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfUFJPQ19MSU1JVF9XQVJO
IHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfUFJPQ19MSU1JVF9DUklUSUNBTDsKICNlbHNlIC8v
IFBMQVRGT1JNKE1BQykKICAgICAgICAgYXV0byBtZW1vcnlTdGF0dXNGbGFncyA9IERJU1BBVENI
X01FTU9SWVBSRVNTVVJFX0NSSVRJQ0FMOwogI2VuZGlmCi0gICAgICAgIG1lbW9yeVByZXNzdXJl
RXZlbnRTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBF
X01FTU9SWVBSRVNTVVJFLCAwLCBtZW1vcnlTdGF0dXNGbGFncywgbV9kaXNwYXRjaFF1ZXVlKTsK
KyAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVh
dGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJFU1NVUkUsIDAsIG1lbW9yeVN0YXR1c0Zs
YWdzLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCkpOwogCiAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9z
ZXRfZXZlbnRfaGFuZGxlcihtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlLCBeewogICAgICAgICAg
ICAgYXV0byBzdGF0dXMgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEobWVtb3J5UHJlc3N1cmVF
dmVudFNvdXJjZSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6Omluc3RhbGwoKQogICAgIH0pOwogCiAgICAgLy8gQWxsb3cgc2ltdWxhdGlvbiBvZiBtZW1v
cnkgcHJlc3N1cmUgd2l0aCAibm90aWZ5dXRpbCAtcCBvcmcuV2ViS2l0Lmxvd01lbW9yeSIKLSAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5IiwgJm5vdGlm
eVRva2Vuc1swXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rl
cl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBdLCBtX2Rp
c3BhdGNoUXVldWUuZ2V0KCksIF4oaW50KSB7CiAjaWYgRU5BQkxFKEZNV19GT09UUFJJTlRfQ09N
UEFSSVNPTikKICAgICAgICAgYXV0byBmb290cHJpbnRCZWZvcmUgPSBwYWdlc1BlclZNVGFnKCk7
CiAjZW5kaWYKQEAgLTEyNCwxNSArMTI0LDE1IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKCkKICAgICAgICAgbG9nRm9vdHByaW50Q29tcGFyaXNvbihmb290cHJpbnRCZWZv
cmUsIGZvb3RwcmludEFmdGVyKTsKICNlbmRpZgogCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKG1f
ZGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVl
LmdldCgpLCBeewogICAgICAgICAgICAgZW5kU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5X
ZWJLaXQubG93TWVtb3J5LmJlZ2luIiwgJm5vdGlmeVRva2Vuc1sxXSwgbV9kaXNwYXRjaFF1ZXVl
LCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF4o
aW50KSB7CiAgICAgICAgIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKICAgICB9KTsK
LSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmVuZCIs
ICZub3RpZnlUb2tlbnNbMl0sIG1fZGlzcGF0Y2hRdWV1ZSwgXihpbnQpIHsKKyAgICBub3RpZnlf
cmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmVuZCIsICZub3RpZnlUb2tl
bnNbMl0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAgICAgICAgZW5kU2ltdWxh
dGVkTWVtb3J5UHJlc3N1cmUoKTsKICAgICB9KTsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKQogICAgIGlmICghbV9pbnN0YWxsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwg
XnsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAgICAg
IGlmIChtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlKSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9z
b3VyY2VfY2FuY2VsKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UpOwogICAgICAgICAgICAgbWVt
b3J5UHJlc3N1cmVFdmVudFNvdXJjZSA9IG51bGxwdHI7CkBAIC0xNjQsOCArMTY0LDggQEAgdm9p
ZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAKIHZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpob2xkT2ZmKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBkaXNwYXRjaF9hc3lu
YyhtX2Rpc3BhdGNoUXVldWUsIF57Ci0gICAgICAgIHRpbWVyRXZlbnRTb3VyY2UgPSBkaXNwYXRj
aF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1RJTUVSLCAwLCAwLCBtX2Rpc3Bh
dGNoUXVldWUpOworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsK
KyAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFU
Q0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiAgICAg
ICAgIGlmICh0aW1lckV2ZW50U291cmNlKSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9zZXRfY29u
dGV4dCh0aW1lckV2ZW50U291cmNlLCB0aGlzKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUg
ZmluYWwgYXJndW1lbnQgYHNfbWluaW11bUhvbGRPZmZUaW1lLnNlY29uZHMoKWAgc2VlbXMgd3Jv
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKaW5kZXggMzc3M2M3OTg1
MmViYjIxYmQwNmQ1NjdiMDE3Y2Y3YzkzMjI1M2RlNi4uNDljZGJiNTg4MGJiMTY2YjVmNzVlNTZk
ZGM3OWMxY2ZhMWE1NDA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1
ZXVlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNw
cApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIFdvcmtRdWV1ZTo6
ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoX2Fz
eW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKKyAgICBkaXNwYXRjaF9h
c3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CiAgICAgICAg
IGZ1bmN0aW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7
Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVy
YXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxv
Y2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24gPSBXVEZNb3Zl
KGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hf
VElNRV9OT1csIGR1cmF0aW9uLm5hbm9zZWNvbmRzQXM8aW50NjRfdD4oKSksIG1fZGlzcGF0Y2hR
dWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24oKTsKICAg
ICB9KS5nZXQoKSk7CiB9CkBAIC00OSwxMyArNDksMTIgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRm
b3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCiB7CiAg
ICAgZGlzcGF0Y2hfcXVldWVfYXR0cl90IGF0dHIgPSB0eXBlID09IFR5cGU6OkNvbmN1cnJlbnQg
PyBESVNQQVRDSF9RVUVVRV9DT05DVVJSRU5UIDogRElTUEFUQ0hfUVVFVUVfU0VSSUFMOwogICAg
IGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRyX21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgVGhy
ZWFkOjpkaXNwYXRjaFFPU0NsYXNzKHFvcyksIDApOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZShuYW1lLCBhdHRyKTsKLSAgICBkaXNwYXRjaF9zZXRfY29udGV4
dChtX2Rpc3BhdGNoUXVldWUsIHRoaXMpOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGFkb3B0T1NP
YmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKG5hbWUsIGF0dHIpKTsKKyAgICBkaXNwYXRjaF9z
ZXRfY29udGV4dChtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIHRoaXMpOwogfQogCiB2b2lkIFdvcmtR
dWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlz
cGF0Y2hRdWV1ZSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpjb25jdXJyZW50QXBwbHkoc2l6ZV90
IGl0ZXJhdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmIGZ1bmN0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IGM2N2NjM2E5NjNh
NTBlYzIxYWViODY3MjUwOWNkNmIyOTE1M2RjOGIuLjMwZWYzNjA1NzE0NGNiMmExYmY1NjBiNTRl
YzZhNjhiNmFhMDU3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5n
SW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAK
QEAgLTExMSwxNiArMTExLDEzIEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3Ig
ewogICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JS
ZWYgY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0g
eyAwLCBudWxscHRyLCByZXRhaW4sIHJlbGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwgYWxsb2NhdGUs
IHJlYWxsb2NhdGUsIGRlYWxsb2NhdGUsIHByZWZlcnJlZFNpemUgfTsKLSAgICAgICAgcmV0dXJu
IENGQWxsb2NhdG9yQ3JlYXRlKG51bGxwdHIsICZjb250ZXh0KTsKLSAgICB9Ci0KICAgICBzdGF0
aWMgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IgPSBjcmVhdGUoKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRv
cjsKKyAgICAgICAgc3RhdGljIGF1dG8gYWxsb2NhdG9yID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICAgICAgICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLCBudWxscHRy
LCByZXRhaW4sIHJlbGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwgYWxsb2NhdGUsIHJlYWxsb2NhdGUs
IGRlYWxsb2NhdGUsIHByZWZlcnJlZFNpemUgfTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdENG
KENGQWxsb2NhdG9yQ3JlYXRlKG51bGxwdHIsICZjb250ZXh0KSk7CisgICAgICAgIH0oKSk7Cisg
ICAgICAgIHJldHVybiBhbGxvY2F0b3IuZ2V0KCkuZ2V0KCk7CiAgICAgfQogCiB9CkBAIC0xMzgs
MTUgKzEzNSwxNSBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNG
U3RyaW5nKCkKICAgICBBU1NFUlQoIVN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0
cmluZyk7CiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nID0gdGhp
czsKIAotICAgIENGU3RyaW5nUmVmIHN0cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHN0cmluZzsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHN0cmluZyA9IENGU3RyaW5nQ3Jl
YXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEs
IGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIGVsc2UKLSAgICAgICAgc3Ry
aW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVu
aUNoYXIqPihjaGFyYWN0ZXJzMTYoKSksIG1fbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAg
ICAgLy8gQ29yZUZvdW5kYXRpb24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcs
IHdlIGNsZWFyIGN1cnJlbnRTdHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2Nh
dGUoKS4KICAgICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXR1cm4gc3RyaW5nOwog
fQogCiAvLyBPbiBTdHJpbmdJbXBsIGNyZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxv
Y2F0b3IgaXMgdGhlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGZmZTYzYTZjMzliODQ2YzFlNTk3NjE1ZGJjNDcy
ZmQ3M2UyMDA2NjguLjRiMDFlYzM3OWViYTlmY2UxZDhhNDg2OTFjNThhODA1YjgzODQ2YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtMzAsNiArMzAsOCBA
QAogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIm9iamNfaW5z
dGFuY2UuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5o
PgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKQEAgLTM5LDIyICs0
MSwyNiBAQCBPYmpjQ2xhc3M6Ok9iamNDbGFzcyhDbGFzc1N0cnVjdFB0ciBhQ2xhc3MpCiB7CiB9
CiAKLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9IDA7CitzdGF0
aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBjbGFzc2VzQnlJc0EoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4+IGNsYXNzZXNCeUlzQTsKKyAgICByZXR1cm4gY2xhc3Nlc0J5SXNBOworfQogCiBzdGF0aWMg
dm9pZCBfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3NhcnkoKQogewotICAgIGlmICghY2xhc3Nl
c0J5SXNBKQotICAgICAgICBjbGFzc2VzQnlJc0EgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxl
KE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGlmICghY2xhc3Nlc0J5SXNBKCkpCisgICAgICAg
IGNsYXNzZXNCeUlzQSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5VTEws
IDAsIE5VTEwsIE5VTEwpKTsKIH0KIAogT2JqY0NsYXNzKiBPYmpjQ2xhc3M6OmNsYXNzRm9ySXNB
KENsYXNzU3RydWN0UHRyIGlzYSkKIHsKICAgICBfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3Nh
cnkoKTsKIAotICAgIGF1dG8gYUNsYXNzID0gcmVpbnRlcnByZXRfY2FzdDxPYmpjQ2xhc3MqPihj
b25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFzc2VzQnlJc0EsIChfX2Jy
aWRnZSBDRlR5cGVSZWYpaXNhKSkpOworICAgIGF1dG8gYUNsYXNzID0gcmVpbnRlcnByZXRfY2Fz
dDxPYmpjQ2xhc3MqPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFz
c2VzQnlJc0EoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EpKSk7CiAgICAgaWYgKCFh
Q2xhc3MpIHsKICAgICAgICAgYUNsYXNzID0gbmV3IE9iamNDbGFzcyhpc2EpOwotICAgICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShjbGFzc2VzQnlJc0EsIChfX2JyaWRnZSBDRlR5cGVSZWYpaXNh
LCBhQ2xhc3MpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShjbGFzc2VzQnlJc0EoKS5n
ZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGFDbGFzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBs
YWNlQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKaW5k
ZXggODVlOWJjNGFhNGVkZGZiNDQ1Mzk0YjBlOGQzOTYwN2Y0MmQxMjRlZi4uMDg4ZjAyZThkYTI0
NDA2YTkwM2Y5ZGEwOThhNjFiODI0NzBlNzI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
bWFydFJlcGxhY2VDRi5jcHAKQEAgLTM2LDMzICszNiwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgZ2V0U21hcnRTZXQoYm9vbCBpc1By
ZXZpb3VzQ2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYg
cHJlU21hcnRTZXQ7Ci0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwb3N0U21h
cnRTZXQ7Ci0gICAgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHNtYXJ0U2V0ID0gaXNQcmV2aW91
c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0IDogcG9zdFNtYXJ0U2V0OworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmPj4gcHJlU21hcnRT
ZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0
ZXJTZXRSZWY+PiBwb3N0U21hcnRTZXQ7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUNoYXJhY3Rl
clNldFJlZj4mIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0Lmdl
dCgpIDogcG9zdFNtYXJ0U2V0LmdldCgpOwogICAgIGlmICghc21hcnRTZXQpIHsKLSAgICAgICAg
c21hcnRTZXQgPSBDRkNoYXJhY3RlclNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luU3RyaW5nKHNtYXJ0U2V0
LCBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gQ0ZTVFIoIihbXCJcJyMkLy1geyIpIDogQ0ZTVFIoIild
Liw7Oj9cJyFcIiUqLS99IikpOwotICAgICAgICBDRkNoYXJhY3RlclNldFVuaW9uKHNtYXJ0U2V0
LCBDRkNoYXJhY3RlclNldEdldFByZWRlZmluZWQoa0NGQ2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFu
ZE5ld2xpbmUpKTsgICAgICAgIAorICAgICAgICBzbWFydFNldCA9IGFkb3B0Q0YoQ0ZDaGFyYWN0
ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgQ0ZDaGFy
YWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21hcnRTZXQuZ2V0KCksIGlzUHJldmlvdXND
aGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7IikgOiBDRlNUUigiKV0uLDs6P1wnIVwiJSot
L30iKSk7CisgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hh
cmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGlu
ZSkpOworCiAgICAgICAgIC8vIEFkZGluZyBDSksgcmFuZ2VzCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2
KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDExRkYpCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUy
KSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgyRTgwIC0gMHgyRkRGKQotICAgICAgICBD
RkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgw
eDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBDSksgU3ltYm9scywgSGly
YWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbywgS2Fu
YnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgzMUJGKQotICAgICAgICBDRkNoYXJhY3Rl
clNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5
MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9ncmFwaHMgKFVuaSBIYW4gJiBFeHQgQSks
ICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5n
dWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRk
Q2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAweEZFNEYp
Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENG
UmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBGb3JtICgweEZGMDAg
LSAweEZGRUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21h
cnRTZXQsIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAvLyBDSksgSWRlb2dyYXBoIEV4
bnRlbnNpb24gQgotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNt
YXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAyMUUpKTsgLy8gQ0pLIENvbXBhdGliaWxp
dHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0
QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MTEwMCwg
MjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDExRkYpCisgICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4
MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgyRTgwIC0gMHgyRkRGKQor
ICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgp
LCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBD
SksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3VsIENvbXBhdGli
aWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgzMUJGKQorICAg
ICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBD
RlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9ncmFw
aHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKKyAgICAgICAgQ0ZD
aGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9n
cmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBD
SksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAweEZFNEYpCisgICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4
RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBGb3JtICgweEZGMDAgLSAweEZGRUYpCisg
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCks
IENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAvLyBDSksgSWRlb2dyYXBoIEV4bnRlbnNp
b24gQgorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0
LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAyMUUpKTsgLy8gQ0pLIENvbXBhdGliaWxp
dHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCiAKLSAgICAgICAgaWYgKGlzUHJldmlv
dXNDaGFyYWN0ZXIpCi0gICAgICAgICAgICBwcmVTbWFydFNldCA9IHNtYXJ0U2V0OwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQsIENGQ2hh
cmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRQdW5jdHVhdGlvbikpOyAgICAg
ICAKLSAgICAgICAgICAgIHBvc3RTbWFydFNldCA9IHNtYXJ0U2V0OwotICAgICAgICB9CisgICAg
ICAgIGlmICghaXNQcmV2aW91c0NoYXJhY3RlcikKKyAgICAgICAgICAgIENGQ2hhcmFjdGVyU2V0
VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFy
YWN0ZXJTZXRQdW5jdHVhdGlvbikpOwogICAgIH0KLSAgICByZXR1cm4gc21hcnRTZXQ7CisgICAg
cmV0dXJuIHNtYXJ0U2V0LmdldCgpOwogfQogCiBib29sIGlzQ2hhcmFjdGVyU21hcnRSZXBsYWNl
RXhlbXB0KFVDaGFyMzIgYywgYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmlu
ZGV4IDFjZDVkOWZkYjhhMTQxOWQzNjdjMDg2ZTBjNmNhNjNkZmVkNjMzMjUuLjUwOWYyM2JhY2Ux
ZWU1ZmE2MTdkODVjYmRhMTU2OGQ5OTM4Yjg1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTExOSwxMCAr
MTE5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50IHsgMCB9OwogfTsKIAot
c3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ29sb3IoZmxvYXQg
ciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAgICBDR0Zsb2F0IGNvbXBvbmVudHNb
NF0gPSB7IHIsIGcsIGIsIGEgfTsKLSAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JT
cGFjZVJlZigpLCBjb21wb25lbnRzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRl
KHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpKTsKIH0KIAogc3RydWN0IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvIHsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlVXNh
Z2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogCiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0
QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRz
U2NhbGU6Mi4wXTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRD
RihjcmVhdGVDb2xvcigwLCAwLCAwLCAwLjgpKS5nZXQoKV07CisgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0QmFja2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAsIDAsIDAsIDAuOCkuZ2V0KCldOwogICAg
IFttX2xheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBu
b3JtYWxIZWlnaHQpXTsKIAogICAgIG92ZXJsYXkoKS5sYXllcigpLnNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKG1fbGF5ZXIuZ2V0KCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJw
b3NlOjpOb25lKTsKQEAgLTI4MCwxNyArMjgwLDE3IEBAIHN0YXRpYyB2b2lkIHNob3dUZXh0KENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBj
CiAKIHN0YXRpYyB2b2lkIGRyYXdHcmFwaExhYmVsKENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9h
dCB4LCBmbG9hdCB5LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JS
ZWYgYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAxKTsKLSAgICBzaG93VGV4dChjb250ZXh0
LCB4ICsgNSwgeSAtIDMsIGJsYWNrLCB0ZXh0KTsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0
ZSA9IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA0
LCB5IC0gNCwgd2hpdGUsIHRleHQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4+IGJsYWNrID0gY3JlYXRlQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgc2hv
d1RleHQoY29udGV4dCwgeCArIDUsIHkgLSAzLCBibGFjay5nZXQoKS5nZXQoKSwgdGV4dCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gd2hpdGUgPSBj
cmVhdGVDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCB4ICsgNCwgeSAt
IDQsIHdoaXRlLmdldCgpLmdldCgpLCB0ZXh0KTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd0NwdUhp
c3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIs
IFJpbmdCdWZmZXI8ZmxvYXQ+JiBoaXN0b3J5KQogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNw
dUNvbG9yID0gY3JlYXRlQ29sb3IoMCwgMSwgMCwgMSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY3B1Q29sb3IgPSBjcmVhdGVDb2xvcigwLCAxLCAw
LCAxKTsKIAotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNw
dUNvbG9yKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBj
cHVDb2xvci5nZXQoKS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQs
IDEpOwogCiAgICAgaW50IGkgPSAwOwpAQCAtMzIxLDggKzMyMSw4IEBAIHN0YXRpYyB2b2lkIGRy
YXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv
YXQgeTIsIFJpCiAKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMSk7CiAKLSAg
ICBzdGF0aWMgQ0dDb2xvclJlZiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4z
LCAxKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYXBh
Y2l0eUNvbG9yKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JS
ZWY+PiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4zLCAxKTsKKyAgICBDR0Nv
bnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYXBhY2l0eUNvbG9yLmdldCgp
LmdldCgpKTsKIAogICAgIHNpemVfdCBpID0gMDsKIApAQCAtMzM1LDggKzMzNSw4IEBAIHN0YXRp
YyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9h
dCB5MSwgZmxvYXQgeTIsIFJpCiAgICAgICAgIGkrKzsKICAgICB9KTsKIAotICAgIHN0YXRpYyBD
R0NvbG9yUmVmIHNpemVDb2xvciA9IGNyZWF0ZUNvbG9yKDAuNiwgMC41LCAwLjksIDEpOwotICAg
IENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIHNpemVDb2xvcik7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gc2l6ZUNvbG9y
ID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tl
Q29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9yLmdldCgpLmdldCgpKTsKIAogICAgIGkg
PSAwOwogCkBAIC00NTYsMTAgKzQ1NiwxMCBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5Ojpw
bGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgQ0dSZWN0IHZpZXdCb3VuZHMg
PSBtX292ZXJsYXktPmJvdW5kcygpOwogICAgIENHQ29udGV4dENsZWFyUmVjdChjb250ZXh0LCB2
aWV3Qm91bmRzKTsKIAotICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTGFiZWxzID0gY3Jl
YXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDIw
LCBjb2xvckZvckxhYmVscywgbWFrZVN0cmluZygiICAgICAgICBDUFU6ICIsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFzdCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJv
cykpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMzAsIGNvbG9yRm9yTGFiZWxzLCAiICBG
b290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7Ci0gICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZvckxhYmVscywgIiAgIEV4dGVybmFsOiAi
ICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxhc3QoKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGNvbG9yRm9yTGFi
ZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7CisgICAgc2hvd1RleHQoY29udGV4
dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgbWFrZVN0cmluZygiICAgICAg
ICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFzdCgp
LCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMzAs
IGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICBGb290cHJpbnQ6ICIgKyBmb3JtYXRCeXRl
TnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDQw
LCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAgIEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0
ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxhc3QoKSkpOwogCiAgICAgZmxvYXQgeSA9
IDU1OwogICAgIGZvciAoYXV0byYgY2F0ZWdvcnkgOiBkYXRhLmNhdGVnb3JpZXMpIHsKQEAgLTQ4
MCw4ICs0ODAsOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dD
b250ZXh0UmVmIGNvbnRleHQpCiAgICAgeSAtPSA1OwogCiAgICAgTW9ub3RvbmljVGltZSBub3cg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDEw
LCBjb2xvckZvckxhYmVscywgIiAgICBFZGVuIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRp
bWVPZk5leHRFZGVuQ29sbGVjdGlvbiwgbm93KSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAs
IHkgKyAyMCwgY29sb3JGb3JMYWJlbHMsICIgICAgRnVsbCBHQzogIiArIGdjVGltZXJTdHJpbmco
ZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5vdykpOworICAgIHNob3dUZXh0KGNvbnRl
eHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICAgIEVkZW4gR0M6
ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsK
KyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5n
ZXQoKSwgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVPZk5leHRGdWxs
Q29sbGVjdGlvbiwgbm93KSk7CiAKICAgICBkcmF3Q3B1SGlzdG9yeShjb250ZXh0LCB2aWV3Qm91
bmRzLnNpemUud2lkdGggLSA3MCwgMCwgdmlld0JvdW5kcy5zaXplLmhlaWdodCwgZGF0YS5jcHUp
OwogICAgIGRyYXdHQ0hpc3RvcnkoY29udGV4dCwgdmlld0JvdW5kcy5zaXplLndpZHRoIC0gMTQw
LCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRhLmdjSGVhcFNpemUsIGRhdGEuY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXS5kaXJ0eVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwCmluZGV4IDgyMDNj
MDM2YTM2MTI1N2U1MmU4MDVkMWZmOTU4ODRjNmI0ODFhNjQuLjMwZDVlMDU1NTE5YmNhMDAzZDI0
NTQ1ZjQzZGQyMTM3MGNmMDJkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNlcnRpZmljYXRlQ0ZXaW4uaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCwxOSAr
MzUsMTkgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NlcnRDb250ZXh0KHZvaWQqIHB0ciwgdm9pZCog
aW5mbykKICAgICAgICAgQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQoc3RhdGljX2Nhc3Q8UEND
RVJUX0NPTlRFWFQ+KHB0cikpOwogfQogCi1zdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlQ2Vy
dENvbnRleHREZWFsbG9jYXRvcigpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBj
cmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQg
YWxsb2NDb250ZXh0ID0gewogICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCBkZWFsbG9jQ2Vy
dENvbnRleHQsIDAKICAgICB9OwotICAgIHJldHVybiBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9j
YXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KSk7CiB9CiAKIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNvcHlDZXJ0aWZpY2F0ZVRvRGF0YShQQ0NFUlRfQ09OVEVYVCBj
ZXJ0aWZpY2F0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY2VydERlYWxsb2MgPSBj
cmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4+IGNlcnREZWFsbG9jID0gY3JlYXRlQ2VydENvbnRl
eHREZWFsbG9jYXRvcigpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRlQ29weSA9IENl
cnREdXBsaWNhdGVDZXJ0aWZpY2F0ZUNvbnRleHQoY2VydGlmaWNhdGUpOwotICAgIHJldHVybiBh
ZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpj
ZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOworICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNv
cHkpLCBjZXJ0RGVhbGxvYy5nZXQoKS5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggMDU3MzI1YzA2MmRiY2U1ZDgxMmZiNDhmODQ3MzI1OTg2MmFlZDc0OS4u
MzA1OGVlODE3ZmNkZjk1ODRjYmIzNjE3MWY0YzZmYzg0NzEyN2Q4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24g
PSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBGb250V2lk
dGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gVGV4dFJlbmRlcmlu
Z01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlvbkRhdGEqID0gbnVsbHB0cik7CiAKICNp
ZiBVU0UoQ09SRV9URVhUKQotICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQbGF0Zm9ybURhdGEoQ1RG
b250UmVmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQgPSBmYWxzZSwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRhdGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6
SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJX
aWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5k
ZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250
UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+JiYsIGZsb2F0IHNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlxdWUgPSBmYWxzZSwgRm9udE9y
aWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBGb250V2lkdGhWYXJpYW50
ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRl
eHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmluZywgQ3JlYXRpb25EYXRhKiA9IG51bGxw
dHIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggYWEzMTMyYmFiZjcwMjNjZmE1ZjM4MDhjMjM4ZTlh
ZmQzZGZiZmI4NC4uZDAyYTQ2YjNhM2FmOGNkNzJkODgwOTJiOTM4ZTlmMjI3MTBlYzI3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMzUsNyArMzUs
NyBAQAogCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dQYXR0ZXJuKiBDR1BhdHRlcm5S
ZWY7Ci10eXBlZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9ybVBhdHRlcm5QdHI7Cit0eXBlZGVmIFJl
dGFpblB0cjxDR1BhdHRlcm5SZWY+IFBsYXRmb3JtUGF0dGVyblB0cjsKICNlbGlmIFVTRShESVJF
Q1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNoOwogdHlwZWRlZiBJRDJEMUJpdG1hcEJy
dXNoKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhODIxNWNjMDVm
ZjIyZDEyOTBmMTcwODAxOTA1NDIxYTAxOTcwOTVhLi43NjdhOTZiYTFlYjdlYjFiZTQwMjdiZjMx
ODBiNzUwZmFkZTUzYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTY5LDEwICs2OSwxMSBAQAog
I2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogLy8gU29mdC1saW5raW5nIGhlYWRl
cnMgbXVzdCBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIHRoZXkgI2RlZmluZSBmdW5jdGlvbnMsIGNv
bnN0YW50cywgZXRjLgogI2luY2x1ZGUgIkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaCIKQEAg
LTE1Nyw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJs
ZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3QgeyByZXR1cm4gbV9sZWdpYmxlT3V0cHV0
LmdldCgpOyB9CiAgICAgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2FmZU1lZGlhU2VsZWN0
aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsKICNlbmRpZgotICAgIGlubGluZSBkaXNw
YXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlv
blF1ZXVlOyB9CisgICAgaW5saW5lIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCk7IH0KIAogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+IHRh
a2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYpOwpAQCAtMTk1LDcgKzE5Niw3IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmPiBtX3NlbGVj
dGlvbkdyb3VwOwogI2VuZGlmCiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fbm90aWZpY2F0aW9u
UXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9ub3RpZmljYXRpb25R
dWV1ZTsKIAogICAgIG11dGFibGUgUmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV9jYVZpZGVvTGF5
ZXI7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV92aWRlb0xheWVyV3JhcHBlcjsKQEAg
LTI0NCw3ICsyNDUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkK
IH0KICNlbmRpZgogCi1zdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkK
K3N0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpCiB7
CiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtleU5hbWVzW10gPSB7CiAgICAgICAgIEFW
Q0ZBc3NldFByb3BlcnR5RHVyYXRpb24sCkBAIC0yNTgsMTMgKzI1OSwxMyBAQCBzdGF0aWMgQ0ZB
cnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKICNlbmRpZgogICAgIH07CiAgICAgCi0g
ICAgcmV0dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9m
KGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilrZXlO
YW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpKTsKIH0KIAogc3RhdGljIENGQXJyYXlSZWYgbWV0YWRhdGFLZXlOYW1lcygp
CiB7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYga2V5cyA9IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMo
KTsKLSAgICByZXR1cm4ga2V5czsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGQXJyYXlSZWY+PiBrZXlzID0gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpOworICAgIHJldHVy
biBrZXlzLmdldCgpLmdldCgpOwogfQogCiAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIGlm
IEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRlZCB0aGlzIGtleS4KQEAgLTEzNzUsNyAr
MTM3Niw3IEBAIEFWRldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YqIG93bmVyKQogICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09
IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBw
ZXI6OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAKLSAgICBtX25vdGlmaWNhdGlvblF1ZXVlID0g
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5u
b3RpZmljYXRpb25RdWV1ZSIsIDApOworICAgIG1fbm90aWZpY2F0aW9uUXVldWUgPSBhZG9wdE9T
T2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Yubm90aWZpY2F0aW9uUXVldWUiLCAwKSk7CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9M
T0FERVJfREVMRUdBVEUpCiAgICAgbV9yZXNvdXJjZUxvYWRlckNhbGxiYWNrcy52ZXJzaW9uID0g
a0FWQ0ZBc3NldFJlc291cmNlTG9hZGVyX0NhbGxiYWNrc1ZlcnNpb25fMTsKQEAgLTEzOTUsOSAr
MTM5Niw2IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVyKCkKICAgICBkZXN0cm95VmlkZW9MYXll
cigpOwogICAgIGRlc3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogCi0gICAgaWYgKG1fbm90aWZpY2F0
aW9uUXVldWUpCi0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9ub3RpZmljYXRpb25RdWV1ZSk7
Ci0KICAgICBpZiAoYXZBc3NldCgpKSB7CiAgICAgICAgIEFWQ0ZBc3NldENhbmNlbExvYWRpbmco
YXZBc3NldCgpKTsKICAgICAgICAgbV9hdkFzc2V0ID0gMDsKQEAgLTE1MzAsNyArMTUyOCw3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wg
aW5oZXJpdFVSSSkKIAogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCks
IEFWQ0ZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgY2ZSZXN0cmljdGlvbnMuZ2V0
KCkpOwogCi0gICAgbV9hdkFzc2V0ID0gYWRvcHRDRihBVkNGVVJMQXNzZXRDcmVhdGVXaXRoVVJM
QW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIG9wdGlvbnNSZWYu
Z2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKKyAgICBtX2F2QXNzZXQgPSBhZG9wdENGKEFW
Q0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVy
bFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZS5nZXQoKSkp
OwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQogICAgIEFTU0VSVChj
YWxsYmFja0NvbnRleHQoKSk7CkBAIC0xNTY3LDI0ICsxNTY1LDI0IEBAIHZvaWQgQVZGV3JhcHBl
cjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkqIGQzZERldmljZSkKICNlbmRpZgogCiAg
ICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gY3JlYXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBh
biBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3Byb2JsZW0vOTg3NzczMD4uCi0gICAgQVZDRlBs
YXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRp
b25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVmLmdldCgp
LCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxheWVyID0gYWRvcHRDRihwbGF5ZXJS
ZWYpOworICAgIGF1dG8gcGxheWVyUmVmID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlV2l0aFBs
YXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBv
cHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpKSk7CisgICAgbV9hdlBs
YXllciA9IHBsYXllclJlZjsKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05f
R1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCi0gICAg
QVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZChwbGF5ZXJSZWYsIEZBTFNF
KTsKKyAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKHBsYXllclJl
Zi5nZXQoKSwgRkFMU0UpOwogI2VuZGlmCiAKICAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZDRlBs
YXllclNldERpcmVjdDNERGV2aWNlUHRyKCkpCi0gICAgICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3Qz
RERldmljZVB0cigpKHBsYXllclJlZiwgbV9kM2REZXZpY2UuZ2V0KCkpOworICAgICAgICBBVkNG
UGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5ZXJSZWYuZ2V0KCksIG1fZDNkRGV2aWNl
LmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZp
Y2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIAotICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
biwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllclJhdGVDaGFu
Z2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJSZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKIAogICAgIC8vIEFkZCBhIHRpbWUgb2JzZXJ2
ZXIsIGFzayB0byBiZSBjYWxsZWQgaW5mcmVxdWVudGx5IGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5
IHdhbnQgcGVyaW9kaWMgY2FsbGJhY2tzIGJ1dAogICAgIC8vIG91ciBvYnNlcnZlciB3aWxsIGFs
c28gYmUgY2FsbGVkIHdoZW5ldmVyIGEgc2VlayBoYXBwZW5zLgogICAgIGNvbnN0IGRvdWJsZSB2
ZXJ5TG9uZ0ludGVydmFsID0gNjAqNjAqNjAqMjQqMzA7Ci0gICAgbV90aW1lT2JzZXJ2ZXIgPSBh
ZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsKHBs
YXllclJlZiwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFsLCAxMCksIG1fbm90aWZpY2F0aW9u
UXVldWUsICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrLCBjYWxsYmFja0NvbnRleHQoKSkp
OworICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNU
aW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYuZ2V0KCksIENNVGltZU1ha2UodmVyeUxv
bmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpLCAmcGVyaW9kaWNUaW1l
T2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpKTsKIH0KIAogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKQEAgLTE2MDcsMjIgKzE2MDUsMjIgQEAgdm9pZCBBVkZXcmFw
cGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ3JlYXRl
IHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBiZWdpbiBsb2FkaW5nIG1lZGlhIGRhdGEuCi0gICAgQVZD
RlBsYXllckl0ZW1SZWYgaXRlbVJlZiA9IEFWQ0ZQbGF5ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtD
RkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0gICAg
bV9hdlBsYXllckl0ZW0gPSBhZG9wdENGKGl0ZW1SZWYpOworICAgIGF1dG8gaXRlbVJlZiA9IGFk
b3B0RihBVkNGUGxheWVySXRlbUNyZWF0ZVdpdGhBc3NldChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBh
dkFzc2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKKyAgICBtX2F2UGxheWVySXRl
bSA9IGl0ZW1SZWY7CiAKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIgPSBDRk5v
dGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7CiAgICAgQVNTRVJUKGNlbnRlcik7CiAK
LSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRp
bWVOb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
RGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVy
KGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxh
eWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9u
U3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1S
ZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
LSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJh
bmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVt
UmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7
Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25T
aXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlv
biwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxs
YmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5
YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRp
b25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0
aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0
aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90
aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50
ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0
ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3Vz
cGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNl
bnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNh
bGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1S
ZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVN0YXR1c0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdl
c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRl
ckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxi
YWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBp
dGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVz
ZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmlj
YXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZp
Y2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwg
aXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZO
b3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBu
b3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmlj
YXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVs
aXZlckltbWVkaWF0ZWx5KTsKICAgICAvLyBGSVhNRTogQXJlIHRoZXJlIG90aGVyIGxlZ2libGUg
b3V0cHV0IHRoaW5ncyB3ZSBuZWVkIHRvIHJlZ2lzdGVyIGZvcj8gYXNzZXQgYW5kIGhhc0VuYWJs
ZWRBdWRpbyBhcmUgbm90IGV4cG9zZWQgYnkgQVZDRgogCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKQEAgLTE3NTQsMTUgKzE3
NTIsMTQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIHsKICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCVwKSIsIHRoaXMpOwogCi0gICAg
c3RhdGljIENGQXJyYXlSZWYgcHJvcGVydHlLZXlOYW1lOwotICAgIGlmICghcHJvcGVydHlLZXlO
YW1lKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrZXlOYW1lc1tdID0geyAK
KyAgICBzdGF0aWMgYXV0byBwcm9wZXJ0eUtleU5hbWUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga2V5TmFtZXNbXSA9IHsKICAgICAg
ICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUKICAgICAgICAgfTsKLSAgICAgICAgcHJv
cGVydHlLZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBz
aXplb2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlOYW1lcykgLyBzaXplb2Yoa2V5TmFtZXNb
MF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgfSgpKTsKIAotICAgIEFWQ0ZBc3Nl
dExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0
eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0
KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMo
YXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCkuZ2V0KCksIGxvYWRQbGF5YWJsZUNvbXBs
ZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOwogfQogCiB2b2lkIEFWRldyYXBwZXI6
OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRl
eHQpCkBAIC0yMDAzLDcgKzIwMDAsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRl
b0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0IGhv
b2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKCkuCi0g
ICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXllckxheWVyQ3JlYXRlV2l0aEFW
Q0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIoKSwgbV9ub3RpZmljYXRpb25R
dWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJMYXllckNy
ZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVyKCksIG1fbm90
aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjcmVh
dGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlzLCB2aWRlb0xheWVyKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1MjA5OGE5ZGNiNjU1ZTEzNjkuLmM2NzQ5
ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYpIENGX1JFVFVSTlNfUkVUQUlO
RUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29s
b3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
VEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGlj
eTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JL
ZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogewotICAgIHJldHVybiBhZG9wdENGKFdl
YkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUNH
Q29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTg5LDcgKzg5LDcgQEAg
Q29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7
CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
K3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xv
clNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIENHQ29s
b3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGF1dG8gW3IsIGcsIGIs
IGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwg
ZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zs
b2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9y
U3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYgKzEyNiwxNiBAQCBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmIChhdXRvIHNyZ2IgPSBjb2xv
ci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpS
R0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JBIHsg
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTogewotICAgICAgICAgICAgc3RhdGljIENH
Q29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IHRyYW5zcGFyZW50Q0dDb2xvciA9IGNy
ZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xv
ci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JB
IHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVm
IGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKLSAgICAgICAgICAgIHJldHVybiBi
bGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVhdGVDR0NvbG9yKGNvbG9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0ZSB9LnZhbHVlOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xv
cik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOworICAgICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gd2hpdGVDR0NvbG9yID0gY3Jl
YXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yLmdldCgp
LmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAppbmRleCBhM2ZiODlk
NTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVhLi4yMGUxY2NhYmNkOGZlNzAzOWQ0NWNm
OTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENGU3RyaW5nUmVmJiBjb2xvclNwYWNlTmFt
ZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIG5hbWVkQ29sb3JTcGFjZSgp
CiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPj4gY29sb3JTcGFjZTsKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpOwotICAgICAgICBBU1NFUlQoY29sb3JT
cGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpKTsKKyAgICAgICAgQVNT
RVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwotICAgIHJldHVybiBjb2xvclNwYWNlOwor
ICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgpOwogfQogCiBDR0NvbG9yU3BhY2VSZWYg
c1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDFiYTllYmVjMmRkMmMw
ZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1ZWNhNjc0NmExOWE4MTZiZGNjOGExMTZj
OWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJU
b0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsK
IAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9IGFkb3B0Q0Yo
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNU
TSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5j
cmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBh
dHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0g
PSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJl
dGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5m
aWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pKTsKKyAgICBh
dXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaApp
bmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRiOTgwMTEwN2RmMjkyLi4yNzE1OTI0ZDE0
YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQxLDggQEAgdHlwZWRlZiB1bnNpZ25lZCBH
cmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCwgR3JhcGhpY3ND
b250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAgIDogbV9jZ0NvbnRleHQoY2dDb250ZXh0
KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCisgICAg
ICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRleHQpKQogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1fc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93
cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cu
Y3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1NTdlMTcxZjlhMTgzMzBkMjQuLmExOWEy
MTFhODcxNzk4NWQ2ZDRjOWY5NDEzODhhYzFiMTQ2MDA4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAtNDUsMjMgKzQ1LDIzIEBAIHN0
YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90IGNv
dW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIENHQ29udGV4dFJlZiBjcmVhdGVT
Y3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlU2Ny
YXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9
IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YUNvbnN1bWVyUmVm
PiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGUoMCwgJmNhbGxiYWNrcykp
OwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQREZDb250ZXh0Q3JlYXRlKGNvbnN1bWVy
LmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1l
ckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR1BE
RkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAsIDApKTsKIAogICAgIENHRmxvYXQgYmxh
Y2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4
dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQsIGJsYWNrKTsK
KyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4dC5nZXQoKSwgYmxhY2spOworICAgIENH
Q29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0KCksIGJsYWNrKTsKIAogICAgIHJldHVy
biBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENHQ29udGV4dFJlZiBzY3JhdGNoQ29udGV4
dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY3JlYXRlU2NyYXRjaENv
bnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQgPSBjcmVhdGVTY3JhdGNoQ29udGV4dCgp
OworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgpOwogfQogCiBQYXRoIFBhdGg6OnBvbHln
b25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludD4mIHBvaW50cykKQEAgLTIx
MCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVu
Y3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCoKICAgICB9CiB9CiAKLXN0YXRp
YyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMoQ0dQYXRoUmVmIG9y
aWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gY29weUNHUGF0
aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2luYWxQYXRoKQogewotICAgIENHTXV0YWJs
ZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1BhdGhBcHBseShv
cmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24pOwot
ICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAgICBhdXRvIHBhdGggPSBhZG9wdENGKENH
UGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoQXBwbHkob3JpZ2luYWxQYXRoLCBwYXRo
LmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGllckZ1bmN0aW9uKTsKKyAgICBDR1BhdGhD
bG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKQEAgLTIyNyw3
ICsyMjcsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQgJnBvaW50LCBX
aW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDR1Bh
dGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9yIG5vbi1jbG9zZWQgcGF0aHMsIGFzIGEg
d29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRoZSBwYXRoIGZpcnN0LiAgUmFkYXIgNDc1
ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8gdXNlCi0gICAgYXV0byBwYXRoID0gYWRv
cHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBsYXRmb3JtUGF0aCgpKSk7CisgICAgYXV0
byBwYXRoID0gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhwbGF0Zm9ybVBhdGgoKSk7CiAgICAg
Ym9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0KCksIDAsIHBvaW50LCBydWxl
ID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZhbHNlKTsKICAgICByZXR1cm4gcmV0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5j
cHAKaW5kZXggM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4M2ZkZWIxZGNjOTNjZjljMy4uNzZlYTlh
ZjRkNDIzMjQ5NDFhODk3ZmFhM2U1ZGZkYWIyM2RmODEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICBjYWxs
T25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5m
bykpXSB7IH0pOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAorUmV0
YWluUHRyPENHUGF0dGVyblJlZj4gUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAogewogICAgIEZsb2F0
UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKIApAQCAtNjgsNyAr
NjgsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGlu
ZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAg
ICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBw
aXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVhdFgoKSAmJiByZXBlYXRZKCkpCi0gICAgICAgIHJl
dHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICBy
ZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0
KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpKTsK
IAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0
ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28K
ICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTgyLDcgKzgyLDcg
QEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0ltYWdlUmVmIGltYWdlID0gcGxhdGZv
cm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVy
bkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
IH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywg
VFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENHUGF0dGVybkNy
ZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NH
UGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXgg
NmYzMjJjMzVhOWY5OTE1NmY5MTU2OTliNjJhNmU2NTA1Y2VhMWVjMi4uZjc3ZjExYjM4N2YwMzI2
ZTRlYmU5ZjhkNzNlNDczODNmNGFjNTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwCkBAIC0zNSwxOCArMzUsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKENURm9udFJlZiBmb250LCBm
bG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9u
dE9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwg
VGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRlcmluZ01vZGUsIENyZWF0aW9uRGF0YSogY3JlYXRp
b25EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShSZXRhaW5QdHI8Q1RG
b250UmVmPiYmIGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlh
bnQgd2lkdGhWYXJpYW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3Jl
YXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCiAgICAgOiBGb250UGxhdGZvcm1EYXRhKHNpemUsIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQs
IHRleHRSZW5kZXJpbmdNb2RlLCBjcmVhdGlvbkRhdGEpCiB7CiAgICAgQVNTRVJUX0FSRyhmb250
LCBmb250KTsKICNpZiBQTEFURk9STShXSU4pCi0gICAgbV9jdEZvbnQgPSBmb250OworICAgIG1f
Y3RGb250ID0gV1RGTW92ZShmb250OykKICNlbHNlCi0gICAgbV9mb250ID0gZm9udDsKKyAgICBt
X2ZvbnQgPSBXVEZNb3ZlKGZvbnQpOwogI2VuZGlmCi0gICAgbV9pc0NvbG9yQml0bWFwRm9udCA9
IENURm9udEdldFN5bWJvbGljVHJhaXRzKGZvbnQpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7
Ci0gICAgbV9pc1N5c3RlbUZvbnQgPSBXZWJDb3JlOjppc1N5c3RlbUZvbnQoZm9udCk7Ci0gICAg
YXV0byB2YXJpYXRpb25zID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENU
Rm9udENvcHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFZhcmlhdGlvbkF0dHJpYnV0ZSkpKTsKKyAg
ICBtX2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMoZm9udC5nZXQo
KSkgJiBrQ1RGb250Q29sb3JHbHlwaHNUcmFpdDsKKyAgICBtX2lzU3lzdGVtRm9udCA9IFdlYkNv
cmU6OmlzU3lzdGVtRm9udChmb250LmdldCgpKTsKKyAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9w
dENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250
LmdldCgpLCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOwogICAgIG1faGFzVmFyaWF0aW9u
cyA9IHZhcmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQodmFyaWF0aW9ucy5nZXQoKSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5k
ZXggNzdlMWMzZjE2MmYwNjYzZmI4NTNmYTIyNWFjMjQ4YjQ1NmU0MWFmNC4uZTNmMDkyNzAzNDhl
N2E1YWVmNzI2NmViNDcyZGRiYWU3M2JjMzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1t
CkBAIC0yMTEsMTQgKzIxMSwxMyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoQ0dJbWFnZVJlZgogICAgIENWUGl4
ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKICAgICB2b2lkKiBkYXRhID0g
Q1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzKHJnYkJ1ZmZlcik7CiAgICAgYXV0byByZXRhaW5l
ZFJHQkJ1ZmZlciA9IGFkb3B0Q0YocmdiQnVmZmVyKTsKLSAgICBhdXRvIGNvbnRleHQgPSBDR0Jp
dG1hcENvbnRleHRDcmVhdGUoZGF0YSwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHJnYkJ1ZmZlciksIHNSR0JDb2xv
clNwYWNlUmVmKCksIChDR0JpdG1hcEluZm8pIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0
Qnl0ZXNQZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5m
bykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQ
aXhlbEJ1ZmZlcjogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlIHJldHVybmVkIG51bGxwdHIiKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byByZXRhaW5lZENvbnRleHQg
PSBhZG9wdENGKGNvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1Jl
Y3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBpbWFn
ZSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKICAgICBD
VlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKIAogICAgIHJldHVy
biBjb252ZXJ0UGl4ZWxCdWZmZXIocmdiQnVmZmVyLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQppbmRleCA0NTExMDdiYmI0NjViZGUzOTU0NDlkYzA3OGQ4
MDVhOGUxNjRmOGE0Li4wMzIwOTY5ODhmY2RlMjE3MTc1OTMzNTAwMTM5MGViM2ZiYjk5YTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0xNDIsMTMgKzE0
MiwxMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVu
c0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBzdGF0aWMgY29uc3Qgdm9p
ZCogb3B0aW9uS2V5c1tdID0geyBrQ1RUeXBlc2V0dGVyT3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2
ZWwgfTsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZs
dHJGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9p
ZCogcnRsT3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNob3J0VHlwZSwgJnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07
Ci0gICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0
aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0Rp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
LSAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRp
b25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+
IGx0clR5cGVzZXR0ZXJPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVO
R1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gcnRsVHlwZXNldHRlck9wdGlvbnMg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25L
ZXlzLCBydGxPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZD
b3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAogICAgICAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwg
c3RyaW5nQXR0cmlidXRlcy5nZXQoKSB9OwogICAgICAgICAvLyBGSVhNRTogU29tZSBTREtzIGNv
bXBsYWluIHRoYXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgYmVsb3cgY2Fubm90IGJlIG51bGwuCiAg
ICAgICAgIElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOCi0gICAgICAgIFJldGFpblB0
cjxDVFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBhZG9wdENGKENUVHlwZXNldHRlckNyZWF0
ZVdpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRl
cywgMCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBl
c2V0dGVyT3B0aW9ucykpOworICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBl
c2V0dGVyID0gYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoVW5pQ2hhclByb3ZpZGVyQW5k
T3B0aW9ucygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvLCBtX3J1bi5sdHIo
KSA/IGx0clR5cGVzZXR0ZXJPcHRpb25zLmdldCgpLmdldCgpIDogcnRsVHlwZXNldHRlck9wdGlv
bnMuZ2V0KCkuZ2V0KCkpKTsKICAgICAgICAgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5E
CiAKICAgICAgICAgaWYgKCF0eXBlc2V0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3Bw
CmluZGV4IDc0OGVkYjk0MDA5ZmQyOGE4OTI1ZmRhZjI0ZjNiMGUyNTliYTZkMTguLmZhYWI2ZTE0
ZjAyN2E0NDRiZDZkZTI3MTJlNjY5NTRhNzY1NWRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRm9u
dDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgRm9udE8KIAogICAg
IGlmICghZW5hYmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0gMDsKLSAg
ICAgICAgc3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk51bWJlclJlZj4+IHplcm9LZXJu
aW5nVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlckZsb2F0VHlwZSwgJnplcm8pKTsKICAgICAgICAga2V5c1tjb3VudF0gPSBrQ1RLZXJu
QXR0cmlidXRlTmFtZTsKLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWU7
CisgICAgICAgIHZhbHVlc1tjb3VudF0gPSB6ZXJvS2VybmluZ1ZhbHVlLmdldCgpLmdldCgpOwog
ICAgICAgICArK2NvdW50OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXgg
Y2VkYjAyZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOC4uYjYyMDE1ODM4MWI0YzBh
YjQ3MjcyYmE0MTc2MWM1NTdkMWViMDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBA
IC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENHQ29udGV4
dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCitzdGF0aWMgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0Fs
cGhhKQogewogICAgIEhCSVRNQVAgYml0bWFwID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oR2V0Q3Vy
cmVudE9iamVjdChoZGMsIE9CSl9CSVRNQVApKTsKIApAQCAtNTUsMTIgKzU1LDExIEBAIHN0YXRp
YyBDR0NvbnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCAoaGFzQWxwaGEgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4
ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsRGF0YS5i
eXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVy
KCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwg
OCwgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcElu
Zm8pKTsKIAogICAgIC8vIEZsaXAgY29vcmRzCi0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNv
bnRleHQsIDAsIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxl
Q1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5n
ZXQoKSwgMCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVD
VE0oY29udGV4dC5nZXQoKSwgMSwgLTEpOwogICAgIAogICAgIC8vIFB1dCB0aGUgSERDIEluIGFk
dmFuY2VkIG1vZGUgc28gaXQgd2lsbCBob25vciBhZmZpbmUgdHJhbnNmb3Jtcy4KICAgICBTZXRH
cmFwaGljc01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
ZXZpY2UuY3BwCmluZGV4IDZhMTYwM2QyMWI2OGVjNWJlMjhmZDA2OTU5N2NkZDIyY2FmMjNkNmMu
LjhlNWIzZTQyMjE0NzdlOTIxZDc4MjI1MTk0NTI2MmY5ZTBhOGU4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgTUdEZXZpY2VDbGFz
cyBkZXZpY2VDbGFzcygpCiBTdHJpbmcgZGV2aWNlTmFtZSgpCiB7CiAjaWYgVEFSR0VUX09TX0lP
UwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZXZpY2VOYW1lOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBkZXZpY2VOYW1lOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsK
LSAgICAgICAgZGV2aWNlTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihNR0NvcHlBbnN3
ZXIoa01HUURldmljZU5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZGV2aWNlTmFtZS5nZXQoKSA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNl
TmFtZSwgbnVsbHB0cikpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZGV2aWNlTmFtZTsKKyAgICBy
ZXR1cm4gZGV2aWNlTmFtZS5nZXQoKS5nZXQoKTsKICNlbHNlCiAgICAgcmV0dXJuICJpUGhvbmUi
X3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFn
SW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
CmluZGV4IGM2NGE0YmNhMWFkOGU3YjcyYWYyMjYwM2ZiMWNjMDFmOTc2OWY2MjAuLjczNTkzM2Yx
NzIwODViOWU2NjkzYWQ0NGIyYWYxNjBiMzQwYzRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgZGVsZXRl
RHJhZ0ltYWdlKERyYWdJbWFnZVJlZikKIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lz
dGVtRm9udChDR0Zsb2F0IHNpemUpCiB7CiAgICAgVUlGb250ICpmb250ID0gW1BBTDo6Z2V0VUlG
b250Q2xhc3MoKSBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOwotICAgIHJldHVybiBGb250Q2FzY2Fk
ZShGb250UGxhdGZvcm1EYXRhKENURm9udENyZWF0ZVdpdGhOYW1lKChDRlN0cmluZ1JlZilmb250
LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSwgZm9udC5wb2ludFNpemUpKTsKKyAgICBy
ZXR1cm4gRm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YShhZG9wdENGKENURm9udENyZWF0ZVdp
dGhOYW1lKChDRlN0cmluZ1JlZilmb250LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSks
IGZvbnQucG9pbnRTaXplKSk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKEVsZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
VGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIEZvbnRSZW5kZXJpbmdNb2RlLCBmbG9h
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bQppbmRleCA5MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJlYzQyMWEzNDJkMzZiZjQxLi5hNjA4OGY3
ZjZlODBkYWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0xMjQsMTggKzEyNCwzOCBA
QCB0eXBlZGVmIGVudW0gewogICAgIElnbm9yZUF1dG9yZWxlYXNlUG9vbAogfSBBdXRvcmVsZWFz
ZVBvb2xPcGVyYXRpb247CiAKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZTsKLXN0YXRpYyBDRk11dGFibGVBcnJheVJlZiBXZWJUaHJlYWRSZWxlYXNlT2Jq
QXJyYXk7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4mIHdlYlRocmVhZFJl
bGVhc2VTb3VyY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZS
dW5Mb29wU291cmNlUmVmPj4gd2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKKyAgICByZXR1cm4gd2Vi
VGhyZWFkUmVsZWFzZVNvdXJjZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVBcnJh
eVJlZj4mIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4+IHdlYlRocmVhZFJlbGVhc2VPYmpB
cnJheTsKKyAgICByZXR1cm4gd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworfQogCiBzdGF0aWMg
TG9jayBkZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0
aW9uOwotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7
CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgZGVsZWdhdGVTb3VyY2Uo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNl
UmVmPj4gZGVsZWdhdGVTb3VyY2U7CisgICAgcmV0dXJuIGRlbGVnYXRlU291cmNlOworfQorCiBz
dGF0aWMgQk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcK
IHN0YXRpYyBCT09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CiAjZW5kaWYKIAotc3RhdGljIENG
UnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworc3RhdGlj
IFJldGFpblB0cjxDRlJ1bkxvb3BPYnNlcnZlclJlZj4mIG1haW5SdW5Mb29wQXV0b1VubG9ja09i
c2VydmVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9v
cE9ic2VydmVyUmVmPj4gbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7CisgICAgcmV0dXJu
IG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworfQorCiBzdGF0aWMgQk9PTCBtYWluVGhy
ZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2s7CiAKIHN0YXRpYyBMb2NrIHN0YXJ0dXBMb2NrOwpAQCAt
MjM0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRy
PE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUKGRlbGVnYXRlU291cmNlKTsKKyAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UoKSk7
CiAgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAogICAgIGRlbGVnYXRlSW52b2NhdGlvbigpID0g
V1RGTW92ZShpbnZvY2F0aW9uKTsKQEAgLTI1NSw3ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCBTZW5k
RGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAg
ICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29t
bW9uVk0oKSk7CiAgICAgICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIAotICAgICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoZGVsZWdhdGVTb3VyY2UpOworICAgICAgICBDRlJ1bkxvb3BTb3VyY2VT
aWduYWwoZGVsZWdhdGVTb3VyY2UoKS5nZXQoKSk7CiAgICAgICAgIENGUnVuTG9vcFdha2VVcChD
RlJ1bkxvb3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7
CkBAIC0yOTYsNyArMzE2LDcgQEAgdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQodm9pZChe
ZGVsZWdhdGVCbG9jaykoKSkKIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikK
IHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSk7CisgICAgQVNTRVJUKHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKSk7
CiAKICNpZiBMT0dfUkVMRUFTRVMKICAgICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbbWFpbiB0aHJl
YWRdOiAlQCIsIG9iaik7CkBAIC0zMDQsMTAgKzMyNCwxMCBAQCB2b2lkIFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZShpZCBvYmopCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYlRocmVh
ZFJlbGVhc2VMb2NrKTsKIAotICAgIGlmIChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPT0gbmls
KQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKTsKLSAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5LCBvYmopOwotICAgIENGUnVuTG9vcFNv
dXJjZVNpZ25hbChXZWJUaHJlYWRSZWxlYXNlU291cmNlKTsKKyAgICBpZiAod2ViVGhyZWFkUmVs
ZWFzZU9iakFycmF5KCkgPT0gbmlsKQorICAgICAgICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXko
KSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVs
dCwgMCwgbnVsbHB0cikpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZSh3ZWJUaHJlYWRSZWxlYXNl
T2JqQXJyYXkoKS5nZXQoKSwgb2JqKTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwod2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxvb3BXYWtlVXAod2ViVGhyZWFk
UnVuTG9vcCk7CiB9CiAKQEAgLTQwNCw5ICs0MjQsOSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJU
aHJlYWRSZWxlYXNlU291cmNlKHZvaWQqKQogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJl
Zj4gb2JqZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhy
ZWFkUmVsZWFzZUxvY2spOwotICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJl
bGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsK
LSAgICAgICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFy
cmF5KTsKKyAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSkpIHsKKyAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVh
dGVNdXRhYmxlQ29weShudWxscHRyLCAwLCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQo
KSkpOworICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNl
T2JqQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3Myw3ICs0OTMsNyBA
QCBzdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYs
IENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKgogICAgICAgICByZXR1cm47CiAKICAgICBtYWluVGhy
ZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2sgPSBOTzsKLSAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZl
cihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIAogICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIH0KQEAg
LTQ4NCw3ICs1MDQsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCkKIAog
ICAgIGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBtYWluVGhyZWFkSGFzUGVu
ZGluZ0F1dG9VbmxvY2sgPSBZRVM7Ci0gICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7ICAgIAorICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxv
b3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogICAgIH0KQEAgLTU1NiwxMiAr
NTc2LDEyIEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5M
b29wRW5hYmxlTmVzdGVkRnJvbU1haW5UaHJlYWQoKQogewotICAgIENGUnVuTG9vcFJlbW92ZU9i
c2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2
ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIo
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdl
dCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiBzdGF0aWMgdm9pZCBfV2ViUnVuTG9v
cERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsgCisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQo
KQpAQCAtNjQyLDggKzY2Miw4IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAg
ICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9j
a09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgQ0ZSdW5M
b29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKLSAgICBXZWJUaHJlYWRSZWxlYXNlU291
cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNvdXJjZUNv
bnRleHQpOwotICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCBXZWJUaHJl
YWRSZWxlYXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIHdlYlRocmVhZFJl
bGVhc2VTb3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0x
LCAmUmVsZWFzZVNvdXJjZUNvbnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2Uod2ViVGhy
ZWFkUnVuTG9vcCwgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wRGVm
YXVsdE1vZGUpOwogCiAgICAgcGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQgPSBfQ0ZS
dW5Mb29wU2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQoWUVTKTsKIApAQCAtNjc5
LDE2ICs2OTksMTYgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogCiAgICAgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFu
ZGxlRGVsZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29wU291cmNl
Q3JlYXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOworICAgIGRlbGVnYXRl
U291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVs
ZWdhdGVTb3VyY2VDb250ZXh0KSk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRl
IGNhbGxiYWNrcyB3aGlsZSBzY3JvbGxpbmcsIGJ1dCB0aGVyZSBtaWdodCBiZQogICAgIC8vIG9u
ZSBvdXRzdGFuZGluZyB3aGVuIHdlIHN0YXJ0LiAgQWRkIHRoZSBzb3VyY2UgZm9yIGFsbCBjb21t
b24gcnVuIGxvb3AKICAgICAvLyBtb2RlcyBzbyB3ZSBkb24ndCBibG9jayB0aGUgd2ViIHRocmVh
ZCB3aGlsZSBzY3JvbGxpbmcuCi0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVn
YXRlU291cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFNvdXJj
ZShydW5Mb29wLCBkZWxlZ2F0ZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OwogCiAgICAgc0FzeW5jRGVsZWdhdGVzKCkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKIAotICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyID0gQ0ZSdW5M
b29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZS
dW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxwdHIp
OworICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkgPSBhZG9wdENGKENGUnVuTG9v
cE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVu
TG9vcEV4aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRyKSk7
CiAKICAgICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAgICBwdGhyZWFkX2F0dHJfaW5pdCgmdGF0
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkUnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHAKaW5kZXggZWZhODQ2NDViYTM5OGE0YmUxYmNkZTJkZWMzZDAxMDhhNDM5NzU1
My4uY2E5OGE4ZmNiNDk3NjI1MWEyY2MxOWJkY2YyNzFmN2Y2NDk2ZTMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCkBA
IC0xMTIsMTQgKzExMiwxOSBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgV1RGOjpWZWN0b3I8V2Vi
VGhyZWFkQmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwogCiBzdGF0aWMgTG9jayBydW5RdWV1ZU11
dGV4Owotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBydW5Tb3VyY2U7CiBzdGF0aWMgV2ViVGhy
ZWFkUnVuUXVldWUqIHJ1blF1ZXVlOwogCitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJj
ZVJlZj4mIHJ1blNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBydW5Tb3VyY2U7CisgICAgcmV0dXJuIHJ1blNvdXJjZTsK
K30KKwogc3RhdGljIHZvaWQgSGFuZGxlUnVuU291cmNlKHZvaWQgKmluZm8pCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGluZm8pOwogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAg
QVNTRVJUKHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsKICAgICBBU1NFUlQo
cnVuUXVldWUpOwogCiAgICAgV2ViVGhyZWFkUnVuUXVldWUgcXVldWVDb3B5OwpAQCAtMTQwLDcg
KzE0NSw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwg
Ym9vbCBzeW5jaHJvbm91cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChy
dW5Tb3VyY2UpOworICAgIEFTU0VSVChydW5Tb3VyY2UoKSk7CiAgICAgQVNTRVJUKHJ1blF1ZXVl
KTsKIAogICAgIFdlYlRocmVhZEJsb2NrU3RhdGUqIHN0YXRlID0gMDsKQEAgLTE1Miw3ICsxNTcs
NyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9jaykodm9pZCksIGJvb2wg
c3luY2hyb25vdXMpCiAgICAgICAgIHJ1blF1ZXVlLT5hcHBlbmQoV2ViVGhyZWFkQmxvY2soYmxv
Y2ssIHN0YXRlKSk7CiAgICAgfQogCi0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJj
ZSk7CisgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSgpLmdldCgpKTsKICAgICBD
RlJ1bkxvb3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKIAogICAgIGlmIChzeW5jaHJvbm91
cykgewpAQCAtMTY5LDE1ICsxNzQsMTUgQEAgdm9pZCBXZWJUaHJlYWRSdW4odm9pZCAoXmJsb2Nr
KSh2b2lkKSkKIHZvaWQgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCkKIHsKICAgICBBU1NFUlQoIXJ1
blF1ZXVlKTsKLSAgICBBU1NFUlQoIXJ1blNvdXJjZSk7CisgICAgQVNTRVJUKCFydW5Tb3VyY2Uo
KSk7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25j
ZSgmcHJlZCwgXnsKICAgICAgICAgcnVuUXVldWUgPSBuZXcgV2ViVGhyZWFkUnVuUXVldWU7CiAK
LSAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250ZXh0ID0gezAsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEhhbmRsZVJ1blNv
dXJjZX07Ci0gICAgICAgIHJ1blNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAt
MSwgJnJ1blNvdXJjZUNvbnRleHQpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoV2ViVGhy
ZWFkUnVuTG9vcCgpLCBydW5Tb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAg
IENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgSGFuZGxlUnVuU291cmNlIH07CisgICAgICAgIHJ1blNvdXJjZSgpID0gYWRvcHRDRihD
RlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZydW5Tb3VyY2VDb250ZXh0KSk7Cisg
ICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29wKCksIHJ1blNvdXJjZSgp
LmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggOGYzN2Rk
NzFmMDc3NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0NjZiYS4uYTQ3ZTM0M2Y0ZGNhMDM2ZmVhZWZk
M2MxMGQ1ZjI0MGUzNGI5ZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Qb3dlck9ic2VydmVyTWFjLmNwcApAQCAtMzUsNyArMzUsNyBAQCBQb3dlck9ic2VydmVyOjpQ
b3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCiAgICAg
LCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxwdHIp
CiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCi0gICAgLCBtX2Rpc3BhdGNoUXVldWUoZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkK
KyAgICAsIG1fZGlzcGF0Y2hRdWV1ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiY29tLmFwcGxlLldlYktpdC5Qb3dlck9ic2VydmVyIiwgMCkpKQogewogICAgIG1fcG93ZXJD
b25uZWN0aW9uID0gSU9SZWdpc3RlckZvclN5c3RlbVBvd2VyKHRoaXMsICZtX25vdGlmaWNhdGlv
blBvcnQsIFtdKHZvaWQqIGNvbnRleHQsIGlvX3NlcnZpY2VfdCBzZXJ2aWNlLCB1aW50MzJfdCBt
ZXNzYWdlVHlwZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50KSB7CiAgICAgICAgIHN0YXRpY19jYXN0
PFBvd2VyT2JzZXJ2ZXIqPihjb250ZXh0KS0+ZGlkUmVjZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0
aW9uKHNlcnZpY2UsIG1lc3NhZ2VUeXBlLCBtZXNzYWdlQXJndW1lbnQpOwpAQCAtNDMsNyArNDMs
NyBAQCBQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IHBvd2VyT25IYW5kZXIpCiAgICAgaWYgKCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNh
dGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlz
cGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiB9
CiAKIFBvd2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKCkKQEAgLTUxLDggKzUxLDYgQEAgUG93
ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQogICAgIGlmICghbV9wb3dlckNvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKLQogICAgIElPRGVyZWdpc3RlckZvclN5c3RlbVBvd2VyKCZtX25vdGlmaWVyUmVmZXJlbmNl
KTsKICAgICBJT1NlcnZpY2VDbG9zZShtX3Bvd2VyQ29ubmVjdGlvbik7CiAgICAgSU9Ob3RpZmlj
YXRpb25Qb3J0RGVzdHJveShtX25vdGlmaWNhdGlvblBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKaW5kZXggMTU4NmQ3YmI3YWYyNTkzMTE2
NmQyNmVjNWRmYzQ2OTNhOGY2Mjg5YS4uYTgwYjYyMDc1YzAxZGMxNDlmODMxMWM3NDk0YzgxMzI5
YWM2MDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2Jz
ZXJ2ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIu
aD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0
aW9uOwogICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAg
aW9fb2JqZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rpc3Bh
dGNoUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAwYjc3MGNmYjEzM2YzYThhNGU3
ZGI2ZGI4YzgwZmY2MjVjMjM5MjQ5Li5kM2YxYWM3MjliNWI1Y2RlNjNkYjQ0YzAwNTI3YzA5ODYz
YzgyYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogCiAjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDx3
dGYvT1NPYmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIg
KkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIq
IEF1ZGlvQ29udmVydGVyUmVmOwpAQCAtNjMsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUpOwogICAgIE9TU3Rh
dHVzIHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZl
ckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOwogCi0gICAgZGlzcGF0Y2hf
cXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVGltZSBtX2xvd1dhdGVyVGlt
ZSB7IGtDTVRpbWVJbnZhbGlkIH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4g
bV9vdXRwdXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KaW5kZXggYzc5YTQ3OTYyNDAyYmIxMzI5MzNjODdiZmU5OGQyMzdmNTZl
ZTA2OS4uY2NjOGRkM2E5ZDRmMGZkYTg4OTMzZjBmZDFlMjgxZGUzYWRlOTdlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTUyLDE0ICs1
MiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCi0gICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSkgfQogICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9X
X1dBVEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQogewogfQogCiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQogewotICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBpZiAobV9jb252ZXJ0ZXIp
IHsKICAgICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKICAgICAgICAg
bV9jb252ZXJ0ZXIgPSBudWxscHRyOwpAQCAtODksNyArODgsNyBAQCBib29sIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNr
IGNhbGxiYQogCiB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsK
LSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRj
aF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgcHJvY2Vzc1Nh
bXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CiAgICAgICAgIGF1
dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVl
LmdldCgpKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
IGZhaWxlZCAlZCIsIGVycm9yKTsKQEAgLTUxMCw3ICs1MDksNyBAQCB2b2lkIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBi
dWZmZXIpCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZm
ZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJp
YWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1
ZXVlLmdldCgpLCBeewogICAgICAgICBpZiAobV9pc0VuY29kaW5nKQogICAgICAgICAgICAgcHJv
Y2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggYzA1ODM3NDcwYjFjODI3MmRlN2M4OWM0
MTRiYTE4YTBmMGU5ZTljZC4uMzc2YTVjZmJlYWIxYTE0NmYyOTBiMmNiMjQzYzVjMTMzMmRkNzRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5j
bHVkZSA8VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZjsKQEAgLTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRp
YyB2b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0
YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKIAotICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3Bh
dGNoX3F1ZXVlX3Q+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBDTVZpZGVvQ29kZWNUeXBl
IG1fb3V0cHV0Q29kZWNUeXBlIHsga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCB9OwogCiAgICAgUmV0
YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGUwM2U3NzBmMGNh
YTliZGM2YjE2ZDVhYzc0YmIzNzg2ZGY4ZjRhZDcuLjE3Njc5OTc0MWJkNGZiYjk5MDk5YWQ4NDM0
ZWY2YzJmNDZiOGFiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tCkBAIC00OCwxNCArNDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUK
IH0KIAogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCi0gICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSkgfQogICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQogewog
fQogCiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsK
ICAgICBpZiAobV92dFNlc3Npb24pIHsKICAgICAgICAgVlRDb21wcmVzc2lvblNlc3Npb25JbnZh
bGlkYXRlKG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICAgICAgbV92dFNlc3Npb24gPSBudWxscHRy
OwpAQCAtODMsNyArODIsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0
Qml0c1BlclNlY29uZCh1bnNpZ25lZCBiaXRSYXRlKQogCiB2b2lkIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQo
KSwgXnsKICAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVG
cmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CiAKQEAgLTE2NSw3ICsxNjQsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAK
IHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgp
LCBeewogICAgICAgICBpZiAoIW1faXNFbmNvZGluZykKICAgICAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5k
ZXggM2NiZThjZWE2ODVhNTQ1ODgyMGRmMjg4YmRmNmNhNmRlYWIyM2I5Yi4uZjg2MTlmNmExOTE4
YWYwNjBlMmEwNWUwNjMxODJmNTRlODZhMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9TZXNzaW9uOwpAQCAtNzcsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0
c0xpc3RlbmVyPiBtX2xpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVkF1ZGlvU2Vzc2lvbj4gbV9h
dWRpb1Nlc3Npb247CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV91cGRhdGVEZXZpY2VT
dGF0ZVF1ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0
ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsK
ICAgICBMb2NrIG1fbG9jazsKICAgICBBdWRpb1Nlc3Npb25TdGF0ZSBtX2F1ZGlvU2Vzc2lvblN0
YXRlIHsgQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggYjFiNDdhZjI5
YzRhNDQ1MmZjODEwMDNiYTM1ODZkOTAyZTg2YWU5Zi4uZWY5YmUxMDZiYmQ0ZWExNjg0NGVlNzA5
YzYwYTI1OGNjNjJjZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KQEAgLTg3LDkgKzg3LDkgQEAgQVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlTWFuYWdlciYgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG8KIH0KIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcigpCi0gICAgOiBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgIDogbV9kaXNwYXRjaFF1
ZXVlKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0
LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpKSkKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0
cihbdGhpcywgbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKV0geworICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spXSB7CiAgICAgICAgIGNyZWF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgIH0pLmdl
dCgpKTsKIH0KQEAgLTExMyw3ICsxMTMsNiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNyZWF0ZUF1ZGlvU2Vzc2lvbigpCiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsK
LSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7CiAgICAgW21fbGlzdGVuZXIg
aW52YWxpZGF0ZV07CiAgICAgbV9saXN0ZW5lciA9IG51bGxwdHI7CiB9CkBAIC0xNTcsMTMgKzE1
NiwxMyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRp
b1Nlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9
IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfc3luYyhtX2Rp
c3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10geworICAgICAgICBkaXNwYXRjaF9zeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAgICAgICAg
ICBhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgICAgICB9KS5nZXQoKSk7CiAgICAgfQogCiAg
ICAgVmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gbmV3QXVkaW9EZXZpY2VzOwot
ICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoWyZdIHsKKyAg
ICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFsmXSB7
CiAgICAgICAgIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZXMoKTsKICAgICB9KS5nZXQoKSk7CiAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZN
b3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwpAQCAtMTc0LDEyICsxNzMsMTIgQEAgdm9pZCBBVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2kKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25T
dGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vz
c2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2
YXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgeworICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbmV3QXVkaW9E
ZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgICAgICBj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQobWFrZUJsb2NrUHRyKFt0
aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgbmV3QXVkaW9EZXZpY2VzID0g
V1RGTW92ZShuZXdBdWRpb0RldmljZXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHNldEF1
ZGlvQ2FwdHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKQEAgLTI1NCw3ICsy
NTMsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVB
bGxEZXZpY2VzUXVlcnkoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9hdWRpb1Nlc3Np
b25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0aXZlKSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7
CiAgICAgICAgICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSAhPSBBdWRpb1Nlc3Npb25TdGF0
ZTo6Tm90TmVlZGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggOGIxOGZmMTI5MjU3ODkzNzkxNWVh
YTZhNDk5ODM3OTE3MDUxODMwOC4uNzhlYzA2Yjc0ZTQ3MmJkNjM4YTlmNWU5MzcwYmYyZjZiOGY5
YjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKIH07CiAK
ICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKLVdFQkNPUkVfRVhQ
T1JUIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENG
U3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0g
V1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
ciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxvcHQpOwogI2Vu
ZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IGEzNzg1MGQ3NmViZGU4ODRiMjJkODkwMGRlZTM2
Zjg0Yzg0NTE2YWIuLmNlZTVkN2VhY2JjYjYyMTBiMjI5ZGNlYWM4N2I0NmY0ZmJkOGVjZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcApAQCAtNzIsMTcgKzcyLDE2IEBAIGJvb2wgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQorUmV0YWluUHRyPENG
VVJMQXV0aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNvcmVDaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQg
ZG9lcyB0aGF0LgogCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlh
bCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkp
OwotICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7Ci0g
ICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0
ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVu
Z2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2Uo
KS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bv
c2VkQ3JlZGVudGlhbCgpKTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IGNyZWF0ZUNGKGNv
cmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgIHJldHVybiBhZG9wdENGKENGVVJM
QXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwu
Z2V0KCksIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3Io
KSkpOwogfQogCi1DRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYg
Y29yZUNyZWRlbnRpYWwpCitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVhdGVDRihj
b25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKIHsKICAgICBDRlVSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSA9IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7
CiAgICAgc3dpdGNoIChjb3JlQ3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpKSB7CkBAIC05OCwxMCAr
OTcsMTAgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNv
cmVDcmVkZW50aWFsKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2Vy
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIHBlcnNpc3RlbmNlKSk7CiB9CiAKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNy
ZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQorUmV0YWluUHRyPENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmPiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVT
cGFjZSkKIHsKICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9
IGtDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CiAgICAgc3dpdGNoIChjb3JlU3BhY2Uu
c2VydmVyVHlwZSgpKSB7CkBAIC0xNjUsNyArMTY0LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25T
cGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNv
cmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIHNjaGVtZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxQcm90ZWN0aW9u
U3BhY2VDcmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBj
b3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBzY2hlbWUpKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVu
dGlhbFJlZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCmluZGV4IDg5YTkzNTI4OWFkNzlkNDBiMzdk
ZDIwM2E4MGU5ZThkZjcxMWIyNmUuLjcwZjUwMjA1ZWIyYmRhMDgxNmJiZDA4OGM0NmNkYWFiOWM0
NTMyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKIAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxQcml2Lmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5n
ZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlv
blNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKQEAgLTM4LDkgKzM5LDkgQEAgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogCi1DRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKLUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBD
cmVkZW50aWFsJik7Ci1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90
ZWN0aW9uU3BhY2UmKTsKK1JldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNyZWF0ZUNG
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CitSZXRhaW5QdHI8Q0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogQ3JlZGVu
dGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJlZik7CiBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCmluZGV4IDZlYTMw
MTIzOTU2ZWRiZDMwOWQ2Y2UwZWFmZmU3ODNkNzM4ZTZkZmMuLjFmYTg5YmFlMWRlMWNiMDc2M2Uw
N2M2MWE0MThhMzFjY2VmNTViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCkBAIC01OCwxMCAr
NTgsMTAgQEAgYm9vbCBjZXJ0aWZpY2F0ZXNNYXRjaChTZWNUcnVzdFJlZiB0cnVzdDEsIFNlY1Ry
dXN0UmVmIHRydXN0MikKIFJldGFpblB0cjxDRkFycmF5UmVmPiBDZXJ0aWZpY2F0ZUluZm86OmNl
cnRpZmljYXRlQ2hhaW5Gcm9tU2VjVHJ1c3QoU2VjVHJ1c3RSZWYgdHJ1c3QpCiB7CiAgICAgYXV0
byBjb3VudCA9IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVDb3VudCh0cnVzdCk7Ci0gICAgYXV0byBj
ZXJ0aWZpY2F0ZUNoYWluID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpOworICAgIGF1dG8gY2VydGlmaWNhdGVDaGFpbiA9IGFkb3B0Q0YoQ0ZB
cnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAg
ICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoY2VydGlmaWNhdGVDaGFpbiwgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgo
dHJ1c3QsIGkpKTsKLSAgICByZXR1cm4gYWRvcHRDRigoQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNo
YWluKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNlcnRpZmljYXRlQ2hhaW4uZ2V0KCks
IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRydXN0LCBpKSk7CisgICAgcmV0dXJuIGNl
cnRpZmljYXRlQ2hhaW47CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKaW5k
ZXggMDc1MmNhMTA1NTJmZGIxYTdjMzU3NTkzMmEyMzJhYWViZWRjNWQ2MC4uMGEwMzM4NmQ5M2M1
YzEyZTY2MDE2NmZlMjkwNmI4MTE0YjVkZTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3Bw
CkBAIC0zNiwxNiArMzYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotc3RhdGlj
IGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNw
YWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKK3N0YXRpYyBpbmxp
bmUgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY29weUNyZWRlbnRpYWxGcm9tUHJvdGVj
dGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKIHsKICAg
ICBhdXRvIHN0b3JhZ2UgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ29w
eURlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2UuZ2V0KCksIHByb3Rl
Y3Rpb25TcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNv
cHlEZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlLmdldCgpLCBwcm90
ZWN0aW9uU3BhY2UpKTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJv
bVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
KQogewotICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3Rl
Y3Rpb25TcGFjZSkpOwotICAgIGF1dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVu
dGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlQ0YuZ2V0KCkpKTsKKyAgICBh
dXRvIHByb3RlY3Rpb25TcGFjZUNGID0gY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKTsKKyAgICBh
dXRvIGNyZWRlbnRpYWxDRiA9IGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90
ZWN0aW9uU3BhY2VDRi5nZXQoKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4IDVlYTQ0OGZjZTc3M2UwMzk0ZDc0ZmQ3YjFmOWMzNzYz
NjljZDlmODMuLmJiODNkZmY0YTI5YmZkOTdmYjUwNWE0OTNiODk0YjE4ZTExNmY1ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAKQEAgLTYzLDggKzYzLDggQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQog
CiAgICAgICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRv
IHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgogICAgICAgICAgICAgICAgIENG
UnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51
bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtfTsKLSAgICAgICAgICAgICAg
ICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUo
MCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShsb2FkZXJS
dW5Mb29wT2JqZWN0LCBib2d1c1NvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVh
dGUoMCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobG9h
ZGVyUnVuTG9vcE9iamVjdCwgYm9ndXNTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CiAKICAgICAgICAgICAgICAgICBsb2FkZXJSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90
aWZ5T25lKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRX
aW4uY3BwCmluZGV4IDVkN2Q3OTYxNDQ2NWZjYWI1YmQ2YjY0MThlMDYwZjY4ZWIwOTRhNGEuLmE1
MWJkYjhlMzI1YjMzNzZkMTRjNmY0ZjVlODA3ZDM4MWRiYjhkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCkBAIC03OSwxNiArNzksMTYgQEAgc3RhdGljIENGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgdG9DRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9s
aWN5KEhUVFBDb28KICAgICByZXR1cm4gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFs
d2F5czsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBv
bGljeT4gY29va2llQWNjZXB0UG9saWN5KQorUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAg
ICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNl
c3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNb
XSA9IHsga0NGQm9vbGVhblRydWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc2Vzc2lvblByb3Bl
cnRpZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvblBy
b3BlcnR5S2V5cywgc2Vzc2lvblByb3BlcnR5VmFsdWVzLCBzaXplb2Yoc2Vzc2lvblByb3BlcnR5
S2V5cykgLyBzaXplb2YoKnNlc3Npb25Qcm9wZXJ0eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX0NGVVJMU3RvcmFnZVNlc3Npb25D
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRpZmllciwgc2Vzc2lvblByb3BlcnRpZXMp
OworICAgIGF1dG8gc2Vzc2lvblByb3BlcnRpZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uUHJvcGVydHlLZXlzLCBzZXNzaW9uUHJvcGVy
dHlWYWx1ZXMsIHNpemVvZihzZXNzaW9uUHJvcGVydHlLZXlzKSAvIHNpemVvZigqc2Vzc2lvblBy
b3BlcnR5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRD
RihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZGVudGlm
aWVyLCBzZXNzaW9uUHJvcGVydGllcy5nZXQoKSkpOwogICAgIAogICAgIC8vIFRoZSBwcml2YXRl
IHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBk
ZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAgICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBp
dCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkgc3RvcmFnZS4KLSAgICBhdXRvIGNhY2hlID0gYWRv
cHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dG9yYWdlU2Vzc2lvbikpOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgp
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7CiAgICAg
YXV0byBkZWZhdWx0Q2FjaGUgPSBhZG9wdENGKENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBDRlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlLmdldCgpKSk7CkBAIC0xMDEsNyArMTAxLDcg
QEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZT
dHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAgICAgY2ZDb29raWVBY2NlcHRQb2xpY3kg
PSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29raWVT
dG9yYWdlKTsKICAgICB9CiAKLSAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVS
TFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3Rv
cmFnZVNlc3Npb24pKTsKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFn
ZVNlc3Npb24uZ2V0KCkpKTsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0
UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNmQ29va2llQWNjZXB0UG9saWN5KTsKICAgICAK
ICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCmluZGV4IGNi
MDhiOTM3MzUwOWE1MDA3OTI3NDY4YzA3NmNmODJlNjVkNWIwN2UuLjg3MzdjNGM3MTRmNjVkZTRj
MDQ2ZDU5MTcwNjIxYTlhYTVlNzA2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBQcm90ZWN0aW9uU3BhY2U6OnJl
Y2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY+IGNmU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKCp0aGlzKSk7Cisg
ICAgYXV0byBjZlNwYWNlID0gY3JlYXRlQ0YoKnRoaXMpOwogICAgIHJldHVybiBjZlNwYWNlICYm
IENGVVJMUHJvdGVjdGlvblNwYWNlUmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoY2ZTcGFjZS5n
ZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDJkNGVmZjUwNWNjNDEzYTBjZDY1
MjNjYjA5YzA0NGM0YjQ5ZTg1NWQuLjZiZjNjYzIwNDA0MGI4YWZlOTI0YzdmOWY1NTEzZDdhNWMy
YjE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50
aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0
b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkt
PmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNyZWRlbnRpYWwpOwog
ICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0
aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC00MzYsMTEgKzQzNiwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgICAgICBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0
UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYgKGQtPm1fY29ubmVjdGlv
bikgewotICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50
aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CisgICAgICAgICAgICBhdXRv
IGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpOwogICAgICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVu
dGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVu
dGlhbCkpOworICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNyZWRlbnRpYWwp
OwogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkpOwogICAgIH0KIApAQCAtNTU5LDggKzU1OSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
CiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBw
cmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybSB9OwotICAgICAgICAgICAgQ0ZSdW5M
b29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZj
dHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBib2d1c1NvdXJj
ZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2Ug
PSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLmdldCgpLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2VtLnNpZ25hbCgpOwogCiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IDFm
ZTY5MDI0YmNiZmI4ZDc3YmFiOThhOTFhM2NhODE1OWZiYTRlMDMuLjNjODJiYzNiNGM2ODU5Yjhi
YTk0YTMyYmU5YTQyNmE4Mzk5NmVjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcApAQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgZ2V0UnVuTG9vcCgp
CiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBw
cmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybSB9OwotICAgICAgICAgICAgQ0ZSdW5M
b29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZj
dHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBib2d1c1NvdXJj
ZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2Ug
PSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLmdldCgpLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2VtLnNpZ25hbCgpOwogCiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggZjZlMWI5YjVkM2E1YmE3
YWUzNWE3NzkyM2Q1NmQ1M2VhZTMyNzE5OS4uYjdlZjViODc1ODRmZmJiNjZhZjdkOWExMTNmNDMw
NmQ5MTVhMTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTE2Nyw1MSArMTY3LDUxIEBA
IHN0YXRpYyBDRlVSTFJlZiBzaXRlRm9yQ29va2llcyhSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sCiAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVT
aXRlRGlzcG9zaXRpb246OlNhbWVTaXRlOgogICAgICAgICByZXR1cm4gdXJsOwogICAgIGNhc2Ug
UmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uOjpDcm9zc1NpdGU6Ci0gICAgICAg
IHN0YXRpYyBDRlVSTFJlZiBlbXB0eVVSTCA9IENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRy
LCBDRlNUUigiIiksIG51bGxwdHIpOwotICAgICAgICByZXR1cm4gZW1wdHlVUkw7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZVUkxSZWY+PiBlbXB0eVVSTCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKG51bGxwdHIsIENGU1RSKCIiKSwgbnVsbHB0cikp
OworICAgICAgICByZXR1cm4gZW1wdHlVUkwuZ2V0KCkuZ2V0KCk7CiAgICAgfQogfQogI2VuZGlm
CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiB7Ci0g
ICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3Q7CisgICAgUmV0YWluUHRyPENGTXV0
YWJsZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVhdGVDRlVSTCgpOwogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0
UGFydHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBkb3VibGUgdGltZW91dEludGVy
dmFsID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgPyBSZXNvdXJjZVJl
cXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJlc291cmNlUmVxdWVzdEJhc2U6OmRlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9jZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZS
ZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0
KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBh
cnR5Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5
KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7
Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QsIHRpbWVv
dXRJbnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3Qu
Z2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOworICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1l
b3V0SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVl
c3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGlj
eShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5n
ZXQoKSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0
YWJsZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xp
Y3koKSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAot
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1
ZXN0TWV0aG9kKGNmUmVxdWVzdC5nZXQoKSwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpKQotICAgICAgICBDRlVS
TFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhUVFAoY2ZSZXF1ZXN0LCB0cnVlLCB0cnVlKTsKKyAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkUGlwZWxpbmVIVFRQKGNmUmVxdWVzdC5nZXQoKSwg
dHJ1ZSwgdHJ1ZSk7CiAKICAgICBpZiAocmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QsIHRvUGxhdGZv
cm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRS
ZXF1ZXN0UHJpb3JpdHkoY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdFByaW9yaXR5
KHByaW9yaXR5KCkpKTsKIAogICAgICAgICAvLyBVc2VkIGJ5IFBMVCB0byBpZ25vcmUgdmVyeSBs
b3cgcHJpb3JpdHkgYmVhY29uIGFuZCBwaW5nIGxvYWRzLgogICAgICAgICBpZiAocHJpb3JpdHko
KSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUxvdykKLSAgICAgICAgICAgIF9DRlVSTFJl
cXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgQ0ZTVFIoIldLVmVyeUxvd0xvYWRQ
cmlvcml0eSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0
UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJXS1ZlcnlMb3dMb2FkUHJp
b3JpdHkiKSwga0NGQm9vbGVhblRydWUpOwogICAgIH0KIAotICAgIHNldEhlYWRlckZpZWxkcyhj
ZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7CisgICAgc2V0SGVhZGVyRmllbGRzKGNmUmVx
dWVzdC5nZXQoKSwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIENGVVJMUmVxdWVzdFNldFNo
b3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29raWVzKCkpOworICAgIENG
VVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdC5nZXQoKSwgYWxs
b3dDb29raWVzKCkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBfQ0ZVUkxSZXF1
ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RSKCJfa0NGSFRUUENvb2tpZVBv
bGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURp
c3Bvc2l0aW9uLCB1cmwuZ2V0KCkpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9w
ZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5
U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCB1
cmwuZ2V0KCkpKTsKIAogICAgIGludCBpc1RvcFNpdGUgPSBtX2lzVG9wU2l0ZTsKICAgICBSZXRh
aW5QdHI8Q0ZOdW1iZXJSZWY+IGlzVG9wU2l0ZUNGID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShu
dWxscHRyLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaXNUb3BTaXRlKSk7Ci0gICAgX0NGVVJMUmVxdWVz
dFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBDRlNUUigiX2tDRkhUVFBDb29raWVQb2xp
Y3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBpc1RvcFNpdGVDRi5nZXQoKSk7CisgICAgX0NGVVJMUmVx
dWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiX2tDRkhUVFBD
b29raWVQb2xpY3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBpc1RvcFNpdGVDRi5nZXQoKSk7CiAjZW5k
aWYKIAogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKQEAgLTIyMiw1MSArMjIyLDUxIEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgICAg
IGlmIChlbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB2b2lkKj4oZW5jb2RpbmcpKTsKICAgICB9Ci0gICAgc2V0Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNmUmVxdWVzdCwgZW5jb2RpbmdGYWxsYmFja3Mu
Z2V0KCkpOworICAgIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShj
ZlJlcXVlc3QuZ2V0KCksIGVuY29kaW5nRmFsbGJhY2tzLmdldCgpKTsKIAogI2lmIEVOQUJMRShD
QUNIRV9QQVJUSVRJT05JTkcpCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGNhY2hlUGFydGl0aW9u
KCk7CiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkp
IHsKICAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gcGFydGl0aW9uLnV0ZjgoKTsKICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHV0ZjhT
dHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJl
cXVlc3QsIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwor
ICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCks
IF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0K
ICNlbmRpZgogCi0gICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7CisgICAgbV9j
ZlJlcXVlc3QgPSBXVEZNb3ZlKGNmUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogewotICAgIENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWYgY2ZSZXF1ZXN0OworICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBjZlJl
cXVlc3Q7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFJlc291cmNlUmVxdWVzdDo6
dXJsKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlG
b3JDb29raWVzID0gUmVzb3VyY2VSZXF1ZXN0OjpmaXJzdFBhcnR5Rm9yQ29va2llcygpLmNyZWF0
ZUNGVVJMKCk7CiAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCA9IFJlc291cmNlUmVxdWVzdEJh
c2U6OnRpbWVvdXRJbnRlcnZhbCgpID8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVy
dmFsKCkgOiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CiAg
ICAgaWYgKG1fY2ZSZXF1ZXN0KSB7Ci0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENy
ZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0VVJMKGNmUmVxdWVzdCwgdXJsLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QsIHRvUGxhdGZvcm1S
ZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOwotICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0aW1lb3V0SW50ZXJ2YWwpOworICAgICAgICBj
ZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZS
ZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QuZ2V0
KCksIHVybC5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChj
ZlJlcXVlc3QuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVz
dENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGlt
ZW91dEludGVydmFsKGNmUmVxdWVzdC5nZXQoKSwgdGltZW91dEludGVydmFsKTsKICAgICB9IGVs
c2UKLSAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwu
Z2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVv
dXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBjZlJlcXVl
c3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1Bs
YXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWws
IGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKSk7CiAKICAgICBGb3JtRGF0YSogZm9ybURhdGEg
PSBodHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkK
LSAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CisgICAg
ICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNmUmVxdWVzdC5nZXQoKSwgZm9ybURhdGEpOwogCi0g
ICAgaWYgKFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGJvZHlTdHJlYW0gPSBhZG9wdENGKENG
VVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0oY2ZSZXF1ZXN0KSkpIHsKKyAgICBp
ZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxS
ZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShjZlJlcXVlc3QuZ2V0KCkpKSkgewogICAg
ICAgICAvLyBGb3Igc3RyZWFtcywgcHJvdmlkZSBhIENvbnRlbnQtTGVuZ3RoIHRvIGF2b2lkIHVz
aW5nIGNodW5rZWQgZW5jb2RpbmcsIGFuZCB0byBnZXQgYWNjdXJhdGUgdG90YWwgbGVuZ3RoIGlu
IGNhbGxiYWNrcy4KICAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGVuZ3RoU3Ry
aW5nID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZWFkU3RyZWFtQ29weVBy
b3BlcnR5KGJvZHlTdHJlYW0uZ2V0KCksIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1l
KCkpKSkpIHsKLSAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVl
KGNmUmVxdWVzdCwgQ0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxlbmd0aFN0cmluZy5nZXQoKSk7
CisgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShjZlJlcXVl
c3QuZ2V0KCksIENGU1RSKCJDb250ZW50LUxlbmd0aCIpLCBsZW5ndGhTdHJpbmcuZ2V0KCkpOwog
ICAgICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2UgcmVxdWVzdCBpcyBhbHJlYWR5IG1hcmtlZCB1
cGRhdGVkLCB3ZSBuZWVkIHRvIGtlZXAgaXQgdXAgdG8gZGF0ZSB0b28uCiAgICAgICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKICAgICAgICAgICAgIG1faHR0cEhlYWRl
ckZpZWxkcy5zZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgsIGxlbmd0aFN0cmluZy5n
ZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAogdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKQEAgLTM1NSwxMCAr
MzU1LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpOwogCi0gICAgYXV0byBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7CisgICAgYXV0byBjZlJlcXVlc3QgPSBhZG9wdENG
KENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKSk7CiAg
ICAgaWYgKHN0b3JhZ2VTZXNzaW9uKQotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0U3RvcmFnZVNl
c3Npb24oY2ZSZXF1ZXN0LCBzdG9yYWdlU2Vzc2lvbik7Ci0gICAgbV9jZlJlcXVlc3QgPSBhZG9w
dENGKGNmUmVxdWVzdCk7CisgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihj
ZlJlcXVlc3QuZ2V0KCksIHN0b3JhZ2VTZXNzaW9uKTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1v
dmUoY2ZSZXF1ZXN0KTsKIH0KIAogI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4MGJkNjZkNzhkNDFhNzUwYTI2
MGVlYmM5ZjY3ZjRiY2I2ZmJlMjExLi44NjRiYjk5NzMxMDg5YzIzNjVlYjE1ZDkzYTI5Y2ZlMzFm
ODQ4MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE3Myw3
ICsxNzMsNyBAQCBDb29raWVTdG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llU3RvcmFnZU9ic2VydmVyKCkgY29uc3QKICAgICByZXR1cm4gKm1fY29va2llU3RvcmFn
ZU9ic2VydmVyOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNj
ZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCitSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkK
IHsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10gPSB7IF9rQ0ZVUkxTdG9y
YWdlU2Vzc2lvbklzUHJpdmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eVZh
bHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwpAQCAtMjEwLDcgKzIxMCw3IEBAIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlk
ZW50aWZpZXIsIE9wdGlvCiAgICAgLy8gRklYTUU6IFVzZSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdl
dERlZmF1bHQgd2hlbiBVU0UoQ0ZORVRXT1JLKSBpcyBkZWZpbmVkIGluIFdlYktpdCBmb3IgY29u
c2lzdGVuY3kuCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVTdG9yYWdlLmdldCgpLCBuc0Nvb2tpZUFjY2VwdFBvbGljeSk7CiAKLSAgICByZXR1cm4g
c3RvcmFnZVNlc3Npb24ubGVha1JlZigpOworICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbjsKIH0K
IAogUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tCmluZGV4IDQ1NWE3YTYyY2MxMjQxNjBjZDhiZTkyZDc0OTMxMjNiYTY4NmU0ZmYu
LjM1Nzc0MGYyMjU2Zjk4OTBiYTcxYTM2MzhlZjU3MDdlNzFhOWQ5YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVz
cG9uc2VJT1MubW0KQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
PHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBSZWdpc3RlciAubWpzIGZpbGVzIGFzIHdoYXRldmVy
IFVUSSBpbmRpY2F0ZXMgSmF2YVNjcmlwdAotc3RhdGljIENGRGljdGlvbmFyeVJlZiBjcmVhdGVF
eHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKIHsKICAgICBDRlN0cmluZ1JlZiBrZXlz
W10gPSB7CiAgICAgICAgIENGU1RSKCJtanMiKQpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgQ0ZE
aWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogICAgIH07CiAKICAg
ICBBU1NFUlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICByZXR1cm4gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMs
IChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVm
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZhbHVl
cywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogfQogCiB2
b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
LCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKQEAgLTY2LDExICs2NiwxMSBAQCB2b2lkIGFkanVz
dE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlz
TWFpblJlc291cmNlTAogICAgICAgICBpZiAoWyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVV
UkxdKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFk
b3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKICAgICAgICAgICAgIGlmIChleHRl
bnNpb24pIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lv
bk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAgICAgICBD
Rk11dGFibGVTdHJpbmdSZWYgbXV0YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRlTXV0YWJs
ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsKLSAgICAg
ICAgICAgICAgICBleHRlbnNpb24gPSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwotICAgICAg
ICAgICAgICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5zaW9uLmdldCgpKSkKKyAgICAgICAgICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGV4dGVu
c2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbi5nZXQoKSwgTlVMTCk7Cisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RGTW92ZShtdXRhYmxlRXh0ZW5zaW9uKTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlwZSA9IChDRlN0cmluZ1JlZilDRkRpY3Rp
b25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVuc2lvbi5nZXQoKSkp
CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRNSU1FVHlwZSA9IG5ld01JTUVUeXBlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXggYmIxMTZhOWRmZjNl
ODAyNDllM2MxZmYxMGVlOTEyOWM3MDU2ZmQxNS4uNGZhNTBlNDZiMDk0OTZjZGVlMDczOTY0NWM4
NGYxZDdhNDY5ZmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBXaGVuIHdlIGRpc2FibGVkIGNvbnRlbnQgc25pZmZpbmcgZm9y
IGZpbGUgVVJMcyB3ZSBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGVzZSAxMDArIGV4dGVuc2lvbnMg
dGhhdCBDb3JlVHlwZXMKIC8vIGRvZXNuJ3Qga25vdyBhYm91dC4KIC8vIElmIENvcmVUeXBlcyBp
cyBldmVyIGJyb3VnaHQgdXAgdG8gc3BlZWQgd2UgY2FuIHJlbW92ZSB0aGlzIHRhYmxlIGFuZCBh
c3NvY2lhdGVkIGNvZGUuCi1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRv
TUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4
dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewogICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKICAg
ICAgICAgQ0ZTVFIoImFpIiksCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIENGRGljdGlvbmFy
eVJlZiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKICAgICB9OwogCiAgICAgQVNTRVJU
KHNpemVvZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qg
dm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKS9zaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yo
a2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkKQpAQCAtMzA0LDExICszMDQsMTEgQEAgdm9pZCBhZGp1c3RNSU1FVHlw
ZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNv
dXJjZUwKICAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKICAgICAgICAgICAgICAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAxMDAr
IGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAogICAgICAgICAgICAg
ICAgIC8vIFdoZW4gdGhpcyByYWRhciBpcyByZXNvbHZlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIGZp
bGU6Ly8gdXJsIHNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgc3RhdGljIENGRGljdGlv
bmFyeVJlZiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0g
ICAgICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG11dGFibGVFeHRlbnNpb24gPSBDRlN0
cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5n
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lv
biwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gYWRvcHRDRihtdXRhYmxlRXh0
ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpOworICAgICAgICAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gZXh0
ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOworICAgICAgICAgICAg
ICAgIGF1dG8gbXV0YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxl
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLmdldCgpLCBOVUxMKTsK
KyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11dGFibGVFeHRlbnNpb24pOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIEdhdGVrZWVwZXItYmFzZWQgbWFwIGRvZXNuJ3QgaGF2ZSBhIE1JTUUgdHlw
ZSwgd2UnbGwgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCBzaG91bGQgYmUgYnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXgg
NWYzNmQwODMxNDg2YzlkOWU0ZmM5M2I5YmRmMWQ2MTc3YzIwZTY0MC4uNTFiNjFjMzBmODE5MWJm
YWNhOGUwZGE4YjljMzQ0ZjY1N2MwZjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTcxLDIzICs3MSwyMyBAQCBzdGF0
aWMgYm9vbCBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQog
CiBzdGF0aWMgQ0ZTdHJpbmdUb2tlbml6ZXJSZWYgdG9rZW5pemVyRm9yU3RyaW5nKENGU3RyaW5n
UmVmIHN0cikKIHsKLSAgICBzdGF0aWMgQ0ZMb2NhbGVSZWYgbG9jYWxlID0gbnVsbHB0cjsKLSAg
ICBpZiAoIWxvY2FsZSkgeworICAgIHN0YXRpYyBhdXRvIGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHRlbXAgPSBjdXJyZW50VGV4dEJyZWFrTG9j
YWxlSUQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjdXJyZW50TG9jYWxlSUQg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZW1wKSwgc3RybGVuKHRlbXApLCBr
Q0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgICAg
ICBsb2NhbGUgPSBDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9j
YWxlSUQuZ2V0KCkpOwotICAgICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KKyAgICAgICAgYXV0byBjdXJyZW50TG9jYWxlSUQgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZW1wKSwgc3RybGVuKHRlbXApLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQu
Z2V0KCkpKTsKKyAgICB9KCkpOworCisgICAgaWYgKCFsb2NhbGUuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgQ0ZSYW5nZSBlbnRpcmVSYW5nZSA9IENGUmFuZ2VNYWtlKDAs
IENGU3RyaW5nR2V0TGVuZ3RoKHN0cikpOyAgICAKIAotICAgIHN0YXRpYyBDRlN0cmluZ1Rva2Vu
aXplclJlZiB0b2tlbml6ZXIgPSBudWxscHRyOwotICAgIGlmICghdG9rZW5pemVyKQotICAgICAg
ICB0b2tlbml6ZXIgPSBDRlN0cmluZ1Rva2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZTdHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5LCBs
b2NhbGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdUb2tl
bml6ZXJSZWY+Pj4gdG9rZW5pemVyOworICAgIGlmICghdG9rZW5pemVyLmdldCgpKQorICAgICAg
ICB0b2tlbml6ZXIuZ2V0KCkgPSBhZG9wdENGKENGU3RyaW5nVG9rZW5pemVyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0ciwgZW50aXJlUmFuZ2UsIGtDRlN0cmluZ1Rva2VuaXplclVuaXRX
b3JkQm91bmRhcnksIGxvY2FsZS5nZXQoKS5nZXQoKSkpOwogICAgIGVsc2UKLSAgICAgICAgQ0ZT
dHJpbmdUb2tlbml6ZXJTZXRTdHJpbmcodG9rZW5pemVyLCBzdHIsIGVudGlyZVJhbmdlKTsKLSAg
ICByZXR1cm4gdG9rZW5pemVyOworICAgICAgICBDRlN0cmluZ1Rva2VuaXplclNldFN0cmluZyh0
b2tlbml6ZXIuZ2V0KCkuZ2V0KCksIHN0ciwgZW50aXJlUmFuZ2UpOworICAgIHJldHVybiB0b2tl
bml6ZXIuZ2V0KCkuZ2V0KCk7CiB9CiAKIC8vIFNpbXBsZSBjYXNlOiBBIHdvcmQgaXMgYSBzdHJl
YW0gb2YgY2hhcmFjdGVycyBkZWxpbWl0ZWQgYnkgYSBzcGVjaWFsIHNldCBvZiB3b3JkLWRlbGlt
aXRpbmcgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlQ0dXaW4uY3BwCmluZGV4IDRkOGM1YzYwNmQ1YzU1ODdmMmM5NWFmMmRhNmJmZGJmMDI2OWRj
OTQuLjMwNGIxZmQyYWRlOGE3NDcyNmUyZjU4YzgyMjUxMTE1ZTRiMDUyM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtNTcsMTMgKzU3
LDExIEBAIEdESU9iamVjdDxIQklUTUFQPiBhbGxvY0ltYWdlKEhEQyBkYywgSW50U2l6ZSBzaXpl
LCBDR0NvbnRleHRSZWYgKnRhcmdldFJlZikKICAgICBpZiAoIXRhcmdldFJlZiB8fCAhaGJtcCkK
ICAgICAgICAgcmV0dXJuIGhibXA7CiAKLSAgICBDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9
IENHQml0bWFwQ29udGV4dENyZWF0ZShiaXRzLCBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoLCBi
bXBJbmZvLmJtaUhlYWRlci5iaUhlaWdodCwgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoICog
NCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0lt
YWdlQWxwaGFOb25lU2tpcEZpcnN0KTsKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShiaXRzLCBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoLCBi
bXBJbmZvLmJtaUhlYWRlci5iaUhlaWdodCwgOCwgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCAq
IDQsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NH
SW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAg
ICAgIHJldHVybiBHRElPYmplY3Q8SEJJVE1BUD4oKTsKIAotICAgICp0YXJnZXRSZWYgPSBiaXRt
YXBDb250ZXh0OworICAgICp0YXJnZXRSZWYgPSBiaXRtYXBDb250ZXh0LmxlYWtSZWYoKTsKICAg
ICByZXR1cm4gaGJtcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCmluZGV4IDc1ZDgxMTdmMzhkYzFlYzA0MTUxZjE4MzdkMzdkYTFhZWVlNTZmOTAuLmFk
ZTYxOTI5ODA1NzA0ZTY5OWY5Yjk1MjE2YmI1OTliNmE0MzJiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE1MiwzNiArMTUyLDI1IEBAIHN0YXRp
YyB2b2lkIGludGVycG9sYXRlRXhwb25lbnRpYWxHcmFkaWVudCh2b2lkICppbmZvLCBjb25zdCBD
R0Zsb2F0ICppbkRhdGEsIENHCiAKIHN0YXRpYyBDR0Z1bmN0aW9uUmVmIGdldFNoYXJlZEZ1bmN0
aW9uUmVmKElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRp
b24pCiB7Ci0gICAgQ0dGdW5jdGlvblJlZiBmdW5jdGlvbiA9IG51bGxwdHI7Ci0KLSAgICBzdGF0
aWMgSGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5jdGlvblJlZj4qIGxpbmVhckZ1bmN0aW9u
UmVmczsKLSAgICBzdGF0aWMgSGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5jdGlvblJlZj4q
IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
TWFwPElPU0dyYWRpZW50UmVmLCBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4+PiBsaW5lYXJGdW5j
dGlvblJlZnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8SU9TR3JhZGllbnRS
ZWYsIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPj4+IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzOwog
CiAgICAgaWYgKGludGVycG9sYXRpb24gPT0gTGluZWFySW50ZXJwb2xhdGlvbikgewotICAgICAg
ICBpZiAoIWxpbmVhckZ1bmN0aW9uUmVmcykKLSAgICAgICAgICAgIGxpbmVhckZ1bmN0aW9uUmVm
cyA9IG5ldyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPjsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZnVuY3Rpb24gPSBsaW5lYXJGdW5jdGlvblJlZnMtPmdldChncmFk
aWVudCk7Ci0gICAgCisgICAgICAgIGF1dG8gZnVuY3Rpb24gPSBsaW5lYXJGdW5jdGlvblJlZnMt
PmdldChncmFkaWVudCk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgICAgIHN0
YXRpYyBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBsaW5lYXJGdW5jdGlvbkNhbGxiYWNrcyA9
ICB7IDAsIGludGVycG9sYXRlTGluZWFyR3JhZGllbnQsIDAgfTsKLSAgICAgICAgICAgIGxpbmVh
ckZ1bmN0aW9uUmVmcy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IENHRnVuY3Rpb25DcmVhdGUo
Z3JhZGllbnQsIDEsIG51bGxwdHIsIDQsIG51bGxwdHIsICZsaW5lYXJGdW5jdGlvbkNhbGxiYWNr
cykpOworICAgICAgICAgICAgbGluZWFyRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0
aW9uID0gYWRvcHRDRihDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAxLCBudWxscHRyLCA0LCBu
dWxscHRyLCAmbGluZWFyRnVuY3Rpb25DYWxsYmFja3MpKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICByZXR1cm4gZnVuY3Rpb247CisgICAgICAgIHJldHVybiBmdW5jdGlvbi5nZXQoKTsKICAgICB9
CiAKLSAgICBpZiAoIWV4cG9uZW50aWFsRnVuY3Rpb25SZWZzKQotICAgICAgICBleHBvbmVudGlh
bEZ1bmN0aW9uUmVmcyA9IG5ldyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVm
PjsKLSAgICBlbHNlCi0gICAgICAgIGZ1bmN0aW9uID0gZXhwb25lbnRpYWxGdW5jdGlvblJlZnMt
PmdldChncmFkaWVudCk7Ci0KKyAgICBhdXRvIGZ1bmN0aW9uID0gZXhwb25lbnRpYWxGdW5jdGlv
blJlZnMtPmdldChncmFkaWVudCk7CiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBzdGF0
aWMgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgZXhwb25lbnRpYWxGdW5jdGlvbkNhbGxiYWNr
cyA9ICB7IDAsIGludGVycG9sYXRlRXhwb25lbnRpYWxHcmFkaWVudCwgMCB9OwotICAgICAgICBl
eHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IENHRnVuY3Rp
b25DcmVhdGUoZ3JhZGllbnQsIDEsIDAsIDQsIDAsICZleHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJh
Y2tzKSk7CisgICAgICAgIGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1
bmN0aW9uID0gYWRvcHRDRihDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAxLCAwLCA0LCAwLCAm
ZXhwb25lbnRpYWxGdW5jdGlvbkNhbGxiYWNrcykpKTsKICAgICB9Ci0KLSAgICByZXR1cm4gZnVu
Y3Rpb247CisgICAgcmV0dXJuIGZ1bmN0aW9uLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3
QXhpYWxHcmFkaWVudChDR0NvbnRleHRSZWYgY29udGV4dCwgSU9TR3JhZGllbnRSZWYgZ3JhZGll
bnQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0b3BQ
b2ludCwgSW50ZXJwb2xhdGlvbiBpbnRlcnBvbGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQppbmRleCBiZTY2MDc4
YTgzZDBjYTQ5YjcxYTFmYjUzYzIzYThjNmI4MWQ3NjdlLi41YTliYmM3MTVjOWU1Yzg0M2FhZjJi
OTE1ZGQ4OGY3MmVmYTE5ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2Nv
Y29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQpAQCAtMzksNyArMzksNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAKLXN0
YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRh
KENGRGF0YVJlZiByZXNwb25zZURhdGEpCitzdGF0aWMgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VS
ZWY+IGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25z
ZURhdGEpCiB7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2U7CiAgICAgYXV0byB1bmFyY2hp
dmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zy
b21EYXRhOihfX2JyaWRnZSBOU0RhdGEgKilyZXNwb25zZURhdGEgZXJyb3I6bnVsbHB0cl0pOwpA
QCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3Bv
bnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYQogICAgIH0KIAogICAgIGlm
ICghW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pCi0g
ICAgICAgIHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChf
X2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXNw
b25zZS5NSU1FVHlwZSwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAoX19icmlkZ2Ug
Q0ZTdHJpbmdSZWYpcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSwga0NGVVJMQ2FjaGVTdG9yYWdl
QWxsb3dlZCk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3BvbnNlLlVSTCwgKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLk1JTUVUeXBlLCByZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1l
LCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CiAKICAgICBOU0hUVFBVUkxSZXNwb25zZSAq
aHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2U7CiAKQEAgLTY0LDcg
KzY0LDcgQEAgc3RhdGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21S
ZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGEKICAgICBmb3IgKE5TU3RyaW5nICpoZWFk
ZXJGaWVsZCBpbiBbaGVhZGVyRmllbGRzIGtleUVudW1lcmF0b3JdKQogICAgICAgICBDRkhUVFBN
ZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShodHRwTWVzc2FnZS5nZXQoKSwgKF9fYnJpZGdlIENG
U3RyaW5nUmVmKWhlYWRlckZpZWxkLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW2hlYWRlckZpZWxk
cyBvYmplY3RGb3JLZXk6aGVhZGVyRmllbGRdKTsKIAotICAgIHJldHVybiBDRlVSTFJlc3BvbnNl
Q3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZV
UkxSZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdl
QWxsb3dlZCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQ
UmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3BvbnNl
LlVSTCwgaHR0cE1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKIH0K
IAogc3RhdGljIHZvaWQgY29udmVydE1JTUVUeXBlKENGTXV0YWJsZVN0cmluZ1JlZiBtaW1lVHlw
ZSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVzb3VyY2VSZXNw
b25zZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb3BlcgogICAgIGlmIChD
RkdldFR5cGVJRChyZXNwb25zZURhdGEpICE9IENGRGF0YUdldFR5cGVJRCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gcmVzcG9uc2UgPSBhZG9w
dENGKGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJlc3BvbnNlRGF0YSkpOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShy
ZXNwb25zZURhdGEpOwogICAgIGlmICghcmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAx
YTlmNzE5ZDY1MWZhOGFlZDE5ZjZlZmYwNTE1N2YwOTUyZGJlZTExLi5jNTM3ZWEyOGQ5MWM1MDVh
MjU4YjljODA2ZTdlODNjZTJjZjQwZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDUxLDcgKzQ1MSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpuZXdU
ZXN0aW5nU2Vzc2lvCiAgICAgLy8gU2Vzc2lvbiBuYW1lIHNob3VsZCBiZSBzaG9ydCBlbm91Z2gg
Zm9yIHNoYXJlZCBtZW1vcnkgcmVnaW9uIG5hbWUgdG8gYmUgdW5kZXIgdGhlIGxpbWl0LCBvdGhl
cndpc2Ugc2FuZGJveCBydWxlcyB3b24ndCB3b3JrIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNjQy
ODUyPikuCiAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0IFRlc3Qt
IiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKIAotICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0Q0Yo
V2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZTsKICAg
ICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2ll
QVBJKCkpIHsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVT
ZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGJvb2wgc2hvdWxkVQogICAg
IFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBzdG9yYWdlU2Vzc2lvbjsKICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IG1ha2VTdHJpbmcoaWRlbnRpZmll
ckJhc2UsICIuUHJpdmF0ZUJyb3dzaW5nLiIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSku
Y3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAg
ICAgIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
Y2ZJZGVudGlmaWVyLmdldCgpKSk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gY3JlYXRlUHJp
dmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CiAgICAgZWxzZSBpZiAoc2Vz
c2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgIHN0
b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0
b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihjZklkZW50aWZpZXIuZ2V0KCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZmE0MjMzNGVj
MGNhMWFkMDUwMjNlY2JmNzhkMTMxZDAxYjNlZjM2Zi4uMDc5OTE1ZTJiNGMzOWE4MWMyNDg4ZWI5
YWNhNDg4ZmIxMTQzZGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC01NTcsNyAr
NTU4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogV2UnZCBsaWtlIHRvIGJlIGFibGUgdG8g
ZG8gdGhpcyB3aXRob3V0IHRoZSAjaWZkZWYsIGJ1dCBXb3JrUXVldWUgKyBCaW5hcnlTZW1hcGhv
cmUgaXNuJ3QgZ29vZCBlbm91Z2ggc2luY2UKICAgICAvLyBtdWx0aXBsZSByZXF1ZXN0cyB0byBj
bGVhciB0aGUgY2FjaGUgY2FuIGNvbWUgaW4gYmVmb3JlIHByZXZpb3VzIHJlcXVlc3RzIGNvbXBs
ZXRlLCBhbmQgd2UgbmVlZCB0byB3YWl0IGZvciBhbGwgb2YgdGhlbS4KICAgICAvLyBJbiB0aGUg
ZnV0dXJlIHVzaW5nIFdvcmtRdWV1ZSBhbmQgYSBjb3VudGluZyBzZW1hcGhvcmUgd291bGQgd29y
aywgYXMgd291bGQgV29ya1F1ZXVlIHN1cHBvcnRpbmcgdGhlIGxpYmRpc3BhdGNoIGNvbmNlcHQg
b2YgIndvcmsgZ3JvdXBzIi4KLSAgICBkaXNwYXRjaF9ncm91cF90IG1fY2xlYXJDYWNoZURpc3Bh
dGNoR3JvdXAgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfZ3JvdXBfdD4g
bV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCA2MGFmOTNkZGY1MWRlNzkwMzI2NDU0
NmM2YjAzNGJhMWI1YmE1NzJlLi41ZmJlODFkNjg2YjljNzRkN2RlYjk2ODU2NDAzODEzZmU2N2Vk
ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xOTEsOSArMTkxLDkgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGlt
ZSBtb2RpZmllZFMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXApCi0gICAgICAgIG1f
Y2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUoKTsKKyAgICAg
ICAgbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3Jv
dXBfY3JlYXRlKCkpOwogCi0gICAgYXV0byBncm91cCA9IG1fY2xlYXJDYWNoZURpc3BhdGNoR3Jv
dXA7CisgICAgYXV0byBncm91cCA9IG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAuZ2V0KCk7CiAg
ICAgZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZ3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IG1ha2VCbG9ja1B0cihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2Rp
ZmllZFNpbmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBmb3JFYWNo
TmV0d29ya1Nlc3Npb24oW21vZGlmaWVkU2luY2UsICZhZ2dyZWdhdG9yXShOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya1Byb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUHJvY2Vzc01hYy5tbQppbmRleCBiNWUwZDFhM2Q1MTI1M2E1MDAzZGU2NWU1ODY5
NzllNGQ4YzJkMDgwLi5iMGY5YTU5YmIyYzA4Mzc4NWM4NTljYjcwMTU5MThhM2E2NDExNjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJv
Y2Vzc01hYy5tbQpAQCAtOTcsOSArOTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFs
aXplU2FuZGJveChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbQogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogewogICAgIGlmIChtX2NsZWFy
Q2FjaGVEaXNwYXRjaEdyb3VwKSB7Ci0gICAgICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9jbGVh
ckNhY2hlRGlzcGF0Y2hHcm91cCwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKLSAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKTsKLSAgICAgICAgbV9jbGVh
ckNhY2hlRGlzcGF0Y2hHcm91cCA9IDA7CisgICAgICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9j
bGVhckNhY2hlRGlzcGF0Y2hHcm91cC5nZXQoKSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKKyAg
ICAgICAgbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCA9IG51bGxwdHI7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNGY2YjE4NGZmNDBkOTky
ODhlYjYwNjBhN2M1ODg2YjM3MzZjNGI4My4uNmUzNjdkNWI4NGM3ZmZlMjY3NjBmN2IwZWY0ZWY2
YTFiNDhlOWI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC00NTgsMTAgKzQ1OSwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsUmVjZWl2ZVNvdXJjZSgpOwogCiAgICAgbWFjaF9w
b3J0X3QgbV9zZW5kUG9ydCB7IE1BQ0hfUE9SVF9OVUxMIH07Ci0gICAgZGlzcGF0Y2hfc291cmNl
X3QgbV9zZW5kU291cmNlIHsgbnVsbHB0ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3Nv
dXJjZV90PiBtX3NlbmRTb3VyY2U7CiAKICAgICBtYWNoX3BvcnRfdCBtX3JlY2VpdmVQb3J0IHsg
TUFDSF9QT1JUX05VTEwgfTsKLSAgICBkaXNwYXRjaF9zb3VyY2VfdCBtX3JlY2VpdmVTb3VyY2Ug
eyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfc291cmNlX3Q+IG1fcmVjZWl2
ZVNvdXJjZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gbV9wZW5kaW5nT3V0
Z29pbmdNYWNoTWVzc2FnZTsKICAgICBib29sIG1faXNJbml0aWFsaXppbmdTZW5kU291cmNlIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nv
bm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbQppbmRleCA4ZDljZGUwOGY0NjcxNDFhOTBkOGVhZjlkZDc4NWI3OTAzOGQ1
OGVlLi45MGJkZjI0ODc2MjQ5Y2VmMTcxYmM5MmQ3NjZlNzRlMDJkNDE4NDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBA
IC0xNDcsOCArMTQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQog
ICAgIEFTU0VSVChtX3JlY2VpdmVQb3J0KTsKIAogICAgIC8vIFVucmVnaXN0ZXIgb3VyIHBvcnRz
LgotICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5jZWwobV9zZW5kU291cmNlKTsKLSAgICBkaXNwYXRj
aF9yZWxlYXNlKG1fc2VuZFNvdXJjZSk7CisgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3Nl
bmRTb3VyY2UuZ2V0KCkpOwogICAgIG1fc2VuZFNvdXJjZSA9IG51bGxwdHI7CiAgICAgbV9zZW5k
UG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogCkBAIC0xNTcsOCArMTU2LDcgQEAgdm9pZCBDb25uZWN0
aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogCiB2b2lkIENvbm5lY3Rpb246OmNhbmNlbFJlY2Vp
dmVTb3VyY2UoKQogewotICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5jZWwobV9yZWNlaXZlU291cmNl
KTsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fcmVjZWl2ZVNvdXJjZSk7CisgICAgZGlzcGF0Y2hf
c291cmNlX2NhbmNlbChtX3JlY2VpdmVTb3VyY2UuZ2V0KCkpOwogICAgIG1fcmVjZWl2ZVNvdXJj
ZSA9IG51bGxwdHI7CiAgICAgbV9yZWNlaXZlUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogfQpAQCAt
MjMwLDExICsyMjgsMTEgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAvLyBDaGFuZ2Ug
dGhlIG1lc3NhZ2UgcXVldWUgbGVuZ3RoIGZvciB0aGUgcmVjZWl2ZSBwb3J0LgogICAgIHNldE1h
Y2hQb3J0UXVldWVMZW5ndGgobV9yZWNlaXZlUG9ydCwgTUFDSF9QT1JUX1FMSU1JVF9MQVJHRSk7
CiAKLSAgICBtX3JlY2VpdmVTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENI
X1NPVVJDRV9UWVBFX01BQ0hfUkVDViwgbV9yZWNlaXZlUG9ydCwgMCwgbV9jb25uZWN0aW9uUXVl
dWUtPmRpc3BhdGNoUXVldWUoKSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5k
bGVyKG1fcmVjZWl2ZVNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpXSB7CisgICAgbV9yZWNlaXZlU291cmNlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9zb3Vy
Y2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01BQ0hfUkVDViwgbV9yZWNlaXZlUG9ydCwg
MCwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSkpOworICAgIGRpc3BhdGNoX3Nv
dXJjZV9zZXRfZXZlbnRfaGFuZGxlcihtX3JlY2VpdmVTb3VyY2UuZ2V0KCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0gewogICAgICAgICByZWNlaXZlU291cmNlRXZl
bnRIYW5kbGVyKCk7CiAgICAgfSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFu
ZGxlcihtX3JlY2VpdmVTb3VyY2UsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
cmVjZWl2ZVBvcnQgPSBtX3JlY2VpdmVQb3J0XSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9j
YW5jZWxfaGFuZGxlcihtX3JlY2VpdmVTb3VyY2UuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKSwgcmVjZWl2ZVBvcnQgPSBtX3JlY2VpdmVQb3J0XSB7CiAjaWYgIVBMQVRG
T1JNKFdBVENIT1MpCiAgICAgICAgIG1hY2hfcG9ydF91bmd1YXJkKG1hY2hfdGFza19zZWxmKCks
IHJlY2VpdmVQb3J0LCByZWludGVycHJldF9jYXN0PG1hY2hfcG9ydF9jb250ZXh0X3Q+KHByb3Rl
Y3RlZFRoaXMuZ2V0KCkpKTsKICNlbmRpZgpAQCAtMjQzLDEwICsyNDEsMTAgQEAgYm9vbCBDb25u
ZWN0aW9uOjpvcGVuKCkKIAogICAgIHJlZigpOwogICAgIGRpc3BhdGNoX2FzeW5jKG1fY29ubmVj
dGlvblF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCksIF57Ci0gICAgICAgIGRpc3BhdGNoX3Jlc3VtZSht
X3JlY2VpdmVTb3VyY2UpOworICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9yZWNlaXZlU291cmNl
LmdldCgpKTsKIAogICAgICAgICBpZiAobV9zZW5kU291cmNlKQotICAgICAgICAgICAgZGlzcGF0
Y2hfcmVzdW1lKG1fc2VuZFNvdXJjZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9z
ZW5kU291cmNlLmdldCgpKTsKIAogICAgICAgICBkZXJlZigpOwogICAgIH0pOwpAQCAtMzcxLDIw
ICszNjksMjAgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJl
ZjxFbmNvZGVyPiYmIGVuY29kZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UoKQogewotICAgIG1fc2VuZFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElT
UEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9TRU5ELCBtX3NlbmRQb3J0LCBESVNQQVRDSF9NQUNIX1NF
TkRfREVBRCB8IERJU1BBVENIX01BQ0hfU0VORF9QT1NTSUJMRSwgbV9jb25uZWN0aW9uUXVldWUt
PmRpc3BhdGNoUXVldWUoKSk7CisgICAgbV9zZW5kU291cmNlID0gYWRvcHRPU09iamVjdChkaXNw
YXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01BQ0hfU0VORCwgbV9zZW5k
UG9ydCwgRElTUEFUQ0hfTUFDSF9TRU5EX0RFQUQgfCBESVNQQVRDSF9NQUNIX1NFTkRfUE9TU0lC
TEUsIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkpKTsKICAgICBtX2lzSW5pdGlh
bGl6aW5nU2VuZFNvdXJjZSA9IHRydWU7CiAKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lz
dHJhdGlvbl9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9yZWdpc3RyYXRpb25faGFu
ZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKV0gewogICAgICAgICBpZiAoIW1fc2VuZFNvdXJjZSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2UgPSBmYWxzZTsKICAgICAgICAg
cmVzdW1lU2VuZFNvdXJjZSgpOwogICAgIH0pOwotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZl
bnRfaGFuZGxlcihtX3NlbmRTb3VyY2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKV0geworICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihtX3NlbmRT
b3VyY2UuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0gewog
ICAgICAgICBpZiAoIW1fc2VuZFNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICB1bnNpZ25lZCBsb25nIGRhdGEgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEobV9zZW5kU291
cmNlKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gZGlzcGF0Y2hfc291cmNlX2dldF9k
YXRhKG1fc2VuZFNvdXJjZS5nZXQoKSk7CiAKICAgICAgICAgaWYgKGRhdGEgJiBESVNQQVRDSF9N
QUNIX1NFTkRfREVBRCkgewogICAgICAgICAgICAgY29ubmVjdGlvbkRpZENsb3NlKCk7CkBAIC00
MDAsNyArMzk4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNvdXJjZSgpCiAK
ICAgICBpZiAoTUFDSF9QT1JUX1ZBTElEKG1fc2VuZFBvcnQpKSB7CiAgICAgICAgIG1hY2hfcG9y
dF90IHNlbmRQb3J0ID0gbV9zZW5kUG9ydDsKLSAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9j
YW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2UsIF57CisgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9z
ZXRfY2FuY2VsX2hhbmRsZXIobV9zZW5kU291cmNlLmdldCgpLCBeewogICAgICAgICAgICAgLy8g
UmVsZWFzZSBvdXIgc2VuZCByaWdodC4KICAgICAgICAgICAgIGRlYWxsb2NhdGVTZW5kUmlnaHRT
YWZlbHkoc2VuZFBvcnQpOwogICAgICAgICB9KTsKQEAgLTU4MCw3ICs1NzgsNyBAQCB2b2lkIENv
bm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICAgICAgICAgIGRl
YWxsb2NhdGVTZW5kUmlnaHRTYWZlbHkocHJldmlvdXNOb3RpZmljYXRpb25Qb3J0KTsKIAogICAg
ICAgICAgICAgaW5pdGlhbGl6ZVNlbmRTb3VyY2UoKTsKLSAgICAgICAgICAgIGRpc3BhdGNoX3Jl
c3VtZShtX3NlbmRTb3VyY2UpOworICAgICAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2VuZFNv
dXJjZS5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJD
aGVja3MubW0KaW5kZXggNWI2ODg0YmZmMjlmOGY0ZjhkZGFjMzVlZWZjZWU4MmU4NWQ1YzI5My4u
NTg3NjA5MDYwOGQ5YWZjODhlMzQxYzVkZmY3M2Y1YjMxMGVmYTg5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KQEAg
LTMxLDYgKzMxLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZlcnNpb25DaGVja3MuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
TWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgogI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgpAQCAtMTE5LDcgKzEy
MSwxMSBAQCBzdGF0aWMgYm9vbCBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGJvb2wgYXBwV2Fz
TGlua2VkT25PckFmdGVyLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdCAhPSBrVEND
QWNjZXNzUHJlZmxpZ2h0RGVuaWVkOwogfQogCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnX2l0
cFF1ZXVlOworc3RhdGljIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+JiBpdHBRdWV1ZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVl
X3Q+PiBpdHBRdWV1ZTsKKyAgICByZXR1cm4gaXRwUXVldWU7Cit9CiAKIHZvaWQgZGV0ZXJtaW5l
SVRQU3RhdGUoKQogewpAQCAtMTMwLDE0ICsxMzYsMTMgQEAgdm9pZCBkZXRlcm1pbmVJVFBTdGF0
ZSgpCiAgICAgZ19jdXJyZW50SVRQU3RhdGUgPSBJVFBTdGF0ZTo6SW5pdGlhbGl6aW5nOwogICAg
IGJvb2wgYXBwV2FzTGlua2VkT25PckFmdGVyID0gbGlua2VkT25PckFmdGVyKFdlYkNvcmU6OlNE
S1ZlcnNpb246OkZpcnN0V2l0aFNlc3Npb25DbGVhbnVwQnlEZWZhdWx0KTsKIAotICAgIGdfaXRw
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuaXRwQ2hlY2tR
dWV1ZSIsIE5VTEwpOworICAgIGl0cFF1ZXVlKCkgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBDaGVja1F1ZXVlIiwgTlVMTCkpOwogCi0g
ICAgZGlzcGF0Y2hfYXN5bmMoZ19pdHBRdWV1ZSwgW2FwcFdhc0xpbmtlZE9uT3JBZnRlciwgYnVu
ZGxlSWRlbnRpZmllciA9IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpLmlz
b2xhdGVkQ29weSgpXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMoaXRwUXVldWUoKS5nZXQoKSwgW2Fw
cFdhc0xpbmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllciA9IFdlYkNvcmU6OmFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcigpLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGdfY3VycmVu
dElUUFN0YXRlID0gZGV0ZXJtaW5lSVRQU3RhdGVJbnRlcm5hbChhcHBXYXNMaW5rZWRPbk9yQWZ0
ZXIsIGJ1bmRsZUlkZW50aWZpZXIpID8gSVRQU3RhdGU6OkVuYWJsZWQgOiBJVFBTdGF0ZTo6RGlz
YWJsZWQ7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKLSAgICAgICAg
ICAgIGRpc3BhdGNoX3JlbGVhc2UoZ19pdHBRdWV1ZSk7Ci0gICAgICAgICAgICBnX2l0cFF1ZXVl
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGl0cFF1ZXVlKCkgPSBudWxscHRyOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KQEAgLTE0OSwxMCArMTU0LDEwIEBAIGJvb2wgZG9lc0FwcEhhdmVJVFBF
bmFibGVkKCkKICAgICBpZiAoZ19jdXJyZW50SVRQU3RhdGUgPiBJVFBTdGF0ZTo6SW5pdGlhbGl6
aW5nKQogICAgICAgICByZXR1cm4gZ19jdXJyZW50SVRQU3RhdGUgPT0gSVRQU3RhdGU6OkVuYWJs
ZWQ7CiAKLSAgICBSRUxFQVNFX0FTU0VSVChnX2l0cFF1ZXVlKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChpdHBRdWV1ZSgpKTsKIAogICAgIF9fYmxvY2sgYm9vbCBpc0lUUEVuYWJsZWQ7Ci0gICAgZGlz
cGF0Y2hfc3luYyhnX2l0cFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMoaXRwUXVldWUoKS5n
ZXQoKSwgXnsKICAgICAgICAgaXNJVFBFbmFibGVkID0gZ19jdXJyZW50SVRQU3RhdGUgPT0gSVRQ
U3RhdGU6OkVuYWJsZWQ7CiAgICAgfSk7CiAgICAgcmV0dXJuIGlzSVRQRW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBD
U2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQppbmRleCBhYjA2
MzRmMWFjNjU1Mzc3MzQ4MTg1MDJhOTE0M2QxYWRkMTE0ODM4Li43OGVhZmY0NTIwNDg3Y2MzZGNl
MzA1ZTA1NDQxYjE2Yzc3ODE3NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyB2b2lkIHNldEFw
cGxlTGFuZ3VhZ2VzUHJlZmVyZW5jZSgpCiAKIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhh
bmRsZXIoeHBjX2Nvbm5lY3Rpb25fdCBwZWVyKQogewotICAgIHN0YXRpYyB4cGNfb2JqZWN0X3Qg
cHJpb3JpdHlCb29zdE1lc3NhZ2UgPSBudWxscHRyOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+PiBwcmlvcml0eUJvb3N0TWVzc2FnZTsKIAogICAg
IHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUocGVlciwgZGlzcGF0Y2hfZ2V0X2dsb2Jh
bF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7CiAgICAgeHBjX2Nv
bm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocGVlciwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsK
QEAgLTExOCwxOSArMTE4LDE4IEBAIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhhbmRsZXIo
eHBjX2Nvbm5lY3Rpb25fdCBwZWVyKQogICAgICAgICAgICAgICAgICAgICBkdXAyKGZkLCBTVERF
UlJfRklMRU5PKTsKIAogICAgICAgICAgICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXJGdW5jdGlv
blB0cihwZWVyLCBldmVudCwgcHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAgICAgICAgICAg
ICAgICBpbml0aWFsaXplckZ1bmN0aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVz
c2FnZS5nZXQoKS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGVMYW5ndWFn
ZXNQcmVmZXJlbmNlKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgICAgICBp
ZiAocHJpb3JpdHlCb29zdE1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgIHhwY19yZWxlYXNl
KHByaW9yaXR5Qm9vc3RNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVz
c2FnZS5nZXQoKSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIExl
YWsgYSBib29zdCBvbnRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICAgICAgICAgIGlmICghc3Ry
Y21wKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsICJtZXNzYWdlLW5hbWUiKSwgInBy
ZS1ib290c3RyYXAiKSkgewotICAgICAgICAgICAgICAgIGFzc2VydCghcHJpb3JpdHlCb29zdE1l
c3NhZ2UpOwotICAgICAgICAgICAgICAgIHByaW9yaXR5Qm9vc3RNZXNzYWdlID0geHBjX3JldGFp
bihldmVudCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJvb3N0TWVzc2FnZS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UuZ2V0KCkgPSBldmVu
dDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdl
cyhldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5k
ZXggMjU4M2M5MzUxYjk3ODRjNDM5Yjk5ODA5NmM3NzMxZTQzNWQ0MjIzMi4uNmNlZjg3ZjNjNDY0
MTc5ZGY3NjYyZmRjMzk5MjNhMDYxM2UyMWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBzaGFyZWFi
bGVSZXNvdXJjZURlYWxsb2NhdGUodm9pZCAqcHRyLCB2b2lkICppbmZvKQogICAgIHN0YXRpY19j
YXN0PFNoYXJlYWJsZVJlc291cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJl
ZigpIGluIGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQogfQogICAgIAotc3Rh
dGljIENGQWxsb2NhdG9yUmVmIGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hh
cmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQorc3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRvclJl
Zj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSog
cmVzb3VyY2UpCiB7CiAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsCiAgICAg
ICAgIHJlc291cmNlLApAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3Jl
YXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzbwog
ICAgICAgICBOVUxMLCAvLyBwcmVmZXJyZWRTaXplCiAgICAgfTsKIAotICAgIHJldHVybiBDRkFs
bG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQp
KTsKIH0KICNlbmRpZgogCkBAIC04NSw4ICs4NSw4IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogICAgIHJlZigpOyAvLyBCYWxh
bmNlZCBieSBkZXJlZiB3aGVuIFNoYXJlZEJ1ZmZlciBpcyBkZWFsbG9jYXRlZC4KIAogI2lmIFVT
RShDRikKLSAgICBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGRlYWxsb2NhdG9yID0gYWRvcHRD
RihjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29w
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0
YSgpKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsK
KyAgICBhdXRvIGRlYWxsb2NhdG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRv
cih0aGlzKTsKKyAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVz
Tm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihkYXRhKCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQo
KSkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwogI2Vs
aWYgVVNFKEdMSUIpCiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0
ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IGQwMjQy
OTA4ZDRjOWY0ZmZkMTg1YmQ4ZTFhNTMwNTg5ZGY4YWVlMDMuLjMzN2M5MzY0NzMyODU3ZDI3MTE0
Zjk0MDA0Y2NkMmM1MTk5NjgyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nm
L0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3Vt
ZW50Q29kZXJzQ0YuY3BwCkBAIC01NDEsOCArNTQxLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgUmV0YWluUHRyPENGTnVtYmVyUmVmPiYgcmVzdWx0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBBU1NFUlQoZGF0YVJlZmVyZW5jZS5kYXRhKCkpOwotICAgIENGTnVtYmVy
UmVmIG51bWJlciA9IENGTnVtYmVyQ3JlYXRlKDAsIG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2Uu
ZGF0YSgpKTsKLSAgICByZXN1bHQgPSBhZG9wdENGKG51bWJlcik7CisgICAgcmVzdWx0ID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZSgwLCBudW1iZXJUeXBlLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSkp
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01ODEsMTEgKzU4MCwxMSBAQCBib29sIGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiByZXN1bHQpCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwg
ZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpLCBlbmNvZGluZywgZmFs
c2UpOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygw
LCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5nLCBm
YWxzZSkpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXN1bHQgPSBhZG9wdENGKHN0cmluZyk7CisgICAgcmVzdWx0ID0gV1RGTW92ZShzdHJpbmcpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDYzZTNhZjQxZGEwNTU3
OWJiNTQyYTJlNjY3ODg5ODMxMGU1NWQ5YjguLmEzOTQwNjQ5ZmRiZjJkZWQ0ODRhNGUyNjEwMmI5
MjFjYzI4MDc4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGlj
IE1hbGxvY1B0cjx1aW50OF90LCBIaXN0b3J5RW50cnlEYXRhRW5jb2Rlck1hbGxvYz4gZW5jb2Rl
U2Vzc2lvbkhpc3RvcnlFbnQKIAogc3RhdGljIFJldGFpblB0cjxDRkRhdGFSZWY+IGVuY29kZVNl
c3Npb25IaXN0b3J5RW50cnlEYXRhKGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUpCiB7Ci0g
ICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGZhc3RNYWxsb2NEZWFsbG9jYXRvcjsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPj4gZmFzdE1hbGxvY0Rl
YWxsb2NhdG9yOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC00MDEsMTMgKzQwMSwxMyBAQCBzdGF0aWMg
UmV0YWluUHRyPENGRGF0YVJlZj4gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3Qg
RnJhbWVTdGF0ZSYgZnJhbQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIG51bGxwdHIsIC8v
IHByZWZlcnJlZFNpemUKICAgICAgICAgfTsKLSAgICAgICAgZmFzdE1hbGxvY0RlYWxsb2NhdG9y
ID0gQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpOworICAg
ICAgICBmYXN0TWFsbG9jRGVhbGxvY2F0b3IuZ2V0KCkgPSBhZG9wdENGKENGQWxsb2NhdG9yQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KSk7CiAgICAgfSk7CiAKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZTsKICAgICBhdXRvIGJ1ZmZlciA9IGVuY29kZVNlc3Npb25IaXN0b3J5RW50
cnlEYXRhKGZyYW1lU3RhdGUsIGJ1ZmZlclNpemUpOwogCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5sZWFr
UHRyKCksIGJ1ZmZlclNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvcikpOworICAgIHJldHVybiBh
ZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBi
dWZmZXIubGVha1B0cigpLCBidWZmZXJTaXplLCBmYXN0TWFsbG9jRGVhbGxvY2F0b3IuZ2V0KCku
Z2V0KCkpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZURp
Y3Rpb25hcnkoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxDRlN0cmluZ1JlZiwgQ0ZU
eXBlUmVmPj4ga2V5VmFsdWVQYWlycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCmluZGV4IDJk
ZjIzMzVkOWM1YWRmYWI1YTZiZTkyYzljNzdjMjA1N2I2OTllMmEuLmJkZGJiMDg5ZGVlYjVlZmVm
MmNlNzJlZjIzZWEzYzk2MDEwNDAwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpAQCAt
MzksNyArMzksNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hlOjppbk1l
bW9yeVN0b3JhZ2VTZXNzaW9uKCkKICAgICBpZiAoIW1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbikg
ewogICAgICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXRJblByb2Nl
c3NTdG9yYWdlLSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7CiAgICAgICAgIGF1dG8gY29va2ll
QWNjZXB0UG9saWN5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29va2llQWNjZXB0UG9saWN5KCk7Ci0gICAgICAgIGF1dG8gc3RvcmFn
ZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb29raWVBY2NlcHRQb2xpY3kpKTsK
KyAgICAgICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb29raWVBY2Nl
cHRQb2xpY3kpOwogICAgICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFn
ZVNlc3Npb24uZ2V0KCkpKTsKICAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbWFr
ZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNl
c3Npb25JRCgpLCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdl
KSwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6Olllcyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaAppbmRleCAwNjFmMjY2OThkOGZhY2NhMTM3MTcwNDRlZGEyNjA4NjFjNjg4YWRmLi5kNDgy
YjQyZTBjMjU0MTI3N2M5NGE0NWRmY2ZiNWIwMTk0NTExMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTU3LDcgKzE1
OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JCYWNraW5nU3RvcmVTd2FwIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fZGVmZXJyZWRSZW5kZXJpbmdVcGRhdGVXaGlsZVdhaXRpbmdG
b3JCYWNraW5nU3RvcmVTd2FwIHsgZmFsc2UgfTsKIAotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9j
b21taXRRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2NvbW1pdFF1
ZXVlOwogICAgIFJlZlB0cjxCYWNraW5nU3RvcmVGbHVzaGVyPiBtX3BlbmRpbmdCYWNraW5nU3Rv
cmVGbHVzaGVyOwogCiAgICAgSGFzaFNldDxSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3IqPiBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggOTk5Mjg3MWIxYzAwZTgy
MTBjYjY2ZGViZDI4ZWU2YjA4ZGIxMjRkNS4uYTM4ODEzMzVhNGVmN2RhMGEyOGZiNzYwMmI4YTI5
N2E4MDY4NTMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtNjUsNyArNjUsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3Qg
VwogICAgIHdlYlBhZ2UuY29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZSh0cnVlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0TmFtZSgiZHJhd2luZyBhcmVhIHJvb3Qi
KTsKIAotICAgIG1fY29tbWl0UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5Db21taXRRdWV1
ZSIsIG51bGxwdHIpOworICAgIG1fY29tbWl0UXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNo
X3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLkNvbW1pdFF1ZXVlIiwgbnVsbHB0cikpOwogCiAgICAgLy8gSW4gb3JkZXIg
dG8gZW5zdXJlIHRoYXQgd2UgZ2V0IGEgdW5pcXVlIERpc3BsYXlSZWZyZXNoTW9uaXRvciBwZXIt
RHJhd2luZ0FyZWEgKG5lY2Vzc2FyeSBiZWNhdXNlIERpc3BsYXlSZWZyZXNoTW9uaXRvcgogICAg
IC8vIGlzIGRyaXZlbiBieSB0aGlzIGNsYXNzKSwgZ2l2ZSBlYWNoIHBhZ2UgYSB1bmlxdWUgRGlz
cGxheUlEIGRlcml2ZWQgZnJvbSBXZWJQYWdlJ3MgdW5pcXVlIElELgpAQCAtNzgsMTAgKzc4LDcg
QEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
KFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFcKICAgICAgICAgc2V0Vmlld0V4cG9zZWRSZWN0KHZp
ZXdFeHBvc2VkUmVjdCk7CiB9CiAKLVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEoKQotewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9jb21taXRR
dWV1ZSk7Ci19CitSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpzZXROZWVkc0Rpc3BsYXkoKQogewpAQCAtNDEyLDcgKzQwOSw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgbV9wZW5kaW5nQmFja2lu
Z1N0b3JlRmx1c2hlciA9IGJhY2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICBhdXRvIHBhZ2VJRCA9
IG1fd2ViUGFnZS5pZGVudGlmaWVyKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1
ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBw
YWdlSURdIHsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLmdldCgpLCBbYmFja2lu
Z1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0gewog
ICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCiAgICAgICAgIE1vbm90b25p
Y1RpbWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcC5jcHAKaW5kZXggYTg2NzFmZjE5NjEwYjYxYmQ2OWRmZjI0ZDU2NmI2YmMyNTBkOWUz
ZS4uOTVlZjIyOTRhOTc2Zjg0NGVjM2E0OTVlYmJiZTNiM2ZkOTZhNzRkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25N
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgLy8gU2Vzc2lvbiBu
YW1lIHNob3VsZCBiZSBzaG9ydCBlbm91Z2ggZm9yIHNoYXJlZCBtZW1vcnkgcmVnaW9uIG5hbWUg
dG8gYmUgdW5kZXIgdGhlIGxpbWl0LCBvdGVocndpc2Ugc2FuZGJveCBydWxlcyB3b24ndCB3b3Jr
IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNjQyODUyPikuCiAgICAgU3RyaW5nIHNlc3Npb25OYW1l
ID0gbWFrZVN0cmluZygiV2ViS2l0IFRlc3QtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKIAot
ICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gY29va2llU3RvcmFnZTsKICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpIHsKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCwgY28KIAogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmPiBzdG9yYWdlU2Vzc2lvbjsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0g
ICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKSk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9u
ID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQo
KSk7CiAgICAgZWxzZQogICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoY2ZJZGVu
dGlmaWVyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3SU9TLm1tCmluZGV4IGNiZDUwYjZmY2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJl
NDAyODAuLjJmNDMzZGIzYWQzZDgwNjljMmE1YTgxYzQ4ZjNlZTBmY2JhOTFmYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJOU1ZpZXdFeHRyYXMuaD4KICNp
bXBvcnQgPFdlYktpdExlZ2FjeS9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU5LDExICs2MCwx
MSBAQCBzdGF0aWMgaW50IGNvbXBhcmVQYWdlUmVjdHMoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2
b2lkICphcnJheSk7CiBzdGF0aWMgY29uc3QgZmxvYXQgUEFHRV9XSURUSF9JTlNFVCAgICAgPSA0
LjAgKiAyLjA7CiBzdGF0aWMgY29uc3QgZmxvYXQgUEFHRV9IRUlHSFRfSU5TRVQgICAgPSA0LjAg
KiAyLjA7CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUo
Q0dGbG9hdCB3aGl0ZSwgQ0dGbG9hdCBhbHBoYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJl
Zj4gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFs
cGhhKQogewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZ3JheVNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlR3JheSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPj4gZ3JheVNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVEZXZpY2VHcmF5KCkpOwogICAgIGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1tdID0geyB3aGl0
ZSwgYWxwaGEgfTsKLSAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UsIGNvbXBvbmVu
dHMpOworICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVhdGUoZ3JheVNwYWNlLCBjb21wb25l
bnRzKSk7CiB9CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJQREZWaWV3IHsKQEAgLTgzLDE0ICs4NCwx
NCBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKENHQ29sb3JSZWYpc2hh
ZG93Q29sb3IKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBzaGFkb3dDb2xvciA9IGNyZWF0ZUNH
Q29sb3JXaXRoRGV2aWNlV2hpdGUoMCwgMi4wIC8gMyk7Ci0gICAgcmV0dXJuIHNoYWRvd0NvbG9y
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IHNoYWRv
d0NvbG9yID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKKyAgICBy
ZXR1cm4gc2hhZG93Q29sb3IuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKENHQ29sb3JSZWYpYmFja2dy
b3VuZENvbG9yCiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgYmFja2dyb3VuZENvbG9yID0gY3Jl
YXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgyMDQuMCAvIDI1NSwgMSk7Ci0gICAgcmV0dXJuIGJh
Y2tncm91bmRDb2xvcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29s
b3JSZWY+PiBiYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDIw
NC4wIC8gMjU1LCAxKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yLmdldCgpLmdldCgpOwog
fQogCiAvLyBUaGlzIGlzIGEgc2VjcmV0IHByb3RvY29sIGZvciBXZWJEYXRhU291cmNlIGFuZCBX
ZWJGcmFtZVZpZXcgdG8gb2ZmZXIgdXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyBk
aWZmZXJlbnQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVs
ZW1lbnREaWN0aW9uYXJ5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVt
ZW50RGljdGlvbmFyeS5tbQppbmRleCAxZmI1MThmODc0YjgzZTY0YWZlNWZmNDk4ZDFlZjUxY2Uz
MTg1ZmM4Li5hZWI0ZDhmMTZmZGRiMDI1NTEwOGIyYTAwZWI5ZjY3MjE1ZjE3NjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnku
bW0KQEAgLTUwLDExICs1MCwxNSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3Rh
dGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgbG9va3VwVGFibGUgPSBOVUxMOworc3RhdGljIFJl
dGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiYgbG9va3VwVGFibGUoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4+IGxv
b2t1cFRhYmxlOworICAgIHJldHVybiBsb29rdXBUYWJsZTsKK30KIAogc3RhdGljIHZvaWQgYWRk
TG9va3VwS2V5KE5TU3RyaW5nICprZXksIFNFTCBzZWxlY3RvcikKIHsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShsb29rdXBUYWJsZSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgc2VsZWN0
b3IpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGxvb2t1cFRhYmxlKCkuZ2V0KCksIChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilrZXksIHNlbGVjdG9yKTsKIH0KIAogc3RhdGljIHZvaWQgY2FjaGVW
YWx1ZUZvcktleShjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnZhbHVlLCB2b2lkICpzZWxm
KQpAQCAtNzYsMTAgKzgwLDEwIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogCiArICh2b2lkKWluaXRp
YWxpemVMb29rdXBUYWJsZQogewotICAgIGlmIChsb29rdXBUYWJsZSkKKyAgICBpZiAobG9va3Vw
VGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbG9va3VwVGFibGUgPSBDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZDb3B5U3RyaW5nRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCk7CisgICAgbG9va3VwVGFibGUoKSA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGQ29w
eVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsIE5VTEwpKTsKIAogICAgIGFkZExvb2t1cEtl
eShXZWJFbGVtZW50RE9NTm9kZUtleSwgQHNlbGVjdG9yKF9kb21Ob2RlKSk7CiAgICAgYWRkTG9v
a3VwS2V5KFdlYkVsZW1lbnRGcmFtZUtleSwgQHNlbGVjdG9yKF93ZWJGcmFtZSkpOwpAQCAtMTI1
LDcgKzEyOSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtICh2b2lkKV9maWxsQ2FjaGUKIHsKLSAg
ICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKGxvb2t1cFRhYmxlLCBjYWNoZVZhbHVlRm9yS2V5
LCAoX19icmlkZ2Ugdm9pZCopc2VsZik7CisgICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlvbihs
b29rdXBUYWJsZSgpLmdldCgpLCBjYWNoZVZhbHVlRm9yS2V5LCAoX19icmlkZ2Ugdm9pZCopc2Vs
Zik7CiAgICAgX2NhY2hlQ29tcGxldGUgPSBZRVM7CiB9CiAKQEAgLTE0OSwxMiArMTUzLDEyIEBA
IC0gKGlkKW9iamVjdEZvcktleTooaWQpa2V5CiAgICAgaWYgKHZhbHVlIHx8IF9jYWNoZUNvbXBs
ZXRlIHx8IFtfbmlsVmFsdWVzIGNvbnRhaW5zT2JqZWN0OmtleV0pCiAgICAgICAgIHJldHVybiB2
YWx1ZTsKIAotICAgIFNFTCBzZWxlY3RvciA9IHN0YXRpY19jYXN0PFNFTD4oY29uc3RfY2FzdDx2
b2lkKj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobG9va3VwVGFibGUsIChfX2JyaWRnZSBDRlR5cGVS
ZWYpa2V5KSkpOworICAgIFNFTCBzZWxlY3RvciA9IHN0YXRpY19jYXN0PFNFTD4oY29uc3RfY2Fz
dDx2b2lkKj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobG9va3VwVGFibGUoKS5nZXQoKSwgKF9fYnJp
ZGdlIENGVHlwZVJlZilrZXkpKSk7CiAgICAgaWYgKCFzZWxlY3RvcikKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICB2YWx1ZSA9IFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpzZWxlY3Rvcl07CiAKLSAg
ICBOU1VJbnRlZ2VyIGxvb2t1cFRhYmxlQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChsb29r
dXBUYWJsZSk7CisgICAgTlNVSW50ZWdlciBsb29rdXBUYWJsZUNvdW50ID0gQ0ZEaWN0aW9uYXJ5
R2V0Q291bnQobG9va3VwVGFibGUoKS5nZXQoKSk7CiAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAg
IGlmICghX2NhY2hlKQogICAgICAgICAgICAgX2NhY2hlID0gW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Omxvb2t1cFRhYmxlQ291bnRdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQwMDhmYmJhMjhmMjE5OGY4YjA5
MWJiM2MzYTJlZTdjODMyMDM1NWIuLjViMGVlOGEzYWM4YzMzM2I2ZWUzNDRjZGQ5YzNiNTU3NjVj
MjZmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTEyNjMsMjggKzEyNjMsMzIgQEAgc3RhdGljIENGU2V0Q2FsbEJhY2tzIE5vblJldGFpbmluZ1Nl
dENhbGxiYWNrcyA9IHsKICAgICBDRkhhc2gKIH07CiAKLXN0YXRpYyBDRk11dGFibGVTZXRSZWYg
YWxsV2ViVmlld3NTZXQ7CitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZVNldFJlZj4mIGFsbFdl
YlZpZXdzU2V0KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0
YWJsZVNldFJlZj4+IGFsbFdlYlZpZXdzU2V0OworICAgIHJldHVybiBhbGxXZWJWaWV3c1NldDsK
K30KIAogKyAodm9pZClfbWFrZUFsbFdlYlZpZXdzUGVyZm9ybVNlbGVjdG9yOihTRUwpc2VsZWN0
b3IKIHsKLSAgICBpZiAoIWFsbFdlYlZpZXdzU2V0KQorICAgIGlmICghYWxsV2ViVmlld3NTZXQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgWyhfX2JyaWRnZSBOU011dGFibGVTZXQgKilhbGxX
ZWJWaWV3c1NldCBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpzZWxlY3Rvcl07CisgICAgWyhf
X2JyaWRnZSBOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIG1ha2VPYmplY3Rz
UGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXTsKIH0KIAogLSAodm9pZClfcmVtb3ZlRnJvbUFsbFdl
YlZpZXdzU2V0CiB7Ci0gICAgaWYgKGFsbFdlYlZpZXdzU2V0KQotICAgICAgICBDRlNldFJlbW92
ZVZhbHVlKGFsbFdlYlZpZXdzU2V0LCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOworICAgIGlm
IChhbGxXZWJWaWV3c1NldCgpKQorICAgICAgICBDRlNldFJlbW92ZVZhbHVlKGFsbFdlYlZpZXdz
U2V0KCkuZ2V0KCksIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIC0gKHZvaWQpX2Fk
ZFRvQWxsV2ViVmlld3NTZXQKIHsKLSAgICBpZiAoIWFsbFdlYlZpZXdzU2V0KQotICAgICAgICBh
bGxXZWJWaWV3c1NldCA9IENGU2V0Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAmTm9uUmV0YWluaW5n
U2V0Q2FsbGJhY2tzKTsKKyAgICBpZiAoIWFsbFdlYlZpZXdzU2V0KCkpCisgICAgICAgIGFsbFdl
YlZpZXdzU2V0KCkgPSBhZG9wdENGKENGU2V0Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAmTm9uUmV0
YWluaW5nU2V0Q2FsbGJhY2tzKSk7CiAKLSAgICBDRlNldFNldFZhbHVlKGFsbFdlYlZpZXdzU2V0
LCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOworICAgIENGU2V0U2V0VmFsdWUoYWxsV2ViVmll
d3NTZXQoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogQGVuZApAQCAt
MjIzMCw3ICsyMjM0LDcgQEAgKyAodm9pZCljbG9zZUFsbFdlYlZpZXdzCiAgICAgV2ViQ29yZTo6
RE9NV2luZG93OjpkaXNwYXRjaEFsbFBlbmRpbmdVbmxvYWRFdmVudHMoKTsKIAogICAgIC8vIFRo
aXMgd2lsbCBjbG9zZSB0aGUgV2ViVmlld3MgaW4gYSByYW5kb20gb3JkZXIuIENoYW5nZSB0aGlz
IGlmIGNsb3NlIG9yZGVyIGlzIGltcG9ydGFudC4KLSAgICBmb3IgKFdlYlZpZXcgKndlYlZpZXcg
aW4gWyhfX2JyaWRnZSBOU1NldCAqKWFsbFdlYlZpZXdzU2V0IGFsbE9iamVjdHNdKQorICAgIGZv
ciAoV2ViVmlldyAqd2ViVmlldyBpbiBbKF9fYnJpZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQo
KS5nZXQoKSBhbGxPYmplY3RzXSkKICAgICAgICAgW3dlYlZpZXcgY2xvc2VdOwogfQogCkBAIC02
OTExLDcgKzY5MTUsNyBAQCArIChCT09MKV9kaWRTZXRDYWNoZU1vZGVsCiArIChXZWJDYWNoZU1v
ZGVsKV9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZQogewogICAgIFdlYkNhY2hlTW9kZWwgY2Fj
aGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKLSAgICBOU0VudW1lcmF0b3Ig
KmVudW1lcmF0b3IgPSBbKE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0IG9iamVjdEVudW1l
cmF0b3JdOworICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICop
YWxsV2ViVmlld3NTZXQoKS5nZXQoKSBvYmplY3RFbnVtZXJhdG9yXTsKICAgICB3aGlsZSAoV2Vi
UHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1tlbnVtZXJhdG9yIG5leHRPYmplY3RdIHByZWZl
cmVuY2VzXSkKICAgICAgICAgY2FjaGVNb2RlbCA9IHN0ZDo6bWF4KGNhY2hlTW9kZWwsIFtwcmVm
ZXJlbmNlcyBjYWNoZU1vZGVsXSk7CiAgICAgcmV0dXJuIGNhY2hlTW9kZWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDUxMWE5MmI3
MmQxY2EwZDIzM2Q0OTFjMzAwMTk2MzQzMWNjNjRkMmEuLjhmMjcxNjJiYmFmMThlZTFjMTE4Yjk1
MTFmNTFiNDdlNDQ4NTc3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFw
cGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0xOTcsOSArMTk3LDcgQEAgSFJFU1VMVCBXZWJBcHBsaWNh
dGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKElQcm9wZXJ0eUJhZyoqIG9yaWdpbnMpCiAgICAg
Zm9yIChhdXRvJiBjb3JlT3JpZ2luIDogY29yZU9yaWdpbnMpCiAgICAgICAgIENGQXJyYXlBcHBl
bmRWYWx1ZShhcnJheUl0ZW0uZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFdlYlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShjb3JlT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRy
KCkpKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFy
eSA9IGFkb3B0Q0YoCi0gICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwotCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBhdXRvIGtleSA9IE1hcnNoYWxsaW5nSGVs
cGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYoX2JzdHJfdChMIm9yaWdpbnMiKSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwga2V5LmdldCgpLCBhcnJheUl0ZW0uZ2V0
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmlu
ZGV4IGVhMGI2NzUxYzU1NGU4MjdkYzk4MjU1Y2Q0YTcxNTdmMWQ1YWQyYjIuLjFkMjcwMmFkYjA4
Mjc3YzQ0NTA4ZDNkZmJkYzQyNzk4NmRjZmMyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgSFJFU1VMVCBXZWJE
b3dubG9hZDo6dXNlQ3JlZGVudGlhbChfSW5fb3B0XyBJV2ViVVJMQ3JlZGVudGlhbCogY3JlZGVu
dGlhbCwgX0luX28KICAgICBpZiAoIXdlYkNyZWRlbnRpYWwpCiAgICAgICAgIHJldHVybiBFX05P
SU5URVJGQUNFOwogCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50
aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCkpKTsKKyAg
ICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwo
KSk7CiAKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRl
bnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCB3ZWJDaGFsbGVuZ2Ut
PmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwpAQCAt
Mzc2LDcgKzM3Niw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlCiAgICAgaWYgKCFDRlVSTEF1
dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjaGFsbGVuZ2UpKSB7CiAgICAgICAg
IENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQoZW1wdHlTdHJpbmcoKSwg
Y29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSkpOwog
ICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNy
ZWRlbnRpYWwpKTsKKyAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0YoY3Jl
ZGVudGlhbCk7CiAgICAgICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25s
b2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmlu
ZGV4IGQ1YmVlZjgyZTk5MDg5MWE3MmU2YjRmYzRiZTM3ODgzMGFiNmFjOTAuLmZmMzRhZDA3Mzdh
MjZkMmExNzNlY2RiYjliOTY3YjU5ZTE2YmU2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcApAQCAtMzcwLDE0ICszNzAsMTIgQEAgc3RhdGljIGJvb2wgcHJlcGFyZURl
dmljZShJRGlyZWN0M0REZXZpY2U5KiBkZXZpY2UsIGNvbnN0IENHUmVjdCYgYm91bmRzLCBJRGly
ZWMKIAogc3RhdGljIENHUmVjdCB1cGRhdGVCb3VuZHMoQ0FSZW5kZXJVcGRhdGUqIHVwZGF0ZSkK
IHsKLSAgICBDR1NSZWdpb25PYmogcmduID0gQ0FSZW5kZXJVcGRhdGVDb3B5UmVnaW9uKHVwZGF0
ZSk7CisgICAgYXV0byByZ24gPSBhZG9wdENGKENBUmVuZGVyVXBkYXRlQ29weVJlZ2lvbih1cGRh
dGUpKTsKICAgICBpZiAoIXJnbikKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAKICAgICBD
R1JlY3QgcmVzdWx0OwotICAgIENHRXJyb3IgZXJyb3IgPSBDR1NHZXRSZWdpb25Cb3VuZHMocmdu
LCAmcmVzdWx0KTsKLSAgICBDR1NSZWxlYXNlUmVnaW9uKHJnbik7Ci0KKyAgICBDR0Vycm9yIGVy
cm9yID0gQ0dTR2V0UmVnaW9uQm91bmRzKHJnbi5nZXQoKSwgJnJlc3VsdCk7CiAgICAgcmV0dXJu
IGVycm9yID09IGtDR0Vycm9yU3VjY2VzcyA/IHJlc3VsdCA6IENHUmVjdFplcm87CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmlu
ZGV4IGI0MTY4YmY4NDE5MWU4YTExNDM5ZDkwMDMyZmU4OWVhNGQyNmY3MDQuLmJjOWUyMDM2OTBl
NzAzZmY0NjhlNDExNGU2OWVjYWVkNTQzN2ZiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtNjcsMTcgKzY3LDE3IEBAIHN0
YXRpYyBMb2NhbGl6ZWRTdHJpbmdNYXAgZnJhbWV3b3JrTG9jU3RyaW5ncygpCiBjbGFzcyBMb2Nh
bGl6ZWRTdHJpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsaXplZFN0cmluZyk7
CiBwdWJsaWM6Ci0gICAgTG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKLSAgICAg
ICAgOiBtX2NmU3RyaW5nKHN0cmluZykKKyAgICBMb2NhbGl6ZWRTdHJpbmcoUmV0YWluUHRyPENG
U3RyaW5nUmVmPiYmIHN0cmluZykKKyAgICAgICAgOiBtX2NmU3RyaW5nKFdURk1vdmUoc3RyaW5n
KSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9BUkcoc3RyaW5nLCBzdHJpbmcpOworICAgICAgICBB
U1NFUlQobV9jZlN0cmluZyk7CiAgICAgfQogCiAgICAgb3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0
OwotICAgIG9wZXJhdG9yIENGU3RyaW5nUmVmKCkgY29uc3QgeyByZXR1cm4gbV9jZlN0cmluZzsg
fQorICAgIG9wZXJhdG9yIENGU3RyaW5nUmVmKCkgY29uc3QgeyByZXR1cm4gbV9jZlN0cmluZy5n
ZXQoKTsgfQogCiBwcml2YXRlOgotICAgIENGU3RyaW5nUmVmIG1fY2ZTdHJpbmc7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBtX2NmU3RyaW5nOwogICAgIG11dGFibGUgU3RyaW5nIG1fc3Ry
aW5nOwogfTsKIApAQCAtODYsNyArODYsNyBAQCBMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQ
Q1RTVFIoKSBjb25zdAogICAgIGlmICghbV9zdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbV9zdHJpbmcud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCk7CiAKLSAgICBtX3N0cmluZyA9IG1f
Y2ZTdHJpbmc7CisgICAgbV9zdHJpbmcgPSBtX2NmU3RyaW5nLmdldCgpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDE7IGkgPCBtX3N0cmluZy5sZW5ndGgoKTsgaSsrKQogICAgICAgICBp
ZiAobV9zdHJpbmdbaV0gPT0gJ0AnICYmIChtX3N0cmluZ1tpIC0gMV0gPT0gJyUnIHx8IChpID4g
MiAmJiBtX3N0cmluZ1tpIC0gMV0gPT0gJyQnICYmIG1fc3RyaW5nW2kgLSAyXSA+PSAnMScgJiYg
bV9zdHJpbmdbaSAtIDJdIDw9ICc5JyAmJiBtX3N0cmluZ1tpIC0gM10gPT0gJyUnKSkpCkBAIC0x
NTIsNyArMTUyLDcgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNmQnVuZGxlRm9yU3RyaW5nc0J1bmRs
ZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3MKICAgICByZXR1cm4gc3RyaW5n
c0J1bmRsZS0+YnVuZGxlOwogfQogCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgY29weUxvY2FsaXplZFN0
cmluZ0Zyb21CdW5kbGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxl
LCBjb25zdCBTdHJpbmcmIGtleSkKK3N0YXRpYyBSZXRhblB0cjxDRlN0cmluZ1JlZj4gY29weUxv
Y2FsaXplZFN0cmluZ0Zyb21CdW5kbGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJp
bmdzQnVuZGxlLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
bm90Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKIApAQCAtMTYw
LDcgKzE2MCw3IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1
bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0CiAgICAgaWYgKCFidW5kbGUpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENGQ29w
eUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihD
RkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKSk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlc3VsdCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmlu
ZyAlcyBpbiBidW5kbGUiLCBrZXkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwYWZmYjQ1
YTE3ZmJiYzk4YzcwYWVlODJiNWViOWVlYTUyYzY4ZjA3Li41YmJkZWNhYWU1Mzk2MjE1MzM4Yjkx
NDBiMmNiNmIwZjA0Y2RiMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCkBAIC0xMTcsNyArMTE3LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHN0cmluZ1ZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRlByb3BlcnR5TGlzdFJlZiB2CiAK
IC8vIFdlYlByZWZlcmVuY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIENGRGljdGlvbmFyeVJlZiBkZWZh
dWx0U2V0dGluZ3M7CitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGRlZmF1bHRT
ZXR0aW5ncygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+PiBkZWZhdWx0U2V0dGluZ3M7CisgICAgcmV0dXJuIGRlZmF1bHRTZXR0aW5nczsK
K30KIAogUmV0YWluUHRyPENGU3RyaW5nUmVmPiBXZWJQcmVmZXJlbmNlczo6bV9hcHBsaWNhdGlv
bklkID0ga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb247CiAjZW5kaWYKQEAgLTIxNCwx
NTcgKzIxOCwxNTcgQEAgQ0ZTdHJpbmdSZWYgV2ViUHJlZmVyZW5jZXM6OmFwcGxpY2F0aW9uSWQo
KQogdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiB7CiAj
aWYgVVNFKENGKQotICAgIGlmIChkZWZhdWx0U2V0dGluZ3MpCisgICAgaWYgKGRlZmF1bHRTZXR0
aW5ncygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGRl
ZmF1bHRzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBh
dXRvIGRlZmF1bHRzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKIAogICAgIElOSVRJQUxJWkVfREVGQVVMVF9QUkVGRVJFTkNFU19ESUNUSU9OQVJZ
X0ZST01fR0VORVJBVEVEX1BSRUZFUkVOQ0VTOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigi
VGltZXMgTmV3IFJvbWFuIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3Iikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTZXJpZkZv
bnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIpKTsKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZlcmVu
Y2VLZXkpLCBDRlNUUigiQXJpYWwiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBT
YW5zIE1TIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ29taWMgU2FucyBNUyIpKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZv
bnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlNlZ29lIFVJIFN5bWJvbCIpKTsKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVy
ZW5jZUtleSksIENGU1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRNaW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RS
KCI5IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRE
ZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVBy
ZWZlcmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNU
UigiVGltZXMgTmV3IFJvbWFuIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJp
ZXIgTmV3IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIp
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
U2Fuc1NlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQXJpYWwiKSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJl
ZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiQ29taWMgU2FucyBNUyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIlNlZ29lIFVJIFN5bWJvbCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSksIENG
U1RSKCIwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRNaW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5Iikp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRE
ZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250
U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CiAKICAgICBTdHJpbmcgZGVmYXVsdERl
ZmF1bHRFbmNvZGluZyhXRUJfVUlfU1RSSU5HKCJJU08tODg1OS0xIiwgIlRoZSBkZWZhdWx0LCBk
ZWZhdWx0IGNoYXJhY3RlciBlbmNvZGluZyBvbiBXaW5kb3dzIikpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVBy
ZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwotCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVz
ZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0VGV4dEFyZWFzQXJlUmVzaXphYmxlUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdEphdmFFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdEVuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5j
ZUtleSksIENGU1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYkF1ZGlv
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NSZWdpb25zRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRMb2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RXhwZXJpbWVu
dGFsTm90aWZpY2F0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Wm9vbXNUZXh0
T25seVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0RGlzcGxheUltYWdlc0tleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TG9hZFNpdGVJY29uc0tleSksIGtDRkJv
b2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkpLCBDRlNUUigiMTgwMCIp
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VGFiVG9M
aW5rc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZhbGVudHNQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvd3NVUkxzSW5Ub29sVGlwc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMSIpKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UERGU2NhbGVGYWN0b3JQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0U2hvdWxkRGlzcGxheUNhcHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3Vs
ZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2Rp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0RW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQ
cmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENT
U1JlZ2lvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMb2FkU2l0ZUljb25zS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSks
IENGU1RSKCIxODAwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBy
aXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVzcGVj
dFN0YW5kYXJkU3R5bGVLZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRTaG93c1VSTHNJblRvb2xUaXBzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNob3dz
VG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBE
RkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RSKCIxIikpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQREZTY2FsZUZhY3RvclByZWZl
cmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGlua0JlaGF2
aW9yU3RyaW5nUmVmID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZT
VFIoIiVkIiksIFdlYktpdEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcikpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlv
clByZWZlcmVuY2VLZXkpLCBsaW5rQmVoYXZpb3JTdHJpbmdSZWYuZ2V0KCkpOwotCi0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEhpc3RvcnlJdGVtTGltaXRL
ZXkpLCBDRlNUUigiMTAwMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0S2V5KSwgQ0ZTVFIoIjciKSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEljb25EYXRhYmFzZUxv
Y2F0aW9uS2V5KSwgQ0ZTVFIoIiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dEZvbnRTbW9vdGhpbmdUeXBlUHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGb250U21vb3RoaW5nQ29udHJh
c3RQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lQcmVmZXJlbmNl
S2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKEFsbG93Q29udGludW91
c1NwZWxsQ2hlY2tpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSks
IENGU1RSKCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlv
clN0cmluZ1JlZi5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSksIENGU1RSKCIxMDAwIikpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIaXN0
b3J5QWdlSW5EYXlzTGltaXRLZXkpLCBDRlNUUigiNyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkp
LCBDRlNUUigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZvbnRTbW9vdGhp
bmdDb250cmFzdFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBv
bGljeVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoQWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsK
IAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVNb2RlbFJlZiA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlZCIpLCBXZWJDYWNoZU1vZGVsRG9j
dW1lbnRWaWV3ZXIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q2FjaGVN
b2RlbFByZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKIAotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBdXRob3JBbmRVc2VyU3R5bGVzRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250cm9s
c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBhaW50TmF0aXZlQ29udHJvbHNQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hv
d0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmVQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZVByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZ1bGxT
Y3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZy
YW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5QW5kUnVu
bmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dE
aXNwbGF5QW5kUnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRDdXN0b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q3Vz
dG9tRWxlbWVudHNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9u
c0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dFdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5k
VmFsdWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdExpbmtQcmVsb2FkRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMaW5rUHJlbG9hZEVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRNZWRpYVByZWxvYWRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJ
bnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VmlzdWFs
Vmlld3BvcnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFZpc3VhbFZp
ZXdwb3J0QVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Njcm9s
bGluZ0FQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U2Ny
b2xsaW5nQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlc2l6ZU9ic2VydmVy
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXNpemVPYnNlcnZlckVuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU09NVmlld1Ntb290aFNjcm9sbGlu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dENvbnRhY3RQaWNrZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENv
bnRhY3RQaWNrZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QXNwZWN0UmF0
aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRXZWJTUUxFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NJbmRpdmlkdWFs
VHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRD
U1NJbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRP
dmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE92
ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIGRlZmF1bHRTZXR0aW5ncyA9IGRlZmF1bHRzOworICAgIGRlZmF1bHRTZXR0aW5ncygp
ID0gV1RGTW92ZShkZWZhdWx0cyk7CiAjZW5kaWYKIH0KIApAQCAtMzc5LDcgKzM4Myw3IEBAIFJl
dGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gV2ViUHJlZmVyZW5jZXM6OnZhbHVlRm9yS2V5KENG
U3RyaW5nUmVmIGtleSkKICAgICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAot
ICAgIHJldHVybiBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleSk7Cisg
ICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncygpLmdldCgpLCBr
ZXkpOwogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRWYWx1ZUZvcktleShDRlN0cmluZ1Jl
ZiBrZXksIENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKQpAQCAtNjIwLDcgKzYyNCw3IEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyhDRkRp
Y3Rpb25hcnlSZWYgZGljdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChv
bWl0RGVmYXVsdHMpIHsKLSAgICAgICAgICAgIENGVHlwZVJlZiBkZWZhdWx0VmFsdWUgPSBDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleXNbaV0pOworICAgICAgICAgICAg
Q0ZUeXBlUmVmIGRlZmF1bHRWYWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0
aW5ncygpLmdldCgpLCBrZXlzW2ldKTsKICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWUgJiYg
Q0ZFcXVhbChkZWZhdWx0VmFsdWUsIHZhbHVlc1tpXSkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBmNjQ5OTI1MTMxOWIxMjRhZjliZWM2NDMyOTI1MTg3ODAwYTc2ZDc5Li4wMDBk
Njk0NmQ1YzdhMWFkNDI0NjY0YmQyZTIyMzQ5NWNhYjNiODE0IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMt
MTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWlu
UHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVt
cFN1cHBvcnRDRy5jcHA6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaDoKKyAgICAgICAgKEJpdG1h
cENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KToKKyAgICAgICAgKEJp
dG1hcENvbnRleHQ6OkJpdG1hcENvbnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKFdlYlRocmVhZExvY2tBZnRlckRlbGVnYXRl
Q2FsbGJhY2tzSGF2ZUNvbXBsZXRlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Bp
eGVsRHVtcFN1cHBvcnRXaW4uY3BwOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21X
ZWJWaWV3KToKKyAgICAgICAgKiBJbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OnBpeGVscyBjb25zdCk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdU
Ujo6Y3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UpOgorICAgICAgICAoV1RSOjpjcmVhdGVDR0Nv
bnRleHRGcm9tSW1hZ2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVs
c0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQpOgorCiAyMDIxLTAzLTEwICBNaWNoYWVsIENhdGFuemFy
byAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtXUEVdW0dUS10gSW50cm9kdWNl
IE5lZWRzVW5icmFuZGVkVXNlckFnZW50IHF1aXJrIGFuZCB1c2UgaXQgZm9yIGFjY291bnRzLmdv
b2dsZS5jb20sIGRvY3MuZ29vZ2xlLmNvbSwgYW5kIGRyaXZlLmdvb2dsZS5jb20KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCmluZGV4IDViYzA0MDNi
ODExYmM2NTVkZDIwZmEyZDQwOTIyOTlmMGU0MDdkODUuLjhlNmRkNWZlZDdkMmMyZWIzOWJjZWVi
YjFkNDY4Y2NlZDU5MjhjZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1Bp
eGVsRHVtcFN1cHBvcnRDRy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxE
dW1wU3VwcG9ydENHLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0
PiBjcmVhdGVCaXRtYXBDb250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGln
aCwKICAgICAKICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9y
IHNwYWNlIHByZXZlbnRzIGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRo
ZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VS
ZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsK
LSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIs
IHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0
KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShidWZm
ZXIsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgp
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0KSk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJl
bmRlclRyZWU6IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAs
IDB4JXgpIGZhaWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRl
cywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7CiAgICAgICAgIGZyZWUoYnVmZmVyKTsKQEAgLTEzNCw2
ICsxMzQsNiBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dChzaXpl
X3QgcGl4ZWxzV2lkZSwgc2l6ZV90IHBpeGVsc0hpZ2gsCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0
bWFwQW5kQ29udGV4dChidWZmZXIsIGNvbnRleHQpOworICAgIHJldHVybiBCaXRtYXBDb250ZXh0
OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4
dCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhl
bER1bXBTdXBwb3J0Q0cuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBv
cnRDRy5oCmluZGV4IDQxMjRiMGNhZWRjZTczOGY0NjQ2Y2RjMzhhN2I1MTZhMWE3NjFjMDguLmI3
OTRiMjE5OGVkOGEwYWExNDcyZDMwYjkzYTNhYmZhY2M3MDI3YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCkBAIC00Nyw5ICs0Nyw5IEBAIHR5cGVk
ZWYgSEJJVE1BUCBQbGF0Zm9ybUJpdG1hcEJ1ZmZlcjsKIAogY2xhc3MgQml0bWFwQ29udGV4dCA6
IHB1YmxpYyBSZWZDb3VudGVkPEJpdG1hcENvbnRleHQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KFBsYXRm
b3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAgc3RhdGlj
IFJlZjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChQbGF0
Zm9ybUJpdG1hcEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0NvbnRleHRSZWY+JiYgY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRleHQoYnVm
ZmVyLCBjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRl
eHQoYnVmZmVyLCBXVEZNb3ZlKGNvbnRleHQpKSk7CiAgICAgfQogCiAgICAgfkJpdG1hcENvbnRl
eHQoKQpAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICBCaXRtYXBD
b250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQp
CisgICAgQml0bWFwQ29udGV4dChQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBidWZmZXIsIFJldGFpblB0
cjxDR0NvbnRleHRSZWY+JiYgY29udGV4dCkKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0g
ICAgICAgICwgbV9jb250ZXh0KGFkb3B0Q0YoY29udGV4dCkpCisgICAgICAgICwgbV9jb250ZXh0
KFdURk1vdmUoY29udGV4dCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDNkY2U1YWM1YzMyOTFhMzYyZTQ3ZWI0MjBlNzc3
MjFlODJiNWI0YzQuLmI1MWUxYWVmZTJkZmY2YWNlZWI3NjQzYjNiNDMyZjIxZTQwNzliYWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwMCw2ICsx
MDAsNyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTE4MTAsMjAgKzE4
MTEsMTggQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUoY29uc3Qg
V1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXQKIC8vIGxvY2sgdG8gcHJldmVudCBwb3Rl
bnRpYWxseSByZS1lbnRlcmluZyBXZWJDb3JlLgogc3RhdGljIHZvaWQgV2ViVGhyZWFkTG9ja0Fm
dGVyRGVsZWdhdGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKCkKIHsKLSAgICBkaXNwYXRjaF9zZW1h
cGhvcmVfdCBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCk7
CisgICAgYXV0byBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc2Vt
YXBob3JlX2NyZWF0ZSgwKSk7CiAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIGRpc3BhdGNo
X3NlbWFwaG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUpOworICAgICAgICBkaXNwYXRjaF9z
ZW1hcGhvcmVfc2lnbmFsKGRlbGVnYXRlU2VtYXBob3JlLmdldCgpKTsKICAgICB9KTsKIAotICAg
IHdoaWxlIChkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChkZWxlZ2F0ZVNlbWFwaG9yZSwgRElTUEFU
Q0hfVElNRV9OT1cpKSB7CisgICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVn
YXRlU2VtYXBob3JlLmdldCgpLCBESVNQQVRDSF9USU1FX05PVykpIHsKICAgICAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CiAgICAgICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVu
TW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3Rd
XTsKICAgICAgICAgfQogICAgIH0KIAogICAgIFdlYlRocmVhZExvY2soKTsKLQotICAgIGRpc3Bh
dGNoX3JlbGVhc2UoZGVsZWdhdGVTZW1hcGhvcmUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAppbmRleCBhOWJhNjkx
ODMxMThiYjgzMjNjOGQ0OWIxZmQzMzlhNTFmNTM5YjYwLi4zOTVkMzAyN2I5ZDg3ZWE4OTU2ZTZi
MDAwODdjNjIxNDhhMjY3ZDhlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
UGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Bp
eGVsRHVtcFN1cHBvcnRXaW4uY3BwCkBAIC05MCw4ICs5MCw3IEBAIFJlZlB0cjxCaXRtYXBDb250
ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBp
bmNyZW1lCiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29s
b3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENH
Q29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBp
bmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQo
KSwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRG
aXJzdCk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUo
aW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwgaW5mby5ibVdpZHRo
Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCB8IGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICNlbGlmIFVTRShDQUlSTykgCiAgICAgY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRh
KCh1bnNpZ25lZCBjaGFyKilpbmZvLmJtQml0cywgQ0FJUk9fRk9STUFUX0FSR0IzMiwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJt
V2lkdGgsIGluZm8uYm1IZWlnaHQsIGluZm8uYm1XaWR0aEJ5dGVzKTsgCkBAIC0xMTIsNSArMTEx
LDUgQEAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmll
dyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWUKICAgICBhdXRvIGNvbnRleHQgPSByZW5kZXJU
YXJnZXQuZ2V0KCk7CiAjZW5kaWYgCiAKLSAgICByZXR1cm4gQml0bWFwQ29udGV4dDo6Y3JlYXRl
QnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBjb250ZXh0KTsKKyAgICByZXR1cm4g
Qml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBX
VEZNb3ZlKGNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURp
ZmYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ODU0ZjIyZGJhZmI1ZmIyNmU1ODJkN2U1
OTY0ODEzYjg5ZWVlOTFkLi45NjQxNjM3ZWQxZTA3MmMxZjhjYzI2YjE5N2YzYmUyZDRhNDIwYzZm
IDEwMDY0NAotLS0gYS9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNzcsNiArMTc3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAzMURGNDJDNjFFQkJCQkI5MDA5
NkVENDQgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNyI7CiAJCQl9OwogCQkJbmFt
ZSA9IERlYnVnOwogCQl9OwpAQCAtMTg0LDYgKzE4NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMzFERjQyQzYxRUJC
QkJCOTAwOTZFRDQ0IC8qIEltYWdlRGlmZi54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTciOwogCQkJfTsK
IAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtMTkxLDYgKzE5Myw3IEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMzFE
RjQyQzYxRUJCQkJCOTAwOTZFRDQ0IC8qIEltYWdlRGlmZi54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTci
OwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
SW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAgYi9Ub29scy9JbWFnZURpZmYvY2cvUGxh
dGZvcm1JbWFnZUNHLmNwcAppbmRleCBmMDNjMzU3OTJhZDBkMzQ0MWVmZTg1YWRkZGJmMDdlN2M3
NmY1MWRjLi4wNGQxZjRmM2VhNDc1MGExODgxMjk0ZWMwNjNkOWZiMGYwZDczNzA4IDEwMDY0NAot
LS0gYS9Ub29scy9JbWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAorKysgYi9Ub29scy9J
bWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWZkZWYg
X1dJTjMyCiAjaW5jbHVkZSA8d2luc29jazIuaD4KQEAgLTE0Miw5ICsxNDMsOCBAQCB1bnNpZ25l
ZCBjaGFyKiBQbGF0Zm9ybUltYWdlOjpwaXhlbHMoKSBjb25zdAogICAgIHNpemVfdCByb3dCeXRl
cyA9IHdpZHRoICogNDsKIAogICAgIG1fYnVmZmVyID0gY2FsbG9jKGhlaWdodCwgcm93Qnl0ZXMp
OwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG1fYnVm
ZmVyLCB3aWR0aCwgaGVpZ2h0LCA4LCByb3dCeXRlcywgQ0dJbWFnZUdldENvbG9yU3BhY2UobV9p
bWFnZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAs
IDAsIHdpZHRoLCBoZWlnaHQpLCBtX2ltYWdlKTsKLSAgICBDRlJlbGVhc2UoY29udGV4dCk7Cisg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobV9idWZmZXIs
IHdpZHRoLCBoZWlnaHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2ltYWdl
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtl
KDAsIDAsIHdpZHRoLCBoZWlnaHQpLCBtX2ltYWdlKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4obV9idWZmZXIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAppbmRleCAwMWM1MzFhOWI2YWNlOGU4MTY5
NDhmNjc2Y2U2MzFmNTI3OTRiNmM0Li40ZWM5YzIwZTk4MGY1ZTA3ZWZmMzMzNjhhZjk4MWY1Yjhi
NDk3YjFlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0
aW9uQ0cuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25D
Ry5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQ
TkcgPSBDRlNUUigicHVibGljLnBuZyIpOwogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RhdGljIENH
Q29udGV4dFJlZiBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlKQor
c3RhdGljIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdl
KENHSW1hZ2VSZWYgaW1hZ2UpCiB7CiAgICAgc2l6ZV90IHBpeGVsc1dpZGUgPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpOwogICAgIHNpemVfdCBwaXhlbHNIaWdoID0gQ0dJbWFnZUdldEhlaWdodChp
bWFnZSk7CkBAIC01MywxNSArNTMsMTUgQEAgc3RhdGljIENHQ29udGV4dFJlZiBjcmVhdGVDR0Nv
bnRleHRGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlKQogCiAgICAgLy8gQ3JlYXRpbmcgdGhp
cyBiaXRtYXAgaW4gdGhlIGRldmljZSBjb2xvciBzcGFjZSBzaG91bGQgcHJldmVudCBhbnkgY29s
b3IgY29udmVyc2lvbiB3aGVuIHRoZSBpbWFnZSBvZiB0aGUgd2ViIHZpZXcgaXMgZHJhd24gaW50
byBpdC4KICAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURl
dmljZVJHQigpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5n
ZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUoMCwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0
KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIz
Mkhvc3QpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgcGl4ZWxzV2lk
ZSwgcGl4ZWxzSGlnaCksIGltYWdlKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoKSwgaW1hZ2UpOwog
ICAgIHJldHVybiBjb250ZXh0OwogfQogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29u
dGV4dEZyb21JbWFnZShXS0ltYWdlUmVmIHdrSW1hZ2UpCitzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFnZSkKIHsK
ICAgICBhdXRvIGltYWdlID0gYWRvcHRDRihXS0ltYWdlQ3JlYXRlQ0dJbWFnZSh3a0ltYWdlKSk7
CiAgICAgcmV0dXJuIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKGltYWdlLmdldCgpKTsKQEAg
LTE1OCw3ICsxNTgsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFy
ZVdpdGhFeHBlY3RlZChTbmFwc2hvdFJlc3VsdFR5cGUgc25hcHNobwogICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZDogaW1hZ2UgaXMgbnVs
bFxuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dCA9
IGFkb3B0Q0YoY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKHdrSW1hZ2UpKTsKKyAgICAgICAgY29u
dGV4dCA9IGNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZSh3a0ltYWdlKTsKICAgICAgICAgaW1hZ2VT
aXplID0gV0tJbWFnZUdldFNpemUod2tJbWFnZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U25hcHNob3RSZXN1bHRUeXBlOjpXZWJWaWV3OgpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgVGVz
dEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFNuYXBzaG90UmVz
dWx0VHlwZSBzbmFwc2hvCiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoImR1bXBQaXhlbHNBbmRD
b21wYXJlV2l0aEV4cGVjdGVkOiBpbWFnZSBpcyBudWxsXG4iKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRG
cm9tQ0dJbWFnZShpbWFnZS5nZXQoKSkpOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlQ0dDb250
ZXh0RnJvbUNHSW1hZ2UoaW1hZ2UuZ2V0KCkpOwogICAgICAgICBpbWFnZVNpemUgPSBXS1NpemVN
YWtlKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="442040"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422844</attachid>
            <date>2021-03-10 10:33:00 -0800</date>
            <delta_ts>2021-03-10 10:49:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310103259.patch</filename>
            <type>text/plain</type>
            <size>220279</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uZmU2ZTk2NGU2MWViOGVjMjE1NjEyZTdiZWIxOTZjNjRiNTY4Y2EyOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM1NDEsOSArMzU0Miw4IEBAIGludCBqc2NtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvJiBt
ZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
OwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElTUEFUQ0hfUVVF
VUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVl
dWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAgICAgICAgYXV0
byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJqc2Mgc2hlbGwg
bWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKKyAgICAg
ICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92ZShxdWV1ZSkp
OwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGljYWxTdGF0ZSA9
IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxTeW5jaHJvbm91
cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9ub3VzPjo6Y3Jl
YXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRiNzdiLi4zN2I3
MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hR
dWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJiBxdWV1ZSkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3BhdGNoX3JldGFp
bihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlzcGF0Y2hfcmVs
ZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1ZXVlOworICAg
IG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dURi93
dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYwN2NkNjMxZDJl
Y2Y1ODgzYzU0N2M0N2M0Mi4uNGYyMTg1NGU5MjMzMTQxMjk1OTBhMDRjNjRiZmUxZDU2N2UwMTI4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApA
QCAtOTIsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBN
ZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3BhdGNoUXVldWUo
ZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0
Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRpZgogCiAgICAg
Y2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMDcsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hR
dWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rp
c3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2OTRiZDhjM2Y1
YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNDk0YmIxMDVhMWM5YzNkN2Y2ZDgzNmY5NDI5
NzQyNzU1N2RjOGEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysr
IGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVudEFwcGx5KHNpemVfdCBp
dGVyYXRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoc2l6ZV90IGluZGV4KT4mJik7CiAKICNpZiBV
U0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyAgICBkaXNwYXRjaF9xdWV1ZV90
IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0K
ICNlbHNlCiAgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7
IH0KICNlbmRpZgpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENPQ09BX0VW
RU5UX0xPT1ApCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKLSAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRj
aF9xdWV1ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZWxzZQogICAgIFJ1bkxvb3AqIG1fcnVuTG9v
cDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb2NvYS5tbQppbmRleCAwODhiMTljYzEwYTY1ZWZmZTVkNGU5ZmMyN2EwODFjMjU2YmEz
NzZmLi41YzBmNWIyNTQ0ZjdiYTVlZTRkNzI1MDYwN2Y3ZmQ2ZmJkMDQ0MzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQpAQCAt
NjgsMTMgKzY4LDEzIEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKICAg
ICBpZiAobV9pbnN0YWxsZWQgfHwgdGltZXJFdmVudFNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX2Fz
eW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVf
Tk9STUFMIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfV0FSTiB8IERJU1BBVENIX01FTU9SWVBS
RVNTVVJFX0NSSVRJQ0FMIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfUFJPQ19MSU1JVF9XQVJO
IHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfUFJPQ19MSU1JVF9DUklUSUNBTDsKICNlbHNlIC8v
IFBMQVRGT1JNKE1BQykKICAgICAgICAgYXV0byBtZW1vcnlTdGF0dXNGbGFncyA9IERJU1BBVENI
X01FTU9SWVBSRVNTVVJFX0NSSVRJQ0FMOwogI2VuZGlmCi0gICAgICAgIG1lbW9yeVByZXNzdXJl
RXZlbnRTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBF
X01FTU9SWVBSRVNTVVJFLCAwLCBtZW1vcnlTdGF0dXNGbGFncywgbV9kaXNwYXRjaFF1ZXVlKTsK
KyAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVh
dGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJFU1NVUkUsIDAsIG1lbW9yeVN0YXR1c0Zs
YWdzLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCkpOwogCiAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9z
ZXRfZXZlbnRfaGFuZGxlcihtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlLCBeewogICAgICAgICAg
ICAgYXV0byBzdGF0dXMgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEobWVtb3J5UHJlc3N1cmVF
dmVudFNvdXJjZSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6Omluc3RhbGwoKQogICAgIH0pOwogCiAgICAgLy8gQWxsb3cgc2ltdWxhdGlvbiBvZiBtZW1v
cnkgcHJlc3N1cmUgd2l0aCAibm90aWZ5dXRpbCAtcCBvcmcuV2ViS2l0Lmxvd01lbW9yeSIKLSAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5IiwgJm5vdGlm
eVRva2Vuc1swXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rl
cl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBdLCBtX2Rp
c3BhdGNoUXVldWUuZ2V0KCksIF4oaW50KSB7CiAjaWYgRU5BQkxFKEZNV19GT09UUFJJTlRfQ09N
UEFSSVNPTikKICAgICAgICAgYXV0byBmb290cHJpbnRCZWZvcmUgPSBwYWdlc1BlclZNVGFnKCk7
CiAjZW5kaWYKQEAgLTEyNCwxNSArMTI0LDE1IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKCkKICAgICAgICAgbG9nRm9vdHByaW50Q29tcGFyaXNvbihmb290cHJpbnRCZWZv
cmUsIGZvb3RwcmludEFmdGVyKTsKICNlbmRpZgogCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKG1f
ZGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVl
LmdldCgpLCBeewogICAgICAgICAgICAgZW5kU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5X
ZWJLaXQubG93TWVtb3J5LmJlZ2luIiwgJm5vdGlmeVRva2Vuc1sxXSwgbV9kaXNwYXRjaFF1ZXVl
LCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF4o
aW50KSB7CiAgICAgICAgIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKICAgICB9KTsK
LSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmVuZCIs
ICZub3RpZnlUb2tlbnNbMl0sIG1fZGlzcGF0Y2hRdWV1ZSwgXihpbnQpIHsKKyAgICBub3RpZnlf
cmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmVuZCIsICZub3RpZnlUb2tl
bnNbMl0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAgICAgICAgZW5kU2ltdWxh
dGVkTWVtb3J5UHJlc3N1cmUoKTsKICAgICB9KTsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKQogICAgIGlmICghbV9pbnN0YWxsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwg
XnsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAgICAg
IGlmIChtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlKSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9z
b3VyY2VfY2FuY2VsKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UpOwogICAgICAgICAgICAgbWVt
b3J5UHJlc3N1cmVFdmVudFNvdXJjZSA9IG51bGxwdHI7CkBAIC0xNjQsOCArMTY0LDggQEAgdm9p
ZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAKIHZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpob2xkT2ZmKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBkaXNwYXRjaF9hc3lu
YyhtX2Rpc3BhdGNoUXVldWUsIF57Ci0gICAgICAgIHRpbWVyRXZlbnRTb3VyY2UgPSBkaXNwYXRj
aF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1RJTUVSLCAwLCAwLCBtX2Rpc3Bh
dGNoUXVldWUpOworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsK
KyAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFU
Q0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiAgICAg
ICAgIGlmICh0aW1lckV2ZW50U291cmNlKSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9zZXRfY29u
dGV4dCh0aW1lckV2ZW50U291cmNlLCB0aGlzKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUg
ZmluYWwgYXJndW1lbnQgYHNfbWluaW11bUhvbGRPZmZUaW1lLnNlY29uZHMoKWAgc2VlbXMgd3Jv
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKaW5kZXggMzc3M2M3OTg1
MmViYjIxYmQwNmQ1NjdiMDE3Y2Y3YzkzMjI1M2RlNi4uNDljZGJiNTg4MGJiMTY2YjVmNzVlNTZk
ZGM3OWMxY2ZhMWE1NDA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1
ZXVlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNw
cApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIFdvcmtRdWV1ZTo6
ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoX2Fz
eW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKKyAgICBkaXNwYXRjaF9h
c3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CiAgICAgICAg
IGZ1bmN0aW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7
Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVy
YXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxv
Y2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24gPSBXVEZNb3Zl
KGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hf
VElNRV9OT1csIGR1cmF0aW9uLm5hbm9zZWNvbmRzQXM8aW50NjRfdD4oKSksIG1fZGlzcGF0Y2hR
dWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24oKTsKICAg
ICB9KS5nZXQoKSk7CiB9CkBAIC00OSwxMyArNDksMTIgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRm
b3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCiB7CiAg
ICAgZGlzcGF0Y2hfcXVldWVfYXR0cl90IGF0dHIgPSB0eXBlID09IFR5cGU6OkNvbmN1cnJlbnQg
PyBESVNQQVRDSF9RVUVVRV9DT05DVVJSRU5UIDogRElTUEFUQ0hfUVVFVUVfU0VSSUFMOwogICAg
IGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRyX21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgVGhy
ZWFkOjpkaXNwYXRjaFFPU0NsYXNzKHFvcyksIDApOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZShuYW1lLCBhdHRyKTsKLSAgICBkaXNwYXRjaF9zZXRfY29udGV4
dChtX2Rpc3BhdGNoUXVldWUsIHRoaXMpOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGFkb3B0T1NP
YmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKG5hbWUsIGF0dHIpKTsKKyAgICBkaXNwYXRjaF9z
ZXRfY29udGV4dChtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIHRoaXMpOwogfQogCiB2b2lkIFdvcmtR
dWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlz
cGF0Y2hRdWV1ZSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpjb25jdXJyZW50QXBwbHkoc2l6ZV90
IGl0ZXJhdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmIGZ1bmN0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IGM2N2NjM2E5NjNh
NTBlYzIxYWViODY3MjUwOWNkNmIyOTE1M2RjOGIuLjMwZWYzNjA1NzE0NGNiMmExYmY1NjBiNTRl
YzZhNjhiNmFhMDU3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5n
SW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAK
QEAgLTExMSwxNiArMTExLDEzIEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3Ig
ewogICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JS
ZWYgY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0g
eyAwLCBudWxscHRyLCByZXRhaW4sIHJlbGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwgYWxsb2NhdGUs
IHJlYWxsb2NhdGUsIGRlYWxsb2NhdGUsIHByZWZlcnJlZFNpemUgfTsKLSAgICAgICAgcmV0dXJu
IENGQWxsb2NhdG9yQ3JlYXRlKG51bGxwdHIsICZjb250ZXh0KTsKLSAgICB9Ci0KICAgICBzdGF0
aWMgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IgPSBjcmVhdGUoKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRv
cjsKKyAgICAgICAgc3RhdGljIGF1dG8gYWxsb2NhdG9yID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICAgICAgICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLCBudWxscHRy
LCByZXRhaW4sIHJlbGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwgYWxsb2NhdGUsIHJlYWxsb2NhdGUs
IGRlYWxsb2NhdGUsIHByZWZlcnJlZFNpemUgfTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdENG
KENGQWxsb2NhdG9yQ3JlYXRlKG51bGxwdHIsICZjb250ZXh0KSk7CisgICAgICAgIH0oKSk7Cisg
ICAgICAgIHJldHVybiBhbGxvY2F0b3IuZ2V0KCkuZ2V0KCk7CiAgICAgfQogCiB9CkBAIC0xMzgs
MTUgKzEzNSwxNSBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNG
U3RyaW5nKCkKICAgICBBU1NFUlQoIVN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0
cmluZyk7CiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nID0gdGhp
czsKIAotICAgIENGU3RyaW5nUmVmIHN0cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHN0cmluZzsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHN0cmluZyA9IENGU3RyaW5nQ3Jl
YXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEs
IGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIGVsc2UKLSAgICAgICAgc3Ry
aW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVu
aUNoYXIqPihjaGFyYWN0ZXJzMTYoKSksIG1fbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAg
ICAgLy8gQ29yZUZvdW5kYXRpb24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcs
IHdlIGNsZWFyIGN1cnJlbnRTdHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2Nh
dGUoKS4KICAgICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXR1cm4gc3RyaW5nOwog
fQogCiAvLyBPbiBTdHJpbmdJbXBsIGNyZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxv
Y2F0b3IgaXMgdGhlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGZmZTYzYTZjMzliODQ2YzFlNTk3NjE1ZGJjNDcy
ZmQ3M2UyMDA2NjguLjRiMDFlYzM3OWViYTlmY2UxZDhhNDg2OTFjNThhODA1YjgzODQ2YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtMzAsNiArMzAsOCBA
QAogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIm9iamNfaW5z
dGFuY2UuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5o
PgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKQEAgLTM5LDIyICs0
MSwyNiBAQCBPYmpjQ2xhc3M6Ok9iamNDbGFzcyhDbGFzc1N0cnVjdFB0ciBhQ2xhc3MpCiB7CiB9
CiAKLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9IDA7CitzdGF0
aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBjbGFzc2VzQnlJc0EoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4+IGNsYXNzZXNCeUlzQTsKKyAgICByZXR1cm4gY2xhc3Nlc0J5SXNBOworfQogCiBzdGF0aWMg
dm9pZCBfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3NhcnkoKQogewotICAgIGlmICghY2xhc3Nl
c0J5SXNBKQotICAgICAgICBjbGFzc2VzQnlJc0EgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxl
KE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGlmICghY2xhc3Nlc0J5SXNBKCkpCisgICAgICAg
IGNsYXNzZXNCeUlzQSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5VTEws
IDAsIE5VTEwsIE5VTEwpKTsKIH0KIAogT2JqY0NsYXNzKiBPYmpjQ2xhc3M6OmNsYXNzRm9ySXNB
KENsYXNzU3RydWN0UHRyIGlzYSkKIHsKICAgICBfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3Nh
cnkoKTsKIAotICAgIGF1dG8gYUNsYXNzID0gcmVpbnRlcnByZXRfY2FzdDxPYmpjQ2xhc3MqPihj
b25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFzc2VzQnlJc0EsIChfX2Jy
aWRnZSBDRlR5cGVSZWYpaXNhKSkpOworICAgIGF1dG8gYUNsYXNzID0gcmVpbnRlcnByZXRfY2Fz
dDxPYmpjQ2xhc3MqPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFz
c2VzQnlJc0EoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EpKSk7CiAgICAgaWYgKCFh
Q2xhc3MpIHsKICAgICAgICAgYUNsYXNzID0gbmV3IE9iamNDbGFzcyhpc2EpOwotICAgICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShjbGFzc2VzQnlJc0EsIChfX2JyaWRnZSBDRlR5cGVSZWYpaXNh
LCBhQ2xhc3MpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShjbGFzc2VzQnlJc0EoKS5n
ZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGFDbGFzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBs
YWNlQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKaW5k
ZXggODVlOWJjNGFhNGVkZGZiNDQ1Mzk0YjBlOGQzOTYwN2Y0MmQxMjRlZi4uMDg4ZjAyZThkYTI0
NDA2YTkwM2Y5ZGEwOThhNjFiODI0NzBlNzI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
bWFydFJlcGxhY2VDRi5jcHAKQEAgLTM2LDMzICszNiwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgZ2V0U21hcnRTZXQoYm9vbCBpc1By
ZXZpb3VzQ2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYg
cHJlU21hcnRTZXQ7Ci0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwb3N0U21h
cnRTZXQ7Ci0gICAgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHNtYXJ0U2V0ID0gaXNQcmV2aW91
c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0IDogcG9zdFNtYXJ0U2V0OworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmPj4gcHJlU21hcnRT
ZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0
ZXJTZXRSZWY+PiBwb3N0U21hcnRTZXQ7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUNoYXJhY3Rl
clNldFJlZj4mIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0Lmdl
dCgpIDogcG9zdFNtYXJ0U2V0LmdldCgpOwogICAgIGlmICghc21hcnRTZXQpIHsKLSAgICAgICAg
c21hcnRTZXQgPSBDRkNoYXJhY3RlclNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luU3RyaW5nKHNtYXJ0U2V0
LCBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gQ0ZTVFIoIihbXCJcJyMkLy1geyIpIDogQ0ZTVFIoIild
Liw7Oj9cJyFcIiUqLS99IikpOwotICAgICAgICBDRkNoYXJhY3RlclNldFVuaW9uKHNtYXJ0U2V0
LCBDRkNoYXJhY3RlclNldEdldFByZWRlZmluZWQoa0NGQ2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFu
ZE5ld2xpbmUpKTsgICAgICAgIAorICAgICAgICBzbWFydFNldCA9IGFkb3B0Q0YoQ0ZDaGFyYWN0
ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgQ0ZDaGFy
YWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21hcnRTZXQuZ2V0KCksIGlzUHJldmlvdXND
aGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7IikgOiBDRlNUUigiKV0uLDs6P1wnIVwiJSot
L30iKSk7CisgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hh
cmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGlu
ZSkpOworCiAgICAgICAgIC8vIEFkZGluZyBDSksgcmFuZ2VzCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2
KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDExRkYpCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUy
KSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgyRTgwIC0gMHgyRkRGKQotICAgICAgICBD
RkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgw
eDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBDSksgU3ltYm9scywgSGly
YWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbywgS2Fu
YnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgzMUJGKQotICAgICAgICBDRkNoYXJhY3Rl
clNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5
MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9ncmFwaHMgKFVuaSBIYW4gJiBFeHQgQSks
ICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5n
dWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRk
Q2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAweEZFNEYp
Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENG
UmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBGb3JtICgweEZGMDAg
LSAweEZGRUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21h
cnRTZXQsIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAvLyBDSksgSWRlb2dyYXBoIEV4
bnRlbnNpb24gQgotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNt
YXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAyMUUpKTsgLy8gQ0pLIENvbXBhdGliaWxp
dHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0
QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MTEwMCwg
MjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDExRkYpCisgICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4
MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgyRTgwIC0gMHgyRkRGKQor
ICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgp
LCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBD
SksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3VsIENvbXBhdGli
aWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgzMUJGKQorICAg
ICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBD
RlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9ncmFw
aHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKKyAgICAgICAgQ0ZD
aGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9n
cmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBD
SksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAweEZFNEYpCisgICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4
RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBGb3JtICgweEZGMDAgLSAweEZGRUYpCisg
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCks
IENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAvLyBDSksgSWRlb2dyYXBoIEV4bnRlbnNp
b24gQgorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0
LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAyMUUpKTsgLy8gQ0pLIENvbXBhdGliaWxp
dHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCiAKLSAgICAgICAgaWYgKGlzUHJldmlv
dXNDaGFyYWN0ZXIpCi0gICAgICAgICAgICBwcmVTbWFydFNldCA9IHNtYXJ0U2V0OwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQsIENGQ2hh
cmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRQdW5jdHVhdGlvbikpOyAgICAg
ICAKLSAgICAgICAgICAgIHBvc3RTbWFydFNldCA9IHNtYXJ0U2V0OwotICAgICAgICB9CisgICAg
ICAgIGlmICghaXNQcmV2aW91c0NoYXJhY3RlcikKKyAgICAgICAgICAgIENGQ2hhcmFjdGVyU2V0
VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFy
YWN0ZXJTZXRQdW5jdHVhdGlvbikpOwogICAgIH0KLSAgICByZXR1cm4gc21hcnRTZXQ7CisgICAg
cmV0dXJuIHNtYXJ0U2V0LmdldCgpOwogfQogCiBib29sIGlzQ2hhcmFjdGVyU21hcnRSZXBsYWNl
RXhlbXB0KFVDaGFyMzIgYywgYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmlu
ZGV4IDFjZDVkOWZkYjhhMTQxOWQzNjdjMDg2ZTBjNmNhNjNkZmVkNjMzMjUuLjUwOWYyM2JhY2Ux
ZWU1ZmE2MTdkODVjYmRhMTU2OGQ5OTM4Yjg1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTExOSwxMCAr
MTE5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50IHsgMCB9OwogfTsKIAot
c3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ29sb3IoZmxvYXQg
ciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAgICBDR0Zsb2F0IGNvbXBvbmVudHNb
NF0gPSB7IHIsIGcsIGIsIGEgfTsKLSAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JT
cGFjZVJlZigpLCBjb21wb25lbnRzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRl
KHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpKTsKIH0KIAogc3RydWN0IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvIHsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlVXNh
Z2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogCiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0
QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRz
U2NhbGU6Mi4wXTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRD
RihjcmVhdGVDb2xvcigwLCAwLCAwLCAwLjgpKS5nZXQoKV07CisgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0QmFja2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAsIDAsIDAsIDAuOCkuZ2V0KCldOwogICAg
IFttX2xheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBu
b3JtYWxIZWlnaHQpXTsKIAogICAgIG92ZXJsYXkoKS5sYXllcigpLnNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKG1fbGF5ZXIuZ2V0KCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJw
b3NlOjpOb25lKTsKQEAgLTI4MCwxNyArMjgwLDE3IEBAIHN0YXRpYyB2b2lkIHNob3dUZXh0KENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBj
CiAKIHN0YXRpYyB2b2lkIGRyYXdHcmFwaExhYmVsKENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9h
dCB4LCBmbG9hdCB5LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JS
ZWYgYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAxKTsKLSAgICBzaG93VGV4dChjb250ZXh0
LCB4ICsgNSwgeSAtIDMsIGJsYWNrLCB0ZXh0KTsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0
ZSA9IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA0
LCB5IC0gNCwgd2hpdGUsIHRleHQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4+IGJsYWNrID0gY3JlYXRlQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgc2hv
d1RleHQoY29udGV4dCwgeCArIDUsIHkgLSAzLCBibGFjay5nZXQoKS5nZXQoKSwgdGV4dCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gd2hpdGUgPSBj
cmVhdGVDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCB4ICsgNCwgeSAt
IDQsIHdoaXRlLmdldCgpLmdldCgpLCB0ZXh0KTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd0NwdUhp
c3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIs
IFJpbmdCdWZmZXI8ZmxvYXQ+JiBoaXN0b3J5KQogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNw
dUNvbG9yID0gY3JlYXRlQ29sb3IoMCwgMSwgMCwgMSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY3B1Q29sb3IgPSBjcmVhdGVDb2xvcigwLCAxLCAw
LCAxKTsKIAotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNw
dUNvbG9yKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBj
cHVDb2xvci5nZXQoKS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQs
IDEpOwogCiAgICAgaW50IGkgPSAwOwpAQCAtMzIxLDggKzMyMSw4IEBAIHN0YXRpYyB2b2lkIGRy
YXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv
YXQgeTIsIFJpCiAKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMSk7CiAKLSAg
ICBzdGF0aWMgQ0dDb2xvclJlZiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4z
LCAxKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYXBh
Y2l0eUNvbG9yKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JS
ZWY+PiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4zLCAxKTsKKyAgICBDR0Nv
bnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYXBhY2l0eUNvbG9yLmdldCgp
LmdldCgpKTsKIAogICAgIHNpemVfdCBpID0gMDsKIApAQCAtMzM1LDggKzMzNSw4IEBAIHN0YXRp
YyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9h
dCB5MSwgZmxvYXQgeTIsIFJpCiAgICAgICAgIGkrKzsKICAgICB9KTsKIAotICAgIHN0YXRpYyBD
R0NvbG9yUmVmIHNpemVDb2xvciA9IGNyZWF0ZUNvbG9yKDAuNiwgMC41LCAwLjksIDEpOwotICAg
IENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIHNpemVDb2xvcik7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gc2l6ZUNvbG9y
ID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tl
Q29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9yLmdldCgpLmdldCgpKTsKIAogICAgIGkg
PSAwOwogCkBAIC00NTYsMTAgKzQ1NiwxMCBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5Ojpw
bGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgQ0dSZWN0IHZpZXdCb3VuZHMg
PSBtX292ZXJsYXktPmJvdW5kcygpOwogICAgIENHQ29udGV4dENsZWFyUmVjdChjb250ZXh0LCB2
aWV3Qm91bmRzKTsKIAotICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTGFiZWxzID0gY3Jl
YXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDIw
LCBjb2xvckZvckxhYmVscywgbWFrZVN0cmluZygiICAgICAgICBDUFU6ICIsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFzdCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJv
cykpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMzAsIGNvbG9yRm9yTGFiZWxzLCAiICBG
b290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7Ci0gICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZvckxhYmVscywgIiAgIEV4dGVybmFsOiAi
ICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxhc3QoKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGNvbG9yRm9yTGFi
ZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7CisgICAgc2hvd1RleHQoY29udGV4
dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgbWFrZVN0cmluZygiICAgICAg
ICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFzdCgp
LCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMzAs
IGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICBGb290cHJpbnQ6ICIgKyBmb3JtYXRCeXRl
TnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDQw
LCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAgIEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0
ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxhc3QoKSkpOwogCiAgICAgZmxvYXQgeSA9
IDU1OwogICAgIGZvciAoYXV0byYgY2F0ZWdvcnkgOiBkYXRhLmNhdGVnb3JpZXMpIHsKQEAgLTQ4
MCw4ICs0ODAsOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dD
b250ZXh0UmVmIGNvbnRleHQpCiAgICAgeSAtPSA1OwogCiAgICAgTW9ub3RvbmljVGltZSBub3cg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDEw
LCBjb2xvckZvckxhYmVscywgIiAgICBFZGVuIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRp
bWVPZk5leHRFZGVuQ29sbGVjdGlvbiwgbm93KSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAs
IHkgKyAyMCwgY29sb3JGb3JMYWJlbHMsICIgICAgRnVsbCBHQzogIiArIGdjVGltZXJTdHJpbmco
ZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5vdykpOworICAgIHNob3dUZXh0KGNvbnRl
eHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICAgIEVkZW4gR0M6
ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsK
KyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5n
ZXQoKSwgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVPZk5leHRGdWxs
Q29sbGVjdGlvbiwgbm93KSk7CiAKICAgICBkcmF3Q3B1SGlzdG9yeShjb250ZXh0LCB2aWV3Qm91
bmRzLnNpemUud2lkdGggLSA3MCwgMCwgdmlld0JvdW5kcy5zaXplLmhlaWdodCwgZGF0YS5jcHUp
OwogICAgIGRyYXdHQ0hpc3RvcnkoY29udGV4dCwgdmlld0JvdW5kcy5zaXplLndpZHRoIC0gMTQw
LCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRhLmdjSGVhcFNpemUsIGRhdGEuY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXS5kaXJ0eVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwCmluZGV4IDgyMDNj
MDM2YTM2MTI1N2U1MmU4MDVkMWZmOTU4ODRjNmI0ODFhNjQuLjMwZDVlMDU1NTE5YmNhMDAzZDI0
NTQ1ZjQzZGQyMTM3MGNmMDJkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNlcnRpZmljYXRlQ0ZXaW4uaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCwxOSAr
MzUsMTkgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NlcnRDb250ZXh0KHZvaWQqIHB0ciwgdm9pZCog
aW5mbykKICAgICAgICAgQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQoc3RhdGljX2Nhc3Q8UEND
RVJUX0NPTlRFWFQ+KHB0cikpOwogfQogCi1zdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlQ2Vy
dENvbnRleHREZWFsbG9jYXRvcigpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBj
cmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQg
YWxsb2NDb250ZXh0ID0gewogICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCBkZWFsbG9jQ2Vy
dENvbnRleHQsIDAKICAgICB9OwotICAgIHJldHVybiBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9j
YXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KSk7CiB9CiAKIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNvcHlDZXJ0aWZpY2F0ZVRvRGF0YShQQ0NFUlRfQ09OVEVYVCBj
ZXJ0aWZpY2F0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY2VydERlYWxsb2MgPSBj
cmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4+IGNlcnREZWFsbG9jID0gY3JlYXRlQ2VydENvbnRl
eHREZWFsbG9jYXRvcigpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRlQ29weSA9IENl
cnREdXBsaWNhdGVDZXJ0aWZpY2F0ZUNvbnRleHQoY2VydGlmaWNhdGUpOwotICAgIHJldHVybiBh
ZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpj
ZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOworICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNv
cHkpLCBjZXJ0RGVhbGxvYy5nZXQoKS5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggMDU3MzI1YzA2MmRiY2U1ZDgxMmZiNDhmODQ3MzI1OTg2MmFlZDc0OS4u
MzA1OGVlODE3ZmNkZjk1ODRjYmIzNjE3MWY0YzZmYzg0NzEyN2Q4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24g
PSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBGb250V2lk
dGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gVGV4dFJlbmRlcmlu
Z01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlvbkRhdGEqID0gbnVsbHB0cik7CiAKICNp
ZiBVU0UoQ09SRV9URVhUKQotICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQbGF0Zm9ybURhdGEoQ1RG
b250UmVmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQgPSBmYWxzZSwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRhdGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6
SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJX
aWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5k
ZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250
UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+JiYsIGZsb2F0IHNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlxdWUgPSBmYWxzZSwgRm9udE9y
aWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBGb250V2lkdGhWYXJpYW50
ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRl
eHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmluZywgQ3JlYXRpb25EYXRhKiA9IG51bGxw
dHIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggYWEzMTMyYmFiZjcwMjNjZmE1ZjM4MDhjMjM4ZTlh
ZmQzZGZiZmI4NC4uZDAyYTQ2YjNhM2FmOGNkNzJkODgwOTJiOTM4ZTlmMjI3MTBlYzI3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMzUsNyArMzUs
NyBAQAogCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dQYXR0ZXJuKiBDR1BhdHRlcm5S
ZWY7Ci10eXBlZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9ybVBhdHRlcm5QdHI7Cit0eXBlZGVmIFJl
dGFpblB0cjxDR1BhdHRlcm5SZWY+IFBsYXRmb3JtUGF0dGVyblB0cjsKICNlbGlmIFVTRShESVJF
Q1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNoOwogdHlwZWRlZiBJRDJEMUJpdG1hcEJy
dXNoKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhODIxNWNjMDVm
ZjIyZDEyOTBmMTcwODAxOTA1NDIxYTAxOTcwOTVhLi43NjdhOTZiYTFlYjdlYjFiZTQwMjdiZjMx
ODBiNzUwZmFkZTUzYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTY5LDEwICs2OSwxMSBAQAog
I2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogLy8gU29mdC1saW5raW5nIGhlYWRl
cnMgbXVzdCBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIHRoZXkgI2RlZmluZSBmdW5jdGlvbnMsIGNv
bnN0YW50cywgZXRjLgogI2luY2x1ZGUgIkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaCIKQEAg
LTE1Nyw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJs
ZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3QgeyByZXR1cm4gbV9sZWdpYmxlT3V0cHV0
LmdldCgpOyB9CiAgICAgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2FmZU1lZGlhU2VsZWN0
aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsKICNlbmRpZgotICAgIGlubGluZSBkaXNw
YXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlv
blF1ZXVlOyB9CisgICAgaW5saW5lIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCk7IH0KIAogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+IHRh
a2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYpOwpAQCAtMTk1LDcgKzE5Niw3IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmPiBtX3NlbGVj
dGlvbkdyb3VwOwogI2VuZGlmCiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fbm90aWZpY2F0aW9u
UXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9ub3RpZmljYXRpb25R
dWV1ZTsKIAogICAgIG11dGFibGUgUmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV9jYVZpZGVvTGF5
ZXI7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV92aWRlb0xheWVyV3JhcHBlcjsKQEAg
LTI0NCw3ICsyNDUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkK
IH0KICNlbmRpZgogCi1zdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkK
K3N0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpCiB7
CiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtleU5hbWVzW10gPSB7CiAgICAgICAgIEFW
Q0ZBc3NldFByb3BlcnR5RHVyYXRpb24sCkBAIC0yNTgsMTMgKzI1OSwxMyBAQCBzdGF0aWMgQ0ZB
cnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKICNlbmRpZgogICAgIH07CiAgICAgCi0g
ICAgcmV0dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9m
KGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilrZXlO
YW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpKTsKIH0KIAogc3RhdGljIENGQXJyYXlSZWYgbWV0YWRhdGFLZXlOYW1lcygp
CiB7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYga2V5cyA9IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMo
KTsKLSAgICByZXR1cm4ga2V5czsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGQXJyYXlSZWY+PiBrZXlzID0gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpOworICAgIHJldHVy
biBrZXlzLmdldCgpLmdldCgpOwogfQogCiAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIGlm
IEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRlZCB0aGlzIGtleS4KQEAgLTEzNzUsNyAr
MTM3Niw3IEBAIEFWRldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YqIG93bmVyKQogICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09
IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBw
ZXI6OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAKLSAgICBtX25vdGlmaWNhdGlvblF1ZXVlID0g
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5u
b3RpZmljYXRpb25RdWV1ZSIsIDApOworICAgIG1fbm90aWZpY2F0aW9uUXVldWUgPSBhZG9wdE9T
T2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Yubm90aWZpY2F0aW9uUXVldWUiLCAwKSk7CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9M
T0FERVJfREVMRUdBVEUpCiAgICAgbV9yZXNvdXJjZUxvYWRlckNhbGxiYWNrcy52ZXJzaW9uID0g
a0FWQ0ZBc3NldFJlc291cmNlTG9hZGVyX0NhbGxiYWNrc1ZlcnNpb25fMTsKQEAgLTEzOTUsOSAr
MTM5Niw2IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVyKCkKICAgICBkZXN0cm95VmlkZW9MYXll
cigpOwogICAgIGRlc3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogCi0gICAgaWYgKG1fbm90aWZpY2F0
aW9uUXVldWUpCi0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9ub3RpZmljYXRpb25RdWV1ZSk7
Ci0KICAgICBpZiAoYXZBc3NldCgpKSB7CiAgICAgICAgIEFWQ0ZBc3NldENhbmNlbExvYWRpbmco
YXZBc3NldCgpKTsKICAgICAgICAgbV9hdkFzc2V0ID0gMDsKQEAgLTE1MzAsNyArMTUyOCw3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wg
aW5oZXJpdFVSSSkKIAogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCks
IEFWQ0ZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgY2ZSZXN0cmljdGlvbnMuZ2V0
KCkpOwogCi0gICAgbV9hdkFzc2V0ID0gYWRvcHRDRihBVkNGVVJMQXNzZXRDcmVhdGVXaXRoVVJM
QW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIG9wdGlvbnNSZWYu
Z2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKKyAgICBtX2F2QXNzZXQgPSBhZG9wdENGKEFW
Q0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVy
bFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZS5nZXQoKSkp
OwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQogICAgIEFTU0VSVChj
YWxsYmFja0NvbnRleHQoKSk7CkBAIC0xNTY3LDI0ICsxNTY1LDI0IEBAIHZvaWQgQVZGV3JhcHBl
cjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkqIGQzZERldmljZSkKICNlbmRpZgogCiAg
ICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gY3JlYXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBh
biBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3Byb2JsZW0vOTg3NzczMD4uCi0gICAgQVZDRlBs
YXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRp
b25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVmLmdldCgp
LCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxheWVyID0gYWRvcHRDRihwbGF5ZXJS
ZWYpOworICAgIGF1dG8gcGxheWVyUmVmID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlV2l0aFBs
YXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBv
cHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpKSk7CisgICAgbV9hdlBs
YXllciA9IHBsYXllclJlZjsKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05f
R1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCi0gICAg
QVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZChwbGF5ZXJSZWYsIEZBTFNF
KTsKKyAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKHBsYXllclJl
Zi5nZXQoKSwgRkFMU0UpOwogI2VuZGlmCiAKICAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZDRlBs
YXllclNldERpcmVjdDNERGV2aWNlUHRyKCkpCi0gICAgICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3Qz
RERldmljZVB0cigpKHBsYXllclJlZiwgbV9kM2REZXZpY2UuZ2V0KCkpOworICAgICAgICBBVkNG
UGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5ZXJSZWYuZ2V0KCksIG1fZDNkRGV2aWNl
LmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZp
Y2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIAotICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
biwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllclJhdGVDaGFu
Z2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJSZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKIAogICAgIC8vIEFkZCBhIHRpbWUgb2JzZXJ2
ZXIsIGFzayB0byBiZSBjYWxsZWQgaW5mcmVxdWVudGx5IGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5
IHdhbnQgcGVyaW9kaWMgY2FsbGJhY2tzIGJ1dAogICAgIC8vIG91ciBvYnNlcnZlciB3aWxsIGFs
c28gYmUgY2FsbGVkIHdoZW5ldmVyIGEgc2VlayBoYXBwZW5zLgogICAgIGNvbnN0IGRvdWJsZSB2
ZXJ5TG9uZ0ludGVydmFsID0gNjAqNjAqNjAqMjQqMzA7Ci0gICAgbV90aW1lT2JzZXJ2ZXIgPSBh
ZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsKHBs
YXllclJlZiwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFsLCAxMCksIG1fbm90aWZpY2F0aW9u
UXVldWUsICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrLCBjYWxsYmFja0NvbnRleHQoKSkp
OworICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNU
aW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYuZ2V0KCksIENNVGltZU1ha2UodmVyeUxv
bmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpLCAmcGVyaW9kaWNUaW1l
T2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpKTsKIH0KIAogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKQEAgLTE2MDcsMjIgKzE2MDUsMjIgQEAgdm9pZCBBVkZXcmFw
cGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ3JlYXRl
IHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBiZWdpbiBsb2FkaW5nIG1lZGlhIGRhdGEuCi0gICAgQVZD
RlBsYXllckl0ZW1SZWYgaXRlbVJlZiA9IEFWQ0ZQbGF5ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtD
RkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0gICAg
bV9hdlBsYXllckl0ZW0gPSBhZG9wdENGKGl0ZW1SZWYpOworICAgIGF1dG8gaXRlbVJlZiA9IGFk
b3B0RihBVkNGUGxheWVySXRlbUNyZWF0ZVdpdGhBc3NldChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBh
dkFzc2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKKyAgICBtX2F2UGxheWVySXRl
bSA9IGl0ZW1SZWY7CiAKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIgPSBDRk5v
dGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7CiAgICAgQVNTRVJUKGNlbnRlcik7CiAK
LSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRp
bWVOb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
RGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVy
KGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxh
eWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9u
U3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1S
ZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
LSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJh
bmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVt
UmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7
Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25T
aXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlv
biwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxs
YmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5
YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRp
b25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0
aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0
aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90
aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50
ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0
ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3Vz
cGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNl
bnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNh
bGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1S
ZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVN0YXR1c0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdl
c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRl
ckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxi
YWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBp
dGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVz
ZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmlj
YXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZp
Y2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwg
aXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZO
b3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBu
b3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmlj
YXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVs
aXZlckltbWVkaWF0ZWx5KTsKICAgICAvLyBGSVhNRTogQXJlIHRoZXJlIG90aGVyIGxlZ2libGUg
b3V0cHV0IHRoaW5ncyB3ZSBuZWVkIHRvIHJlZ2lzdGVyIGZvcj8gYXNzZXQgYW5kIGhhc0VuYWJs
ZWRBdWRpbyBhcmUgbm90IGV4cG9zZWQgYnkgQVZDRgogCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKQEAgLTE3NTQsMTUgKzE3
NTIsMTQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIHsKICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCVwKSIsIHRoaXMpOwogCi0gICAg
c3RhdGljIENGQXJyYXlSZWYgcHJvcGVydHlLZXlOYW1lOwotICAgIGlmICghcHJvcGVydHlLZXlO
YW1lKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrZXlOYW1lc1tdID0geyAK
KyAgICBzdGF0aWMgYXV0byBwcm9wZXJ0eUtleU5hbWUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga2V5TmFtZXNbXSA9IHsKICAgICAg
ICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUKICAgICAgICAgfTsKLSAgICAgICAgcHJv
cGVydHlLZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBz
aXplb2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlOYW1lcykgLyBzaXplb2Yoa2V5TmFtZXNb
MF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgfSgpKTsKIAotICAgIEFWQ0ZBc3Nl
dExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0
eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0
KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMo
YXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCkuZ2V0KCksIGxvYWRQbGF5YWJsZUNvbXBs
ZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOwogfQogCiB2b2lkIEFWRldyYXBwZXI6
OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRl
eHQpCkBAIC0yMDAzLDcgKzIwMDAsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRl
b0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0IGhv
b2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKCkuCi0g
ICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXllckxheWVyQ3JlYXRlV2l0aEFW
Q0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIoKSwgbV9ub3RpZmljYXRpb25R
dWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJMYXllckNy
ZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVyKCksIG1fbm90
aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjcmVh
dGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlzLCB2aWRlb0xheWVyKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1MjA5OGE5ZGNiNjU1ZTEzNjkuLmM2NzQ5
ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYpIENGX1JFVFVSTlNfUkVUQUlO
RUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29s
b3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
VEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGlj
eTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JL
ZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogewotICAgIHJldHVybiBhZG9wdENGKFdl
YkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUNH
Q29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTg5LDcgKzg5LDcgQEAg
Q29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7
CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
K3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xv
clNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIENHQ29s
b3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGF1dG8gW3IsIGcsIGIs
IGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwg
ZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zs
b2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9y
U3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYgKzEyNiwxNiBAQCBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmIChhdXRvIHNyZ2IgPSBjb2xv
ci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpS
R0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JBIHsg
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTogewotICAgICAgICAgICAgc3RhdGljIENH
Q29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IHRyYW5zcGFyZW50Q0dDb2xvciA9IGNy
ZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xv
ci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JB
IHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVm
IGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKLSAgICAgICAgICAgIHJldHVybiBi
bGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVhdGVDR0NvbG9yKGNvbG9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0ZSB9LnZhbHVlOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xv
cik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOworICAgICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gd2hpdGVDR0NvbG9yID0gY3Jl
YXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yLmdldCgp
LmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAppbmRleCBhM2ZiODlk
NTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVhLi4yMGUxY2NhYmNkOGZlNzAzOWQ0NWNm
OTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENGU3RyaW5nUmVmJiBjb2xvclNwYWNlTmFt
ZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIG5hbWVkQ29sb3JTcGFjZSgp
CiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPj4gY29sb3JTcGFjZTsKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpOwotICAgICAgICBBU1NFUlQoY29sb3JT
cGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpKTsKKyAgICAgICAgQVNT
RVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwotICAgIHJldHVybiBjb2xvclNwYWNlOwor
ICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgpOwogfQogCiBDR0NvbG9yU3BhY2VSZWYg
c1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDFiYTllYmVjMmRkMmMw
ZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1ZWNhNjc0NmExOWE4MTZiZGNjOGExMTZj
OWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJU
b0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsK
IAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9IGFkb3B0Q0Yo
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNU
TSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5j
cmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBh
dHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0g
PSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJl
dGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5m
aWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pKTsKKyAgICBh
dXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaApp
bmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRiOTgwMTEwN2RmMjkyLi4yNzE1OTI0ZDE0
YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQxLDggQEAgdHlwZWRlZiB1bnNpZ25lZCBH
cmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCwgR3JhcGhpY3ND
b250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAgIDogbV9jZ0NvbnRleHQoY2dDb250ZXh0
KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCisgICAg
ICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRleHQpKQogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1fc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93
cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cu
Y3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1NTdlMTcxZjlhMTgzMzBkMjQuLmExOWEy
MTFhODcxNzk4NWQ2ZDRjOWY5NDEzODhhYzFiMTQ2MDA4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAtNDUsMjMgKzQ1LDIzIEBAIHN0
YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90IGNv
dW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIENHQ29udGV4dFJlZiBjcmVhdGVT
Y3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlU2Ny
YXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9
IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YUNvbnN1bWVyUmVm
PiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGUoMCwgJmNhbGxiYWNrcykp
OwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQREZDb250ZXh0Q3JlYXRlKGNvbnN1bWVy
LmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1l
ckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR1BE
RkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAsIDApKTsKIAogICAgIENHRmxvYXQgYmxh
Y2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4
dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQsIGJsYWNrKTsK
KyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4dC5nZXQoKSwgYmxhY2spOworICAgIENH
Q29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0KCksIGJsYWNrKTsKIAogICAgIHJldHVy
biBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENHQ29udGV4dFJlZiBzY3JhdGNoQ29udGV4
dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY3JlYXRlU2NyYXRjaENv
bnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQgPSBjcmVhdGVTY3JhdGNoQ29udGV4dCgp
OworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgpOwogfQogCiBQYXRoIFBhdGg6OnBvbHln
b25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludD4mIHBvaW50cykKQEAgLTIx
MCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVu
Y3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCoKICAgICB9CiB9CiAKLXN0YXRp
YyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMoQ0dQYXRoUmVmIG9y
aWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gY29weUNHUGF0
aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2luYWxQYXRoKQogewotICAgIENHTXV0YWJs
ZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1BhdGhBcHBseShv
cmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24pOwot
ICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAgICBhdXRvIHBhdGggPSBhZG9wdENGKENH
UGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoQXBwbHkob3JpZ2luYWxQYXRoLCBwYXRo
LmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGllckZ1bmN0aW9uKTsKKyAgICBDR1BhdGhD
bG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKQEAgLTIyNyw3
ICsyMjcsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQgJnBvaW50LCBX
aW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDR1Bh
dGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9yIG5vbi1jbG9zZWQgcGF0aHMsIGFzIGEg
d29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRoZSBwYXRoIGZpcnN0LiAgUmFkYXIgNDc1
ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8gdXNlCi0gICAgYXV0byBwYXRoID0gYWRv
cHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBsYXRmb3JtUGF0aCgpKSk7CisgICAgYXV0
byBwYXRoID0gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhwbGF0Zm9ybVBhdGgoKSk7CiAgICAg
Ym9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0KCksIDAsIHBvaW50LCBydWxl
ID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZhbHNlKTsKICAgICByZXR1cm4gcmV0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5j
cHAKaW5kZXggM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4M2ZkZWIxZGNjOTNjZjljMy4uNzZlYTlh
ZjRkNDIzMjQ5NDFhODk3ZmFhM2U1ZGZkYWIyM2RmODEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICBjYWxs
T25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5m
bykpXSB7IH0pOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAorUmV0
YWluUHRyPENHUGF0dGVyblJlZj4gUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAogewogICAgIEZsb2F0
UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKIApAQCAtNjgsNyAr
NjgsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGlu
ZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAg
ICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBw
aXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVhdFgoKSAmJiByZXBlYXRZKCkpCi0gICAgICAgIHJl
dHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICBy
ZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0
KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpKTsK
IAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0
ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28K
ICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTgyLDcgKzgyLDcg
QEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0ltYWdlUmVmIGltYWdlID0gcGxhdGZv
cm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVy
bkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
IH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywg
VFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENHUGF0dGVybkNy
ZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NH
UGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXgg
NmYzMjJjMzVhOWY5OTE1NmY5MTU2OTliNjJhNmU2NTA1Y2VhMWVjMi4uZjc3ZjExYjM4N2YwMzI2
ZTRlYmU5ZjhkNzNlNDczODNmNGFjNTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwCkBAIC0zNSwxOCArMzUsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKENURm9udFJlZiBmb250LCBm
bG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9u
dE9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwg
VGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRlcmluZ01vZGUsIENyZWF0aW9uRGF0YSogY3JlYXRp
b25EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShSZXRhaW5QdHI8Q1RG
b250UmVmPiYmIGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlh
bnQgd2lkdGhWYXJpYW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3Jl
YXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCiAgICAgOiBGb250UGxhdGZvcm1EYXRhKHNpemUsIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQs
IHRleHRSZW5kZXJpbmdNb2RlLCBjcmVhdGlvbkRhdGEpCiB7CiAgICAgQVNTRVJUX0FSRyhmb250
LCBmb250KTsKICNpZiBQTEFURk9STShXSU4pCi0gICAgbV9jdEZvbnQgPSBmb250OworICAgIG1f
Y3RGb250ID0gV1RGTW92ZShmb250OykKICNlbHNlCi0gICAgbV9mb250ID0gZm9udDsKKyAgICBt
X2ZvbnQgPSBXVEZNb3ZlKGZvbnQpOwogI2VuZGlmCi0gICAgbV9pc0NvbG9yQml0bWFwRm9udCA9
IENURm9udEdldFN5bWJvbGljVHJhaXRzKGZvbnQpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7
Ci0gICAgbV9pc1N5c3RlbUZvbnQgPSBXZWJDb3JlOjppc1N5c3RlbUZvbnQoZm9udCk7Ci0gICAg
YXV0byB2YXJpYXRpb25zID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENU
Rm9udENvcHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFZhcmlhdGlvbkF0dHJpYnV0ZSkpKTsKKyAg
ICBtX2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMoZm9udC5nZXQo
KSkgJiBrQ1RGb250Q29sb3JHbHlwaHNUcmFpdDsKKyAgICBtX2lzU3lzdGVtRm9udCA9IFdlYkNv
cmU6OmlzU3lzdGVtRm9udChmb250LmdldCgpKTsKKyAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9w
dENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250
LmdldCgpLCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOwogICAgIG1faGFzVmFyaWF0aW9u
cyA9IHZhcmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQodmFyaWF0aW9ucy5nZXQoKSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5k
ZXggNzdlMWMzZjE2MmYwNjYzZmI4NTNmYTIyNWFjMjQ4YjQ1NmU0MWFmNC4uZTNmMDkyNzAzNDhl
N2E1YWVmNzI2NmViNDcyZGRiYWU3M2JjMzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1t
CkBAIC0yMTEsMTQgKzIxMSwxMyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoQ0dJbWFnZVJlZgogICAgIENWUGl4
ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKICAgICB2b2lkKiBkYXRhID0g
Q1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzKHJnYkJ1ZmZlcik7CiAgICAgYXV0byByZXRhaW5l
ZFJHQkJ1ZmZlciA9IGFkb3B0Q0YocmdiQnVmZmVyKTsKLSAgICBhdXRvIGNvbnRleHQgPSBDR0Jp
dG1hcENvbnRleHRDcmVhdGUoZGF0YSwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHJnYkJ1ZmZlciksIHNSR0JDb2xv
clNwYWNlUmVmKCksIChDR0JpdG1hcEluZm8pIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0
Qnl0ZXNQZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5m
bykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQ
aXhlbEJ1ZmZlcjogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlIHJldHVybmVkIG51bGxwdHIiKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byByZXRhaW5lZENvbnRleHQg
PSBhZG9wdENGKGNvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1Jl
Y3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBpbWFn
ZSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKICAgICBD
VlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKIAogICAgIHJldHVy
biBjb252ZXJ0UGl4ZWxCdWZmZXIocmdiQnVmZmVyLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQppbmRleCA0NTExMDdiYmI0NjViZGUzOTU0NDlkYzA3OGQ4
MDVhOGUxNjRmOGE0Li4wMzIwOTY5ODhmY2RlMjE3MTc1OTMzNTAwMTM5MGViM2ZiYjk5YTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0xNDIsMTMgKzE0
MiwxMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVu
c0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBzdGF0aWMgY29uc3Qgdm9p
ZCogb3B0aW9uS2V5c1tdID0geyBrQ1RUeXBlc2V0dGVyT3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2
ZWwgfTsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZs
dHJGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9p
ZCogcnRsT3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNob3J0VHlwZSwgJnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07
Ci0gICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0
aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0Rp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
LSAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRp
b25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+
IGx0clR5cGVzZXR0ZXJPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVO
R1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gcnRsVHlwZXNldHRlck9wdGlvbnMg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25L
ZXlzLCBydGxPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZD
b3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAogICAgICAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwg
c3RyaW5nQXR0cmlidXRlcy5nZXQoKSB9OwogICAgICAgICAvLyBGSVhNRTogU29tZSBTREtzIGNv
bXBsYWluIHRoYXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgYmVsb3cgY2Fubm90IGJlIG51bGwuCiAg
ICAgICAgIElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOCi0gICAgICAgIFJldGFpblB0
cjxDVFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBhZG9wdENGKENUVHlwZXNldHRlckNyZWF0
ZVdpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRl
cywgMCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBl
c2V0dGVyT3B0aW9ucykpOworICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBl
c2V0dGVyID0gYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoVW5pQ2hhclByb3ZpZGVyQW5k
T3B0aW9ucygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvLCBtX3J1bi5sdHIo
KSA/IGx0clR5cGVzZXR0ZXJPcHRpb25zLmdldCgpLmdldCgpIDogcnRsVHlwZXNldHRlck9wdGlv
bnMuZ2V0KCkuZ2V0KCkpKTsKICAgICAgICAgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5E
CiAKICAgICAgICAgaWYgKCF0eXBlc2V0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3Bw
CmluZGV4IDc0OGVkYjk0MDA5ZmQyOGE4OTI1ZmRhZjI0ZjNiMGUyNTliYTZkMTguLmZhYWI2ZTE0
ZjAyN2E0NDRiZDZkZTI3MTJlNjY5NTRhNzY1NWRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRm9u
dDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgRm9udE8KIAogICAg
IGlmICghZW5hYmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0gMDsKLSAg
ICAgICAgc3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk51bWJlclJlZj4+IHplcm9LZXJu
aW5nVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlckZsb2F0VHlwZSwgJnplcm8pKTsKICAgICAgICAga2V5c1tjb3VudF0gPSBrQ1RLZXJu
QXR0cmlidXRlTmFtZTsKLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWU7
CisgICAgICAgIHZhbHVlc1tjb3VudF0gPSB6ZXJvS2VybmluZ1ZhbHVlLmdldCgpLmdldCgpOwog
ICAgICAgICArK2NvdW50OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXgg
Y2VkYjAyZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOC4uYjYyMDE1ODM4MWI0YzBh
YjQ3MjcyYmE0MTc2MWM1NTdkMWViMDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBA
IC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENHQ29udGV4
dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCitzdGF0aWMgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0Fs
cGhhKQogewogICAgIEhCSVRNQVAgYml0bWFwID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oR2V0Q3Vy
cmVudE9iamVjdChoZGMsIE9CSl9CSVRNQVApKTsKIApAQCAtNTUsMTIgKzU1LDExIEBAIHN0YXRp
YyBDR0NvbnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCAoaGFzQWxwaGEgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4
ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsRGF0YS5i
eXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVy
KCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwg
OCwgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcElu
Zm8pKTsKIAogICAgIC8vIEZsaXAgY29vcmRzCi0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNv
bnRleHQsIDAsIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxl
Q1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5n
ZXQoKSwgMCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVD
VE0oY29udGV4dC5nZXQoKSwgMSwgLTEpOwogICAgIAogICAgIC8vIFB1dCB0aGUgSERDIEluIGFk
dmFuY2VkIG1vZGUgc28gaXQgd2lsbCBob25vciBhZmZpbmUgdHJhbnNmb3Jtcy4KICAgICBTZXRH
cmFwaGljc01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
ZXZpY2UuY3BwCmluZGV4IDZhMTYwM2QyMWI2OGVjNWJlMjhmZDA2OTU5N2NkZDIyY2FmMjNkNmMu
LjhlNWIzZTQyMjE0NzdlOTIxZDc4MjI1MTk0NTI2MmY5ZTBhOGU4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgTUdEZXZpY2VDbGFz
cyBkZXZpY2VDbGFzcygpCiBTdHJpbmcgZGV2aWNlTmFtZSgpCiB7CiAjaWYgVEFSR0VUX09TX0lP
UwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZXZpY2VOYW1lOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBkZXZpY2VOYW1lOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsK
LSAgICAgICAgZGV2aWNlTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihNR0NvcHlBbnN3
ZXIoa01HUURldmljZU5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZGV2aWNlTmFtZS5nZXQoKSA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNl
TmFtZSwgbnVsbHB0cikpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZGV2aWNlTmFtZTsKKyAgICBy
ZXR1cm4gZGV2aWNlTmFtZS5nZXQoKS5nZXQoKTsKICNlbHNlCiAgICAgcmV0dXJuICJpUGhvbmUi
X3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFn
SW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
CmluZGV4IGM2NGE0YmNhMWFkOGU3YjcyYWYyMjYwM2ZiMWNjMDFmOTc2OWY2MjAuLjczNTkzM2Yx
NzIwODViOWU2NjkzYWQ0NGIyYWYxNjBiMzQwYzRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgZGVsZXRl
RHJhZ0ltYWdlKERyYWdJbWFnZVJlZikKIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lz
dGVtRm9udChDR0Zsb2F0IHNpemUpCiB7CiAgICAgVUlGb250ICpmb250ID0gW1BBTDo6Z2V0VUlG
b250Q2xhc3MoKSBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOwotICAgIHJldHVybiBGb250Q2FzY2Fk
ZShGb250UGxhdGZvcm1EYXRhKENURm9udENyZWF0ZVdpdGhOYW1lKChDRlN0cmluZ1JlZilmb250
LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSwgZm9udC5wb2ludFNpemUpKTsKKyAgICBy
ZXR1cm4gRm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YShhZG9wdENGKENURm9udENyZWF0ZVdp
dGhOYW1lKChDRlN0cmluZ1JlZilmb250LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSks
IGZvbnQucG9pbnRTaXplKSk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKEVsZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
VGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIEZvbnRSZW5kZXJpbmdNb2RlLCBmbG9h
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bQppbmRleCA5MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJlYzQyMWEzNDJkMzZiZjQxLi5hNjA4OGY3
ZjZlODBkYWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0xMjQsMTggKzEyNCwzOCBA
QCB0eXBlZGVmIGVudW0gewogICAgIElnbm9yZUF1dG9yZWxlYXNlUG9vbAogfSBBdXRvcmVsZWFz
ZVBvb2xPcGVyYXRpb247CiAKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZTsKLXN0YXRpYyBDRk11dGFibGVBcnJheVJlZiBXZWJUaHJlYWRSZWxlYXNlT2Jq
QXJyYXk7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4mIHdlYlRocmVhZFJl
bGVhc2VTb3VyY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZS
dW5Mb29wU291cmNlUmVmPj4gd2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKKyAgICByZXR1cm4gd2Vi
VGhyZWFkUmVsZWFzZVNvdXJjZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVBcnJh
eVJlZj4mIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4+IHdlYlRocmVhZFJlbGVhc2VPYmpB
cnJheTsKKyAgICByZXR1cm4gd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworfQogCiBzdGF0aWMg
TG9jayBkZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0
aW9uOwotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7
CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgZGVsZWdhdGVTb3VyY2Uo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNl
UmVmPj4gZGVsZWdhdGVTb3VyY2U7CisgICAgcmV0dXJuIGRlbGVnYXRlU291cmNlOworfQorCiBz
dGF0aWMgQk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcK
IHN0YXRpYyBCT09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CiAjZW5kaWYKIAotc3RhdGljIENG
UnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworc3RhdGlj
IFJldGFpblB0cjxDRlJ1bkxvb3BPYnNlcnZlclJlZj4mIG1haW5SdW5Mb29wQXV0b1VubG9ja09i
c2VydmVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9v
cE9ic2VydmVyUmVmPj4gbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7CisgICAgcmV0dXJu
IG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworfQorCiBzdGF0aWMgQk9PTCBtYWluVGhy
ZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2s7CiAKIHN0YXRpYyBMb2NrIHN0YXJ0dXBMb2NrOwpAQCAt
MjM0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRy
PE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUKGRlbGVnYXRlU291cmNlKTsKKyAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UoKSk7
CiAgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAogICAgIGRlbGVnYXRlSW52b2NhdGlvbigpID0g
V1RGTW92ZShpbnZvY2F0aW9uKTsKQEAgLTI1NSw3ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCBTZW5k
RGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAg
ICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29t
bW9uVk0oKSk7CiAgICAgICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIAotICAgICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoZGVsZWdhdGVTb3VyY2UpOworICAgICAgICBDRlJ1bkxvb3BTb3VyY2VT
aWduYWwoZGVsZWdhdGVTb3VyY2UoKS5nZXQoKSk7CiAgICAgICAgIENGUnVuTG9vcFdha2VVcChD
RlJ1bkxvb3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7
CkBAIC0yOTYsNyArMzE2LDcgQEAgdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQodm9pZChe
ZGVsZWdhdGVCbG9jaykoKSkKIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikK
IHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSk7CisgICAgQVNTRVJUKHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKSk7
CiAKICNpZiBMT0dfUkVMRUFTRVMKICAgICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbbWFpbiB0aHJl
YWRdOiAlQCIsIG9iaik7CkBAIC0zMDQsMTAgKzMyNCwxMCBAQCB2b2lkIFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZShpZCBvYmopCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYlRocmVh
ZFJlbGVhc2VMb2NrKTsKIAotICAgIGlmIChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPT0gbmls
KQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKTsKLSAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5LCBvYmopOwotICAgIENGUnVuTG9vcFNv
dXJjZVNpZ25hbChXZWJUaHJlYWRSZWxlYXNlU291cmNlKTsKKyAgICBpZiAod2ViVGhyZWFkUmVs
ZWFzZU9iakFycmF5KCkgPT0gbmlsKQorICAgICAgICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXko
KSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVs
dCwgMCwgbnVsbHB0cikpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZSh3ZWJUaHJlYWRSZWxlYXNl
T2JqQXJyYXkoKS5nZXQoKSwgb2JqKTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwod2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxvb3BXYWtlVXAod2ViVGhyZWFk
UnVuTG9vcCk7CiB9CiAKQEAgLTQwNCw5ICs0MjQsOSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJU
aHJlYWRSZWxlYXNlU291cmNlKHZvaWQqKQogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJl
Zj4gb2JqZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhy
ZWFkUmVsZWFzZUxvY2spOwotICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJl
bGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsK
LSAgICAgICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFy
cmF5KTsKKyAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSkpIHsKKyAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVh
dGVNdXRhYmxlQ29weShudWxscHRyLCAwLCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQo
KSkpOworICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNl
T2JqQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3Myw3ICs0OTMsNyBA
QCBzdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYs
IENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKgogICAgICAgICByZXR1cm47CiAKICAgICBtYWluVGhy
ZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2sgPSBOTzsKLSAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZl
cihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIAogICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIH0KQEAg
LTQ4NCw3ICs1MDQsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCkKIAog
ICAgIGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBtYWluVGhyZWFkSGFzUGVu
ZGluZ0F1dG9VbmxvY2sgPSBZRVM7Ci0gICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7ICAgIAorICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxv
b3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogICAgIH0KQEAgLTU1NiwxMiAr
NTc2LDEyIEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5M
b29wRW5hYmxlTmVzdGVkRnJvbU1haW5UaHJlYWQoKQogewotICAgIENGUnVuTG9vcFJlbW92ZU9i
c2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2
ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIo
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdl
dCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiBzdGF0aWMgdm9pZCBfV2ViUnVuTG9v
cERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsgCisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQo
KQpAQCAtNjQyLDggKzY2Miw4IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAg
ICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9j
a09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgQ0ZSdW5M
b29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKLSAgICBXZWJUaHJlYWRSZWxlYXNlU291
cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNvdXJjZUNv
bnRleHQpOwotICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCBXZWJUaHJl
YWRSZWxlYXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIHdlYlRocmVhZFJl
bGVhc2VTb3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0x
LCAmUmVsZWFzZVNvdXJjZUNvbnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2Uod2ViVGhy
ZWFkUnVuTG9vcCwgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wRGVm
YXVsdE1vZGUpOwogCiAgICAgcGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQgPSBfQ0ZS
dW5Mb29wU2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQoWUVTKTsKIApAQCAtNjc5
LDE2ICs2OTksMTYgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogCiAgICAgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFu
ZGxlRGVsZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29wU291cmNl
Q3JlYXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOworICAgIGRlbGVnYXRl
U291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVs
ZWdhdGVTb3VyY2VDb250ZXh0KSk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRl
IGNhbGxiYWNrcyB3aGlsZSBzY3JvbGxpbmcsIGJ1dCB0aGVyZSBtaWdodCBiZQogICAgIC8vIG9u
ZSBvdXRzdGFuZGluZyB3aGVuIHdlIHN0YXJ0LiAgQWRkIHRoZSBzb3VyY2UgZm9yIGFsbCBjb21t
b24gcnVuIGxvb3AKICAgICAvLyBtb2RlcyBzbyB3ZSBkb24ndCBibG9jayB0aGUgd2ViIHRocmVh
ZCB3aGlsZSBzY3JvbGxpbmcuCi0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVn
YXRlU291cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFNvdXJj
ZShydW5Mb29wLCBkZWxlZ2F0ZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OwogCiAgICAgc0FzeW5jRGVsZWdhdGVzKCkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKIAotICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyID0gQ0ZSdW5M
b29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZS
dW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxwdHIp
OworICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkgPSBhZG9wdENGKENGUnVuTG9v
cE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVu
TG9vcEV4aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRyKSk7
CiAKICAgICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAgICBwdGhyZWFkX2F0dHJfaW5pdCgmdGF0
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkUnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHAKaW5kZXggZWZhODQ2NDViYTM5OGE0YmUxYmNkZTJkZWMzZDAxMDhhNDM5NzU1
My4uY2E5OGE4ZmNiNDk3NjI1MWEyY2MxOWJkY2YyNzFmN2Y2NDk2ZTMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCkBA
IC0xMTIsMTQgKzExMiwxOSBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgV1RGOjpWZWN0b3I8V2Vi
VGhyZWFkQmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwogCiBzdGF0aWMgTG9jayBydW5RdWV1ZU11
dGV4Owotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBydW5Tb3VyY2U7CiBzdGF0aWMgV2ViVGhy
ZWFkUnVuUXVldWUqIHJ1blF1ZXVlOwogCitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJj
ZVJlZj4mIHJ1blNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBydW5Tb3VyY2U7CisgICAgcmV0dXJuIHJ1blNvdXJjZTsK
K30KKwogc3RhdGljIHZvaWQgSGFuZGxlUnVuU291cmNlKHZvaWQgKmluZm8pCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGluZm8pOwogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAg
QVNTRVJUKHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsKICAgICBBU1NFUlQo
cnVuUXVldWUpOwogCiAgICAgV2ViVGhyZWFkUnVuUXVldWUgcXVldWVDb3B5OwpAQCAtMTQwLDcg
KzE0NSw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwg
Ym9vbCBzeW5jaHJvbm91cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChy
dW5Tb3VyY2UpOworICAgIEFTU0VSVChydW5Tb3VyY2UoKSk7CiAgICAgQVNTRVJUKHJ1blF1ZXVl
KTsKIAogICAgIFdlYlRocmVhZEJsb2NrU3RhdGUqIHN0YXRlID0gMDsKQEAgLTE1Miw3ICsxNTcs
NyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9jaykodm9pZCksIGJvb2wg
c3luY2hyb25vdXMpCiAgICAgICAgIHJ1blF1ZXVlLT5hcHBlbmQoV2ViVGhyZWFkQmxvY2soYmxv
Y2ssIHN0YXRlKSk7CiAgICAgfQogCi0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJj
ZSk7CisgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSgpLmdldCgpKTsKICAgICBD
RlJ1bkxvb3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKIAogICAgIGlmIChzeW5jaHJvbm91
cykgewpAQCAtMTY5LDE1ICsxNzQsMTUgQEAgdm9pZCBXZWJUaHJlYWRSdW4odm9pZCAoXmJsb2Nr
KSh2b2lkKSkKIHZvaWQgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCkKIHsKICAgICBBU1NFUlQoIXJ1
blF1ZXVlKTsKLSAgICBBU1NFUlQoIXJ1blNvdXJjZSk7CisgICAgQVNTRVJUKCFydW5Tb3VyY2Uo
KSk7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25j
ZSgmcHJlZCwgXnsKICAgICAgICAgcnVuUXVldWUgPSBuZXcgV2ViVGhyZWFkUnVuUXVldWU7CiAK
LSAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250ZXh0ID0gezAsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEhhbmRsZVJ1blNv
dXJjZX07Ci0gICAgICAgIHJ1blNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAt
MSwgJnJ1blNvdXJjZUNvbnRleHQpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoV2ViVGhy
ZWFkUnVuTG9vcCgpLCBydW5Tb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAg
IENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgSGFuZGxlUnVuU291cmNlIH07CisgICAgICAgIHJ1blNvdXJjZSgpID0gYWRvcHRDRihD
RlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZydW5Tb3VyY2VDb250ZXh0KSk7Cisg
ICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29wKCksIHJ1blNvdXJjZSgp
LmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggOGYzN2Rk
NzFmMDc3NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0NjZiYS4uYTQ3ZTM0M2Y0ZGNhMDM2ZmVhZWZk
M2MxMGQ1ZjI0MGUzNGI5ZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Qb3dlck9ic2VydmVyTWFjLmNwcApAQCAtMzUsNyArMzUsNyBAQCBQb3dlck9ic2VydmVyOjpQ
b3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCiAgICAg
LCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxwdHIp
CiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCi0gICAgLCBtX2Rpc3BhdGNoUXVldWUoZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkK
KyAgICAsIG1fZGlzcGF0Y2hRdWV1ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiY29tLmFwcGxlLldlYktpdC5Qb3dlck9ic2VydmVyIiwgMCkpKQogewogICAgIG1fcG93ZXJD
b25uZWN0aW9uID0gSU9SZWdpc3RlckZvclN5c3RlbVBvd2VyKHRoaXMsICZtX25vdGlmaWNhdGlv
blBvcnQsIFtdKHZvaWQqIGNvbnRleHQsIGlvX3NlcnZpY2VfdCBzZXJ2aWNlLCB1aW50MzJfdCBt
ZXNzYWdlVHlwZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50KSB7CiAgICAgICAgIHN0YXRpY19jYXN0
PFBvd2VyT2JzZXJ2ZXIqPihjb250ZXh0KS0+ZGlkUmVjZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0
aW9uKHNlcnZpY2UsIG1lc3NhZ2VUeXBlLCBtZXNzYWdlQXJndW1lbnQpOwpAQCAtNDMsNyArNDMs
NyBAQCBQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IHBvd2VyT25IYW5kZXIpCiAgICAgaWYgKCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNh
dGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlz
cGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiB9
CiAKIFBvd2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKCkKQEAgLTUxLDggKzUxLDYgQEAgUG93
ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQogICAgIGlmICghbV9wb3dlckNvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKLQogICAgIElPRGVyZWdpc3RlckZvclN5c3RlbVBvd2VyKCZtX25vdGlmaWVyUmVmZXJlbmNl
KTsKICAgICBJT1NlcnZpY2VDbG9zZShtX3Bvd2VyQ29ubmVjdGlvbik7CiAgICAgSU9Ob3RpZmlj
YXRpb25Qb3J0RGVzdHJveShtX25vdGlmaWNhdGlvblBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKaW5kZXggMTU4NmQ3YmI3YWYyNTkzMTE2
NmQyNmVjNWRmYzQ2OTNhOGY2Mjg5YS4uYTgwYjYyMDc1YzAxZGMxNDlmODMxMWM3NDk0YzgxMzI5
YWM2MDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2Jz
ZXJ2ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIu
aD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0
aW9uOwogICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAg
aW9fb2JqZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rpc3Bh
dGNoUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAwYjc3MGNmYjEzM2YzYThhNGU3
ZGI2ZGI4YzgwZmY2MjVjMjM5MjQ5Li5kM2YxYWM3MjliNWI1Y2RlNjNkYjQ0YzAwNTI3YzA5ODYz
YzgyYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogCiAjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDx3
dGYvT1NPYmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIg
KkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIq
IEF1ZGlvQ29udmVydGVyUmVmOwpAQCAtNjMsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUpOwogICAgIE9TU3Rh
dHVzIHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZl
ckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOwogCi0gICAgZGlzcGF0Y2hf
cXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVGltZSBtX2xvd1dhdGVyVGlt
ZSB7IGtDTVRpbWVJbnZhbGlkIH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4g
bV9vdXRwdXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KaW5kZXggYzc5YTQ3OTYyNDAyYmIxMzI5MzNjODdiZmU5OGQyMzdmNTZl
ZTA2OS4uY2NjOGRkM2E5ZDRmMGZkYTg4OTMzZjBmZDFlMjgxZGUzYWRlOTdlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTUyLDE0ICs1
MiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCi0gICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSkgfQogICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9X
X1dBVEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQogewogfQogCiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQogewotICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBpZiAobV9jb252ZXJ0ZXIp
IHsKICAgICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKICAgICAgICAg
bV9jb252ZXJ0ZXIgPSBudWxscHRyOwpAQCAtODksNyArODgsNyBAQCBib29sIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNr
IGNhbGxiYQogCiB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsK
LSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRj
aF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgcHJvY2Vzc1Nh
bXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CiAgICAgICAgIGF1
dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVl
LmdldCgpKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
IGZhaWxlZCAlZCIsIGVycm9yKTsKQEAgLTUxMCw3ICs1MDksNyBAQCB2b2lkIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBi
dWZmZXIpCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZm
ZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJp
YWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1
ZXVlLmdldCgpLCBeewogICAgICAgICBpZiAobV9pc0VuY29kaW5nKQogICAgICAgICAgICAgcHJv
Y2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggYzA1ODM3NDcwYjFjODI3MmRlN2M4OWM0
MTRiYTE4YTBmMGU5ZTljZC4uMzc2YTVjZmJlYWIxYTE0NmYyOTBiMmNiMjQzYzVjMTMzMmRkNzRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5j
bHVkZSA8VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZjsKQEAgLTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRp
YyB2b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0
YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKIAotICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3Bh
dGNoX3F1ZXVlX3Q+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBDTVZpZGVvQ29kZWNUeXBl
IG1fb3V0cHV0Q29kZWNUeXBlIHsga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCB9OwogCiAgICAgUmV0
YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGUwM2U3NzBmMGNh
YTliZGM2YjE2ZDVhYzc0YmIzNzg2ZGY4ZjRhZDcuLjE3Njc5OTc0MWJkNGZiYjk5MDk5YWQ4NDM0
ZWY2YzJmNDZiOGFiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tCkBAIC00OCwxNCArNDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUK
IH0KIAogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCi0gICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSkgfQogICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQogewog
fQogCiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsK
ICAgICBpZiAobV92dFNlc3Npb24pIHsKICAgICAgICAgVlRDb21wcmVzc2lvblNlc3Npb25JbnZh
bGlkYXRlKG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICAgICAgbV92dFNlc3Npb24gPSBudWxscHRy
OwpAQCAtODMsNyArODIsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0
Qml0c1BlclNlY29uZCh1bnNpZ25lZCBiaXRSYXRlKQogCiB2b2lkIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQo
KSwgXnsKICAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVG
cmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CiAKQEAgLTE2NSw3ICsxNjQsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAK
IHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgp
LCBeewogICAgICAgICBpZiAoIW1faXNFbmNvZGluZykKICAgICAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5k
ZXggM2NiZThjZWE2ODVhNTQ1ODgyMGRmMjg4YmRmNmNhNmRlYWIyM2I5Yi4uZjg2MTlmNmExOTE4
YWYwNjBlMmEwNWUwNjMxODJmNTRlODZhMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9TZXNzaW9uOwpAQCAtNzcsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0
c0xpc3RlbmVyPiBtX2xpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVkF1ZGlvU2Vzc2lvbj4gbV9h
dWRpb1Nlc3Npb247CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV91cGRhdGVEZXZpY2VT
dGF0ZVF1ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0
ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsK
ICAgICBMb2NrIG1fbG9jazsKICAgICBBdWRpb1Nlc3Npb25TdGF0ZSBtX2F1ZGlvU2Vzc2lvblN0
YXRlIHsgQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggYjFiNDdhZjI5
YzRhNDQ1MmZjODEwMDNiYTM1ODZkOTAyZTg2YWU5Zi4uZWY5YmUxMDZiYmQ0ZWExNjg0NGVlNzA5
YzYwYTI1OGNjNjJjZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KQEAgLTg3LDkgKzg3LDkgQEAgQVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlTWFuYWdlciYgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG8KIH0KIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcigpCi0gICAgOiBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgIDogbV9kaXNwYXRjaFF1
ZXVlKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0
LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpKSkKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0
cihbdGhpcywgbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKV0geworICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spXSB7CiAgICAgICAgIGNyZWF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgIH0pLmdl
dCgpKTsKIH0KQEAgLTExMyw3ICsxMTMsNiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNyZWF0ZUF1ZGlvU2Vzc2lvbigpCiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsK
LSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7CiAgICAgW21fbGlzdGVuZXIg
aW52YWxpZGF0ZV07CiAgICAgbV9saXN0ZW5lciA9IG51bGxwdHI7CiB9CkBAIC0xNTcsMTMgKzE1
NiwxMyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRp
b1Nlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9
IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfc3luYyhtX2Rp
c3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10geworICAgICAgICBkaXNwYXRjaF9zeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAgICAgICAg
ICBhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgICAgICB9KS5nZXQoKSk7CiAgICAgfQogCiAg
ICAgVmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gbmV3QXVkaW9EZXZpY2VzOwot
ICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoWyZdIHsKKyAg
ICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFsmXSB7
CiAgICAgICAgIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZXMoKTsKICAgICB9KS5nZXQoKSk7CiAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZN
b3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwpAQCAtMTc0LDEyICsxNzMsMTIgQEAgdm9pZCBBVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2kKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25T
dGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vz
c2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2
YXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgeworICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbmV3QXVkaW9E
ZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgICAgICBj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQobWFrZUJsb2NrUHRyKFt0
aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgbmV3QXVkaW9EZXZpY2VzID0g
V1RGTW92ZShuZXdBdWRpb0RldmljZXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHNldEF1
ZGlvQ2FwdHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKQEAgLTI1NCw3ICsy
NTMsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVB
bGxEZXZpY2VzUXVlcnkoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9hdWRpb1Nlc3Np
b25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0aXZlKSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7
CiAgICAgICAgICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSAhPSBBdWRpb1Nlc3Npb25TdGF0
ZTo6Tm90TmVlZGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggOGIxOGZmMTI5MjU3ODkzNzkxNWVh
YTZhNDk5ODM3OTE3MDUxODMwOC4uNzhlYzA2Yjc0ZTQ3MmJkNjM4YTlmNWU5MzcwYmYyZjZiOGY5
YjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKIH07CiAK
ICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKLVdFQkNPUkVfRVhQ
T1JUIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENG
U3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0g
V1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
ciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxvcHQpOwogI2Vu
ZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IGEzNzg1MGQ3NmViZGU4ODRiMjJkODkwMGRlZTM2
Zjg0Yzg0NTE2YWIuLmNlZTVkN2VhY2JjYjYyMTBiMjI5ZGNlYWM4N2I0NmY0ZmJkOGVjZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcApAQCAtNzIsMTcgKzcyLDE2IEBAIGJvb2wgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQorUmV0YWluUHRyPENG
VVJMQXV0aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNvcmVDaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQg
ZG9lcyB0aGF0LgogCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlh
bCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkp
OwotICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7Ci0g
ICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0
ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVu
Z2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2Uo
KS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bv
c2VkQ3JlZGVudGlhbCgpKTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IGNyZWF0ZUNGKGNv
cmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgIHJldHVybiBhZG9wdENGKENGVVJM
QXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwu
Z2V0KCksIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3Io
KSkpOwogfQogCi1DRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYg
Y29yZUNyZWRlbnRpYWwpCitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVhdGVDRihj
b25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKIHsKICAgICBDRlVSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSA9IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7
CiAgICAgc3dpdGNoIChjb3JlQ3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpKSB7CkBAIC05OCwxMCAr
OTcsMTAgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNv
cmVDcmVkZW50aWFsKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2Vy
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIHBlcnNpc3RlbmNlKSk7CiB9CiAKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNy
ZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQorUmV0YWluUHRyPENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmPiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVT
cGFjZSkKIHsKICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9
IGtDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CiAgICAgc3dpdGNoIChjb3JlU3BhY2Uu
c2VydmVyVHlwZSgpKSB7CkBAIC0xNjUsNyArMTY0LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25T
cGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNv
cmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIHNjaGVtZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxQcm90ZWN0aW9u
U3BhY2VDcmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBj
b3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBzY2hlbWUpKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVu
dGlhbFJlZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCmluZGV4IDg5YTkzNTI4OWFkNzlkNDBiMzdk
ZDIwM2E4MGU5ZThkZjcxMWIyNmUuLjcwZjUwMjA1ZWIyYmRhMDgxNmJiZDA4OGM0NmNkYWFiOWM0
NTMyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKIAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxQcml2Lmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5n
ZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlv
blNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKQEAgLTM4LDkgKzM5LDkgQEAgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogCi1DRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKLUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBD
cmVkZW50aWFsJik7Ci1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90
ZWN0aW9uU3BhY2UmKTsKK1JldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNyZWF0ZUNG
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CitSZXRhaW5QdHI8Q0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogQ3JlZGVu
dGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJlZik7CiBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCmluZGV4IDZlYTMw
MTIzOTU2ZWRiZDMwOWQ2Y2UwZWFmZmU3ODNkNzM4ZTZkZmMuLjFmYTg5YmFlMWRlMWNiMDc2M2Uw
N2M2MWE0MThhMzFjY2VmNTViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCkBAIC01OCwxMCAr
NTgsMTAgQEAgYm9vbCBjZXJ0aWZpY2F0ZXNNYXRjaChTZWNUcnVzdFJlZiB0cnVzdDEsIFNlY1Ry
dXN0UmVmIHRydXN0MikKIFJldGFpblB0cjxDRkFycmF5UmVmPiBDZXJ0aWZpY2F0ZUluZm86OmNl
cnRpZmljYXRlQ2hhaW5Gcm9tU2VjVHJ1c3QoU2VjVHJ1c3RSZWYgdHJ1c3QpCiB7CiAgICAgYXV0
byBjb3VudCA9IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVDb3VudCh0cnVzdCk7Ci0gICAgYXV0byBj
ZXJ0aWZpY2F0ZUNoYWluID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpOworICAgIGF1dG8gY2VydGlmaWNhdGVDaGFpbiA9IGFkb3B0Q0YoQ0ZB
cnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAg
ICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoY2VydGlmaWNhdGVDaGFpbiwgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgo
dHJ1c3QsIGkpKTsKLSAgICByZXR1cm4gYWRvcHRDRigoQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNo
YWluKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNlcnRpZmljYXRlQ2hhaW4uZ2V0KCks
IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRydXN0LCBpKSk7CisgICAgcmV0dXJuIGNl
cnRpZmljYXRlQ2hhaW47CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKaW5k
ZXggMDc1MmNhMTA1NTJmZGIxYTdjMzU3NTkzMmEyMzJhYWViZWRjNWQ2MC4uMGEwMzM4NmQ5M2M1
YzEyZTY2MDE2NmZlMjkwNmI4MTE0YjVkZTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3Bw
CkBAIC0zNiwxNiArMzYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotc3RhdGlj
IGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNw
YWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKK3N0YXRpYyBpbmxp
bmUgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY29weUNyZWRlbnRpYWxGcm9tUHJvdGVj
dGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKIHsKICAg
ICBhdXRvIHN0b3JhZ2UgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ29w
eURlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2UuZ2V0KCksIHByb3Rl
Y3Rpb25TcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNv
cHlEZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlLmdldCgpLCBwcm90
ZWN0aW9uU3BhY2UpKTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJv
bVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
KQogewotICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3Rl
Y3Rpb25TcGFjZSkpOwotICAgIGF1dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVu
dGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlQ0YuZ2V0KCkpKTsKKyAgICBh
dXRvIHByb3RlY3Rpb25TcGFjZUNGID0gY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKTsKKyAgICBh
dXRvIGNyZWRlbnRpYWxDRiA9IGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90
ZWN0aW9uU3BhY2VDRi5nZXQoKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4IDVlYTQ0OGZjZTc3M2UwMzk0ZDc0ZmQ3YjFmOWMzNzYz
NjljZDlmODMuLmJiODNkZmY0YTI5YmZkOTdmYjUwNWE0OTNiODk0YjE4ZTExNmY1ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAKQEAgLTYzLDggKzYzLDggQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQog
CiAgICAgICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRv
IHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgogICAgICAgICAgICAgICAgIENG
UnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51
bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtfTsKLSAgICAgICAgICAgICAg
ICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUo
MCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShsb2FkZXJS
dW5Mb29wT2JqZWN0LCBib2d1c1NvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVh
dGUoMCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobG9h
ZGVyUnVuTG9vcE9iamVjdCwgYm9ndXNTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CiAKICAgICAgICAgICAgICAgICBsb2FkZXJSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90
aWZ5T25lKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRX
aW4uY3BwCmluZGV4IDVkN2Q3OTYxNDQ2NWZjYWI1YmQ2YjY0MThlMDYwZjY4ZWIwOTRhNGEuLmE1
MWJkYjhlMzI1YjMzNzZkMTRjNmY0ZjVlODA3ZDM4MWRiYjhkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCkBAIC03OSwxNiArNzksMTYgQEAgc3RhdGljIENGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgdG9DRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9s
aWN5KEhUVFBDb28KICAgICByZXR1cm4gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFs
d2F5czsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBv
bGljeT4gY29va2llQWNjZXB0UG9saWN5KQorUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAg
ICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNl
c3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNb
XSA9IHsga0NGQm9vbGVhblRydWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc2Vzc2lvblByb3Bl
cnRpZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvblBy
b3BlcnR5S2V5cywgc2Vzc2lvblByb3BlcnR5VmFsdWVzLCBzaXplb2Yoc2Vzc2lvblByb3BlcnR5
S2V5cykgLyBzaXplb2YoKnNlc3Npb25Qcm9wZXJ0eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX0NGVVJMU3RvcmFnZVNlc3Npb25D
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRpZmllciwgc2Vzc2lvblByb3BlcnRpZXMp
OworICAgIGF1dG8gc2Vzc2lvblByb3BlcnRpZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uUHJvcGVydHlLZXlzLCBzZXNzaW9uUHJvcGVy
dHlWYWx1ZXMsIHNpemVvZihzZXNzaW9uUHJvcGVydHlLZXlzKSAvIHNpemVvZigqc2Vzc2lvblBy
b3BlcnR5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRD
RihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZGVudGlm
aWVyLCBzZXNzaW9uUHJvcGVydGllcy5nZXQoKSkpOwogICAgIAogICAgIC8vIFRoZSBwcml2YXRl
IHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBk
ZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAgICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBp
dCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkgc3RvcmFnZS4KLSAgICBhdXRvIGNhY2hlID0gYWRv
cHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dG9yYWdlU2Vzc2lvbikpOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgp
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7CiAgICAg
YXV0byBkZWZhdWx0Q2FjaGUgPSBhZG9wdENGKENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBDRlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlLmdldCgpKSk7CkBAIC0xMDEsNyArMTAxLDcg
QEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZT
dHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAgICAgY2ZDb29raWVBY2NlcHRQb2xpY3kg
PSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29raWVT
dG9yYWdlKTsKICAgICB9CiAKLSAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVS
TFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3Rv
cmFnZVNlc3Npb24pKTsKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFn
ZVNlc3Npb24uZ2V0KCkpKTsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0
UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNmQ29va2llQWNjZXB0UG9saWN5KTsKICAgICAK
ICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCmluZGV4IGNi
MDhiOTM3MzUwOWE1MDA3OTI3NDY4YzA3NmNmODJlNjVkNWIwN2UuLjg3MzdjNGM3MTRmNjVkZTRj
MDQ2ZDU5MTcwNjIxYTlhYTVlNzA2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBQcm90ZWN0aW9uU3BhY2U6OnJl
Y2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY+IGNmU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKCp0aGlzKSk7Cisg
ICAgYXV0byBjZlNwYWNlID0gY3JlYXRlQ0YoKnRoaXMpOwogICAgIHJldHVybiBjZlNwYWNlICYm
IENGVVJMUHJvdGVjdGlvblNwYWNlUmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoY2ZTcGFjZS5n
ZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDJkNGVmZjUwNWNjNDEzYTBjZDY1
MjNjYjA5YzA0NGM0YjQ5ZTg1NWQuLjZiZjNjYzIwNDA0MGI4YWZlOTI0YzdmOWY1NTEzZDdhNWMy
YjE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50
aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0
b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkt
PmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNyZWRlbnRpYWwpOwog
ICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0
aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC00MzYsMTEgKzQzNiwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgICAgICBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0
UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYgKGQtPm1fY29ubmVjdGlv
bikgewotICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50
aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CisgICAgICAgICAgICBhdXRv
IGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpOwogICAgICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVu
dGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVu
dGlhbCkpOworICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNyZWRlbnRpYWwp
OwogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkpOwogICAgIH0KIApAQCAtNTU5LDggKzU1OSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
CiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBw
cmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybSB9OwotICAgICAgICAgICAgQ0ZSdW5M
b29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZj
dHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBib2d1c1NvdXJj
ZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2Ug
PSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLmdldCgpLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2VtLnNpZ25hbCgpOwogCiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IDFm
ZTY5MDI0YmNiZmI4ZDc3YmFiOThhOTFhM2NhODE1OWZiYTRlMDMuLjNjODJiYzNiNGM2ODU5Yjhi
YTk0YTMyYmU5YTQyNmE4Mzk5NmVjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcApAQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgZ2V0UnVuTG9vcCgp
CiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBw
cmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybSB9OwotICAgICAgICAgICAgQ0ZSdW5M
b29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZj
dHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBib2d1c1NvdXJj
ZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2Ug
PSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLmdldCgpLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2VtLnNpZ25hbCgpOwogCiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggZjZlMWI5YjVkM2E1YmE3
YWUzNWE3NzkyM2Q1NmQ1M2VhZTMyNzE5OS4uYjdlZjViODc1ODRmZmJiNjZhZjdkOWExMTNmNDMw
NmQ5MTVhMTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTE2Nyw1MSArMTY3LDUxIEBA
IHN0YXRpYyBDRlVSTFJlZiBzaXRlRm9yQ29va2llcyhSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sCiAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVT
aXRlRGlzcG9zaXRpb246OlNhbWVTaXRlOgogICAgICAgICByZXR1cm4gdXJsOwogICAgIGNhc2Ug
UmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uOjpDcm9zc1NpdGU6Ci0gICAgICAg
IHN0YXRpYyBDRlVSTFJlZiBlbXB0eVVSTCA9IENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRy
LCBDRlNUUigiIiksIG51bGxwdHIpOwotICAgICAgICByZXR1cm4gZW1wdHlVUkw7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZVUkxSZWY+PiBlbXB0eVVSTCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKG51bGxwdHIsIENGU1RSKCIiKSwgbnVsbHB0cikp
OworICAgICAgICByZXR1cm4gZW1wdHlVUkwuZ2V0KCkuZ2V0KCk7CiAgICAgfQogfQogI2VuZGlm
CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiB7Ci0g
ICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3Q7CisgICAgUmV0YWluUHRyPENGTXV0
YWJsZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVhdGVDRlVSTCgpOwogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0
UGFydHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBkb3VibGUgdGltZW91dEludGVy
dmFsID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgPyBSZXNvdXJjZVJl
cXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJlc291cmNlUmVxdWVzdEJhc2U6OmRlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9jZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZS
ZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0
KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBh
cnR5Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5
KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7
Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QsIHRpbWVv
dXRJbnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3Qu
Z2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOworICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1l
b3V0SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVl
c3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGlj
eShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5n
ZXQoKSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0
YWJsZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xp
Y3koKSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAot
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1
ZXN0TWV0aG9kKGNmUmVxdWVzdC5nZXQoKSwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpKQotICAgICAgICBDRlVS
TFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhUVFAoY2ZSZXF1ZXN0LCB0cnVlLCB0cnVlKTsKKyAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkUGlwZWxpbmVIVFRQKGNmUmVxdWVzdC5nZXQoKSwg
dHJ1ZSwgdHJ1ZSk7CiAKICAgICBpZiAocmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QsIHRvUGxhdGZv
cm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRS
ZXF1ZXN0UHJpb3JpdHkoY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdFByaW9yaXR5
KHByaW9yaXR5KCkpKTsKIAogICAgICAgICAvLyBVc2VkIGJ5IFBMVCB0byBpZ25vcmUgdmVyeSBs
b3cgcHJpb3JpdHkgYmVhY29uIGFuZCBwaW5nIGxvYWRzLgogICAgICAgICBpZiAocHJpb3JpdHko
KSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUxvdykKLSAgICAgICAgICAgIF9DRlVSTFJl
cXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgQ0ZTVFIoIldLVmVyeUxvd0xvYWRQ
cmlvcml0eSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0
UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJXS1ZlcnlMb3dMb2FkUHJp
b3JpdHkiKSwga0NGQm9vbGVhblRydWUpOwogICAgIH0KIAotICAgIHNldEhlYWRlckZpZWxkcyhj
ZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7CisgICAgc2V0SGVhZGVyRmllbGRzKGNmUmVx
dWVzdC5nZXQoKSwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIENGVVJMUmVxdWVzdFNldFNo
b3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29raWVzKCkpOworICAgIENG
VVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdC5nZXQoKSwgYWxs
b3dDb29raWVzKCkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBfQ0ZVUkxSZXF1
ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RSKCJfa0NGSFRUUENvb2tpZVBv
bGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURp
c3Bvc2l0aW9uLCB1cmwuZ2V0KCkpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9w
ZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5
U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCB1
cmwuZ2V0KCkpKTsKIAogICAgIGludCBpc1RvcFNpdGUgPSBtX2lzVG9wU2l0ZTsKICAgICBSZXRh
aW5QdHI8Q0ZOdW1iZXJSZWY+IGlzVG9wU2l0ZUNGID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShu
dWxscHRyLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaXNUb3BTaXRlKSk7Ci0gICAgX0NGVVJMUmVxdWVz
dFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBDRlNUUigiX2tDRkhUVFBDb29raWVQb2xp
Y3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBpc1RvcFNpdGVDRi5nZXQoKSk7CisgICAgX0NGVVJMUmVx
dWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiX2tDRkhUVFBD
b29raWVQb2xpY3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBpc1RvcFNpdGVDRi5nZXQoKSk7CiAjZW5k
aWYKIAogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKQEAgLTIyMiw1MSArMjIyLDUxIEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgICAg
IGlmIChlbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB2b2lkKj4oZW5jb2RpbmcpKTsKICAgICB9Ci0gICAgc2V0Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNmUmVxdWVzdCwgZW5jb2RpbmdGYWxsYmFja3Mu
Z2V0KCkpOworICAgIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShj
ZlJlcXVlc3QuZ2V0KCksIGVuY29kaW5nRmFsbGJhY2tzLmdldCgpKTsKIAogI2lmIEVOQUJMRShD
QUNIRV9QQVJUSVRJT05JTkcpCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGNhY2hlUGFydGl0aW9u
KCk7CiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkp
IHsKICAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gcGFydGl0aW9uLnV0ZjgoKTsKICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHV0ZjhT
dHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJl
cXVlc3QsIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwor
ICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCks
IF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0K
ICNlbmRpZgogCi0gICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7CisgICAgbV9j
ZlJlcXVlc3QgPSBXVEZNb3ZlKGNmUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogewotICAgIENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWYgY2ZSZXF1ZXN0OworICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBjZlJl
cXVlc3Q7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFJlc291cmNlUmVxdWVzdDo6
dXJsKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlG
b3JDb29raWVzID0gUmVzb3VyY2VSZXF1ZXN0OjpmaXJzdFBhcnR5Rm9yQ29va2llcygpLmNyZWF0
ZUNGVVJMKCk7CiAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCA9IFJlc291cmNlUmVxdWVzdEJh
c2U6OnRpbWVvdXRJbnRlcnZhbCgpID8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVy
dmFsKCkgOiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CiAg
ICAgaWYgKG1fY2ZSZXF1ZXN0KSB7Ci0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENy
ZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0VVJMKGNmUmVxdWVzdCwgdXJsLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QsIHRvUGxhdGZvcm1S
ZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOwotICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0aW1lb3V0SW50ZXJ2YWwpOworICAgICAgICBj
ZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZS
ZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QuZ2V0
KCksIHVybC5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChj
ZlJlcXVlc3QuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVz
dENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGlt
ZW91dEludGVydmFsKGNmUmVxdWVzdC5nZXQoKSwgdGltZW91dEludGVydmFsKTsKICAgICB9IGVs
c2UKLSAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwu
Z2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVv
dXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBjZlJlcXVl
c3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1Bs
YXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWws
IGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKSk7CiAKICAgICBGb3JtRGF0YSogZm9ybURhdGEg
PSBodHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkK
LSAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CisgICAg
ICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNmUmVxdWVzdC5nZXQoKSwgZm9ybURhdGEpOwogCi0g
ICAgaWYgKFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGJvZHlTdHJlYW0gPSBhZG9wdENGKENG
VVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0oY2ZSZXF1ZXN0KSkpIHsKKyAgICBp
ZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxS
ZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShjZlJlcXVlc3QuZ2V0KCkpKSkgewogICAg
ICAgICAvLyBGb3Igc3RyZWFtcywgcHJvdmlkZSBhIENvbnRlbnQtTGVuZ3RoIHRvIGF2b2lkIHVz
aW5nIGNodW5rZWQgZW5jb2RpbmcsIGFuZCB0byBnZXQgYWNjdXJhdGUgdG90YWwgbGVuZ3RoIGlu
IGNhbGxiYWNrcy4KICAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGVuZ3RoU3Ry
aW5nID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZWFkU3RyZWFtQ29weVBy
b3BlcnR5KGJvZHlTdHJlYW0uZ2V0KCksIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1l
KCkpKSkpIHsKLSAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVl
KGNmUmVxdWVzdCwgQ0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxlbmd0aFN0cmluZy5nZXQoKSk7
CisgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShjZlJlcXVl
c3QuZ2V0KCksIENGU1RSKCJDb250ZW50LUxlbmd0aCIpLCBsZW5ndGhTdHJpbmcuZ2V0KCkpOwog
ICAgICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2UgcmVxdWVzdCBpcyBhbHJlYWR5IG1hcmtlZCB1
cGRhdGVkLCB3ZSBuZWVkIHRvIGtlZXAgaXQgdXAgdG8gZGF0ZSB0b28uCiAgICAgICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKICAgICAgICAgICAgIG1faHR0cEhlYWRl
ckZpZWxkcy5zZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgsIGxlbmd0aFN0cmluZy5n
ZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAogdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKQEAgLTM1NSwxMCAr
MzU1LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpOwogCi0gICAgYXV0byBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7CisgICAgYXV0byBjZlJlcXVlc3QgPSBhZG9wdENG
KENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKSk7CiAg
ICAgaWYgKHN0b3JhZ2VTZXNzaW9uKQotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0U3RvcmFnZVNl
c3Npb24oY2ZSZXF1ZXN0LCBzdG9yYWdlU2Vzc2lvbik7Ci0gICAgbV9jZlJlcXVlc3QgPSBhZG9w
dENGKGNmUmVxdWVzdCk7CisgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihj
ZlJlcXVlc3QuZ2V0KCksIHN0b3JhZ2VTZXNzaW9uKTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1v
dmUoY2ZSZXF1ZXN0KTsKIH0KIAogI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4MGJkNjZkNzhkNDFhNzUwYTI2
MGVlYmM5ZjY3ZjRiY2I2ZmJlMjExLi44NjRiYjk5NzMxMDg5YzIzNjVlYjE1ZDkzYTI5Y2ZlMzFm
ODQ4MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE3Myw3
ICsxNzMsNyBAQCBDb29raWVTdG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llU3RvcmFnZU9ic2VydmVyKCkgY29uc3QKICAgICByZXR1cm4gKm1fY29va2llU3RvcmFn
ZU9ic2VydmVyOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNj
ZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCitSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkK
IHsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10gPSB7IF9rQ0ZVUkxTdG9y
YWdlU2Vzc2lvbklzUHJpdmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eVZh
bHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwpAQCAtMjEwLDcgKzIxMCw3IEBAIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlk
ZW50aWZpZXIsIE9wdGlvCiAgICAgLy8gRklYTUU6IFVzZSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdl
dERlZmF1bHQgd2hlbiBVU0UoQ0ZORVRXT1JLKSBpcyBkZWZpbmVkIGluIFdlYktpdCBmb3IgY29u
c2lzdGVuY3kuCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVTdG9yYWdlLmdldCgpLCBuc0Nvb2tpZUFjY2VwdFBvbGljeSk7CiAKLSAgICByZXR1cm4g
c3RvcmFnZVNlc3Npb24ubGVha1JlZigpOworICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbjsKIH0K
IAogUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tCmluZGV4IDQ1NWE3YTYyY2MxMjQxNjBjZDhiZTkyZDc0OTMxMjNiYTY4NmU0ZmYu
LjM1Nzc0MGYyMjU2Zjk4OTBiYTcxYTM2MzhlZjU3MDdlNzFhOWQ5YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVz
cG9uc2VJT1MubW0KQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
PHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBSZWdpc3RlciAubWpzIGZpbGVzIGFzIHdoYXRldmVy
IFVUSSBpbmRpY2F0ZXMgSmF2YVNjcmlwdAotc3RhdGljIENGRGljdGlvbmFyeVJlZiBjcmVhdGVF
eHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKIHsKICAgICBDRlN0cmluZ1JlZiBrZXlz
W10gPSB7CiAgICAgICAgIENGU1RSKCJtanMiKQpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgQ0ZE
aWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogICAgIH07CiAKICAg
ICBBU1NFUlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICByZXR1cm4gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMs
IChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVm
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZhbHVl
cywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogfQogCiB2
b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
LCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKQEAgLTY2LDExICs2NiwxMSBAQCB2b2lkIGFkanVz
dE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlz
TWFpblJlc291cmNlTAogICAgICAgICBpZiAoWyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVV
UkxdKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFk
b3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKICAgICAgICAgICAgIGlmIChleHRl
bnNpb24pIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lv
bk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAgICAgICBD
Rk11dGFibGVTdHJpbmdSZWYgbXV0YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRlTXV0YWJs
ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsKLSAgICAg
ICAgICAgICAgICBleHRlbnNpb24gPSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwotICAgICAg
ICAgICAgICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5zaW9uLmdldCgpKSkKKyAgICAgICAgICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGV4dGVu
c2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbi5nZXQoKSwgTlVMTCk7Cisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RGTW92ZShtdXRhYmxlRXh0ZW5zaW9uKTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlwZSA9IChDRlN0cmluZ1JlZilDRkRpY3Rp
b25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVuc2lvbi5nZXQoKSkp
CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRNSU1FVHlwZSA9IG5ld01JTUVUeXBlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXggYmIxMTZhOWRmZjNl
ODAyNDllM2MxZmYxMGVlOTEyOWM3MDU2ZmQxNS4uNGZhNTBlNDZiMDk0OTZjZGVlMDczOTY0NWM4
NGYxZDdhNDY5ZmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBXaGVuIHdlIGRpc2FibGVkIGNvbnRlbnQgc25pZmZpbmcgZm9y
IGZpbGUgVVJMcyB3ZSBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGVzZSAxMDArIGV4dGVuc2lvbnMg
dGhhdCBDb3JlVHlwZXMKIC8vIGRvZXNuJ3Qga25vdyBhYm91dC4KIC8vIElmIENvcmVUeXBlcyBp
cyBldmVyIGJyb3VnaHQgdXAgdG8gc3BlZWQgd2UgY2FuIHJlbW92ZSB0aGlzIHRhYmxlIGFuZCBh
c3NvY2lhdGVkIGNvZGUuCi1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRv
TUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4
dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewogICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKICAg
ICAgICAgQ0ZTVFIoImFpIiksCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIENGRGljdGlvbmFy
eVJlZiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKICAgICB9OwogCiAgICAgQVNTRVJU
KHNpemVvZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qg
dm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKS9zaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yo
a2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkKQpAQCAtMzA0LDExICszMDQsMTEgQEAgdm9pZCBhZGp1c3RNSU1FVHlw
ZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNv
dXJjZUwKICAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKICAgICAgICAgICAgICAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAxMDAr
IGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAogICAgICAgICAgICAg
ICAgIC8vIFdoZW4gdGhpcyByYWRhciBpcyByZXNvbHZlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIGZp
bGU6Ly8gdXJsIHNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgc3RhdGljIENGRGljdGlv
bmFyeVJlZiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0g
ICAgICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG11dGFibGVFeHRlbnNpb24gPSBDRlN0
cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5n
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lv
biwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gYWRvcHRDRihtdXRhYmxlRXh0
ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpOworICAgICAgICAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gZXh0
ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOworICAgICAgICAgICAg
ICAgIGF1dG8gbXV0YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxl
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLmdldCgpLCBOVUxMKTsK
KyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11dGFibGVFeHRlbnNpb24pOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIEdhdGVrZWVwZXItYmFzZWQgbWFwIGRvZXNuJ3QgaGF2ZSBhIE1JTUUgdHlw
ZSwgd2UnbGwgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCBzaG91bGQgYmUgYnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXgg
NWYzNmQwODMxNDg2YzlkOWU0ZmM5M2I5YmRmMWQ2MTc3YzIwZTY0MC4uYTU2MThmZTBjZDY5Zjg2
MTg1ZDc4YjBlNjM5ZGQ5YTI4YWZkMjNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTcxLDIzICs3MSwyMyBAQCBzdGF0
aWMgYm9vbCBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQog
CiBzdGF0aWMgQ0ZTdHJpbmdUb2tlbml6ZXJSZWYgdG9rZW5pemVyRm9yU3RyaW5nKENGU3RyaW5n
UmVmIHN0cikKIHsKLSAgICBzdGF0aWMgQ0ZMb2NhbGVSZWYgbG9jYWxlID0gbnVsbHB0cjsKLSAg
ICBpZiAoIWxvY2FsZSkgeworICAgIHN0YXRpYyBhdXRvIGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHRlbXAgPSBjdXJyZW50VGV4dEJyZWFrTG9j
YWxlSUQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjdXJyZW50TG9jYWxlSUQg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZW1wKSwgc3RybGVuKHRlbXApLCBr
Q0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgICAg
ICBsb2NhbGUgPSBDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9j
YWxlSUQuZ2V0KCkpOwotICAgICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KKyAgICAgICAgYXV0byBjdXJyZW50TG9jYWxlSUQgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZW1wKSwgc3RybGVuKHRlbXApLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQu
Z2V0KCkpKTsKKyAgICB9KCkpOworCisgICAgaWYgKCFsb2NhbGUuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgQ0ZSYW5nZSBlbnRpcmVSYW5nZSA9IENGUmFuZ2VNYWtlKDAs
IENGU3RyaW5nR2V0TGVuZ3RoKHN0cikpOyAgICAKIAotICAgIHN0YXRpYyBDRlN0cmluZ1Rva2Vu
aXplclJlZiB0b2tlbml6ZXIgPSBudWxscHRyOwotICAgIGlmICghdG9rZW5pemVyKQotICAgICAg
ICB0b2tlbml6ZXIgPSBDRlN0cmluZ1Rva2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZTdHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5LCBs
b2NhbGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdUb2tl
bml6ZXJSZWY+PiB0b2tlbml6ZXI7CisgICAgaWYgKCF0b2tlbml6ZXIuZ2V0KCkpCisgICAgICAg
IHRva2VuaXplci5nZXQoKSA9IGFkb3B0Q0YoQ0ZTdHJpbmdUb2tlbml6ZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RyLCBlbnRpcmVSYW5nZSwga0NGU3RyaW5nVG9rZW5pemVyVW5pdFdv
cmRCb3VuZGFyeSwgbG9jYWxlLmdldCgpLmdldCgpKSk7CiAgICAgZWxzZQotICAgICAgICBDRlN0
cmluZ1Rva2VuaXplclNldFN0cmluZyh0b2tlbml6ZXIsIHN0ciwgZW50aXJlUmFuZ2UpOwotICAg
IHJldHVybiB0b2tlbml6ZXI7CisgICAgICAgIENGU3RyaW5nVG9rZW5pemVyU2V0U3RyaW5nKHRv
a2VuaXplci5nZXQoKS5nZXQoKSwgc3RyLCBlbnRpcmVSYW5nZSk7CisgICAgcmV0dXJuIHRva2Vu
aXplci5nZXQoKS5nZXQoKTsKIH0KIAogLy8gU2ltcGxlIGNhc2U6IEEgd29yZCBpcyBhIHN0cmVh
bSBvZiBjaGFyYWN0ZXJzIGRlbGltaXRlZCBieSBhIHNwZWNpYWwgc2V0IG9mIHdvcmQtZGVsaW1p
dGluZyBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKaW5kZXggNGQ4YzVjNjA2ZDVjNTU4N2YyYzk1YWYyZGE2YmZkYmYwMjY5ZGM5
NC4uMzA0YjFmZDJhZGU4YTc0NzI2ZTJmNThjODIyNTExMTVlNGIwNTIzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC01NywxMyArNTcs
MTEgQEAgR0RJT2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUs
IENHQ29udGV4dFJlZiAqdGFyZ2V0UmVmKQogICAgIGlmICghdGFyZ2V0UmVmIHx8ICFoYm1wKQog
ICAgICAgICByZXR1cm4gaGJtcDsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBDb250ZXh0ID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJt
cEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggKiA0
LCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1h
Z2VBbHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJt
cEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LCBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoICog
NCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJ
bWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuIEdESU9iamVjdDxIQklUTUFQPigpOwogCi0gICAgKnRhcmdldFJlZiA9IGJpdG1h
cENvbnRleHQ7CisgICAgKnRhcmdldFJlZiA9IGJpdG1hcENvbnRleHQubGVha1JlZigpOwogICAg
IHJldHVybiBoYm1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggNzVkODExN2YzOGRjMWVjMDQxNTFmMTgzN2QzN2RhMWFlZWU1NmY5MC4uYWRl
NjE5Mjk4MDU3MDRlNjk5ZjliOTUyMTZiYjU5OWI2YTQzMmI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTUyLDM2ICsxNTIsMjUgQEAgc3RhdGlj
IHZvaWQgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdyYWRpZW50KHZvaWQgKmluZm8sIGNvbnN0IENH
RmxvYXQgKmluRGF0YSwgQ0cKIAogc3RhdGljIENHRnVuY3Rpb25SZWYgZ2V0U2hhcmVkRnVuY3Rp
b25SZWYoSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlv
bikKIHsKLSAgICBDR0Z1bmN0aW9uUmVmIGZ1bmN0aW9uID0gbnVsbHB0cjsKLQotICAgIHN0YXRp
YyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiogbGluZWFyRnVuY3Rpb25S
ZWZzOwotICAgIHN0YXRpYyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiog
ZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8SU9TR3JhZGllbnRSZWYsIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPj4+IGxpbmVhckZ1bmN0
aW9uUmVmczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFkaWVudFJl
ZiwgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+Pj4gZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CiAK
ICAgICBpZiAoaW50ZXJwb2xhdGlvbiA9PSBMaW5lYXJJbnRlcnBvbGF0aW9uKSB7Ci0gICAgICAg
IGlmICghbGluZWFyRnVuY3Rpb25SZWZzKQotICAgICAgICAgICAgbGluZWFyRnVuY3Rpb25SZWZz
ID0gbmV3IEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+OwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBmdW5jdGlvbiA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRp
ZW50KTsKLSAgICAKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+
Z2V0KGdyYWRpZW50KTsKICAgICAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICAgICAgc3Rh
dGljIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzID0g
IHsgMCwgaW50ZXJwb2xhdGVMaW5lYXJHcmFkaWVudCwgMCB9OwotICAgICAgICAgICAgbGluZWFy
RnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlvbkNyZWF0ZShn
cmFkaWVudCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwgJmxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tz
KSk7CisgICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rp
b24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoZ3JhZGllbnQsIDEsIG51bGxwdHIsIDQsIG51
bGxwdHIsICZsaW5lYXJGdW5jdGlvbkNhbGxiYWNrcykpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHJldHVybiBmdW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLmdldCgpOwogICAgIH0K
IAotICAgIGlmICghZXhwb25lbnRpYWxGdW5jdGlvblJlZnMpCi0gICAgICAgIGV4cG9uZW50aWFs
RnVuY3Rpb25SZWZzID0gbmV3IEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+
OwotICAgIGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+
Z2V0KGdyYWRpZW50KTsKLQorICAgIGF1dG8gZnVuY3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9u
UmVmcy0+Z2V0KGdyYWRpZW50KTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIHN0YXRp
YyBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBleHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tz
ID0gIHsgMCwgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdyYWRpZW50LCAwIH07Ci0gICAgICAgIGV4
cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlv
bkNyZWF0ZShncmFkaWVudCwgMSwgMCwgNCwgMCwgJmV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFj
a3MpKTsKKyAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVu
Y3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoZ3JhZGllbnQsIDEsIDAsIDQsIDAsICZl
eHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwogICAgIH0KLQotICAgIHJldHVybiBmdW5j
dGlvbjsKKyAgICByZXR1cm4gZnVuY3Rpb24uZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdB
eGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBJT1NHcmFkaWVudFJlZiBncmFkaWVu
dCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgY29uc3QgRmxvYXRQb2ludCYgc3RvcFBv
aW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCmluZGV4IGJlNjYwNzhh
ODNkMGNhNDliNzFhMWZiNTNjMjNhOGM2YjgxZDc2N2UuLjVhOWJiYzcxNWM5ZTVjODQzYWFmMmI5
MTVkZDg4ZjcyZWZhMTllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29j
b2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
Y29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIAotc3Rh
dGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEo
Q0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJl
Zj4gY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNl
RGF0YSkKIHsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZTsKICAgICBhdXRvIHVuYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJv
bURhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXJlc3BvbnNlRGF0YSBlcnJvcjpudWxscHRyXSk7CkBA
IC01Myw3ICs1Myw3IEBAIHN0YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9u
c2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhCiAgICAgfQogCiAgICAgaWYg
KCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKLSAg
ICAgICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9f
YnJpZGdlIENGVVJMUmVmKXJlc3BvbnNlLlVSTCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3Bv
bnNlLk1JTUVUeXBlLCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgsIChfX2JyaWRnZSBD
RlN0cmluZ1JlZilyZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VB
bGxvd2VkKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUs
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKIAogICAgIE5TSFRUUFVSTFJlc3BvbnNlICpo
dHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKIApAQCAtNjQsNyAr
NjQsNyBAQCBzdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJl
c3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYQogICAgIGZvciAoTlNTdHJpbmcgKmhlYWRl
ckZpZWxkIGluIFtoZWFkZXJGaWVsZHMga2V5RW51bWVyYXRvcl0pCiAgICAgICAgIENGSFRUUE1l
c3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKGh0dHBNZXNzYWdlLmdldCgpLCAoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpaGVhZGVyRmllbGQsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilbaGVhZGVyRmllbGRz
IG9iamVjdEZvcktleTpoZWFkZXJGaWVsZF0pOwogCi0gICAgcmV0dXJuIENGVVJMUmVzcG9uc2VD
cmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVS
TFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VB
bGxvd2VkKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBS
ZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2Uu
VVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwogfQog
CiBzdGF0aWMgdm9pZCBjb252ZXJ0TUlNRVR5cGUoQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBl
KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJvcGVyCiAgICAgaWYgKENG
R2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZXNwb25zZSA9IGFkb3B0
Q0YoY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKSk7Cisg
ICAgYXV0byByZXNwb25zZSA9IGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJl
c3BvbnNlRGF0YSk7CiAgICAgaWYgKCFyZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFh
OWY3MTlkNjUxZmE4YWVkMTlmNmVmZjA1MTU3ZjA5NTJkYmVlMTEuLmM1MzdlYTI4ZDkxYzUwNWEy
NThiOWM4MDZlN2U4M2NlMmNmNDBlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00NTEsNyArNDUxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6Om5ld1Rl
c3RpbmdTZXNzaW8KICAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBm
b3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90aGVy
d2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4
NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0i
LCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihX
ZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAog
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAg
IGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVB
UEkoKSkgewpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgYm9vbCBzaG91bGRVCiAgICAg
UmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlmaWVy
QmFzZSwgIi5Qcml2YXRlQnJvd3NpbmcuIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS5j
cmVhdGVDRlN0cmluZygpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAg
ICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKICAgICBlbHNlIGlmIChzZXNz
aW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAgICAgc3Rv
cmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZUNGU3Rv
cmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKGNmSWRlbnRpZmllci5nZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYTQyMzM0ZWMw
Y2ExYWQwNTAyM2VjYmY3OGQxMzFkMDFiM2VmMzZmLi4wNzk5MTVlMmI0YzM5YTgxYzI0ODhlYjlh
Y2E0ODhmYjExNDNkYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTU1Nyw3ICs1
NTgsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBXZSdkIGxpa2UgdG8gYmUgYWJsZSB0byBk
byB0aGlzIHdpdGhvdXQgdGhlICNpZmRlZiwgYnV0IFdvcmtRdWV1ZSArIEJpbmFyeVNlbWFwaG9y
ZSBpc24ndCBnb29kIGVub3VnaCBzaW5jZQogICAgIC8vIG11bHRpcGxlIHJlcXVlc3RzIHRvIGNs
ZWFyIHRoZSBjYWNoZSBjYW4gY29tZSBpbiBiZWZvcmUgcHJldmlvdXMgcmVxdWVzdHMgY29tcGxl
dGUsIGFuZCB3ZSBuZWVkIHRvIHdhaXQgZm9yIGFsbCBvZiB0aGVtLgogICAgIC8vIEluIHRoZSBm
dXR1cmUgdXNpbmcgV29ya1F1ZXVlIGFuZCBhIGNvdW50aW5nIHNlbWFwaG9yZSB3b3VsZCB3b3Jr
LCBhcyB3b3VsZCBXb3JrUXVldWUgc3VwcG9ydGluZyB0aGUgbGliZGlzcGF0Y2ggY29uY2VwdCBv
ZiAid29yayBncm91cHMiLgotICAgIGRpc3BhdGNoX2dyb3VwX3QgbV9jbGVhckNhY2hlRGlzcGF0
Y2hHcm91cCB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9ncm91cF90PiBt
X2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDYwYWY5M2RkZjUxZGU3OTAzMjY0NTQ2
YzZiMDM0YmExYjViYTU3MmUuLjVmYmU4MWQ2ODZiOWM3NGQ3ZGViOTY4NTY0MDM4MTNmZTY3ZWRm
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTE5MSw5ICsxOTEsOSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1l
IG1vZGlmaWVkUwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCkKLSAgICAgICAgbV9j
bGVhckNhY2hlRGlzcGF0Y2hHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgICAg
ICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9ncm91
cF9jcmVhdGUoKSk7CiAKLSAgICBhdXRvIGdyb3VwID0gbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91
cDsKKyAgICBhdXRvIGdyb3VwID0gbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cC5nZXQoKTsKICAg
ICBkaXNwYXRjaF9ncm91cF9hc3luYyhncm91cCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bWFrZUJsb2NrUHRyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlm
aWVkU2luY2UsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewogICAgICAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGZvckVhY2hO
ZXR3b3JrU2Vzc2lvbihbbW9kaWZpZWRTaW5jZSwgJmFnZ3JlZ2F0b3JdKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IGI1ZTBkMWEzZDUxMjUzYTUwMDNkZTY1ZTU4Njk3
OWU0ZDhjMmQwODAuLmIwZjlhNTliYjJjMDgzNzg1Yzg1OWNiNzAxNTkxOGEzYTY0MTE2MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzTWFjLm1tCkBAIC05Nyw5ICs5Nyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7CiAgICAgaWYgKG1fY2xlYXJD
YWNoZURpc3BhdGNoR3JvdXApIHsKLSAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2NsZWFy
Q2FjaGVEaXNwYXRjaEdyb3VwLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwotICAgICAgICBkaXNw
YXRjaF9yZWxlYXNlKG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXApOwotICAgICAgICBtX2NsZWFy
Q2FjaGVEaXNwYXRjaEdyb3VwID0gMDsKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2Ns
ZWFyQ2FjaGVEaXNwYXRjaEdyb3VwLmdldCgpLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOworICAg
ICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gbnVsbHB0cjsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA0ZjZiMTg0ZmY0MGQ5OTI4
OGViNjA2MGE3YzU4ODZiMzczNmM0YjgzLi42ZTM2N2Q1Yjg0YzdmZmUyNjc2MGY3YjBlZjRlZjZh
MWI0OGU5YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ1OCwxMCArNDU5LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxSZWNlaXZlU291cmNlKCk7CiAKICAgICBtYWNoX3Bv
cnRfdCBtX3NlbmRQb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vf
dCBtX3NlbmRTb3VyY2UgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfc291
cmNlX3Q+IG1fc2VuZFNvdXJjZTsKIAogICAgIG1hY2hfcG9ydF90IG1fcmVjZWl2ZVBvcnQgeyBN
QUNIX1BPUlRfTlVMTCB9OwotICAgIGRpc3BhdGNoX3NvdXJjZV90IG1fcmVjZWl2ZVNvdXJjZSB7
IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9zb3VyY2VfdD4gbV9yZWNlaXZl
U291cmNlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBtX3BlbmRpbmdPdXRn
b2luZ01hY2hNZXNzYWdlOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2UgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29u
bmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVj
dGlvbkNvY29hLm1tCmluZGV4IDhkOWNkZTA4ZjQ2NzE0MWE5MGQ4ZWFmOWRkNzg1Yjc5MDM4ZDU4
ZWUuLjkwYmRmMjQ4NzYyNDljZWYxNzFiYzkyZDc2NmU3NGUwMmQ0MTg0NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAg
LTE0Nyw4ICsxNDcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAg
ICAgQVNTRVJUKG1fcmVjZWl2ZVBvcnQpOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXIgcG9ydHMu
Ci0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3NlbmRTb3VyY2UpOwotICAgIGRpc3BhdGNo
X3JlbGVhc2UobV9zZW5kU291cmNlKTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1fc2Vu
ZFNvdXJjZS5nZXQoKSk7CiAgICAgbV9zZW5kU291cmNlID0gbnVsbHB0cjsKICAgICBtX3NlbmRQ
b3J0ID0gTUFDSF9QT1JUX05VTEw7CiAKQEAgLTE1Nyw4ICsxNTYsNyBAQCB2b2lkIENvbm5lY3Rp
b246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6Y2FuY2VsUmVjZWl2
ZVNvdXJjZSgpCiB7Ci0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3JlY2VpdmVTb3VyY2Up
OwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9yZWNlaXZlU291cmNlKTsKKyAgICBkaXNwYXRjaF9z
b3VyY2VfY2FuY2VsKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSk7CiAgICAgbV9yZWNlaXZlU291cmNl
ID0gbnVsbHB0cjsKICAgICBtX3JlY2VpdmVQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiB9CkBAIC0y
MzAsMTEgKzIyOCwxMSBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgIC8vIENoYW5nZSB0
aGUgbWVzc2FnZSBxdWV1ZSBsZW5ndGggZm9yIHRoZSByZWNlaXZlIHBvcnQuCiAgICAgc2V0TWFj
aFBvcnRRdWV1ZUxlbmd0aChtX3JlY2VpdmVQb3J0LCBNQUNIX1BPUlRfUUxJTUlUX0xBUkdFKTsK
IAotICAgIG1fcmVjZWl2ZVNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hf
U09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1
ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRs
ZXIobV9yZWNlaXZlU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyldIHsKKyAgICBtX3JlY2VpdmVTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NvdXJj
ZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAw
LCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKSk7CisgICAgZGlzcGF0Y2hfc291
cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIHJlY2VpdmVTb3VyY2VFdmVu
dEhhbmRsZXIoKTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5k
bGVyKG1fcmVjZWl2ZVNvdXJjZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBy
ZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2Nh
bmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKICNpZiAhUExBVEZP
Uk0oV0FUQ0hPUykKICAgICAgICAgbWFjaF9wb3J0X3VuZ3VhcmQobWFjaF90YXNrX3NlbGYoKSwg
cmVjZWl2ZVBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9wb3J0X2NvbnRleHRfdD4ocHJvdGVj
dGVkVGhpcy5nZXQoKSkpOwogI2VuZGlmCkBAIC0yNDMsMTAgKzI0MSwxMCBAQCBib29sIENvbm5l
Y3Rpb246Om9wZW4oKQogCiAgICAgcmVmKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9jb25uZWN0
aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSwgXnsKLSAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1f
cmVjZWl2ZVNvdXJjZSk7CisgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3JlY2VpdmVTb3VyY2Uu
Z2V0KCkpOwogCiAgICAgICAgIGlmIChtX3NlbmRTb3VyY2UpCi0gICAgICAgICAgICBkaXNwYXRj
aF9yZXN1bWUobV9zZW5kU291cmNlKTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3Nl
bmRTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGRlcmVmKCk7CiAgICAgfSk7CkBAIC0zNzEsMjAg
KzM2OSwyMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVlUmVm
PEVuY29kZXI+JiYgZW5jb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNv
dXJjZSgpCiB7Ci0gICAgbV9zZW5kU291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQ
QVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1NFTkQsIG1fc2VuZFBvcnQsIERJU1BBVENIX01BQ0hfU0VO
RF9ERUFEIHwgRElTUEFUQ0hfTUFDSF9TRU5EX1BPU1NJQkxFLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+
ZGlzcGF0Y2hRdWV1ZSgpKTsKKyAgICBtX3NlbmRTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3Bh
dGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9TRU5ELCBtX3NlbmRQ
b3J0LCBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCB8IERJU1BBVENIX01BQ0hfU0VORF9QT1NTSUJM
RSwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSkpOwogICAgIG1faXNJbml0aWFs
aXppbmdTZW5kU291cmNlID0gdHJ1ZTsKIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfcmVnaXN0
cmF0aW9uX2hhbmRsZXIobV9zZW5kU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyldIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lzdHJhdGlvbl9oYW5k
bGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSA9IGZhbHNlOwogICAgICAgICBy
ZXN1bWVTZW5kU291cmNlKCk7CiAgICAgfSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVu
dF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fc2VuZFNv
dXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAg
ICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHVuc2lnbmVkIGxvbmcgZGF0YSA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtX3NlbmRTb3Vy
Y2UpOworICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2Rh
dGEobV9zZW5kU291cmNlLmdldCgpKTsKIAogICAgICAgICBpZiAoZGF0YSAmIERJU1BBVENIX01B
Q0hfU0VORF9ERUFEKSB7CiAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKQEAgLTQw
MCw3ICszOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNlKCkKIAog
ICAgIGlmIChNQUNIX1BPUlRfVkFMSUQobV9zZW5kUG9ydCkpIHsKICAgICAgICAgbWFjaF9wb3J0
X3Qgc2VuZFBvcnQgPSBtX3NlbmRQb3J0OwotICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2Nh
bmNlbF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfc291cmNlX3Nl
dF9jYW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIF57CiAgICAgICAgICAgICAvLyBS
ZWxlYXNlIG91ciBzZW5kIHJpZ2h0LgogICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNh
ZmVseShzZW5kUG9ydCk7CiAgICAgICAgIH0pOwpAQCAtNTgwLDcgKzU3OCw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgICAgICAgICAgZGVh
bGxvY2F0ZVNlbmRSaWdodFNhZmVseShwcmV2aW91c05vdGlmaWNhdGlvblBvcnQpOwogCiAgICAg
ICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwotICAgICAgICAgICAgZGlzcGF0Y2hfcmVz
dW1lKG1fc2VuZFNvdXJjZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5kU291
cmNlLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJD
aGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNo
ZWNrcy5tbQppbmRleCA1YjY4ODRiZmYyOWY4ZjRmOGRkYWMzNWVlZmNlZTgyZTg1ZDVjMjkzLi41
ODc2MDkwNjA4ZDlhZmM4OGUzNDFjNWRmZjczZjViMzEwZWZhODk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAt
MzEsNiArMzEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hhc2hN
YXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09TT2Jq
ZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CkBAIC0xMTksNyArMTIx
LDExIEBAIHN0YXRpYyBib29sIGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBhcHBXYXNM
aW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0ICE9IGtUQ0NB
Y2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAKLXN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdfaXRw
UXVldWU7CitzdGF0aWMgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mIGl0cFF1ZXVlKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4+IGl0cFF1ZXVlOworICAgIHJldHVybiBpdHBRdWV1ZTsKK30KIAogdm9pZCBkZXRlcm1pbmVJ
VFBTdGF0ZSgpCiB7CkBAIC0xMzAsMTQgKzEzNiwxMyBAQCB2b2lkIGRldGVybWluZUlUUFN0YXRl
KCkKICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IElUUFN0YXRlOjpJbml0aWFsaXppbmc7CiAgICAg
Ym9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIgPSBsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RL
VmVyc2lvbjo6Rmlyc3RXaXRoU2Vzc2lvbkNsZWFudXBCeURlZmF1bHQpOwogCi0gICAgZ19pdHBR
dWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBDaGVja1F1
ZXVlIiwgTlVMTCk7CisgICAgaXRwUXVldWUoKSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0cENoZWNrUXVldWUiLCBOVUxMKSk7CiAKLSAg
ICBkaXNwYXRjaF9hc3luYyhnX2l0cFF1ZXVlLCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5k
bGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhpdHBRdWV1ZSgpLmdldCgpLCBbYXBw
V2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgZ19jdXJyZW50
SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9uT3JBZnRl
ciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRlOjpEaXNh
YmxlZDsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAgICAg
ICAgZGlzcGF0Y2hfcmVsZWFzZShnX2l0cFF1ZXVlKTsKLSAgICAgICAgICAgIGdfaXRwUXVldWUg
PSBudWxscHRyOworICAgICAgICAgICAgaXRwUXVldWUoKSA9IG51bGxwdHI7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpAQCAtMTQ5LDEwICsxNTQsMTAgQEAgYm9vbCBkb2VzQXBwSGF2ZUlUUEVu
YWJsZWQoKQogICAgIGlmIChnX2N1cnJlbnRJVFBTdGF0ZSA+IElUUFN0YXRlOjpJbml0aWFsaXpp
bmcpCiAgICAgICAgIHJldHVybiBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxl
ZDsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGdfaXRwUXVldWUpOworICAgIFJFTEVBU0VfQVNTRVJU
KGl0cFF1ZXVlKCkpOwogCiAgICAgX19ibG9jayBib29sIGlzSVRQRW5hYmxlZDsKLSAgICBkaXNw
YXRjaF9zeW5jKGdfaXRwUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhpdHBRdWV1ZSgpLmdl
dCgpLCBeewogICAgICAgICBpc0lUUEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBT
dGF0ZTo6RW5hYmxlZDsKICAgICB9KTsKICAgICByZXR1cm4gaXNJVFBFbmFibGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCmluZGV4IGFiMDYz
NGYxYWM2NTUzNzczNDgxODUwMmE5MTQzZDFhZGQxMTQ4MzguLjc4ZWFmZjQ1MjA0ODdjYzNkY2Uz
MDVlMDU0NDFiMTZjNzc4MTc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgc2V0QXBw
bGVMYW5ndWFnZXNQcmVmZXJlbmNlKCkKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFu
ZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiB7Ci0gICAgc3RhdGljIHhwY19vYmplY3RfdCBw
cmlvcml0eUJvb3N0TWVzc2FnZSA9IG51bGxwdHI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4+IHByaW9yaXR5Qm9vc3RNZXNzYWdlOwogCiAgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKICAgICB4cGNfY29u
bmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVudCkgewpA
QCAtMTE4LDE5ICsxMTgsMTggQEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4
cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgICAgIGR1cDIoZmQsIFNUREVS
Ul9GSUxFTk8pOwogCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1bmN0aW9u
UHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
ICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNz
YWdlLmdldCgpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxhbmd1YWdl
c1ByZWZlcmVuY2UoKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIGlm
IChwcmlvcml0eUJvb3N0TWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgeHBjX3JlbGVhc2Uo
cHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHByaW9yaXR5Qm9vc3RNZXNz
YWdlLmdldCgpID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gTGVh
ayBhIGJvb3N0IG9udG8gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgICAgICAgICAgaWYgKCFzdHJj
bXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAicHJl
LWJvb3RzdHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJvb3N0TWVz
c2FnZSk7Ci0gICAgICAgICAgICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UgPSB4cGNfcmV0YWlu
KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIXByaW9yaXR5Qm9vc3RNZXNzYWdlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSA9IGV2ZW50
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2Vz
KGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRl
eCAyNTgzYzkzNTFiOTc4NGM0MzliOTk4MDk2Yzc3MzFlNDM1ZDQyMjMyLi42Y2VmODdmM2M0NjQx
NzlkZjc2NjJmZGMzOTkyM2EwNjEzZTIxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHNoYXJlYWJs
ZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCiAgICAgc3RhdGljX2Nh
c3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVm
KCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCiB9CiAgICAgCi1zdGF0
aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFy
ZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVm
PiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiBy
ZXNvdXJjZSkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKICAgICAg
ICAgcmVzb3VyY2UsCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVh
dGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvCiAg
ICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKICAgICB9OwogCi0gICAgcmV0dXJuIENGQWxs
b2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KTsKKyAgICByZXR1cm4g
YWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkp
OwogfQogI2VuZGlmCiAKQEAgLTg1LDggKzg1LDggQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiAgICAgcmVmKCk7IC8vIEJhbGFu
Y2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgogCiAjaWYgVVNF
KENGKQotICAgIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gZGVhbGxvY2F0b3IgPSBhZG9wdENG
KGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcykpOwotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRh
KCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwor
ICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9y
KHRoaXMpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNO
b0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGRhdGEoKSksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgp
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAjZWxp
ZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRl
c19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggZDAyNDI5
MDhkNGM5ZjRmZmQxODViZDhlMWE1MzA1ODlkZjhhZWUwMy4uMzM3YzkzNjQ3MzI4NTdkMjcxMTRm
OTQwMDRjY2QyYzUxOTk2ODI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAKQEAgLTU0MSw4ICs1NDEsNyBAQCBib29sIGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEFTU0VSVChkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgQ0ZOdW1iZXJS
ZWYgbnVtYmVyID0gQ0ZOdW1iZXJDcmVhdGUoMCwgbnVtYmVyVHlwZSwgZGF0YVJlZmVyZW5jZS5k
YXRhKCkpOwotICAgIHJlc3VsdCA9IGFkb3B0Q0YobnVtYmVyKTsKKyAgICByZXN1bHQgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKDAsIG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0YSgpKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU4MSwxMSArNTgwLDExIEBAIGJvb2wgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCBk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5nLCBmYWxz
ZSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAs
IGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgZW5jb2RpbmcsIGZh
bHNlKSk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
c3VsdCA9IGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXN1bHQgPSBXVEZNb3ZlKHN0cmluZyk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggNjNlM2FmNDFkYTA1NTc5
YmI1NDJhMmU2Njc4ODk4MzEwZTU1ZDliOC4uYTM5NDA2NDlmZGJmMmRlZDQ4NGE0ZTI2MTAyYjky
MWNjMjgwNzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2Fj
eVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBzdGF0aWMg
TWFsbG9jUHRyPHVpbnQ4X3QsIEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyTWFsbG9jPiBlbmNvZGVT
ZXNzaW9uSGlzdG9yeUVudAogCiBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gZW5jb2RlU2Vz
c2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkKIHsKLSAg
ICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0RlYWxsb2NhdG9yOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+PiBmYXN0TWFsbG9jRGVh
bGxvY2F0b3I7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTQwMSwxMyArNDAxLDEzIEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShjb25zdCBG
cmFtZVN0YXRlJiBmcmFtCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgbnVsbHB0ciwgLy8g
cHJlZmVycmVkU2l6ZQogICAgICAgICB9OwotICAgICAgICBmYXN0TWFsbG9jRGVhbGxvY2F0b3Ig
PSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7CisgICAg
ICAgIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKSA9IGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKICAgICB9KTsKIAogICAgIHNpemVf
dCBidWZmZXJTaXplOwogICAgIGF1dG8gYnVmZmVyID0gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRy
eURhdGEoZnJhbWVTdGF0ZSwgYnVmZmVyU2l6ZSk7CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRkRh
dGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmxlYWtQ
dHIoKSwgYnVmZmVyU2l6ZSwgZmFzdE1hbGxvY0RlYWxsb2NhdG9yKSk7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1
ZmZlci5sZWFrUHRyKCksIGJ1ZmZlclNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKS5n
ZXQoKSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRGlj
dGlvbmFyeShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENGU3RyaW5nUmVmLCBDRlR5
cGVSZWY+PiBrZXlWYWx1ZVBhaXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KaW5kZXggMmRm
MjMzNWQ5YzVhZGZhYjVhNmJlOTJjOWM3N2MyMDU3YjY5OWUyYS4uYmRkYmIwODlkZWViNWVmZWYy
Y2U3MmVmMjNlYTNjOTYwMTA0MDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0z
OSw3ICszOSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVt
b3J5U3RvcmFnZVNlc3Npb24oKQogICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKSB7
CiAgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJvY2Vz
c1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKICAgICAgICAgYXV0byBjb29raWVB
Y2NlcHRQb2xpY3kgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb29raWVBY2NlcHRQb2xpY3koKTsKLSAgICAgICAgYXV0byBzdG9yYWdl
U2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGljeSkpOwor
ICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2Vw
dFBvbGljeSk7CiAgICAgICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3Rv
cmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdl
U2Vzc2lvbi5nZXQoKSkpOwogICAgICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBtYWtl
VW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vz
c2lvbklEKCksIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2Up
LCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oCmluZGV4IDA2MWYyNjY5OGQ4ZmFjY2ExMzcxNzA0NGVkYTI2MDg2MWM2ODhhZGYuLmQ0ODJi
NDJlMGMyNTQxMjc3Yzk0YTQ1ZGZjZmI1YjAxOTQ1MTExNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTcsNyArMTU4
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9kZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZVdoaWxlV2FpdGluZ0Zv
ckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9OwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Nv
bW1pdFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fY29tbWl0UXVl
dWU7CiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IG1fcGVuZGluZ0JhY2tpbmdTdG9y
ZUZsdXNoZXI7CiAKICAgICBIYXNoU2V0PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvcio+IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA5OTkyODcxYjFjMDBlODIx
MGNiNjZkZWJkMjhlZTZiMDhkYjEyNGQ1Li5hMzg4MTMzNWE0ZWY3ZGEwYTI4ZmI3NjAyYjhhMjk3
YTgwNjg1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCkBAIC02NSw3ICs2NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBX
CiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKHRydWUpOwogICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJkcmF3aW5nIGFyZWEgcm9vdCIp
OwogCi0gICAgbV9jb21taXRRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLkNvbW1pdFF1ZXVl
IiwgbnVsbHB0cik7CisgICAgbV9jb21taXRRdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuQ29tbWl0UXVldWUiLCBudWxscHRyKSk7CiAKICAgICAvLyBJbiBvcmRlciB0
byBlbnN1cmUgdGhhdCB3ZSBnZXQgYSB1bmlxdWUgRGlzcGxheVJlZnJlc2hNb25pdG9yIHBlci1E
cmF3aW5nQXJlYSAobmVjZXNzYXJ5IGJlY2F1c2UgRGlzcGxheVJlZnJlc2hNb25pdG9yCiAgICAg
Ly8gaXMgZHJpdmVuIGJ5IHRoaXMgY2xhc3MpLCBnaXZlIGVhY2ggcGFnZSBhIHVuaXF1ZSBEaXNw
bGF5SUQgZGVyaXZlZCBmcm9tIFdlYlBhZ2UncyB1bmlxdWUgSUQuCkBAIC03OCwxMCArNzgsNyBA
QCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEo
V2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgICAgICBzZXRWaWV3RXhwb3NlZFJlY3Qodmll
d0V4cG9zZWRSZWN0KTsKIH0KIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYSgpCi17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2NvbW1pdFF1
ZXVlKTsKLX0KK1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OnNldE5lZWRzRGlzcGxheSgpCiB7CkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBtX3BlbmRpbmdCYWNraW5n
U3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIGF1dG8gcGFnZUlEID0g
bV93ZWJQYWdlLmlkZW50aWZpZXIoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVl
LCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBh
Z2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUuZ2V0KCksIFtiYWNraW5n
U3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAg
ICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9ub3Rvbmlj
VGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwLmNwcAppbmRleCBhODY3MWZmMTk2MTBiNjFiZDY5ZGZmMjRkNTY2YjZiYzI1MGQ5ZTNl
Li45NWVmMjI5NGE5NzZmODQ0ZWMzYTQ5NWViYmJlM2IzZmQ5NmE3NGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXAuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAvLyBTZXNzaW9uIG5h
bWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0
byBiZSB1bmRlciB0aGUgbGltaXQsIG90ZWhyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsg
KHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUg
PSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0g
ICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vz
c2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewpAQCAtOTAsNyArOTAsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklELCBjbwogCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24g
PSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgp
KTsKICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihjZklkZW50
aWZpZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdJT1MubW0KaW5kZXggY2JkNTBiNmZjYTg1NTcxNWMyYzdjYzNkNjAxMmFiZDE4MmU0
MDI4MC4uMmY0MzNkYjNhZDNkODA2OWMyYTVhODFjNDhmM2VlMGZjYmE5MWZiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtNDks
NiArNDksNyBAQAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYk5TVmlld0V4dHJhcy5oPgogI2lt
cG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTksMTEgKzYwLDEx
IEBAIHN0YXRpYyBpbnQgY29tcGFyZVBhZ2VSZWN0cyhjb25zdCB2b2lkICprZXksIGNvbnN0IHZv
aWQgKmFycmF5KTsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX1dJRFRIX0lOU0VUICAgICA9IDQu
MCAqIDIuMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX0hFSUdIVF9JTlNFVCAgICA9IDQuMCAq
IDIuMDsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZShD
R0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVm
PiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxw
aGEpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBncmF5U3BhY2UgPSBDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VHcmF5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+PiBncmF5U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZUdyYXkoKSk7CiAgICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10gPSB7IHdoaXRl
LCBhbHBoYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGdyYXlTcGFjZSwgY29tcG9uZW50
cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UsIGNvbXBvbmVu
dHMpKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIFdlYlBERlZpZXcgewpAQCAtODMsMTQgKzg0LDE0
IEBAICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIAogKyAoQ0dDb2xvclJlZilzaGFk
b3dDb2xvcgogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNoYWRvd0NvbG9yID0gY3JlYXRlQ0dD
b2xvcldpdGhEZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKLSAgICByZXR1cm4gc2hhZG93Q29sb3I7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gc2hhZG93
Q29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDAsIDIuMCAvIDMpOworICAgIHJl
dHVybiBzaGFkb3dDb2xvci5nZXQoKS5nZXQoKTsKIH0KIAogKyAoQ0dDb2xvclJlZiliYWNrZ3Jv
dW5kQ29sb3IKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBiYWNrZ3JvdW5kQ29sb3IgPSBjcmVh
dGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDIwNC4wIC8gMjU1LCAxKTsKLSAgICByZXR1cm4gYmFj
a2dyb3VuZENvbG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xv
clJlZj4+IGJhY2tncm91bmRDb2xvciA9IGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUoMjA0
LjAgLyAyNTUsIDEpOworICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkuZ2V0KCk7CiB9
CiAKIC8vIFRoaXMgaXMgYSBzZWNyZXQgcHJvdG9jb2wgZm9yIFdlYkRhdGFTb3VyY2UgYW5kIFdl
YkZyYW1lVmlldyB0byBvZmZlciB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG8gc29tZXRoaW5nIGRp
ZmZlcmVudCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxl
bWVudERpY3Rpb25hcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1l
bnREaWN0aW9uYXJ5Lm1tCmluZGV4IDFmYjUxOGY4NzRiODNlNjRhZmU1ZmY0OThkMWVmNTFjZTMx
ODVmYzguLmFlYjRkOGYxNmZkZGIwMjU1MTA4YjJhMDBlYjlmNjcyMTVmMTc2NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVtZW50RGljdGlvbmFyeS5t
bQpAQCAtNTAsMTEgKzUwLDE1IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0
aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBsb29rdXBUYWJsZSA9IE5VTEw7CitzdGF0aWMgUmV0
YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBsb29rdXBUYWJsZSgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gbG9v
a3VwVGFibGU7CisgICAgcmV0dXJuIGxvb2t1cFRhYmxlOworfQogCiBzdGF0aWMgdm9pZCBhZGRM
b29rdXBLZXkoTlNTdHJpbmcgKmtleSwgU0VMIHNlbGVjdG9yKQogewotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGxvb2t1cFRhYmxlLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5LCBzZWxlY3Rv
cik7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobG9va3VwVGFibGUoKS5nZXQoKSwgKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKWtleSwgc2VsZWN0b3IpOwogfQogCiBzdGF0aWMgdm9pZCBjYWNoZVZh
bHVlRm9yS2V5KGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKnNlbGYp
CkBAIC03NiwxMCArODAsMTAgQEAgKyAodm9pZClpbml0aWFsaXplCiAKICsgKHZvaWQpaW5pdGlh
bGl6ZUxvb2t1cFRhYmxlCiB7Ci0gICAgaWYgKGxvb2t1cFRhYmxlKQorICAgIGlmIChsb29rdXBU
YWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb29rdXBUYWJsZSA9IENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRkNvcHlTdHJpbmdEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKKyAgICBsb29rdXBUYWJsZSgpID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZDb3B5
U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCkpOwogCiAgICAgYWRkTG9va3VwS2V5
KFdlYkVsZW1lbnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5vZGUpKTsKICAgICBhZGRMb29r
dXBLZXkoV2ViRWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dlYkZyYW1lKSk7CkBAIC0xMjUs
NyArMTI5LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpX2ZpbGxDYWNoZQogewotICAg
IENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24obG9va3VwVGFibGUsIGNhY2hlVmFsdWVGb3JLZXks
IChfX2JyaWRnZSB2b2lkKilzZWxmKTsKKyAgICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKGxv
b2t1cFRhYmxlKCkuZ2V0KCksIGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilzZWxm
KTsKICAgICBfY2FjaGVDb21wbGV0ZSA9IFlFUzsKIH0KIApAQCAtMTQ5LDEyICsxNTMsMTIgQEAg
LSAoaWQpb2JqZWN0Rm9yS2V5OihpZClrZXkKICAgICBpZiAodmFsdWUgfHwgX2NhY2hlQ29tcGxl
dGUgfHwgW19uaWxWYWx1ZXMgY29udGFpbnNPYmplY3Q6a2V5XSkKICAgICAgICAgcmV0dXJuIHZh
bHVlOwogCi0gICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VMPihjb25zdF9jYXN0PHZv
aWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSwgKF9fYnJpZGdlIENGVHlwZVJl
ZilrZXkpKSk7CisgICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VMPihjb25zdF9jYXN0
PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSgpLmdldCgpLCAoX19icmlk
Z2UgQ0ZUeXBlUmVmKWtleSkpKTsKICAgICBpZiAoIXNlbGVjdG9yKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIHZhbHVlID0gW3NlbGYgcGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXTsKIAotICAg
IE5TVUludGVnZXIgbG9va3VwVGFibGVDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGxvb2t1
cFRhYmxlKTsKKyAgICBOU1VJbnRlZ2VyIGxvb2t1cFRhYmxlQ291bnQgPSBDRkRpY3Rpb25hcnlH
ZXRDb3VudChsb29rdXBUYWJsZSgpLmdldCgpKTsKICAgICBpZiAodmFsdWUpIHsKICAgICAgICAg
aWYgKCFfY2FjaGUpCiAgICAgICAgICAgICBfY2FjaGUgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bG9va3VwVGFibGVDb3VudF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDAwOGZiYmEyOGYyMTk4ZjhiMDkx
YmIzYzNhMmVlN2M4MzIwMzU1Yi4uNWIwZWU4YTNhYzhjMzMzYjZlZTM0NGNkZDljM2I1NTc2NWMy
NmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MTI2MywyOCArMTI2MywzMiBAQCBzdGF0aWMgQ0ZTZXRDYWxsQmFja3MgTm9uUmV0YWluaW5nU2V0
Q2FsbGJhY2tzID0gewogICAgIENGSGFzaAogfTsKIAotc3RhdGljIENGTXV0YWJsZVNldFJlZiBh
bGxXZWJWaWV3c1NldDsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiYgYWxsV2Vi
Vmlld3NTZXQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRh
YmxlU2V0UmVmPj4gYWxsV2ViVmlld3NTZXQ7CisgICAgcmV0dXJuIGFsbFdlYlZpZXdzU2V0Owor
fQogCiArICh2b2lkKV9tYWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6KFNFTClzZWxlY3Rv
cgogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCisgICAgaWYgKCFhbGxXZWJWaWV3c1NldCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdl
YlZpZXdzU2V0IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXTsKKyAgICBbKF9f
YnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0KCkuZ2V0KCkgbWFrZU9iamVjdHNQ
ZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdOwogfQogCiAtICh2b2lkKV9yZW1vdmVGcm9tQWxsV2Vi
Vmlld3NTZXQKIHsKLSAgICBpZiAoYWxsV2ViVmlld3NTZXQpCi0gICAgICAgIENGU2V0UmVtb3Zl
VmFsdWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgaWYg
KGFsbFdlYlZpZXdzU2V0KCkpCisgICAgICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NT
ZXQoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogLSAodm9pZClfYWRk
VG9BbGxXZWJWaWV3c1NldAogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCi0gICAgICAgIGFs
bFdlYlZpZXdzU2V0ID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRhaW5pbmdT
ZXRDYWxsYmFja3MpOworICAgIGlmICghYWxsV2ViVmlld3NTZXQoKSkKKyAgICAgICAgYWxsV2Vi
Vmlld3NTZXQoKSA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRh
aW5pbmdTZXRDYWxsYmFja3MpKTsKIAotICAgIENGU2V0U2V0VmFsdWUoYWxsV2ViVmlld3NTZXQs
IChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgQ0ZTZXRTZXRWYWx1ZShhbGxXZWJWaWV3
c1NldCgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwogfQogCiBAZW5kCkBAIC0y
MjMwLDcgKzIyMzQsNyBAQCArICh2b2lkKWNsb3NlQWxsV2ViVmlld3MKICAgICBXZWJDb3JlOjpE
T01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cygpOwogCiAgICAgLy8gVGhp
cyB3aWxsIGNsb3NlIHRoZSBXZWJWaWV3cyBpbiBhIHJhbmRvbSBvcmRlci4gQ2hhbmdlIHRoaXMg
aWYgY2xvc2Ugb3JkZXIgaXMgaW1wb3J0YW50LgotICAgIGZvciAoV2ViVmlldyAqd2ViVmlldyBp
biBbKF9fYnJpZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQgYWxsT2JqZWN0c10pCisgICAgZm9y
IChXZWJWaWV3ICp3ZWJWaWV3IGluIFsoX19icmlkZ2UgTlNTZXQgKilhbGxXZWJWaWV3c1NldCgp
LmdldCgpIGFsbE9iamVjdHNdKQogICAgICAgICBbd2ViVmlldyBjbG9zZV07CiB9CiAKQEAgLTY5
MTEsNyArNjkxNSw3IEBAICsgKEJPT0wpX2RpZFNldENhY2hlTW9kZWwKICsgKFdlYkNhY2hlTW9k
ZWwpX21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlCiB7CiAgICAgV2ViQ2FjaGVNb2RlbCBjYWNo
ZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwotICAgIE5TRW51bWVyYXRvciAq
ZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2ViVmlld3NTZXQgb2JqZWN0RW51bWVy
YXRvcl07CisgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gWyhOU011dGFibGVTZXQgKilh
bGxXZWJWaWV3c1NldCgpLmdldCgpIG9iamVjdEVudW1lcmF0b3JdOwogICAgIHdoaWxlIChXZWJQ
cmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW2VudW1lcmF0b3IgbmV4dE9iamVjdF0gcHJlZmVy
ZW5jZXNdKQogICAgICAgICBjYWNoZU1vZGVsID0gc3RkOjptYXgoY2FjaGVNb2RlbCwgW3ByZWZl
cmVuY2VzIGNhY2hlTW9kZWxdKTsKICAgICByZXR1cm4gY2FjaGVNb2RlbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggNTExYTkyYjcy
ZDFjYTBkMjMzZDQ5MWMzMDAxOTYzNDMxY2M2NGQyYS4uOGYyNzE2MmJiYWYxOGVlMWMxMThiOTUx
MWY1MWI0N2U0NDg1Nzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBw
bGljYXRpb25DYWNoZS5jcHAKQEAgLTE5Nyw5ICsxOTcsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0
aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFnKiogb3JpZ2lucykKICAgICBm
b3IgKGF1dG8mIGNvcmVPcmlnaW4gOiBjb3JlT3JpZ2lucykKICAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGFycmF5SXRlbS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oV2ViU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGNvcmVPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIo
KSkpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5
ID0gYWRvcHRDRigKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7Ci0KKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxw
ZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5k
ZXggZWEwYjY3NTFjNTU0ZTgyN2RjOTgyNTVjZDRhNzE1N2YxZDVhZDJiMi4uMWQyNzAyYWRiMDgy
NzdjNDQ1MDhkM2RmYmRjNDI3OTg2ZGNmYzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBIUkVTVUxUIFdlYkRv
d25sb2FkOjp1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50
aWFsLCBfSW5fbwogICAgIGlmICghd2ViQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJuIEVfTk9J
TlRFUkZBQ0U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRp
YWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSkpOworICAg
IGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgp
KTsKIAogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVu
dGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIHdlYkNoYWxsZW5nZS0+
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CkBAIC0z
NzYsNyArMzc2LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGUKICAgICBpZiAoIUNGVVJMQXV0
aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxsZW5nZSkpIHsKICAgICAgICAg
Q3JlZGVudGlhbCBjcmVkZW50aWFsID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChlbXB0eVN0cmluZygpLCBj
b3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpKSk7CiAg
ICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3Jl
ZGVudGlhbCkpOworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBjcmVhdGVDRihjcmVk
ZW50aWFsKTsKICAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxv
YWQuZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5k
ZXggZDViZWVmODJlOTkwODkxYTcyZTZiNGZjNGJlMzc4ODMwYWI2YWM5MC4uZmYzNGFkMDczN2Ey
NmQyYTE3M2VjZGJiOWI5NjdiNTllMTZiZTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNE
UmVuZGVyZXIuY3BwCkBAIC0zNzAsMTQgKzM3MCwxMiBAQCBzdGF0aWMgYm9vbCBwcmVwYXJlRGV2
aWNlKElEaXJlY3QzRERldmljZTkqIGRldmljZSwgY29uc3QgQ0dSZWN0JiBib3VuZHMsIElEaXJl
YwogCiBzdGF0aWMgQ0dSZWN0IHVwZGF0ZUJvdW5kcyhDQVJlbmRlclVwZGF0ZSogdXBkYXRlKQog
ewotICAgIENHU1JlZ2lvbk9iaiByZ24gPSBDQVJlbmRlclVwZGF0ZUNvcHlSZWdpb24odXBkYXRl
KTsKKyAgICBhdXRvIHJnbiA9IGFkb3B0Q0YoQ0FSZW5kZXJVcGRhdGVDb3B5UmVnaW9uKHVwZGF0
ZSkpOwogICAgIGlmICghcmduKQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKIAogICAgIENH
UmVjdCByZXN1bHQ7Ci0gICAgQ0dFcnJvciBlcnJvciA9IENHU0dldFJlZ2lvbkJvdW5kcyhyZ24s
ICZyZXN1bHQpOwotICAgIENHU1JlbGVhc2VSZWdpb24ocmduKTsKLQorICAgIENHRXJyb3IgZXJy
b3IgPSBDR1NHZXRSZWdpb25Cb3VuZHMocmduLmdldCgpLCAmcmVzdWx0KTsKICAgICByZXR1cm4g
ZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzID8gcmVzdWx0IDogQ0dSZWN0WmVybzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5k
ZXggYjQxNjhiZjg0MTkxZThhMTE0MzlkOTAwMzJmZTg5ZWE0ZDI2ZjcwNC4uYmM5ZTIwMzY5MGU3
MDNmZjQ2OGU0MTE0ZTY5ZWNhZWQ1NDM3ZmI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC02NywxNyArNjcsMTcgQEAgc3Rh
dGljIExvY2FsaXplZFN0cmluZ01hcCBmcmFtZXdvcmtMb2NTdHJpbmdzKCkKIGNsYXNzIExvY2Fs
aXplZFN0cmluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxpemVkU3RyaW5nKTsK
IHB1YmxpYzoKLSAgICBMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQotICAgICAg
ICA6IG1fY2ZTdHJpbmcoc3RyaW5nKQorICAgIExvY2FsaXplZFN0cmluZyhSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+JiYgc3RyaW5nKQorICAgICAgICA6IG1fY2ZTdHJpbmcoV1RGTW92ZShzdHJpbmcp
KQogICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyhzdHJpbmcsIHN0cmluZyk7CisgICAgICAgIEFT
U0VSVChtX2NmU3RyaW5nKTsKICAgICB9CiAKICAgICBvcGVyYXRvciBMUENUU1RSKCkgY29uc3Q7
Ci0gICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmU3RyaW5nOyB9
CisgICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmU3RyaW5nLmdl
dCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0ZTdHJpbmdSZWYgbV9jZlN0cmluZzsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IG1fY2ZTdHJpbmc7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9zdHJp
bmc7CiB9OwogCkBAIC04Niw3ICs4Niw3IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBD
VFNUUigpIGNvbnN0CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBtX3N0cmluZy53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKIAotICAgIG1fc3RyaW5nID0gbV9j
ZlN0cmluZzsKKyAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmcuZ2V0KCk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMTsgaSA8IG1fc3RyaW5nLmxlbmd0aCgpOyBpKyspCiAgICAgICAgIGlm
IChtX3N0cmluZ1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAxXSA9PSAnJScgfHwgKGkgPiAy
ICYmIG1fc3RyaW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdbaSAtIDJdID49ICcxJyAmJiBt
X3N0cmluZ1tpIC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAzXSA9PSAnJScpKSkKQEAgLTE1
Miw3ICsxNTIsNyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVuZGxl
KFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5ncwogICAgIHJldHVybiBzdHJpbmdz
QnVuZGxlLT5idW5kbGU7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3Ry
aW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUs
IGNvbnN0IFN0cmluZyYga2V5KQorc3RhdGljIFJldGFuUHRyPENGU3RyaW5nUmVmPiBjb3B5TG9j
YWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmlu
Z3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBu
b3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOwogCkBAIC0xNjAs
NyArMTYwLDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVu
ZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRsZSkKICAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgQ0ZTdHJpbmdSZWYgcmVzdWx0ID0gQ0ZDb3B5
TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENG
Q29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5n
ICVzIGluIGJ1bmRsZSIsIGtleS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDBhZmZiNDVh
MTdmYmJjOThjNzBhZWU4MmI1ZWI5ZWVhNTJjNjhmMDcuLjViYmRlY2FhZTUzOTYyMTUzMzhiOTE0
MGIyY2I2YjBmMDRjZGIzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAKQEAgLTExNyw3ICsxMTcsMTEgQEAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gc3RyaW5nVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGUHJvcGVydHlMaXN0UmVmIHYKIAog
Ly8gV2ViUHJlZmVyZW5jZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGRlZmF1
bHRTZXR0aW5nczsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgZGVmYXVsdFNl
dHRpbmdzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4+IGRlZmF1bHRTZXR0aW5nczsKKyAgICByZXR1cm4gZGVmYXVsdFNldHRpbmdzOwor
fQogCiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFdlYlByZWZlcmVuY2VzOjptX2FwcGxpY2F0aW9u
SWQgPSBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsKICNlbmRpZgpAQCAtMjE0LDE1
NyArMjE4LDE1NyBAQCBDRlN0cmluZ1JlZiBXZWJQcmVmZXJlbmNlczo6YXBwbGljYXRpb25JZCgp
CiB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKIHsKICNp
ZiBVU0UoQ0YpCi0gICAgaWYgKGRlZmF1bHRTZXR0aW5ncykKKyAgICBpZiAoZGVmYXVsdFNldHRp
bmdzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZGVm
YXVsdHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIGF1
dG8gZGVmYXVsdHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwogCiAgICAgSU5JVElBTElaRV9ERUZBVUxUX1BSRUZFUkVOQ0VTX0RJQ1RJT05BUllf
RlJPTV9HRU5FUkFURURfUFJFRkVSRU5DRVM7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJU
aW1lcyBOZXcgUm9tYW4iKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ291cmllciBOZXciKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNlcmlmRm9u
dFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5j
ZUtleSksIENGU1RSKCJBcmlhbCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNh
bnMgTVMiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQaWN0b2dyYXBoRm9u
dFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IjkiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERl
ZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYiKSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJl
ZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVyZW5jZUtleSksIENGU1RS
KCJUaW1lcyBOZXcgUm9tYW4iKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ291cmll
ciBOZXciKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRT
YW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtl
eSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQaWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkpLCBD
RlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjkiKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERl
ZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYiKSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRT
aXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0RGVm
YXVsdEVuY29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQsIGRl
ZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nIG9uIFdpbmRvd3MiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJl
ZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNl
clN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0
TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0RW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNl
S2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93
VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQXVkaW9F
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQ
bHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU1JlZ2lvbnNFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRFeHBlcmltZW50
YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRab29tc1RleHRP
bmx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2FkU2l0ZUljb25zS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSksIENGU1RSKCIxODAwIikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRUYWJUb0xp
bmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVLZXlFcXVpdmFsZW50c1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93c1VSTHNJblRvb2xUaXBzUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RSKCIxIikpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQREZTY2FsZUZhY3RvclByZWZl
cmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxk
RGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGVm
YXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgZGVmYXVsdERlZmF1bHRFbmNvZGlu
Zy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldEVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRMb2NhdGlvblByZWZlcmVuY2VLZXkp
LCBDRlNUUigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRKYXZhRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdFJ1bnRpbWVGbGFnc1By
ZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc1ByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NT
UmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREYXRhYmFzZXNFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TG9jYWxTdG9yYWdlRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFpvb21zVGV4dE9ubHlQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdERpc3BsYXlJbWFnZXNLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExvYWRTaXRlSWNvbnNLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5KSwg
Q0ZTVFIoIjE4MDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXNwZWN0
U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvd3NU
b29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UERG
RGlzcGxheU1vZGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjEiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBERlNjYWxlRmFjdG9yUHJlZmVy
ZW5jZUtleSksIENGU1RSKCIwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0bGVzUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsaW5rQmVoYXZp
b3JTdHJpbmdSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNU
UigiJWQiKSwgV2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yKSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9y
UHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5nZXQoKSk7Ci0KLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtl
eSksIENGU1RSKCIxMDAwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpLCBDRlNUUigiNyIpKTsKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNlTG9j
YXRpb25LZXkpLCBDRlNUUigiIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdDb250cmFz
dFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoQWxsb3dDb250aW51b3Vz
U3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5KSwgbGlua0JlaGF2aW9y
U3RyaW5nUmVmLmdldCgpKTsKKworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5SXRlbUxpbWl0S2V5KSwgQ0ZTVFIoIjEwMDAiKSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEhpc3Rv
cnlBZ2VJbkRheXNMaW1pdEtleSksIENGU1RSKCI3IikpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VMb2NhdGlvbktleSks
IENGU1RSKCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGlu
Z0NvbnRyYXN0UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9s
aWN5UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViR3JhbW1hckNoZWNraW5nRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihBbGxvd0NvbnRpbnVvdXNTcGVsbENoZWNraW5nUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkpLCBDRlNUUigiIikpOwog
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZU1vZGVsUmVmID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiksIFdlYkNhY2hlTW9kZWxEb2N1
bWVudFZpZXdlcikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYuZ2V0KCkpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDYWNoZU1v
ZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYuZ2V0KCkpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQYWludE5hdGl2ZUNvbnRyb2xz
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250cm9sc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG93
RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9uRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEROU1ByZWZldGNoaW5nRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RnVsbFNj
cmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlcXVlc3RBbmltYXRpb25G
cmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0Rpc3BsYXlBbmRSdW5u
aW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBbGxvd0Rp
c3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dEN1c3RvbUVsZW1lbnRzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDdXN0
b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJBbmltYXRpb25z
Q29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0V2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU0N1c3RvbVByb3BlcnRpZXNBbmRW
YWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TGlua1ByZWxvYWRFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExpbmtQcmVsb2FkRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0TWVkaWFQcmVsb2FkaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRJ
bnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdElu
c3BlY3RvckFkZGl0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRWaXN1YWxW
aWV3cG9ydEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VmlzdWFsVmll
d3BvcnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U2Nyb2xs
aW5nQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NPTVZpZXdTY3Jv
bGxpbmdBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVzaXplT2JzZXJ2ZXJF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5n
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q29u
dGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBc3BlY3RSYXRp
b09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0V2ViU1FMRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0luZGl2aWR1YWxU
cmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENT
U0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE92
ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0T3Zl
cnNjcm9sbEJlaGF2aW9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwog
Ci0gICAgZGVmYXVsdFNldHRpbmdzID0gZGVmYXVsdHM7CisgICAgZGVmYXVsdFNldHRpbmdzKCkg
PSBXVEZNb3ZlKGRlZmF1bHRzKTsKICNlbmRpZgogfQogCkBAIC0zNzksNyArMzgzLDcgQEAgUmV0
YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkoQ0ZT
dHJpbmdSZWYga2V5KQogICAgIGlmICh2YWx1ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0g
ICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncywga2V5KTsKKyAg
ICByZXR1cm4gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVmYXVsdFNldHRpbmdzKCkuZ2V0KCksIGtl
eSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFZhbHVlRm9yS2V5KENGU3RyaW5nUmVm
IGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUpCkBAIC02MjAsNyArNjI0LDcgQEAgdm9pZCBX
ZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKENGRGlj
dGlvbmFyeVJlZiBkaWN0KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG9t
aXREZWZhdWx0cykgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIGRlZmF1bHRWYWx1ZSA9IENGRGlj
dGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncywga2V5c1tpXSk7CisgICAgICAgICAgICBD
RlR5cGVSZWYgZGVmYXVsdFZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVmYXVsdFNldHRp
bmdzKCkuZ2V0KCksIGtleXNbaV0pOwogICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSAmJiBD
RkVxdWFsKGRlZmF1bHRWYWx1ZSwgdmFsdWVzW2ldKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGY2NDk5MjUxMzE5YjEyNGFmOWJlYzY0MzI5MjUxODc4MDBhNzZkNzkuLjAwMGQ2
OTQ2ZDVjN2ExYWQ0MjQ2NjRiZDJlMjIzNDk1Y2FiM2I4MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0x
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5Q
dHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1w
U3VwcG9ydENHLmNwcDoKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRleHQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oOgorICAgICAgICAoQml0bWFw
Q29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQpOgorICAgICAgICAoQml0
bWFwQ29udGV4dDo6Qml0bWFwQ29udGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoV2ViVGhyZWFkTG9ja0FmdGVyRGVsZWdhdGVD
YWxsYmFja3NIYXZlQ29tcGxldGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUGl4
ZWxEdW1wU3VwcG9ydFdpbi5jcHA6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdl
YlZpZXcpOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBJbWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcDoKKyAg
ICAgICAgKEltYWdlRGlmZjo6UGxhdGZvcm1JbWFnZTo6cGl4ZWxzIGNvbnN0KToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgorICAgICAgICAoV1RS
OjpjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZUNHQ29u
dGV4dEZyb21JbWFnZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxz
QW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6CisKIDIwMjEtMDMtMTAgIE1pY2hhZWwgQ2F0YW56YXJv
ICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW1dQRV1bR1RLXSBJbnRyb2R1Y2Ug
TmVlZHNVbmJyYW5kZWRVc2VyQWdlbnQgcXVpcmsgYW5kIHVzZSBpdCBmb3IgYWNjb3VudHMuZ29v
Z2xlLmNvbSwgZG9jcy5nb29nbGUuY29tLCBhbmQgZHJpdmUuZ29vZ2xlLmNvbQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKaW5kZXggNWJjMDQwM2I4
MTFiYzY1NWRkMjBmYTJkNDA5MjI5OWYwZTQwN2Q4NS4uOGU2ZGQ1ZmVkN2QyYzJlYjM5YmNlZWJi
MWQ0NjhjY2VkNTkyOGNkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4
ZWxEdW1wU3VwcG9ydENHLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1
bXBTdXBwb3J0Q0cuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgUmVmUHRyPEJpdG1hcENvbnRleHQ+
IGNyZWF0ZUJpdG1hcENvbnRleHQoc2l6ZV90IHBpeGVsc1dpZGUsIHNpemVfdCBwaXhlbHNIaWdo
LAogICAgIAogICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFwIGluIHRoZSBkZXZpY2UgY29sb3Ig
c3BhY2UgcHJldmVudHMgYW55IGNvbG9yIGNvbnZlcnNpb24gd2hlbiB0aGUgaW1hZ2Ugb2YgdGhl
IHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwot
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZlciwg
cGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qp
OworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZl
ciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhv
c3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJEdW1wUmVu
ZGVyVHJlZTogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKCVwLCAlenUsICV6dSwgOCwgJXp1LCAlcCwg
MHgleCkgZmFpbGVkXG4iLCBidWZmZXIsIHBpeGVsc0hpZ2gsIHBpeGVsc1dpZGUsIHJvd0J5dGVz
LCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKICAgICAgICAgZnJlZShidWZmZXIpOwpAQCAtMTM0LDYg
KzEzNCw2IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0KHNpemVf
dCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRt
YXBBbmRDb250ZXh0KGJ1ZmZlciwgY29udGV4dCk7CisgICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6
OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZlciwgV1RGTW92ZShjb250ZXh0
KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVs
RHVtcFN1cHBvcnRDRy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9y
dENHLmgKaW5kZXggNDEyNGIwY2FlZGNlNzM4ZjQ2NDZjZGMzOGE3YjUxNmExYTc2MWMwOC4uYjc5
NGIyMTk4ZWQ4YTBhYTE0NzJkMzBiOTNhM2FiZmFjYzcwMjdhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKQEAgLTQ3LDkgKzQ3LDkgQEAgdHlwZWRl
ZiBIQklUTUFQIFBsYXRmb3JtQml0bWFwQnVmZmVyOwogCiBjbGFzcyBCaXRtYXBDb250ZXh0IDog
cHVibGljIFJlZkNvdW50ZWQ8Qml0bWFwQ29udGV4dD4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8Qml0bWFwQ29udGV4dD4gY3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoUGxhdGZv
cm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKKyAgICBzdGF0aWMg
UmVmPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KFBsYXRm
b3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgUmV0YWluUHRyPENHQ29udGV4dFJlZj4mJiBjb250ZXh0
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwQ29udGV4dChidWZm
ZXIsIGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwQ29udGV4
dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpKTsKICAgICB9CiAKICAgICB+Qml0bWFwQ29udGV4
dCgpCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKIAotICAgIEJpdG1hcENv
bnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkK
KyAgICBCaXRtYXBDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4mJiBjb250ZXh0KQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKLSAg
ICAgICAgLCBtX2NvbnRleHQoYWRvcHRDRihjb250ZXh0KSkKKyAgICAgICAgLCBtX2NvbnRleHQo
V1RGTW92ZShjb250ZXh0KSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2RjZTVhYzVjMzI5MWEzNjJlNDdlYjQyMGU3Nzcy
MWU4MmI1YjRjNC4uYjUxZTFhZWZlMmRmZjZhY2VlYjc2NDNiM2I0MzJmMjFlNDA3OWJhZSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTAwLDYgKzEw
MCw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09TT2Jq
ZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTgxMCwyMCArMTgx
MSwxOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShjb25zdCBX
VFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogLy8gbG9jayB0byBwcmV2ZW50IHBvdGVu
dGlhbGx5IHJlLWVudGVyaW5nIFdlYkNvcmUuCiBzdGF0aWMgdm9pZCBXZWJUaHJlYWRMb2NrQWZ0
ZXJEZWxlZ2F0ZUNhbGxiYWNrc0hhdmVDb21wbGV0ZWQoKQogewotICAgIGRpc3BhdGNoX3NlbWFw
aG9yZV90IGRlbGVnYXRlU2VtYXBob3JlID0gZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgwKTsK
KyAgICBhdXRvIGRlbGVnYXRlU2VtYXBob3JlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9zZW1h
cGhvcmVfY3JlYXRlKDApKTsKICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgZGlzcGF0Y2hf
c2VtYXBob3JlX3NpZ25hbChkZWxlZ2F0ZVNlbWFwaG9yZSk7CisgICAgICAgIGRpc3BhdGNoX3Nl
bWFwaG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCkpOwogICAgIH0pOwogCi0gICAg
d2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRlU2VtYXBob3JlLCBESVNQQVRD
SF9USU1FX05PVykpIHsKKyAgICB3aGlsZSAoZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQoZGVsZWdh
dGVTZW1hcGhvcmUuZ2V0KCksIERJU1BBVENIX1RJTUVfTk9XKSkgewogICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKICAgICAgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5N
b2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1d
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgV2ViVGhyZWFkTG9jaygpOwotCi0gICAgZGlzcGF0
Y2hfcmVsZWFzZShkZWxlZ2F0ZVNlbWFwaG9yZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwCmluZGV4IGE5YmE2OTE4
MzExOGJiODMyM2M4ZDQ5YjFmZDMzOWE1MWY1MzliNjAuLjM5NWQzMDI3YjlkODdlYTg5NTZlNmIw
MDA4N2M2MjE0OGEyNjdkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Q
aXhlbER1bXBTdXBwb3J0V2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUGl4
ZWxEdW1wU3VwcG9ydFdpbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAgUmVmUHRyPEJpdG1hcENvbnRl
eHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGlu
Y3JlbWUKIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGlu
Zm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBjb2xvclNwYWNlLmdldCgp
LCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShp
bmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LCBpbmZvLmJtV2lkdGhC
eXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogI2VsaWYgVVNFKENBSVJPKSAKICAgICBjYWly
b19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEo
KHVuc2lnbmVkIGNoYXIqKWluZm8uYm1CaXRzLCBDQUlST19GT1JNQVRfQVJHQjMyLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1X
aWR0aCwgaW5mby5ibUhlaWdodCwgaW5mby5ibVdpZHRoQnl0ZXMpOyAKQEAgLTExMiw1ICsxMTEs
NSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3
KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIGF1dG8gY29udGV4dCA9IHJlbmRlclRh
cmdldC5nZXQoKTsKICNlbmRpZiAKIAotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVC
eUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIGNvbnRleHQpOworICAgIHJldHVybiBC
aXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIFdU
Rk1vdmUoY29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlm
Zi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4NTRmMjJkYmFmYjVmYjI2ZTU4MmQ3ZTU5
NjQ4MTNiODllZWU5MWQuLjk2NDE2MzdlZDFlMDcyYzFmOGNjMjZiMTk3ZjNiZTJkNGE0MjBjNmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE3Nyw2ICsxNzcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDMxREY0MkM2MUVCQkJCQjkwMDk2
RUQ0NCAvKiBJbWFnZURpZmYueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE3IjsKIAkJCX07CiAJCQluYW1l
ID0gRGVidWc7CiAJCX07CkBAIC0xODQsNiArMTg1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAzMURGNDJDNjFFQkJC
QkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNyI7CiAJCQl9Owog
CQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xOTEsNiArMTkzLDcgQEAKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAzMURG
NDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNyI7
CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9J
bWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcCBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0
Zm9ybUltYWdlQ0cuY3BwCmluZGV4IGYwM2MzNTc5MmFkMGQzNDQxZWZlODVhZGRkYmYwN2U3Yzc2
ZjUxZGMuLjA0ZDFmNGYzZWE0NzUwYTE4ODEyOTRlYzA2M2Q5ZmIwZjBkNzM3MDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCisrKyBiL1Rvb2xzL0lt
YWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZmRlZiBf
V0lOMzIKICNpbmNsdWRlIDx3aW5zb2NrMi5oPgpAQCAtMTQyLDkgKzE0Myw4IEBAIHVuc2lnbmVk
IGNoYXIqIFBsYXRmb3JtSW1hZ2U6OnBpeGVscygpIGNvbnN0CiAgICAgc2l6ZV90IHJvd0J5dGVz
ID0gd2lkdGggKiA0OwogCiAgICAgbV9idWZmZXIgPSBjYWxsb2MoaGVpZ2h0LCByb3dCeXRlcyk7
Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUobV9idWZm
ZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2lt
YWdlKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwg
MCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2UpOwotICAgIENGUmVsZWFzZShjb250ZXh0KTsKKyAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2J1ZmZlciwg
d2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNlKG1faW1hZ2Up
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0KSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2UpOwogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCmluZGV4IDAxYzUzMWE5YjZhY2U4ZTgxNjk0
OGY2NzZjZTYzMWY1Mjc5NGI2YzQuLjRlYzljMjBlOTgwZjVlMDdlZmYzMzM2OGFmOTgxZjViOGI0
OTdiMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRp
b25DRy5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNH
LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBO
RyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgQ0dD
b250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCitz
dGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2Uo
Q0dJbWFnZVJlZiBpbWFnZSkKIHsKICAgICBzaXplX3QgcGl4ZWxzV2lkZSA9IENHSW1hZ2VHZXRX
aWR0aChpbWFnZSk7CiAgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlKTsKQEAgLTUzLDE1ICs1MywxNSBAQCBzdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29u
dGV4dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCiAKICAgICAvLyBDcmVhdGluZyB0aGlz
IGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xv
ciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRv
IGl0LgogICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdl
dCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBwaXhlbHNXaWRl
LCBwaXhlbHNIaWdoKSwgaW1hZ2UpOworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0Lmdl
dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gpLCBpbWFnZSk7CiAg
ICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250
ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFnZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoV0tJbWFnZVJlZiB3a0ltYWdlKQogewog
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKFdLSW1hZ2VDcmVhdGVDR0ltYWdlKHdrSW1hZ2UpKTsK
ICAgICByZXR1cm4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoaW1hZ2UuZ2V0KCkpOwpAQCAt
MTU4LDcgKzE1OCw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKFNuYXBzaG90UmVzdWx0VHlwZSBzbmFwc2hvCiAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoImR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkOiBpbWFnZSBpcyBudWxs
XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0ID0g
YWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2tJbWFnZSkpOworICAgICAgICBjb250
ZXh0ID0gY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKHdrSW1hZ2UpOwogICAgICAgICBpbWFnZVNp
emUgPSBXS0ltYWdlR2V0U2l6ZSh3a0ltYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
bmFwc2hvdFJlc3VsdFR5cGU6OldlYlZpZXc6CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoU25hcHNob3RSZXN1
bHRUeXBlIHNuYXBzaG8KICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdlIGlzIG51bGxcbiIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQgPSBhZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZy
b21DR0ltYWdlKGltYWdlLmdldCgpKSk7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVDR0NvbnRl
eHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlU2l6ZSA9IFdLU2l6ZU1h
a2UoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5n
ZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="442042"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422845</attachid>
            <date>2021-03-10 10:45:11 -0800</date>
            <delta_ts>2021-03-10 10:50:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310104510.patch</filename>
            <type>text/plain</type>
            <size>220291</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uZmU2ZTk2NGU2MWViOGVjMjE1NjEyZTdiZWIxOTZjNjRiNTY4Y2EyOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM1NDEsOSArMzU0Miw4IEBAIGludCBqc2NtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvJiBt
ZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
OwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElTUEFUQ0hfUVVF
VUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVl
dWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAgICAgICAgYXV0
byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJqc2Mgc2hlbGwg
bWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKKyAgICAg
ICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92ZShxdWV1ZSkp
OwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGljYWxTdGF0ZSA9
IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxTeW5jaHJvbm91
cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9ub3VzPjo6Y3Jl
YXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRiNzdiLi4zN2I3
MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hR
dWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJiBxdWV1ZSkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3BhdGNoX3JldGFp
bihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlzcGF0Y2hfcmVs
ZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1ZXVlOworICAg
IG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dURi93
dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYwN2NkNjMxZDJl
Y2Y1ODgzYzU0N2M0N2M0Mi4uMzU2ODc3ZTlmMGQwYzY0M2NiZWFjZDYxMzdjZmVlMzJlOTk0ZjBi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTM4LDYgKzM4LDEw
IEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV1RGIHsKIAogZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBvbGljeSA6IHVpbnQ4X3QgewpA
QCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBN
ZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3BhdGNoUXVldWUo
ZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0
Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRpZgogCiAgICAg
Y2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMTAsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hR
dWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rp
c3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2OTRiZDhjM2Y1
YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNDk0YmIxMDVhMWM5YzNkN2Y2ZDgzNmY5NDI5
NzQyNzU1N2RjOGEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysr
IGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVudEFwcGx5KHNpemVfdCBp
dGVyYXRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoc2l6ZV90IGluZGV4KT4mJik7CiAKICNpZiBV
U0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyAgICBkaXNwYXRjaF9xdWV1ZV90
IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWUuZ2V0KCk7IH0K
ICNlbHNlCiAgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7
IH0KICNlbmRpZgpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENPQ09BX0VW
RU5UX0xPT1ApCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKLSAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRj
aF9xdWV1ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZWxzZQogICAgIFJ1bkxvb3AqIG1fcnVuTG9v
cDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb2NvYS5tbQppbmRleCAwODhiMTljYzEwYTY1ZWZmZTVkNGU5ZmMyN2EwODFjMjU2YmEz
NzZmLi41YzBmNWIyNTQ0ZjdiYTVlZTRkNzI1MDYwN2Y3ZmQ2ZmJkMDQ0MzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQpAQCAt
NjgsMTMgKzY4LDEzIEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKICAg
ICBpZiAobV9pbnN0YWxsZWQgfHwgdGltZXJFdmVudFNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX2Fz
eW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVf
Tk9STUFMIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfV0FSTiB8IERJU1BBVENIX01FTU9SWVBS
RVNTVVJFX0NSSVRJQ0FMIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfUFJPQ19MSU1JVF9XQVJO
IHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfUFJPQ19MSU1JVF9DUklUSUNBTDsKICNlbHNlIC8v
IFBMQVRGT1JNKE1BQykKICAgICAgICAgYXV0byBtZW1vcnlTdGF0dXNGbGFncyA9IERJU1BBVENI
X01FTU9SWVBSRVNTVVJFX0NSSVRJQ0FMOwogI2VuZGlmCi0gICAgICAgIG1lbW9yeVByZXNzdXJl
RXZlbnRTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBF
X01FTU9SWVBSRVNTVVJFLCAwLCBtZW1vcnlTdGF0dXNGbGFncywgbV9kaXNwYXRjaFF1ZXVlKTsK
KyAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVh
dGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJFU1NVUkUsIDAsIG1lbW9yeVN0YXR1c0Zs
YWdzLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCkpOwogCiAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9z
ZXRfZXZlbnRfaGFuZGxlcihtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlLCBeewogICAgICAgICAg
ICAgYXV0byBzdGF0dXMgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEobWVtb3J5UHJlc3N1cmVF
dmVudFNvdXJjZSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6Omluc3RhbGwoKQogICAgIH0pOwogCiAgICAgLy8gQWxsb3cgc2ltdWxhdGlvbiBvZiBtZW1v
cnkgcHJlc3N1cmUgd2l0aCAibm90aWZ5dXRpbCAtcCBvcmcuV2ViS2l0Lmxvd01lbW9yeSIKLSAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5IiwgJm5vdGlm
eVRva2Vuc1swXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rl
cl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBdLCBtX2Rp
c3BhdGNoUXVldWUuZ2V0KCksIF4oaW50KSB7CiAjaWYgRU5BQkxFKEZNV19GT09UUFJJTlRfQ09N
UEFSSVNPTikKICAgICAgICAgYXV0byBmb290cHJpbnRCZWZvcmUgPSBwYWdlc1BlclZNVGFnKCk7
CiAjZW5kaWYKQEAgLTEyNCwxNSArMTI0LDE1IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKCkKICAgICAgICAgbG9nRm9vdHByaW50Q29tcGFyaXNvbihmb290cHJpbnRCZWZv
cmUsIGZvb3RwcmludEFmdGVyKTsKICNlbmRpZgogCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKG1f
ZGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVl
LmdldCgpLCBeewogICAgICAgICAgICAgZW5kU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5X
ZWJLaXQubG93TWVtb3J5LmJlZ2luIiwgJm5vdGlmeVRva2Vuc1sxXSwgbV9kaXNwYXRjaFF1ZXVl
LCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF4o
aW50KSB7CiAgICAgICAgIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKICAgICB9KTsK
LSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmVuZCIs
ICZub3RpZnlUb2tlbnNbMl0sIG1fZGlzcGF0Y2hRdWV1ZSwgXihpbnQpIHsKKyAgICBub3RpZnlf
cmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmVuZCIsICZub3RpZnlUb2tl
bnNbMl0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAgICAgICAgZW5kU2ltdWxh
dGVkTWVtb3J5UHJlc3N1cmUoKTsKICAgICB9KTsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKQogICAgIGlmICghbV9pbnN0YWxsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwg
XnsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAgICAg
IGlmIChtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlKSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9z
b3VyY2VfY2FuY2VsKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UpOwogICAgICAgICAgICAgbWVt
b3J5UHJlc3N1cmVFdmVudFNvdXJjZSA9IG51bGxwdHI7CkBAIC0xNjQsOCArMTY0LDggQEAgdm9p
ZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAKIHZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpob2xkT2ZmKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBkaXNwYXRjaF9hc3lu
YyhtX2Rpc3BhdGNoUXVldWUsIF57Ci0gICAgICAgIHRpbWVyRXZlbnRTb3VyY2UgPSBkaXNwYXRj
aF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1RJTUVSLCAwLCAwLCBtX2Rpc3Bh
dGNoUXVldWUpOworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsK
KyAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFU
Q0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiAgICAg
ICAgIGlmICh0aW1lckV2ZW50U291cmNlKSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9zZXRfY29u
dGV4dCh0aW1lckV2ZW50U291cmNlLCB0aGlzKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUg
ZmluYWwgYXJndW1lbnQgYHNfbWluaW11bUhvbGRPZmZUaW1lLnNlY29uZHMoKWAgc2VlbXMgd3Jv
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKaW5kZXggMzc3M2M3OTg1
MmViYjIxYmQwNmQ1NjdiMDE3Y2Y3YzkzMjI1M2RlNi4uNDljZGJiNTg4MGJiMTY2YjVmNzVlNTZk
ZGM3OWMxY2ZhMWE1NDA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1
ZXVlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNw
cApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIFdvcmtRdWV1ZTo6
ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoX2Fz
eW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKKyAgICBkaXNwYXRjaF9h
c3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CiAgICAgICAg
IGZ1bmN0aW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7
Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVy
YXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxv
Y2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24gPSBXVEZNb3Zl
KGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hf
VElNRV9OT1csIGR1cmF0aW9uLm5hbm9zZWNvbmRzQXM8aW50NjRfdD4oKSksIG1fZGlzcGF0Y2hR
dWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24oKTsKICAg
ICB9KS5nZXQoKSk7CiB9CkBAIC00OSwxMyArNDksMTIgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRm
b3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCiB7CiAg
ICAgZGlzcGF0Y2hfcXVldWVfYXR0cl90IGF0dHIgPSB0eXBlID09IFR5cGU6OkNvbmN1cnJlbnQg
PyBESVNQQVRDSF9RVUVVRV9DT05DVVJSRU5UIDogRElTUEFUQ0hfUVVFVUVfU0VSSUFMOwogICAg
IGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRyX21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgVGhy
ZWFkOjpkaXNwYXRjaFFPU0NsYXNzKHFvcyksIDApOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZShuYW1lLCBhdHRyKTsKLSAgICBkaXNwYXRjaF9zZXRfY29udGV4
dChtX2Rpc3BhdGNoUXVldWUsIHRoaXMpOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGFkb3B0T1NP
YmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKG5hbWUsIGF0dHIpKTsKKyAgICBkaXNwYXRjaF9z
ZXRfY29udGV4dChtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIHRoaXMpOwogfQogCiB2b2lkIFdvcmtR
dWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlz
cGF0Y2hRdWV1ZSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpjb25jdXJyZW50QXBwbHkoc2l6ZV90
IGl0ZXJhdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmIGZ1bmN0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IGM2N2NjM2E5NjNh
NTBlYzIxYWViODY3MjUwOWNkNmIyOTE1M2RjOGIuLjMwZWYzNjA1NzE0NGNiMmExYmY1NjBiNTRl
YzZhNjhiNmFhMDU3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5n
SW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAK
QEAgLTExMSwxNiArMTExLDEzIEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3Ig
ewogICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JS
ZWYgY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0g
eyAwLCBudWxscHRyLCByZXRhaW4sIHJlbGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwgYWxsb2NhdGUs
IHJlYWxsb2NhdGUsIGRlYWxsb2NhdGUsIHByZWZlcnJlZFNpemUgfTsKLSAgICAgICAgcmV0dXJu
IENGQWxsb2NhdG9yQ3JlYXRlKG51bGxwdHIsICZjb250ZXh0KTsKLSAgICB9Ci0KICAgICBzdGF0
aWMgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IgPSBjcmVhdGUoKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRv
cjsKKyAgICAgICAgc3RhdGljIGF1dG8gYWxsb2NhdG9yID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICAgICAgICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLCBudWxscHRy
LCByZXRhaW4sIHJlbGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwgYWxsb2NhdGUsIHJlYWxsb2NhdGUs
IGRlYWxsb2NhdGUsIHByZWZlcnJlZFNpemUgfTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdENG
KENGQWxsb2NhdG9yQ3JlYXRlKG51bGxwdHIsICZjb250ZXh0KSk7CisgICAgICAgIH0oKSk7Cisg
ICAgICAgIHJldHVybiBhbGxvY2F0b3IuZ2V0KCkuZ2V0KCk7CiAgICAgfQogCiB9CkBAIC0xMzgs
MTUgKzEzNSwxNSBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNG
U3RyaW5nKCkKICAgICBBU1NFUlQoIVN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0
cmluZyk7CiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nID0gdGhp
czsKIAotICAgIENGU3RyaW5nUmVmIHN0cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHN0cmluZzsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHN0cmluZyA9IENGU3RyaW5nQ3Jl
YXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEs
IGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIGVsc2UKLSAgICAgICAgc3Ry
aW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVu
aUNoYXIqPihjaGFyYWN0ZXJzMTYoKSksIG1fbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAg
ICAgLy8gQ29yZUZvdW5kYXRpb24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcs
IHdlIGNsZWFyIGN1cnJlbnRTdHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2Nh
dGUoKS4KICAgICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXR1cm4gc3RyaW5nOwog
fQogCiAvLyBPbiBTdHJpbmdJbXBsIGNyZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxv
Y2F0b3IgaXMgdGhlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGZmZTYzYTZjMzliODQ2YzFlNTk3NjE1ZGJjNDcy
ZmQ3M2UyMDA2NjguLjRiMDFlYzM3OWViYTlmY2UxZDhhNDg2OTFjNThhODA1YjgzODQ2YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtMzAsNiArMzAsOCBA
QAogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIm9iamNfaW5z
dGFuY2UuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5o
PgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKQEAgLTM5LDIyICs0
MSwyNiBAQCBPYmpjQ2xhc3M6Ok9iamNDbGFzcyhDbGFzc1N0cnVjdFB0ciBhQ2xhc3MpCiB7CiB9
CiAKLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9IDA7CitzdGF0
aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBjbGFzc2VzQnlJc0EoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4+IGNsYXNzZXNCeUlzQTsKKyAgICByZXR1cm4gY2xhc3Nlc0J5SXNBOworfQogCiBzdGF0aWMg
dm9pZCBfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3NhcnkoKQogewotICAgIGlmICghY2xhc3Nl
c0J5SXNBKQotICAgICAgICBjbGFzc2VzQnlJc0EgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxl
KE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGlmICghY2xhc3Nlc0J5SXNBKCkpCisgICAgICAg
IGNsYXNzZXNCeUlzQSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5VTEws
IDAsIE5VTEwsIE5VTEwpKTsKIH0KIAogT2JqY0NsYXNzKiBPYmpjQ2xhc3M6OmNsYXNzRm9ySXNB
KENsYXNzU3RydWN0UHRyIGlzYSkKIHsKICAgICBfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3Nh
cnkoKTsKIAotICAgIGF1dG8gYUNsYXNzID0gcmVpbnRlcnByZXRfY2FzdDxPYmpjQ2xhc3MqPihj
b25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFzc2VzQnlJc0EsIChfX2Jy
aWRnZSBDRlR5cGVSZWYpaXNhKSkpOworICAgIGF1dG8gYUNsYXNzID0gcmVpbnRlcnByZXRfY2Fz
dDxPYmpjQ2xhc3MqPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFz
c2VzQnlJc0EoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EpKSk7CiAgICAgaWYgKCFh
Q2xhc3MpIHsKICAgICAgICAgYUNsYXNzID0gbmV3IE9iamNDbGFzcyhpc2EpOwotICAgICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShjbGFzc2VzQnlJc0EsIChfX2JyaWRnZSBDRlR5cGVSZWYpaXNh
LCBhQ2xhc3MpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShjbGFzc2VzQnlJc0EoKS5n
ZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGFDbGFzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBs
YWNlQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKaW5k
ZXggODVlOWJjNGFhNGVkZGZiNDQ1Mzk0YjBlOGQzOTYwN2Y0MmQxMjRlZi4uMDg4ZjAyZThkYTI0
NDA2YTkwM2Y5ZGEwOThhNjFiODI0NzBlNzI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
bWFydFJlcGxhY2VDRi5jcHAKQEAgLTM2LDMzICszNiwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgZ2V0U21hcnRTZXQoYm9vbCBpc1By
ZXZpb3VzQ2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYg
cHJlU21hcnRTZXQ7Ci0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwb3N0U21h
cnRTZXQ7Ci0gICAgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHNtYXJ0U2V0ID0gaXNQcmV2aW91
c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0IDogcG9zdFNtYXJ0U2V0OworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmPj4gcHJlU21hcnRT
ZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0
ZXJTZXRSZWY+PiBwb3N0U21hcnRTZXQ7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUNoYXJhY3Rl
clNldFJlZj4mIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0Lmdl
dCgpIDogcG9zdFNtYXJ0U2V0LmdldCgpOwogICAgIGlmICghc21hcnRTZXQpIHsKLSAgICAgICAg
c21hcnRTZXQgPSBDRkNoYXJhY3RlclNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luU3RyaW5nKHNtYXJ0U2V0
LCBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gQ0ZTVFIoIihbXCJcJyMkLy1geyIpIDogQ0ZTVFIoIild
Liw7Oj9cJyFcIiUqLS99IikpOwotICAgICAgICBDRkNoYXJhY3RlclNldFVuaW9uKHNtYXJ0U2V0
LCBDRkNoYXJhY3RlclNldEdldFByZWRlZmluZWQoa0NGQ2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFu
ZE5ld2xpbmUpKTsgICAgICAgIAorICAgICAgICBzbWFydFNldCA9IGFkb3B0Q0YoQ0ZDaGFyYWN0
ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgQ0ZDaGFy
YWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21hcnRTZXQuZ2V0KCksIGlzUHJldmlvdXND
aGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7IikgOiBDRlNUUigiKV0uLDs6P1wnIVwiJSot
L30iKSk7CisgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hh
cmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGlu
ZSkpOworCiAgICAgICAgIC8vIEFkZGluZyBDSksgcmFuZ2VzCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2
KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDExRkYpCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUy
KSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgyRTgwIC0gMHgyRkRGKQotICAgICAgICBD
RkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgw
eDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBDSksgU3ltYm9scywgSGly
YWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbywgS2Fu
YnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgzMUJGKQotICAgICAgICBDRkNoYXJhY3Rl
clNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5
MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9ncmFwaHMgKFVuaSBIYW4gJiBFeHQgQSks
ICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5n
dWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRk
Q2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAweEZFNEYp
Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENG
UmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBGb3JtICgweEZGMDAg
LSAweEZGRUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21h
cnRTZXQsIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAvLyBDSksgSWRlb2dyYXBoIEV4
bnRlbnNpb24gQgotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNt
YXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAyMUUpKTsgLy8gQ0pLIENvbXBhdGliaWxp
dHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0
QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MTEwMCwg
MjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDExRkYpCisgICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4
MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgyRTgwIC0gMHgyRkRGKQor
ICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgp
LCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBD
SksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3VsIENvbXBhdGli
aWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgzMUJGKQorICAg
ICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBD
RlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9ncmFw
aHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKKyAgICAgICAgQ0ZD
aGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9n
cmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBD
SksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAweEZFNEYpCisgICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4
RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBGb3JtICgweEZGMDAgLSAweEZGRUYpCisg
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCks
IENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAvLyBDSksgSWRlb2dyYXBoIEV4bnRlbnNp
b24gQgorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0
LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAyMUUpKTsgLy8gQ0pLIENvbXBhdGliaWxp
dHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCiAKLSAgICAgICAgaWYgKGlzUHJldmlv
dXNDaGFyYWN0ZXIpCi0gICAgICAgICAgICBwcmVTbWFydFNldCA9IHNtYXJ0U2V0OwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQsIENGQ2hh
cmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRQdW5jdHVhdGlvbikpOyAgICAg
ICAKLSAgICAgICAgICAgIHBvc3RTbWFydFNldCA9IHNtYXJ0U2V0OwotICAgICAgICB9CisgICAg
ICAgIGlmICghaXNQcmV2aW91c0NoYXJhY3RlcikKKyAgICAgICAgICAgIENGQ2hhcmFjdGVyU2V0
VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFy
YWN0ZXJTZXRQdW5jdHVhdGlvbikpOwogICAgIH0KLSAgICByZXR1cm4gc21hcnRTZXQ7CisgICAg
cmV0dXJuIHNtYXJ0U2V0LmdldCgpOwogfQogCiBib29sIGlzQ2hhcmFjdGVyU21hcnRSZXBsYWNl
RXhlbXB0KFVDaGFyMzIgYywgYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmlu
ZGV4IDFjZDVkOWZkYjhhMTQxOWQzNjdjMDg2ZTBjNmNhNjNkZmVkNjMzMjUuLjUwOWYyM2JhY2Ux
ZWU1ZmE2MTdkODVjYmRhMTU2OGQ5OTM4Yjg1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTExOSwxMCAr
MTE5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50IHsgMCB9OwogfTsKIAot
c3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ29sb3IoZmxvYXQg
ciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAgICBDR0Zsb2F0IGNvbXBvbmVudHNb
NF0gPSB7IHIsIGcsIGIsIGEgfTsKLSAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JT
cGFjZVJlZigpLCBjb21wb25lbnRzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRl
KHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpKTsKIH0KIAogc3RydWN0IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvIHsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlVXNh
Z2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogCiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0
QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRz
U2NhbGU6Mi4wXTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRD
RihjcmVhdGVDb2xvcigwLCAwLCAwLCAwLjgpKS5nZXQoKV07CisgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0QmFja2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAsIDAsIDAsIDAuOCkuZ2V0KCldOwogICAg
IFttX2xheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBu
b3JtYWxIZWlnaHQpXTsKIAogICAgIG92ZXJsYXkoKS5sYXllcigpLnNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKG1fbGF5ZXIuZ2V0KCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJw
b3NlOjpOb25lKTsKQEAgLTI4MCwxNyArMjgwLDE3IEBAIHN0YXRpYyB2b2lkIHNob3dUZXh0KENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBj
CiAKIHN0YXRpYyB2b2lkIGRyYXdHcmFwaExhYmVsKENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9h
dCB4LCBmbG9hdCB5LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JS
ZWYgYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAxKTsKLSAgICBzaG93VGV4dChjb250ZXh0
LCB4ICsgNSwgeSAtIDMsIGJsYWNrLCB0ZXh0KTsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0
ZSA9IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA0
LCB5IC0gNCwgd2hpdGUsIHRleHQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4+IGJsYWNrID0gY3JlYXRlQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgc2hv
d1RleHQoY29udGV4dCwgeCArIDUsIHkgLSAzLCBibGFjay5nZXQoKS5nZXQoKSwgdGV4dCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gd2hpdGUgPSBj
cmVhdGVDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCB4ICsgNCwgeSAt
IDQsIHdoaXRlLmdldCgpLmdldCgpLCB0ZXh0KTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd0NwdUhp
c3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIs
IFJpbmdCdWZmZXI8ZmxvYXQ+JiBoaXN0b3J5KQogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNw
dUNvbG9yID0gY3JlYXRlQ29sb3IoMCwgMSwgMCwgMSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY3B1Q29sb3IgPSBjcmVhdGVDb2xvcigwLCAxLCAw
LCAxKTsKIAotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNw
dUNvbG9yKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBj
cHVDb2xvci5nZXQoKS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQs
IDEpOwogCiAgICAgaW50IGkgPSAwOwpAQCAtMzIxLDggKzMyMSw4IEBAIHN0YXRpYyB2b2lkIGRy
YXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv
YXQgeTIsIFJpCiAKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMSk7CiAKLSAg
ICBzdGF0aWMgQ0dDb2xvclJlZiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4z
LCAxKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYXBh
Y2l0eUNvbG9yKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JS
ZWY+PiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4zLCAxKTsKKyAgICBDR0Nv
bnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYXBhY2l0eUNvbG9yLmdldCgp
LmdldCgpKTsKIAogICAgIHNpemVfdCBpID0gMDsKIApAQCAtMzM1LDggKzMzNSw4IEBAIHN0YXRp
YyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgxLCBmbG9h
dCB5MSwgZmxvYXQgeTIsIFJpCiAgICAgICAgIGkrKzsKICAgICB9KTsKIAotICAgIHN0YXRpYyBD
R0NvbG9yUmVmIHNpemVDb2xvciA9IGNyZWF0ZUNvbG9yKDAuNiwgMC41LCAwLjksIDEpOwotICAg
IENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIHNpemVDb2xvcik7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gc2l6ZUNvbG9y
ID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tl
Q29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9yLmdldCgpLmdldCgpKTsKIAogICAgIGkg
PSAwOwogCkBAIC00NTYsMTAgKzQ1NiwxMCBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5Ojpw
bGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgQ0dSZWN0IHZpZXdCb3VuZHMg
PSBtX292ZXJsYXktPmJvdW5kcygpOwogICAgIENHQ29udGV4dENsZWFyUmVjdChjb250ZXh0LCB2
aWV3Qm91bmRzKTsKIAotICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTGFiZWxzID0gY3Jl
YXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDIw
LCBjb2xvckZvckxhYmVscywgbWFrZVN0cmluZygiICAgICAgICBDUFU6ICIsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFzdCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJv
cykpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMzAsIGNvbG9yRm9yTGFiZWxzLCAiICBG
b290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7Ci0gICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZvckxhYmVscywgIiAgIEV4dGVybmFsOiAi
ICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxhc3QoKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGNvbG9yRm9yTGFi
ZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7CisgICAgc2hvd1RleHQoY29udGV4
dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgbWFrZVN0cmluZygiICAgICAg
ICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFzdCgp
LCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMzAs
IGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICBGb290cHJpbnQ6ICIgKyBmb3JtYXRCeXRl
TnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDQw
LCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAgIEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0
ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxhc3QoKSkpOwogCiAgICAgZmxvYXQgeSA9
IDU1OwogICAgIGZvciAoYXV0byYgY2F0ZWdvcnkgOiBkYXRhLmNhdGVnb3JpZXMpIHsKQEAgLTQ4
MCw4ICs0ODAsOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dD
b250ZXh0UmVmIGNvbnRleHQpCiAgICAgeSAtPSA1OwogCiAgICAgTW9ub3RvbmljVGltZSBub3cg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDEw
LCBjb2xvckZvckxhYmVscywgIiAgICBFZGVuIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRp
bWVPZk5leHRFZGVuQ29sbGVjdGlvbiwgbm93KSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAs
IHkgKyAyMCwgY29sb3JGb3JMYWJlbHMsICIgICAgRnVsbCBHQzogIiArIGdjVGltZXJTdHJpbmco
ZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5vdykpOworICAgIHNob3dUZXh0KGNvbnRl
eHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICAgIEVkZW4gR0M6
ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsK
KyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5n
ZXQoKSwgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVPZk5leHRGdWxs
Q29sbGVjdGlvbiwgbm93KSk7CiAKICAgICBkcmF3Q3B1SGlzdG9yeShjb250ZXh0LCB2aWV3Qm91
bmRzLnNpemUud2lkdGggLSA3MCwgMCwgdmlld0JvdW5kcy5zaXplLmhlaWdodCwgZGF0YS5jcHUp
OwogICAgIGRyYXdHQ0hpc3RvcnkoY29udGV4dCwgdmlld0JvdW5kcy5zaXplLndpZHRoIC0gMTQw
LCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRhLmdjSGVhcFNpemUsIGRhdGEuY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXS5kaXJ0eVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwCmluZGV4IDgyMDNj
MDM2YTM2MTI1N2U1MmU4MDVkMWZmOTU4ODRjNmI0ODFhNjQuLjMwZDVlMDU1NTE5YmNhMDAzZDI0
NTQ1ZjQzZGQyMTM3MGNmMDJkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNlcnRpZmljYXRlQ0ZXaW4uaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCwxOSAr
MzUsMTkgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NlcnRDb250ZXh0KHZvaWQqIHB0ciwgdm9pZCog
aW5mbykKICAgICAgICAgQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQoc3RhdGljX2Nhc3Q8UEND
RVJUX0NPTlRFWFQ+KHB0cikpOwogfQogCi1zdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlQ2Vy
dENvbnRleHREZWFsbG9jYXRvcigpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBj
cmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQg
YWxsb2NDb250ZXh0ID0gewogICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCBkZWFsbG9jQ2Vy
dENvbnRleHQsIDAKICAgICB9OwotICAgIHJldHVybiBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9j
YXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KSk7CiB9CiAKIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNvcHlDZXJ0aWZpY2F0ZVRvRGF0YShQQ0NFUlRfQ09OVEVYVCBj
ZXJ0aWZpY2F0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY2VydERlYWxsb2MgPSBj
cmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4+IGNlcnREZWFsbG9jID0gY3JlYXRlQ2VydENvbnRl
eHREZWFsbG9jYXRvcigpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRlQ29weSA9IENl
cnREdXBsaWNhdGVDZXJ0aWZpY2F0ZUNvbnRleHQoY2VydGlmaWNhdGUpOwotICAgIHJldHVybiBh
ZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpj
ZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOworICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNv
cHkpLCBjZXJ0RGVhbGxvYy5nZXQoKS5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggMDU3MzI1YzA2MmRiY2U1ZDgxMmZiNDhmODQ3MzI1OTg2MmFlZDc0OS4u
MzA1OGVlODE3ZmNkZjk1ODRjYmIzNjE3MWY0YzZmYzg0NzEyN2Q4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24g
PSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBGb250V2lk
dGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gVGV4dFJlbmRlcmlu
Z01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlvbkRhdGEqID0gbnVsbHB0cik7CiAKICNp
ZiBVU0UoQ09SRV9URVhUKQotICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQbGF0Zm9ybURhdGEoQ1RG
b250UmVmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQgPSBmYWxzZSwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRhdGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6
SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJX
aWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5k
ZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250
UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+JiYsIGZsb2F0IHNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlxdWUgPSBmYWxzZSwgRm9udE9y
aWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jpem9udGFsLCBGb250V2lkdGhWYXJpYW50
ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRl
eHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmluZywgQ3JlYXRpb25EYXRhKiA9IG51bGxw
dHIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggYWEzMTMyYmFiZjcwMjNjZmE1ZjM4MDhjMjM4ZTlh
ZmQzZGZiZmI4NC4uZDAyYTQ2YjNhM2FmOGNkNzJkODgwOTJiOTM4ZTlmMjI3MTBlYzI3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMzUsNyArMzUs
NyBAQAogCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dQYXR0ZXJuKiBDR1BhdHRlcm5S
ZWY7Ci10eXBlZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9ybVBhdHRlcm5QdHI7Cit0eXBlZGVmIFJl
dGFpblB0cjxDR1BhdHRlcm5SZWY+IFBsYXRmb3JtUGF0dGVyblB0cjsKICNlbGlmIFVTRShESVJF
Q1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNoOwogdHlwZWRlZiBJRDJEMUJpdG1hcEJy
dXNoKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhODIxNWNjMDVm
ZjIyZDEyOTBmMTcwODAxOTA1NDIxYTAxOTcwOTVhLi43NjdhOTZiYTFlYjdlYjFiZTQwMjdiZjMx
ODBiNzUwZmFkZTUzYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTY5LDEwICs2OSwxMSBAQAog
I2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogLy8gU29mdC1saW5raW5nIGhlYWRl
cnMgbXVzdCBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIHRoZXkgI2RlZmluZSBmdW5jdGlvbnMsIGNv
bnN0YW50cywgZXRjLgogI2luY2x1ZGUgIkFWRm91bmRhdGlvbkNGU29mdExpbmtpbmcuaCIKQEAg
LTE1Nyw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJs
ZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3QgeyByZXR1cm4gbV9sZWdpYmxlT3V0cHV0
LmdldCgpOyB9CiAgICAgQVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWYgc2FmZU1lZGlhU2VsZWN0
aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsKICNlbmRpZgotICAgIGlubGluZSBkaXNw
YXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlv
blF1ZXVlOyB9CisgICAgaW5saW5lIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCk7IH0KIAogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+IHRh
a2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYpOwpAQCAtMTk1LDcgKzE5Niw3IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmPiBtX3NlbGVj
dGlvbkdyb3VwOwogI2VuZGlmCiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fbm90aWZpY2F0aW9u
UXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9ub3RpZmljYXRpb25R
dWV1ZTsKIAogICAgIG11dGFibGUgUmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV9jYVZpZGVvTGF5
ZXI7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV92aWRlb0xheWVyV3JhcHBlcjsKQEAg
LTI0NCw3ICsyNDUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkK
IH0KICNlbmRpZgogCi1zdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkK
K3N0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpCiB7
CiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtleU5hbWVzW10gPSB7CiAgICAgICAgIEFW
Q0ZBc3NldFByb3BlcnR5RHVyYXRpb24sCkBAIC0yNTgsMTMgKzI1OSwxMyBAQCBzdGF0aWMgQ0ZB
cnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKICNlbmRpZgogICAgIH07CiAgICAgCi0g
ICAgcmV0dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9m
KGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilrZXlO
YW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpKTsKIH0KIAogc3RhdGljIENGQXJyYXlSZWYgbWV0YWRhdGFLZXlOYW1lcygp
CiB7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYga2V5cyA9IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMo
KTsKLSAgICByZXR1cm4ga2V5czsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGQXJyYXlSZWY+PiBrZXlzID0gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpOworICAgIHJldHVy
biBrZXlzLmdldCgpLmdldCgpOwogfQogCiAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIGlm
IEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRlZCB0aGlzIGtleS4KQEAgLTEzNzUsNyAr
MTM3Niw3IEBAIEFWRldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YqIG93bmVyKQogICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09
IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBw
ZXI6OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAKLSAgICBtX25vdGlmaWNhdGlvblF1ZXVlID0g
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5u
b3RpZmljYXRpb25RdWV1ZSIsIDApOworICAgIG1fbm90aWZpY2F0aW9uUXVldWUgPSBhZG9wdE9T
T2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Yubm90aWZpY2F0aW9uUXVldWUiLCAwKSk7CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9M
T0FERVJfREVMRUdBVEUpCiAgICAgbV9yZXNvdXJjZUxvYWRlckNhbGxiYWNrcy52ZXJzaW9uID0g
a0FWQ0ZBc3NldFJlc291cmNlTG9hZGVyX0NhbGxiYWNrc1ZlcnNpb25fMTsKQEAgLTEzOTUsOSAr
MTM5Niw2IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVyKCkKICAgICBkZXN0cm95VmlkZW9MYXll
cigpOwogICAgIGRlc3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogCi0gICAgaWYgKG1fbm90aWZpY2F0
aW9uUXVldWUpCi0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9ub3RpZmljYXRpb25RdWV1ZSk7
Ci0KICAgICBpZiAoYXZBc3NldCgpKSB7CiAgICAgICAgIEFWQ0ZBc3NldENhbmNlbExvYWRpbmco
YXZBc3NldCgpKTsKICAgICAgICAgbV9hdkFzc2V0ID0gMDsKQEAgLTE1MzAsNyArMTUyOCw3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wg
aW5oZXJpdFVSSSkKIAogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCks
IEFWQ0ZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgY2ZSZXN0cmljdGlvbnMuZ2V0
KCkpOwogCi0gICAgbV9hdkFzc2V0ID0gYWRvcHRDRihBVkNGVVJMQXNzZXRDcmVhdGVXaXRoVVJM
QW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIG9wdGlvbnNSZWYu
Z2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKKyAgICBtX2F2QXNzZXQgPSBhZG9wdENGKEFW
Q0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVy
bFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZS5nZXQoKSkp
OwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQogICAgIEFTU0VSVChj
YWxsYmFja0NvbnRleHQoKSk7CkBAIC0xNTY3LDI0ICsxNTY1LDI0IEBAIHZvaWQgQVZGV3JhcHBl
cjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkqIGQzZERldmljZSkKICNlbmRpZgogCiAg
ICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gY3JlYXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBh
biBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3Byb2JsZW0vOTg3NzczMD4uCi0gICAgQVZDRlBs
YXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRp
b25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVmLmdldCgp
LCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxheWVyID0gYWRvcHRDRihwbGF5ZXJS
ZWYpOworICAgIGF1dG8gcGxheWVyUmVmID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlV2l0aFBs
YXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBv
cHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpKSk7CisgICAgbV9hdlBs
YXllciA9IHBsYXllclJlZjsKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05f
R1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCi0gICAg
QVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxlZChwbGF5ZXJSZWYsIEZBTFNF
KTsKKyAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKHBsYXllclJl
Zi5nZXQoKSwgRkFMU0UpOwogI2VuZGlmCiAKICAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZDRlBs
YXllclNldERpcmVjdDNERGV2aWNlUHRyKCkpCi0gICAgICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3Qz
RERldmljZVB0cigpKHBsYXllclJlZiwgbV9kM2REZXZpY2UuZ2V0KCkpOworICAgICAgICBBVkNG
UGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5ZXJSZWYuZ2V0KCksIG1fZDNkRGV2aWNl
LmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZp
Y2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIAotICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
biwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllclJhdGVDaGFu
Z2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJSZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKIAogICAgIC8vIEFkZCBhIHRpbWUgb2JzZXJ2
ZXIsIGFzayB0byBiZSBjYWxsZWQgaW5mcmVxdWVudGx5IGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5
IHdhbnQgcGVyaW9kaWMgY2FsbGJhY2tzIGJ1dAogICAgIC8vIG91ciBvYnNlcnZlciB3aWxsIGFs
c28gYmUgY2FsbGVkIHdoZW5ldmVyIGEgc2VlayBoYXBwZW5zLgogICAgIGNvbnN0IGRvdWJsZSB2
ZXJ5TG9uZ0ludGVydmFsID0gNjAqNjAqNjAqMjQqMzA7Ci0gICAgbV90aW1lT2JzZXJ2ZXIgPSBh
ZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsKHBs
YXllclJlZiwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFsLCAxMCksIG1fbm90aWZpY2F0aW9u
UXVldWUsICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrLCBjYWxsYmFja0NvbnRleHQoKSkp
OworICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNU
aW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYuZ2V0KCksIENNVGltZU1ha2UodmVyeUxv
bmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpLCAmcGVyaW9kaWNUaW1l
T2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpKTsKIH0KIAogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKQEAgLTE2MDcsMjIgKzE2MDUsMjIgQEAgdm9pZCBBVkZXcmFw
cGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ3JlYXRl
IHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBiZWdpbiBsb2FkaW5nIG1lZGlhIGRhdGEuCi0gICAgQVZD
RlBsYXllckl0ZW1SZWYgaXRlbVJlZiA9IEFWQ0ZQbGF5ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtD
RkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0gICAg
bV9hdlBsYXllckl0ZW0gPSBhZG9wdENGKGl0ZW1SZWYpOworICAgIGF1dG8gaXRlbVJlZiA9IGFk
b3B0RihBVkNGUGxheWVySXRlbUNyZWF0ZVdpdGhBc3NldChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBh
dkFzc2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKKyAgICBtX2F2UGxheWVySXRl
bSA9IGl0ZW1SZWY7CiAKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIgPSBDRk5v
dGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7CiAgICAgQVNTRVJUKGNlbnRlcik7CiAK
LSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRp
bWVOb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
RGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVy
KGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxh
eWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9u
U3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1S
ZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
LSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJh
bmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVt
UmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7
Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25T
aXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlv
biwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxs
YmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5
YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRp
b25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0
aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0
aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90
aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50
ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0
ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3Vz
cGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNl
bnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNh
bGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1S
ZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVN0YXR1c0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdl
c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRl
ckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxi
YWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBp
dGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVz
ZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmlj
YXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZp
Y2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwg
aXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZO
b3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBu
b3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmlj
YXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVs
aXZlckltbWVkaWF0ZWx5KTsKICAgICAvLyBGSVhNRTogQXJlIHRoZXJlIG90aGVyIGxlZ2libGUg
b3V0cHV0IHRoaW5ncyB3ZSBuZWVkIHRvIHJlZ2lzdGVyIGZvcj8gYXNzZXQgYW5kIGhhc0VuYWJs
ZWRBdWRpbyBhcmUgbm90IGV4cG9zZWQgYnkgQVZDRgogCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKQEAgLTE3NTQsMTUgKzE3
NTIsMTQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIHsKICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCVwKSIsIHRoaXMpOwogCi0gICAg
c3RhdGljIENGQXJyYXlSZWYgcHJvcGVydHlLZXlOYW1lOwotICAgIGlmICghcHJvcGVydHlLZXlO
YW1lKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrZXlOYW1lc1tdID0geyAK
KyAgICBzdGF0aWMgYXV0byBwcm9wZXJ0eUtleU5hbWUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga2V5TmFtZXNbXSA9IHsKICAgICAg
ICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUKICAgICAgICAgfTsKLSAgICAgICAgcHJv
cGVydHlLZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBz
aXplb2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlOYW1lcykgLyBzaXplb2Yoa2V5TmFtZXNb
MF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgfSgpKTsKIAotICAgIEFWQ0ZBc3Nl
dExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0
eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0
KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMo
YXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCkuZ2V0KCksIGxvYWRQbGF5YWJsZUNvbXBs
ZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOwogfQogCiB2b2lkIEFWRldyYXBwZXI6
OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRl
eHQpCkBAIC0yMDAzLDcgKzIwMDAsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRl
b0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGxheWVyIHdpbGwgZ2V0IGhv
b2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKCkuCi0g
ICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXllckxheWVyQ3JlYXRlV2l0aEFW
Q0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIoKSwgbV9ub3RpZmljYXRpb25R
dWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJMYXllckNy
ZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVyKCksIG1fbm90
aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjcmVh
dGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlzLCB2aWRlb0xheWVyKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1MjA5OGE5ZGNiNjU1ZTEzNjkuLmM2NzQ5
ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYpIENGX1JFVFVSTlNfUkVUQUlO
RUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29s
b3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
VEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGlj
eTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JL
ZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogewotICAgIHJldHVybiBhZG9wdENGKFdl
YkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUNH
Q29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTg5LDcgKzg5LDcgQEAg
Q29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7
CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
K3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xv
clNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIENHQ29s
b3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGF1dG8gW3IsIGcsIGIs
IGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwg
ZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zs
b2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9y
U3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYgKzEyNiwxNiBAQCBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmIChhdXRvIHNyZ2IgPSBjb2xv
ci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpS
R0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JBIHsg
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTogewotICAgICAgICAgICAgc3RhdGljIENH
Q29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IHRyYW5zcGFyZW50Q0dDb2xvciA9IGNy
ZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xv
ci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhY2tlZENvbG9yOjpSR0JB
IHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVm
IGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKLSAgICAgICAgICAgIHJldHVybiBi
bGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVhdGVDR0NvbG9yKGNvbG9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCkuZ2V0KCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0ZSB9LnZhbHVlOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xv
cik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOworICAgICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gd2hpdGVDR0NvbG9yID0gY3Jl
YXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yLmdldCgp
LmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAppbmRleCBhM2ZiODlk
NTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVhLi4yMGUxY2NhYmNkOGZlNzAzOWQ0NWNm
OTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENGU3RyaW5nUmVmJiBjb2xvclNwYWNlTmFt
ZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIG5hbWVkQ29sb3JTcGFjZSgp
CiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPj4gY29sb3JTcGFjZTsKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpOwotICAgICAgICBBU1NFUlQoY29sb3JT
cGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpKTsKKyAgICAgICAgQVNT
RVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwotICAgIHJldHVybiBjb2xvclNwYWNlOwor
ICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgpOwogfQogCiBDR0NvbG9yU3BhY2VSZWYg
c1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDFiYTllYmVjMmRkMmMw
ZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1ZWNhNjc0NmExOWE4MTZiZGNjOGExMTZj
OWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJU
b0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsK
IAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9IGFkb3B0Q0Yo
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNU
TSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5j
cmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBh
dHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0g
PSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJl
dGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5m
aWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJUb0Jhc2VDVE0pKTsKKyAgICBh
dXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaApp
bmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRiOTgwMTEwN2RmMjkyLi4yNzE1OTI0ZDE0
YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQxLDggQEAgdHlwZWRlZiB1bnNpZ25lZCBH
cmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCwgR3JhcGhpY3ND
b250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAgIDogbV9jZ0NvbnRleHQoY2dDb250ZXh0
KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCisgICAg
ICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRleHQpKQogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1fc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93
cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cu
Y3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1NTdlMTcxZjlhMTgzMzBkMjQuLmExOWEy
MTFhODcxNzk4NWQ2ZDRjOWY5NDEzODhhYzFiMTQ2MDA4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAtNDUsMjMgKzQ1LDIzIEBAIHN0
YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90IGNv
dW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIENHQ29udGV4dFJlZiBjcmVhdGVT
Y3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlU2Ny
YXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9
IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YUNvbnN1bWVyUmVm
PiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGUoMCwgJmNhbGxiYWNrcykp
OwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQREZDb250ZXh0Q3JlYXRlKGNvbnN1bWVy
LmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1l
ckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR1BE
RkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAsIDApKTsKIAogICAgIENHRmxvYXQgYmxh
Y2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4
dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQsIGJsYWNrKTsK
KyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4dC5nZXQoKSwgYmxhY2spOworICAgIENH
Q29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0KCksIGJsYWNrKTsKIAogICAgIHJldHVy
biBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENHQ29udGV4dFJlZiBzY3JhdGNoQ29udGV4
dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY3JlYXRlU2NyYXRjaENv
bnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQgPSBjcmVhdGVTY3JhdGNoQ29udGV4dCgp
OworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgpOwogfQogCiBQYXRoIFBhdGg6OnBvbHln
b25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludD4mIHBvaW50cykKQEAgLTIx
MCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVu
Y3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCoKICAgICB9CiB9CiAKLXN0YXRp
YyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMoQ0dQYXRoUmVmIG9y
aWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gY29weUNHUGF0
aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2luYWxQYXRoKQogewotICAgIENHTXV0YWJs
ZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1BhdGhBcHBseShv
cmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24pOwot
ICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAgICBhdXRvIHBhdGggPSBhZG9wdENGKENH
UGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoQXBwbHkob3JpZ2luYWxQYXRoLCBwYXRo
LmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGllckZ1bmN0aW9uKTsKKyAgICBDR1BhdGhD
bG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKQEAgLTIyNyw3
ICsyMjcsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQgJnBvaW50LCBX
aW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDR1Bh
dGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9yIG5vbi1jbG9zZWQgcGF0aHMsIGFzIGEg
d29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRoZSBwYXRoIGZpcnN0LiAgUmFkYXIgNDc1
ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8gdXNlCi0gICAgYXV0byBwYXRoID0gYWRv
cHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBsYXRmb3JtUGF0aCgpKSk7CisgICAgYXV0
byBwYXRoID0gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhwbGF0Zm9ybVBhdGgoKSk7CiAgICAg
Ym9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0KCksIDAsIHBvaW50LCBydWxl
ID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZhbHNlKTsKICAgICByZXR1cm4gcmV0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5j
cHAKaW5kZXggM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4M2ZkZWIxZGNjOTNjZjljMy4uNzZlYTlh
ZjRkNDIzMjQ5NDFhODk3ZmFhM2U1ZGZkYWIyM2RmODEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICBjYWxs
T25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5m
bykpXSB7IH0pOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAorUmV0
YWluUHRyPENHUGF0dGVyblJlZj4gUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAogewogICAgIEZsb2F0
UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKIApAQCAtNjgsNyAr
NjgsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGlu
ZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAg
ICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBw
aXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVhdFgoKSAmJiByZXBlYXRZKCkpCi0gICAgICAgIHJl
dHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRl
cm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICBy
ZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0
KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpKTsK
IAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0
ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28K
ICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTgyLDcgKzgyLDcg
QEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0ltYWdlUmVmIGltYWdlID0gcGxhdGZv
cm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVy
bkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
IH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywg
VFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENHUGF0dGVybkNy
ZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NH
UGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXgg
NmYzMjJjMzVhOWY5OTE1NmY5MTU2OTliNjJhNmU2NTA1Y2VhMWVjMi4uZjc3ZjExYjM4N2YwMzI2
ZTRlYmU5ZjhkNzNlNDczODNmNGFjNTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwCkBAIC0zNSwxOCArMzUsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKENURm9udFJlZiBmb250LCBm
bG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9u
dE9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwg
VGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRlcmluZ01vZGUsIENyZWF0aW9uRGF0YSogY3JlYXRp
b25EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShSZXRhaW5QdHI8Q1RG
b250UmVmPiYmIGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlh
bnQgd2lkdGhWYXJpYW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3Jl
YXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCiAgICAgOiBGb250UGxhdGZvcm1EYXRhKHNpemUsIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQs
IHRleHRSZW5kZXJpbmdNb2RlLCBjcmVhdGlvbkRhdGEpCiB7CiAgICAgQVNTRVJUX0FSRyhmb250
LCBmb250KTsKICNpZiBQTEFURk9STShXSU4pCi0gICAgbV9jdEZvbnQgPSBmb250OworICAgIG1f
Y3RGb250ID0gV1RGTW92ZShmb250OykKICNlbHNlCi0gICAgbV9mb250ID0gZm9udDsKKyAgICBt
X2ZvbnQgPSBXVEZNb3ZlKGZvbnQpOwogI2VuZGlmCi0gICAgbV9pc0NvbG9yQml0bWFwRm9udCA9
IENURm9udEdldFN5bWJvbGljVHJhaXRzKGZvbnQpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7
Ci0gICAgbV9pc1N5c3RlbUZvbnQgPSBXZWJDb3JlOjppc1N5c3RlbUZvbnQoZm9udCk7Ci0gICAg
YXV0byB2YXJpYXRpb25zID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENU
Rm9udENvcHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFZhcmlhdGlvbkF0dHJpYnV0ZSkpKTsKKyAg
ICBtX2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMoZm9udC5nZXQo
KSkgJiBrQ1RGb250Q29sb3JHbHlwaHNUcmFpdDsKKyAgICBtX2lzU3lzdGVtRm9udCA9IFdlYkNv
cmU6OmlzU3lzdGVtRm9udChmb250LmdldCgpKTsKKyAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9w
dENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250
LmdldCgpLCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOwogICAgIG1faGFzVmFyaWF0aW9u
cyA9IHZhcmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQodmFyaWF0aW9ucy5nZXQoKSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5k
ZXggNzdlMWMzZjE2MmYwNjYzZmI4NTNmYTIyNWFjMjQ4YjQ1NmU0MWFmNC4uZTNmMDkyNzAzNDhl
N2E1YWVmNzI2NmViNDcyZGRiYWU3M2JjMzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1t
CkBAIC0yMTEsMTQgKzIxMSwxMyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoQ0dJbWFnZVJlZgogICAgIENWUGl4
ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKICAgICB2b2lkKiBkYXRhID0g
Q1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzKHJnYkJ1ZmZlcik7CiAgICAgYXV0byByZXRhaW5l
ZFJHQkJ1ZmZlciA9IGFkb3B0Q0YocmdiQnVmZmVyKTsKLSAgICBhdXRvIGNvbnRleHQgPSBDR0Jp
dG1hcENvbnRleHRDcmVhdGUoZGF0YSwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHJnYkJ1ZmZlciksIHNSR0JDb2xv
clNwYWNlUmVmKCksIChDR0JpdG1hcEluZm8pIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KTsK
KyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0
Qnl0ZXNQZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5m
bykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQ
aXhlbEJ1ZmZlcjogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlIHJldHVybmVkIG51bGxwdHIiKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byByZXRhaW5lZENvbnRleHQg
PSBhZG9wdENGKGNvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1Jl
Y3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBpbWFn
ZSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKICAgICBD
VlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKIAogICAgIHJldHVy
biBjb252ZXJ0UGl4ZWxCdWZmZXIocmdiQnVmZmVyLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQppbmRleCA0NTExMDdiYmI0NjViZGUzOTU0NDlkYzA3OGQ4
MDVhOGUxNjRmOGE0Li4wMzIwOTY5ODhmY2RlMjE3MTc1OTMzNTAwMTM5MGViM2ZiYjk5YTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0xNDIsMTMgKzE0
MiwxMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVu
c0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBzdGF0aWMgY29uc3Qgdm9p
ZCogb3B0aW9uS2V5c1tdID0geyBrQ1RUeXBlc2V0dGVyT3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2
ZWwgfTsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZs
dHJGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9p
ZCogcnRsT3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNob3J0VHlwZSwgJnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07
Ci0gICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0
aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0Rp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
LSAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRp
b25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+
IGx0clR5cGVzZXR0ZXJPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVO
R1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gcnRsVHlwZXNldHRlck9wdGlvbnMg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25L
ZXlzLCBydGxPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZD
b3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAogICAgICAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwg
c3RyaW5nQXR0cmlidXRlcy5nZXQoKSB9OwogICAgICAgICAvLyBGSVhNRTogU29tZSBTREtzIGNv
bXBsYWluIHRoYXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgYmVsb3cgY2Fubm90IGJlIG51bGwuCiAg
ICAgICAgIElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOCi0gICAgICAgIFJldGFpblB0
cjxDVFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBhZG9wdENGKENUVHlwZXNldHRlckNyZWF0
ZVdpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRl
cywgMCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBl
c2V0dGVyT3B0aW9ucykpOworICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBl
c2V0dGVyID0gYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoVW5pQ2hhclByb3ZpZGVyQW5k
T3B0aW9ucygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvLCBtX3J1bi5sdHIo
KSA/IGx0clR5cGVzZXR0ZXJPcHRpb25zLmdldCgpLmdldCgpIDogcnRsVHlwZXNldHRlck9wdGlv
bnMuZ2V0KCkuZ2V0KCkpKTsKICAgICAgICAgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5E
CiAKICAgICAgICAgaWYgKCF0eXBlc2V0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3Bw
CmluZGV4IDc0OGVkYjk0MDA5ZmQyOGE4OTI1ZmRhZjI0ZjNiMGUyNTliYTZkMTguLmZhYWI2ZTE0
ZjAyN2E0NDRiZDZkZTI3MTJlNjY5NTRhNzY1NWRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRm9u
dDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgRm9udE8KIAogICAg
IGlmICghZW5hYmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0gMDsKLSAg
ICAgICAgc3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk51bWJlclJlZj4+IHplcm9LZXJu
aW5nVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlckZsb2F0VHlwZSwgJnplcm8pKTsKICAgICAgICAga2V5c1tjb3VudF0gPSBrQ1RLZXJu
QXR0cmlidXRlTmFtZTsKLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWU7
CisgICAgICAgIHZhbHVlc1tjb3VudF0gPSB6ZXJvS2VybmluZ1ZhbHVlLmdldCgpLmdldCgpOwog
ICAgICAgICArK2NvdW50OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXgg
Y2VkYjAyZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOC4uYjYyMDE1ODM4MWI0YzBh
YjQ3MjcyYmE0MTc2MWM1NTdkMWViMDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBA
IC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENHQ29udGV4
dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCitzdGF0aWMgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0Fs
cGhhKQogewogICAgIEhCSVRNQVAgYml0bWFwID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oR2V0Q3Vy
cmVudE9iamVjdChoZGMsIE9CSl9CSVRNQVApKTsKIApAQCAtNTUsMTIgKzU1LDExIEBAIHN0YXRp
YyBDR0NvbnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCAoaGFzQWxwaGEgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4
ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsRGF0YS5i
eXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVy
KCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwg
OCwgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcElu
Zm8pKTsKIAogICAgIC8vIEZsaXAgY29vcmRzCi0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNv
bnRleHQsIDAsIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxl
Q1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5n
ZXQoKSwgMCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVD
VE0oY29udGV4dC5nZXQoKSwgMSwgLTEpOwogICAgIAogICAgIC8vIFB1dCB0aGUgSERDIEluIGFk
dmFuY2VkIG1vZGUgc28gaXQgd2lsbCBob25vciBhZmZpbmUgdHJhbnNmb3Jtcy4KICAgICBTZXRH
cmFwaGljc01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
ZXZpY2UuY3BwCmluZGV4IDZhMTYwM2QyMWI2OGVjNWJlMjhmZDA2OTU5N2NkZDIyY2FmMjNkNmMu
LjhlNWIzZTQyMjE0NzdlOTIxZDc4MjI1MTk0NTI2MmY5ZTBhOGU4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgTUdEZXZpY2VDbGFz
cyBkZXZpY2VDbGFzcygpCiBTdHJpbmcgZGV2aWNlTmFtZSgpCiB7CiAjaWYgVEFSR0VUX09TX0lP
UwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZXZpY2VOYW1lOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBkZXZpY2VOYW1lOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsK
LSAgICAgICAgZGV2aWNlTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihNR0NvcHlBbnN3
ZXIoa01HUURldmljZU5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZGV2aWNlTmFtZS5nZXQoKSA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNl
TmFtZSwgbnVsbHB0cikpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZGV2aWNlTmFtZTsKKyAgICBy
ZXR1cm4gZGV2aWNlTmFtZS5nZXQoKS5nZXQoKTsKICNlbHNlCiAgICAgcmV0dXJuICJpUGhvbmUi
X3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFn
SW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
CmluZGV4IGM2NGE0YmNhMWFkOGU3YjcyYWYyMjYwM2ZiMWNjMDFmOTc2OWY2MjAuLjczNTkzM2Yx
NzIwODViOWU2NjkzYWQ0NGIyYWYxNjBiMzQwYzRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgZGVsZXRl
RHJhZ0ltYWdlKERyYWdJbWFnZVJlZikKIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lz
dGVtRm9udChDR0Zsb2F0IHNpemUpCiB7CiAgICAgVUlGb250ICpmb250ID0gW1BBTDo6Z2V0VUlG
b250Q2xhc3MoKSBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOwotICAgIHJldHVybiBGb250Q2FzY2Fk
ZShGb250UGxhdGZvcm1EYXRhKENURm9udENyZWF0ZVdpdGhOYW1lKChDRlN0cmluZ1JlZilmb250
LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSwgZm9udC5wb2ludFNpemUpKTsKKyAgICBy
ZXR1cm4gRm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YShhZG9wdENGKENURm9udENyZWF0ZVdp
dGhOYW1lKChDRlN0cmluZ1JlZilmb250LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSks
IGZvbnQucG9pbnRTaXplKSk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKEVsZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
VGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIEZvbnRSZW5kZXJpbmdNb2RlLCBmbG9h
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bQppbmRleCA5MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJlYzQyMWEzNDJkMzZiZjQxLi5hNjA4OGY3
ZjZlODBkYWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0xMjQsMTggKzEyNCwzOCBA
QCB0eXBlZGVmIGVudW0gewogICAgIElnbm9yZUF1dG9yZWxlYXNlUG9vbAogfSBBdXRvcmVsZWFz
ZVBvb2xPcGVyYXRpb247CiAKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZTsKLXN0YXRpYyBDRk11dGFibGVBcnJheVJlZiBXZWJUaHJlYWRSZWxlYXNlT2Jq
QXJyYXk7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4mIHdlYlRocmVhZFJl
bGVhc2VTb3VyY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZS
dW5Mb29wU291cmNlUmVmPj4gd2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKKyAgICByZXR1cm4gd2Vi
VGhyZWFkUmVsZWFzZVNvdXJjZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVBcnJh
eVJlZj4mIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4+IHdlYlRocmVhZFJlbGVhc2VPYmpB
cnJheTsKKyAgICByZXR1cm4gd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworfQogCiBzdGF0aWMg
TG9jayBkZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0
aW9uOwotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7
CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgZGVsZWdhdGVTb3VyY2Uo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNl
UmVmPj4gZGVsZWdhdGVTb3VyY2U7CisgICAgcmV0dXJuIGRlbGVnYXRlU291cmNlOworfQorCiBz
dGF0aWMgQk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcK
IHN0YXRpYyBCT09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CiAjZW5kaWYKIAotc3RhdGljIENG
UnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworc3RhdGlj
IFJldGFpblB0cjxDRlJ1bkxvb3BPYnNlcnZlclJlZj4mIG1haW5SdW5Mb29wQXV0b1VubG9ja09i
c2VydmVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9v
cE9ic2VydmVyUmVmPj4gbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7CisgICAgcmV0dXJu
IG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworfQorCiBzdGF0aWMgQk9PTCBtYWluVGhy
ZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2s7CiAKIHN0YXRpYyBMb2NrIHN0YXJ0dXBMb2NrOwpAQCAt
MjM0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRy
PE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUKGRlbGVnYXRlU291cmNlKTsKKyAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UoKSk7
CiAgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAogICAgIGRlbGVnYXRlSW52b2NhdGlvbigpID0g
V1RGTW92ZShpbnZvY2F0aW9uKTsKQEAgLTI1NSw3ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCBTZW5k
RGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAg
ICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29t
bW9uVk0oKSk7CiAgICAgICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIAotICAgICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoZGVsZWdhdGVTb3VyY2UpOworICAgICAgICBDRlJ1bkxvb3BTb3VyY2VT
aWduYWwoZGVsZWdhdGVTb3VyY2UoKS5nZXQoKSk7CiAgICAgICAgIENGUnVuTG9vcFdha2VVcChD
RlJ1bkxvb3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7
CkBAIC0yOTYsNyArMzE2LDcgQEAgdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQodm9pZChe
ZGVsZWdhdGVCbG9jaykoKSkKIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikK
IHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSk7CisgICAgQVNTRVJUKHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKSk7
CiAKICNpZiBMT0dfUkVMRUFTRVMKICAgICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbbWFpbiB0aHJl
YWRdOiAlQCIsIG9iaik7CkBAIC0zMDQsMTAgKzMyNCwxMCBAQCB2b2lkIFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZShpZCBvYmopCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYlRocmVh
ZFJlbGVhc2VMb2NrKTsKIAotICAgIGlmIChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPT0gbmls
KQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKTsKLSAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5LCBvYmopOwotICAgIENGUnVuTG9vcFNv
dXJjZVNpZ25hbChXZWJUaHJlYWRSZWxlYXNlU291cmNlKTsKKyAgICBpZiAod2ViVGhyZWFkUmVs
ZWFzZU9iakFycmF5KCkgPT0gbmlsKQorICAgICAgICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXko
KSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVs
dCwgMCwgbnVsbHB0cikpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZSh3ZWJUaHJlYWRSZWxlYXNl
T2JqQXJyYXkoKS5nZXQoKSwgb2JqKTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwod2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxvb3BXYWtlVXAod2ViVGhyZWFk
UnVuTG9vcCk7CiB9CiAKQEAgLTQwNCw5ICs0MjQsOSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJU
aHJlYWRSZWxlYXNlU291cmNlKHZvaWQqKQogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJl
Zj4gb2JqZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhy
ZWFkUmVsZWFzZUxvY2spOwotICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJl
bGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsK
LSAgICAgICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFy
cmF5KTsKKyAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSkpIHsKKyAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVh
dGVNdXRhYmxlQ29weShudWxscHRyLCAwLCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQo
KSkpOworICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNl
T2JqQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3Myw3ICs0OTMsNyBA
QCBzdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYs
IENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKgogICAgICAgICByZXR1cm47CiAKICAgICBtYWluVGhy
ZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2sgPSBOTzsKLSAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZl
cihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIAogICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIH0KQEAg
LTQ4NCw3ICs1MDQsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCkKIAog
ICAgIGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBtYWluVGhyZWFkSGFzUGVu
ZGluZ0F1dG9VbmxvY2sgPSBZRVM7Ci0gICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7ICAgIAorICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxv
b3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogICAgIH0KQEAgLTU1NiwxMiAr
NTc2LDEyIEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5M
b29wRW5hYmxlTmVzdGVkRnJvbU1haW5UaHJlYWQoKQogewotICAgIENGUnVuTG9vcFJlbW92ZU9i
c2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2
ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIo
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdl
dCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiBzdGF0aWMgdm9pZCBfV2ViUnVuTG9v
cERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsgCisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQo
KQpAQCAtNjQyLDggKzY2Miw4IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAg
ICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9j
a09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgQ0ZSdW5M
b29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKLSAgICBXZWJUaHJlYWRSZWxlYXNlU291
cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNvdXJjZUNv
bnRleHQpOwotICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCBXZWJUaHJl
YWRSZWxlYXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIHdlYlRocmVhZFJl
bGVhc2VTb3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0x
LCAmUmVsZWFzZVNvdXJjZUNvbnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2Uod2ViVGhy
ZWFkUnVuTG9vcCwgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wRGVm
YXVsdE1vZGUpOwogCiAgICAgcGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQgPSBfQ0ZS
dW5Mb29wU2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQoWUVTKTsKIApAQCAtNjc5
LDE2ICs2OTksMTYgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogCiAgICAgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFu
ZGxlRGVsZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29wU291cmNl
Q3JlYXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOworICAgIGRlbGVnYXRl
U291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVs
ZWdhdGVTb3VyY2VDb250ZXh0KSk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRl
IGNhbGxiYWNrcyB3aGlsZSBzY3JvbGxpbmcsIGJ1dCB0aGVyZSBtaWdodCBiZQogICAgIC8vIG9u
ZSBvdXRzdGFuZGluZyB3aGVuIHdlIHN0YXJ0LiAgQWRkIHRoZSBzb3VyY2UgZm9yIGFsbCBjb21t
b24gcnVuIGxvb3AKICAgICAvLyBtb2RlcyBzbyB3ZSBkb24ndCBibG9jayB0aGUgd2ViIHRocmVh
ZCB3aGlsZSBzY3JvbGxpbmcuCi0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVn
YXRlU291cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFNvdXJj
ZShydW5Mb29wLCBkZWxlZ2F0ZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OwogCiAgICAgc0FzeW5jRGVsZWdhdGVzKCkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKIAotICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyID0gQ0ZSdW5M
b29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZS
dW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxwdHIp
OworICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkgPSBhZG9wdENGKENGUnVuTG9v
cE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVu
TG9vcEV4aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRyKSk7
CiAKICAgICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAgICBwdGhyZWFkX2F0dHJfaW5pdCgmdGF0
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkUnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHAKaW5kZXggZWZhODQ2NDViYTM5OGE0YmUxYmNkZTJkZWMzZDAxMDhhNDM5NzU1
My4uY2E5OGE4ZmNiNDk3NjI1MWEyY2MxOWJkY2YyNzFmN2Y2NDk2ZTMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCkBA
IC0xMTIsMTQgKzExMiwxOSBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgV1RGOjpWZWN0b3I8V2Vi
VGhyZWFkQmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwogCiBzdGF0aWMgTG9jayBydW5RdWV1ZU11
dGV4Owotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBydW5Tb3VyY2U7CiBzdGF0aWMgV2ViVGhy
ZWFkUnVuUXVldWUqIHJ1blF1ZXVlOwogCitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJj
ZVJlZj4mIHJ1blNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBydW5Tb3VyY2U7CisgICAgcmV0dXJuIHJ1blNvdXJjZTsK
K30KKwogc3RhdGljIHZvaWQgSGFuZGxlUnVuU291cmNlKHZvaWQgKmluZm8pCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGluZm8pOwogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAg
QVNTRVJUKHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsKICAgICBBU1NFUlQo
cnVuUXVldWUpOwogCiAgICAgV2ViVGhyZWFkUnVuUXVldWUgcXVldWVDb3B5OwpAQCAtMTQwLDcg
KzE0NSw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwg
Ym9vbCBzeW5jaHJvbm91cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChy
dW5Tb3VyY2UpOworICAgIEFTU0VSVChydW5Tb3VyY2UoKSk7CiAgICAgQVNTRVJUKHJ1blF1ZXVl
KTsKIAogICAgIFdlYlRocmVhZEJsb2NrU3RhdGUqIHN0YXRlID0gMDsKQEAgLTE1Miw3ICsxNTcs
NyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9jaykodm9pZCksIGJvb2wg
c3luY2hyb25vdXMpCiAgICAgICAgIHJ1blF1ZXVlLT5hcHBlbmQoV2ViVGhyZWFkQmxvY2soYmxv
Y2ssIHN0YXRlKSk7CiAgICAgfQogCi0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJj
ZSk7CisgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSgpLmdldCgpKTsKICAgICBD
RlJ1bkxvb3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKIAogICAgIGlmIChzeW5jaHJvbm91
cykgewpAQCAtMTY5LDE1ICsxNzQsMTUgQEAgdm9pZCBXZWJUaHJlYWRSdW4odm9pZCAoXmJsb2Nr
KSh2b2lkKSkKIHZvaWQgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCkKIHsKICAgICBBU1NFUlQoIXJ1
blF1ZXVlKTsKLSAgICBBU1NFUlQoIXJ1blNvdXJjZSk7CisgICAgQVNTRVJUKCFydW5Tb3VyY2Uo
KSk7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25j
ZSgmcHJlZCwgXnsKICAgICAgICAgcnVuUXVldWUgPSBuZXcgV2ViVGhyZWFkUnVuUXVldWU7CiAK
LSAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250ZXh0ID0gezAsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEhhbmRsZVJ1blNv
dXJjZX07Ci0gICAgICAgIHJ1blNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAt
MSwgJnJ1blNvdXJjZUNvbnRleHQpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoV2ViVGhy
ZWFkUnVuTG9vcCgpLCBydW5Tb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAg
IENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgSGFuZGxlUnVuU291cmNlIH07CisgICAgICAgIHJ1blNvdXJjZSgpID0gYWRvcHRDRihD
RlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZydW5Tb3VyY2VDb250ZXh0KSk7Cisg
ICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29wKCksIHJ1blNvdXJjZSgp
LmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggOGYzN2Rk
NzFmMDc3NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0NjZiYS4uYTQ3ZTM0M2Y0ZGNhMDM2ZmVhZWZk
M2MxMGQ1ZjI0MGUzNGI5ZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Qb3dlck9ic2VydmVyTWFjLmNwcApAQCAtMzUsNyArMzUsNyBAQCBQb3dlck9ic2VydmVyOjpQ
b3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCiAgICAg
LCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxwdHIp
CiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCi0gICAgLCBtX2Rpc3BhdGNoUXVldWUoZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkK
KyAgICAsIG1fZGlzcGF0Y2hRdWV1ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiY29tLmFwcGxlLldlYktpdC5Qb3dlck9ic2VydmVyIiwgMCkpKQogewogICAgIG1fcG93ZXJD
b25uZWN0aW9uID0gSU9SZWdpc3RlckZvclN5c3RlbVBvd2VyKHRoaXMsICZtX25vdGlmaWNhdGlv
blBvcnQsIFtdKHZvaWQqIGNvbnRleHQsIGlvX3NlcnZpY2VfdCBzZXJ2aWNlLCB1aW50MzJfdCBt
ZXNzYWdlVHlwZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50KSB7CiAgICAgICAgIHN0YXRpY19jYXN0
PFBvd2VyT2JzZXJ2ZXIqPihjb250ZXh0KS0+ZGlkUmVjZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0
aW9uKHNlcnZpY2UsIG1lc3NhZ2VUeXBlLCBtZXNzYWdlQXJndW1lbnQpOwpAQCAtNDMsNyArNDMs
NyBAQCBQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IHBvd2VyT25IYW5kZXIpCiAgICAgaWYgKCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNh
dGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlz
cGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiB9
CiAKIFBvd2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKCkKQEAgLTUxLDggKzUxLDYgQEAgUG93
ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQogICAgIGlmICghbV9wb3dlckNvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKLQogICAgIElPRGVyZWdpc3RlckZvclN5c3RlbVBvd2VyKCZtX25vdGlmaWVyUmVmZXJlbmNl
KTsKICAgICBJT1NlcnZpY2VDbG9zZShtX3Bvd2VyQ29ubmVjdGlvbik7CiAgICAgSU9Ob3RpZmlj
YXRpb25Qb3J0RGVzdHJveShtX25vdGlmaWNhdGlvblBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKaW5kZXggMTU4NmQ3YmI3YWYyNTkzMTE2
NmQyNmVjNWRmYzQ2OTNhOGY2Mjg5YS4uYTgwYjYyMDc1YzAxZGMxNDlmODMxMWM3NDk0YzgxMzI5
YWM2MDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2Jz
ZXJ2ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIu
aD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0
aW9uOwogICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAg
aW9fb2JqZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rpc3Bh
dGNoUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAwYjc3MGNmYjEzM2YzYThhNGU3
ZGI2ZGI4YzgwZmY2MjVjMjM5MjQ5Li5kM2YxYWM3MjliNWI1Y2RlNjNkYjQ0YzAwNTI3YzA5ODYz
YzgyYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogCiAjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDx3
dGYvT1NPYmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIg
KkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIq
IEF1ZGlvQ29udmVydGVyUmVmOwpAQCAtNjMsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUpOwogICAgIE9TU3Rh
dHVzIHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZl
ckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOwogCi0gICAgZGlzcGF0Y2hf
cXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVGltZSBtX2xvd1dhdGVyVGlt
ZSB7IGtDTVRpbWVJbnZhbGlkIH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4g
bV9vdXRwdXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KaW5kZXggYzc5YTQ3OTYyNDAyYmIxMzI5MzNjODdiZmU5OGQyMzdmNTZl
ZTA2OS4uY2NjOGRkM2E5ZDRmMGZkYTg4OTMzZjBmZDFlMjgxZGUzYWRlOTdlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTUyLDE0ICs1
MiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCi0gICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSkgfQogICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9X
X1dBVEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQogewogfQogCiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQogewotICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBpZiAobV9jb252ZXJ0ZXIp
IHsKICAgICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKICAgICAgICAg
bV9jb252ZXJ0ZXIgPSBudWxscHRyOwpAQCAtODksNyArODgsNyBAQCBib29sIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNr
IGNhbGxiYQogCiB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsK
LSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRj
aF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgcHJvY2Vzc1Nh
bXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CiAgICAgICAgIGF1
dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVl
LmdldCgpKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
IGZhaWxlZCAlZCIsIGVycm9yKTsKQEAgLTUxMCw3ICs1MDksNyBAQCB2b2lkIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBi
dWZmZXIpCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZm
ZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJp
YWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1
ZXVlLmdldCgpLCBeewogICAgICAgICBpZiAobV9pc0VuY29kaW5nKQogICAgICAgICAgICAgcHJv
Y2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggYzA1ODM3NDcwYjFjODI3MmRlN2M4OWM0
MTRiYTE4YTBmMGU5ZTljZC4uMzc2YTVjZmJlYWIxYTE0NmYyOTBiMmNiMjQzYzVjMTMzMmRkNzRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5j
bHVkZSA8VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZjsKQEAgLTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRp
YyB2b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0
YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKIAotICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3Bh
dGNoX3F1ZXVlX3Q+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBDTVZpZGVvQ29kZWNUeXBl
IG1fb3V0cHV0Q29kZWNUeXBlIHsga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCB9OwogCiAgICAgUmV0
YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGUwM2U3NzBmMGNh
YTliZGM2YjE2ZDVhYzc0YmIzNzg2ZGY4ZjRhZDcuLjE3Njc5OTc0MWJkNGZiYjk5MDk5YWQ4NDM0
ZWY2YzJmNDZiOGFiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tCkBAIC00OCwxNCArNDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUK
IH0KIAogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCi0gICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSkgfQogICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQogewog
fQogCiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsK
ICAgICBpZiAobV92dFNlc3Npb24pIHsKICAgICAgICAgVlRDb21wcmVzc2lvblNlc3Npb25JbnZh
bGlkYXRlKG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICAgICAgbV92dFNlc3Npb24gPSBudWxscHRy
OwpAQCAtODMsNyArODIsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0
Qml0c1BlclNlY29uZCh1bnNpZ25lZCBiaXRSYXRlKQogCiB2b2lkIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQo
KSwgXnsKICAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVG
cmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CiAKQEAgLTE2NSw3ICsxNjQsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAK
IHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgp
LCBeewogICAgICAgICBpZiAoIW1faXNFbmNvZGluZykKICAgICAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5k
ZXggM2NiZThjZWE2ODVhNTQ1ODgyMGRmMjg4YmRmNmNhNmRlYWIyM2I5Yi4uZjg2MTlmNmExOTE4
YWYwNjBlMmEwNWUwNjMxODJmNTRlODZhMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9TZXNzaW9uOwpAQCAtNzcsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0
c0xpc3RlbmVyPiBtX2xpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVkF1ZGlvU2Vzc2lvbj4gbV9h
dWRpb1Nlc3Npb247CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV91cGRhdGVEZXZpY2VT
dGF0ZVF1ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0
ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsK
ICAgICBMb2NrIG1fbG9jazsKICAgICBBdWRpb1Nlc3Npb25TdGF0ZSBtX2F1ZGlvU2Vzc2lvblN0
YXRlIHsgQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggYjFiNDdhZjI5
YzRhNDQ1MmZjODEwMDNiYTM1ODZkOTAyZTg2YWU5Zi4uZWY5YmUxMDZiYmQ0ZWExNjg0NGVlNzA5
YzYwYTI1OGNjNjJjZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KQEAgLTg3LDkgKzg3LDkgQEAgQVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlTWFuYWdlciYgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG8KIH0KIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcigpCi0gICAgOiBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgIDogbV9kaXNwYXRjaFF1
ZXVlKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0
LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpKSkKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0
cihbdGhpcywgbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKV0geworICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spXSB7CiAgICAgICAgIGNyZWF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgIH0pLmdl
dCgpKTsKIH0KQEAgLTExMyw3ICsxMTMsNiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNyZWF0ZUF1ZGlvU2Vzc2lvbigpCiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsK
LSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7CiAgICAgW21fbGlzdGVuZXIg
aW52YWxpZGF0ZV07CiAgICAgbV9saXN0ZW5lciA9IG51bGxwdHI7CiB9CkBAIC0xNTcsMTMgKzE1
NiwxMyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRp
b1Nlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9
IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfc3luYyhtX2Rp
c3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10geworICAgICAgICBkaXNwYXRjaF9zeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAgICAgICAg
ICBhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgICAgICB9KS5nZXQoKSk7CiAgICAgfQogCiAg
ICAgVmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gbmV3QXVkaW9EZXZpY2VzOwot
ICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoWyZdIHsKKyAg
ICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFsmXSB7
CiAgICAgICAgIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZXMoKTsKICAgICB9KS5nZXQoKSk7CiAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZN
b3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwpAQCAtMTc0LDEyICsxNzMsMTIgQEAgdm9pZCBBVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2kKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25T
dGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vz
c2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2
YXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgeworICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbmV3QXVkaW9E
ZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgICAgICBj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQobWFrZUJsb2NrUHRyKFt0
aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgbmV3QXVkaW9EZXZpY2VzID0g
V1RGTW92ZShuZXdBdWRpb0RldmljZXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHNldEF1
ZGlvQ2FwdHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKQEAgLTI1NCw3ICsy
NTMsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVB
bGxEZXZpY2VzUXVlcnkoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9hdWRpb1Nlc3Np
b25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0aXZlKSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7
CiAgICAgICAgICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSAhPSBBdWRpb1Nlc3Npb25TdGF0
ZTo6Tm90TmVlZGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggOGIxOGZmMTI5MjU3ODkzNzkxNWVh
YTZhNDk5ODM3OTE3MDUxODMwOC4uNzhlYzA2Yjc0ZTQ3MmJkNjM4YTlmNWU5MzcwYmYyZjZiOGY5
YjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKIH07CiAK
ICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKLVdFQkNPUkVfRVhQ
T1JUIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENG
U3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0g
V1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
ciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxvcHQpOwogI2Vu
ZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IGEzNzg1MGQ3NmViZGU4ODRiMjJkODkwMGRlZTM2
Zjg0Yzg0NTE2YWIuLmNlZTVkN2VhY2JjYjYyMTBiMjI5ZGNlYWM4N2I0NmY0ZmJkOGVjZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcApAQCAtNzIsMTcgKzcyLDE2IEBAIGJvb2wgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQorUmV0YWluUHRyPENG
VVJMQXV0aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNvcmVDaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQg
ZG9lcyB0aGF0LgogCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlh
bCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkp
OwotICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7Ci0g
ICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0
ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVu
Z2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2Uo
KS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bv
c2VkQ3JlZGVudGlhbCgpKTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IGNyZWF0ZUNGKGNv
cmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgIHJldHVybiBhZG9wdENGKENGVVJM
QXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwu
Z2V0KCksIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3Io
KSkpOwogfQogCi1DRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYg
Y29yZUNyZWRlbnRpYWwpCitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVhdGVDRihj
b25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKIHsKICAgICBDRlVSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSA9IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7
CiAgICAgc3dpdGNoIChjb3JlQ3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpKSB7CkBAIC05OCwxMCAr
OTcsMTAgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNv
cmVDcmVkZW50aWFsKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2Vy
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIHBlcnNpc3RlbmNlKSk7CiB9CiAKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNy
ZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQorUmV0YWluUHRyPENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmPiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVT
cGFjZSkKIHsKICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9
IGtDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CiAgICAgc3dpdGNoIChjb3JlU3BhY2Uu
c2VydmVyVHlwZSgpKSB7CkBAIC0xNjUsNyArMTY0LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25T
cGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNv
cmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIHNjaGVtZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxQcm90ZWN0aW9u
U3BhY2VDcmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBj
b3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBzY2hlbWUpKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVu
dGlhbFJlZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCmluZGV4IDg5YTkzNTI4OWFkNzlkNDBiMzdk
ZDIwM2E4MGU5ZThkZjcxMWIyNmUuLjcwZjUwMjA1ZWIyYmRhMDgxNmJiZDA4OGM0NmNkYWFiOWM0
NTMyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKIAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxQcml2Lmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5n
ZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlv
blNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKQEAgLTM4LDkgKzM5LDkgQEAgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogCi1DRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKLUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBD
cmVkZW50aWFsJik7Ci1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90
ZWN0aW9uU3BhY2UmKTsKK1JldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNyZWF0ZUNG
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CitSZXRhaW5QdHI8Q0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogQ3JlZGVu
dGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJlZik7CiBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCmluZGV4IDZlYTMw
MTIzOTU2ZWRiZDMwOWQ2Y2UwZWFmZmU3ODNkNzM4ZTZkZmMuLjFmYTg5YmFlMWRlMWNiMDc2M2Uw
N2M2MWE0MThhMzFjY2VmNTViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCkBAIC01OCwxMCAr
NTgsMTAgQEAgYm9vbCBjZXJ0aWZpY2F0ZXNNYXRjaChTZWNUcnVzdFJlZiB0cnVzdDEsIFNlY1Ry
dXN0UmVmIHRydXN0MikKIFJldGFpblB0cjxDRkFycmF5UmVmPiBDZXJ0aWZpY2F0ZUluZm86OmNl
cnRpZmljYXRlQ2hhaW5Gcm9tU2VjVHJ1c3QoU2VjVHJ1c3RSZWYgdHJ1c3QpCiB7CiAgICAgYXV0
byBjb3VudCA9IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVDb3VudCh0cnVzdCk7Ci0gICAgYXV0byBj
ZXJ0aWZpY2F0ZUNoYWluID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpOworICAgIGF1dG8gY2VydGlmaWNhdGVDaGFpbiA9IGFkb3B0Q0YoQ0ZB
cnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAg
ICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoY2VydGlmaWNhdGVDaGFpbiwgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgo
dHJ1c3QsIGkpKTsKLSAgICByZXR1cm4gYWRvcHRDRigoQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNo
YWluKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNlcnRpZmljYXRlQ2hhaW4uZ2V0KCks
IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRydXN0LCBpKSk7CisgICAgcmV0dXJuIGNl
cnRpZmljYXRlQ2hhaW47CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKaW5k
ZXggMDc1MmNhMTA1NTJmZGIxYTdjMzU3NTkzMmEyMzJhYWViZWRjNWQ2MC4uMGEwMzM4NmQ5M2M1
YzEyZTY2MDE2NmZlMjkwNmI4MTE0YjVkZTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3Bw
CkBAIC0zNiwxNiArMzYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotc3RhdGlj
IGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNw
YWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKK3N0YXRpYyBpbmxp
bmUgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY29weUNyZWRlbnRpYWxGcm9tUHJvdGVj
dGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKIHsKICAg
ICBhdXRvIHN0b3JhZ2UgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ29w
eURlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2UuZ2V0KCksIHByb3Rl
Y3Rpb25TcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNv
cHlEZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlLmdldCgpLCBwcm90
ZWN0aW9uU3BhY2UpKTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJv
bVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
KQogewotICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3Rl
Y3Rpb25TcGFjZSkpOwotICAgIGF1dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVu
dGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlQ0YuZ2V0KCkpKTsKKyAgICBh
dXRvIHByb3RlY3Rpb25TcGFjZUNGID0gY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKTsKKyAgICBh
dXRvIGNyZWRlbnRpYWxDRiA9IGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90
ZWN0aW9uU3BhY2VDRi5nZXQoKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4IDVlYTQ0OGZjZTc3M2UwMzk0ZDc0ZmQ3YjFmOWMzNzYz
NjljZDlmODMuLmJiODNkZmY0YTI5YmZkOTdmYjUwNWE0OTNiODk0YjE4ZTExNmY1ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAKQEAgLTYzLDggKzYzLDggQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQog
CiAgICAgICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRv
IHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgogICAgICAgICAgICAgICAgIENG
UnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51
bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtfTsKLSAgICAgICAgICAgICAg
ICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUo
MCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShsb2FkZXJS
dW5Mb29wT2JqZWN0LCBib2d1c1NvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVh
dGUoMCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobG9h
ZGVyUnVuTG9vcE9iamVjdCwgYm9ndXNTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CiAKICAgICAgICAgICAgICAgICBsb2FkZXJSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90
aWZ5T25lKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRX
aW4uY3BwCmluZGV4IDVkN2Q3OTYxNDQ2NWZjYWI1YmQ2YjY0MThlMDYwZjY4ZWIwOTRhNGEuLmE1
MWJkYjhlMzI1YjMzNzZkMTRjNmY0ZjVlODA3ZDM4MWRiYjhkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCkBAIC03OSwxNiArNzksMTYgQEAgc3RhdGljIENGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgdG9DRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9s
aWN5KEhUVFBDb28KICAgICByZXR1cm4gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFs
d2F5czsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBv
bGljeT4gY29va2llQWNjZXB0UG9saWN5KQorUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAg
ICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNl
c3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNb
XSA9IHsga0NGQm9vbGVhblRydWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc2Vzc2lvblByb3Bl
cnRpZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvblBy
b3BlcnR5S2V5cywgc2Vzc2lvblByb3BlcnR5VmFsdWVzLCBzaXplb2Yoc2Vzc2lvblByb3BlcnR5
S2V5cykgLyBzaXplb2YoKnNlc3Npb25Qcm9wZXJ0eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX0NGVVJMU3RvcmFnZVNlc3Npb25D
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRpZmllciwgc2Vzc2lvblByb3BlcnRpZXMp
OworICAgIGF1dG8gc2Vzc2lvblByb3BlcnRpZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uUHJvcGVydHlLZXlzLCBzZXNzaW9uUHJvcGVy
dHlWYWx1ZXMsIHNpemVvZihzZXNzaW9uUHJvcGVydHlLZXlzKSAvIHNpemVvZigqc2Vzc2lvblBy
b3BlcnR5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRD
RihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZGVudGlm
aWVyLCBzZXNzaW9uUHJvcGVydGllcy5nZXQoKSkpOwogICAgIAogICAgIC8vIFRoZSBwcml2YXRl
IHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBk
ZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAgICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBp
dCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkgc3RvcmFnZS4KLSAgICBhdXRvIGNhY2hlID0gYWRv
cHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dG9yYWdlU2Vzc2lvbikpOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgp
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7CiAgICAg
YXV0byBkZWZhdWx0Q2FjaGUgPSBhZG9wdENGKENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBDRlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlLmdldCgpKSk7CkBAIC0xMDEsNyArMTAxLDcg
QEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZT
dHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAgICAgY2ZDb29raWVBY2NlcHRQb2xpY3kg
PSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29raWVT
dG9yYWdlKTsKICAgICB9CiAKLSAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVS
TFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3Rv
cmFnZVNlc3Npb24pKTsKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFn
ZVNlc3Npb24uZ2V0KCkpKTsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0
UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNmQ29va2llQWNjZXB0UG9saWN5KTsKICAgICAK
ICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCmluZGV4IGNi
MDhiOTM3MzUwOWE1MDA3OTI3NDY4YzA3NmNmODJlNjVkNWIwN2UuLjg3MzdjNGM3MTRmNjVkZTRj
MDQ2ZDU5MTcwNjIxYTlhYTVlNzA2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBQcm90ZWN0aW9uU3BhY2U6OnJl
Y2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY+IGNmU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKCp0aGlzKSk7Cisg
ICAgYXV0byBjZlNwYWNlID0gY3JlYXRlQ0YoKnRoaXMpOwogICAgIHJldHVybiBjZlNwYWNlICYm
IENGVVJMUHJvdGVjdGlvblNwYWNlUmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoY2ZTcGFjZS5n
ZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDJkNGVmZjUwNWNjNDEzYTBjZDY1
MjNjYjA5YzA0NGM0YjQ5ZTg1NWQuLjZiZjNjYzIwNDA0MGI4YWZlOTI0YzdmOWY1NTEzZDdhNWMy
YjE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50
aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0
b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkt
PmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNyZWRlbnRpYWwpOwog
ICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0
aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC00MzYsMTEgKzQzNiwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgICAgICBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0
UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYgKGQtPm1fY29ubmVjdGlv
bikgewotICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50
aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CisgICAgICAgICAgICBhdXRv
IGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpOwogICAgICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVu
dGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVu
dGlhbCkpOworICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNyZWRlbnRpYWwp
OwogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkpOwogICAgIH0KIApAQCAtNTU5LDggKzU1OSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
CiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBw
cmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybSB9OwotICAgICAgICAgICAgQ0ZSdW5M
b29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZj
dHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBib2d1c1NvdXJj
ZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2Ug
PSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLmdldCgpLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2VtLnNpZ25hbCgpOwogCiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IDFm
ZTY5MDI0YmNiZmI4ZDc3YmFiOThhOTFhM2NhODE1OWZiYTRlMDMuLjNjODJiYzNiNGM2ODU5Yjhi
YTk0YTMyYmU5YTQyNmE4Mzk5NmVjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcApAQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgZ2V0UnVuTG9vcCgp
CiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBw
cmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybSB9OwotICAgICAgICAgICAgQ0ZSdW5M
b29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZj
dHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBib2d1c1NvdXJj
ZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2Ug
PSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLmdldCgpLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2VtLnNpZ25hbCgpOwogCiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggZjZlMWI5YjVkM2E1YmE3
YWUzNWE3NzkyM2Q1NmQ1M2VhZTMyNzE5OS4uYjdlZjViODc1ODRmZmJiNjZhZjdkOWExMTNmNDMw
NmQ5MTVhMTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTE2Nyw1MSArMTY3LDUxIEBA
IHN0YXRpYyBDRlVSTFJlZiBzaXRlRm9yQ29va2llcyhSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sCiAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVT
aXRlRGlzcG9zaXRpb246OlNhbWVTaXRlOgogICAgICAgICByZXR1cm4gdXJsOwogICAgIGNhc2Ug
UmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uOjpDcm9zc1NpdGU6Ci0gICAgICAg
IHN0YXRpYyBDRlVSTFJlZiBlbXB0eVVSTCA9IENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRy
LCBDRlNUUigiIiksIG51bGxwdHIpOwotICAgICAgICByZXR1cm4gZW1wdHlVUkw7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZVUkxSZWY+PiBlbXB0eVVSTCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKG51bGxwdHIsIENGU1RSKCIiKSwgbnVsbHB0cikp
OworICAgICAgICByZXR1cm4gZW1wdHlVUkwuZ2V0KCkuZ2V0KCk7CiAgICAgfQogfQogI2VuZGlm
CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiB7Ci0g
ICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3Q7CisgICAgUmV0YWluUHRyPENGTXV0
YWJsZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVhdGVDRlVSTCgpOwogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0
UGFydHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBkb3VibGUgdGltZW91dEludGVy
dmFsID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgPyBSZXNvdXJjZVJl
cXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJlc291cmNlUmVxdWVzdEJhc2U6OmRlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9jZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZS
ZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0
KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBh
cnR5Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5
KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7
Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QsIHRpbWVv
dXRJbnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3Qu
Z2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOworICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1l
b3V0SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVl
c3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGlj
eShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5n
ZXQoKSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0
YWJsZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xp
Y3koKSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAot
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1
ZXN0TWV0aG9kKGNmUmVxdWVzdC5nZXQoKSwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpKQotICAgICAgICBDRlVS
TFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhUVFAoY2ZSZXF1ZXN0LCB0cnVlLCB0cnVlKTsKKyAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkUGlwZWxpbmVIVFRQKGNmUmVxdWVzdC5nZXQoKSwg
dHJ1ZSwgdHJ1ZSk7CiAKICAgICBpZiAocmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QsIHRvUGxhdGZv
cm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRS
ZXF1ZXN0UHJpb3JpdHkoY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdFByaW9yaXR5
KHByaW9yaXR5KCkpKTsKIAogICAgICAgICAvLyBVc2VkIGJ5IFBMVCB0byBpZ25vcmUgdmVyeSBs
b3cgcHJpb3JpdHkgYmVhY29uIGFuZCBwaW5nIGxvYWRzLgogICAgICAgICBpZiAocHJpb3JpdHko
KSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUxvdykKLSAgICAgICAgICAgIF9DRlVSTFJl
cXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgQ0ZTVFIoIldLVmVyeUxvd0xvYWRQ
cmlvcml0eSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0
UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJXS1ZlcnlMb3dMb2FkUHJp
b3JpdHkiKSwga0NGQm9vbGVhblRydWUpOwogICAgIH0KIAotICAgIHNldEhlYWRlckZpZWxkcyhj
ZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7CisgICAgc2V0SGVhZGVyRmllbGRzKGNmUmVx
dWVzdC5nZXQoKSwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIENGVVJMUmVxdWVzdFNldFNo
b3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29raWVzKCkpOworICAgIENG
VVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdC5nZXQoKSwgYWxs
b3dDb29raWVzKCkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBfQ0ZVUkxSZXF1
ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RSKCJfa0NGSFRUUENvb2tpZVBv
bGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURp
c3Bvc2l0aW9uLCB1cmwuZ2V0KCkpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9w
ZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5
U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCB1
cmwuZ2V0KCkpKTsKIAogICAgIGludCBpc1RvcFNpdGUgPSBtX2lzVG9wU2l0ZTsKICAgICBSZXRh
aW5QdHI8Q0ZOdW1iZXJSZWY+IGlzVG9wU2l0ZUNGID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShu
dWxscHRyLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaXNUb3BTaXRlKSk7Ci0gICAgX0NGVVJMUmVxdWVz
dFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBDRlNUUigiX2tDRkhUVFBDb29raWVQb2xp
Y3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBpc1RvcFNpdGVDRi5nZXQoKSk7CisgICAgX0NGVVJMUmVx
dWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiX2tDRkhUVFBD
b29raWVQb2xpY3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBpc1RvcFNpdGVDRi5nZXQoKSk7CiAjZW5k
aWYKIAogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKQEAgLTIyMiw1MSArMjIyLDUxIEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgICAg
IGlmIChlbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB2b2lkKj4oZW5jb2RpbmcpKTsKICAgICB9Ci0gICAgc2V0Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNmUmVxdWVzdCwgZW5jb2RpbmdGYWxsYmFja3Mu
Z2V0KCkpOworICAgIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShj
ZlJlcXVlc3QuZ2V0KCksIGVuY29kaW5nRmFsbGJhY2tzLmdldCgpKTsKIAogI2lmIEVOQUJMRShD
QUNIRV9QQVJUSVRJT05JTkcpCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGNhY2hlUGFydGl0aW9u
KCk7CiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkp
IHsKICAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gcGFydGl0aW9uLnV0ZjgoKTsKICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHV0ZjhT
dHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJl
cXVlc3QsIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwor
ICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCks
IF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0K
ICNlbmRpZgogCi0gICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7CisgICAgbV9j
ZlJlcXVlc3QgPSBXVEZNb3ZlKGNmUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogewotICAgIENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWYgY2ZSZXF1ZXN0OworICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBjZlJl
cXVlc3Q7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFJlc291cmNlUmVxdWVzdDo6
dXJsKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlG
b3JDb29raWVzID0gUmVzb3VyY2VSZXF1ZXN0OjpmaXJzdFBhcnR5Rm9yQ29va2llcygpLmNyZWF0
ZUNGVVJMKCk7CiAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCA9IFJlc291cmNlUmVxdWVzdEJh
c2U6OnRpbWVvdXRJbnRlcnZhbCgpID8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVy
dmFsKCkgOiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CiAg
ICAgaWYgKG1fY2ZSZXF1ZXN0KSB7Ci0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENy
ZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0VVJMKGNmUmVxdWVzdCwgdXJsLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QsIHRvUGxhdGZvcm1S
ZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOwotICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0aW1lb3V0SW50ZXJ2YWwpOworICAgICAgICBj
ZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZS
ZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QuZ2V0
KCksIHVybC5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChj
ZlJlcXVlc3QuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVz
dENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGlt
ZW91dEludGVydmFsKGNmUmVxdWVzdC5nZXQoKSwgdGltZW91dEludGVydmFsKTsKICAgICB9IGVs
c2UKLSAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwu
Z2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVv
dXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBjZlJlcXVl
c3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1Bs
YXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWws
IGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKSk7CiAKICAgICBGb3JtRGF0YSogZm9ybURhdGEg
PSBodHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkK
LSAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CisgICAg
ICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNmUmVxdWVzdC5nZXQoKSwgZm9ybURhdGEpOwogCi0g
ICAgaWYgKFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGJvZHlTdHJlYW0gPSBhZG9wdENGKENG
VVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0oY2ZSZXF1ZXN0KSkpIHsKKyAgICBp
ZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxS
ZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShjZlJlcXVlc3QuZ2V0KCkpKSkgewogICAg
ICAgICAvLyBGb3Igc3RyZWFtcywgcHJvdmlkZSBhIENvbnRlbnQtTGVuZ3RoIHRvIGF2b2lkIHVz
aW5nIGNodW5rZWQgZW5jb2RpbmcsIGFuZCB0byBnZXQgYWNjdXJhdGUgdG90YWwgbGVuZ3RoIGlu
IGNhbGxiYWNrcy4KICAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGVuZ3RoU3Ry
aW5nID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZWFkU3RyZWFtQ29weVBy
b3BlcnR5KGJvZHlTdHJlYW0uZ2V0KCksIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1l
KCkpKSkpIHsKLSAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVl
KGNmUmVxdWVzdCwgQ0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxlbmd0aFN0cmluZy5nZXQoKSk7
CisgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShjZlJlcXVl
c3QuZ2V0KCksIENGU1RSKCJDb250ZW50LUxlbmd0aCIpLCBsZW5ndGhTdHJpbmcuZ2V0KCkpOwog
ICAgICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2UgcmVxdWVzdCBpcyBhbHJlYWR5IG1hcmtlZCB1
cGRhdGVkLCB3ZSBuZWVkIHRvIGtlZXAgaXQgdXAgdG8gZGF0ZSB0b28uCiAgICAgICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKICAgICAgICAgICAgIG1faHR0cEhlYWRl
ckZpZWxkcy5zZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgsIGxlbmd0aFN0cmluZy5n
ZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAogdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKQEAgLTM1NSwxMCAr
MzU1LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpOwogCi0gICAgYXV0byBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7CisgICAgYXV0byBjZlJlcXVlc3QgPSBhZG9wdENG
KENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKSk7CiAg
ICAgaWYgKHN0b3JhZ2VTZXNzaW9uKQotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0U3RvcmFnZVNl
c3Npb24oY2ZSZXF1ZXN0LCBzdG9yYWdlU2Vzc2lvbik7Ci0gICAgbV9jZlJlcXVlc3QgPSBhZG9w
dENGKGNmUmVxdWVzdCk7CisgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihj
ZlJlcXVlc3QuZ2V0KCksIHN0b3JhZ2VTZXNzaW9uKTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1v
dmUoY2ZSZXF1ZXN0KTsKIH0KIAogI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4MGJkNjZkNzhkNDFhNzUwYTI2
MGVlYmM5ZjY3ZjRiY2I2ZmJlMjExLi44NjRiYjk5NzMxMDg5YzIzNjVlYjE1ZDkzYTI5Y2ZlMzFm
ODQ4MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE3Myw3
ICsxNzMsNyBAQCBDb29raWVTdG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llU3RvcmFnZU9ic2VydmVyKCkgY29uc3QKICAgICByZXR1cm4gKm1fY29va2llU3RvcmFn
ZU9ic2VydmVyOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNj
ZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCitSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkK
IHsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10gPSB7IF9rQ0ZVUkxTdG9y
YWdlU2Vzc2lvbklzUHJpdmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eVZh
bHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwpAQCAtMjEwLDcgKzIxMCw3IEBAIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlk
ZW50aWZpZXIsIE9wdGlvCiAgICAgLy8gRklYTUU6IFVzZSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdl
dERlZmF1bHQgd2hlbiBVU0UoQ0ZORVRXT1JLKSBpcyBkZWZpbmVkIGluIFdlYktpdCBmb3IgY29u
c2lzdGVuY3kuCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVTdG9yYWdlLmdldCgpLCBuc0Nvb2tpZUFjY2VwdFBvbGljeSk7CiAKLSAgICByZXR1cm4g
c3RvcmFnZVNlc3Npb24ubGVha1JlZigpOworICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbjsKIH0K
IAogUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tCmluZGV4IDQ1NWE3YTYyY2MxMjQxNjBjZDhiZTkyZDc0OTMxMjNiYTY4NmU0ZmYu
LjM1Nzc0MGYyMjU2Zjk4OTBiYTcxYTM2MzhlZjU3MDdlNzFhOWQ5YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVz
cG9uc2VJT1MubW0KQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
PHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBSZWdpc3RlciAubWpzIGZpbGVzIGFzIHdoYXRldmVy
IFVUSSBpbmRpY2F0ZXMgSmF2YVNjcmlwdAotc3RhdGljIENGRGljdGlvbmFyeVJlZiBjcmVhdGVF
eHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKIHsKICAgICBDRlN0cmluZ1JlZiBrZXlz
W10gPSB7CiAgICAgICAgIENGU1RSKCJtanMiKQpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgQ0ZE
aWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogICAgIH07CiAKICAg
ICBBU1NFUlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICByZXR1cm4gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMs
IChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVm
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZhbHVl
cywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogfQogCiB2
b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
LCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKQEAgLTY2LDExICs2NiwxMSBAQCB2b2lkIGFkanVz
dE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlz
TWFpblJlc291cmNlTAogICAgICAgICBpZiAoWyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVV
UkxdKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFk
b3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKICAgICAgICAgICAgIGlmIChleHRl
bnNpb24pIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lv
bk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAgICAgICBD
Rk11dGFibGVTdHJpbmdSZWYgbXV0YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRlTXV0YWJs
ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsKLSAgICAg
ICAgICAgICAgICBleHRlbnNpb24gPSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwotICAgICAg
ICAgICAgICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5zaW9uLmdldCgpKSkKKyAgICAgICAgICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGV4dGVu
c2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbi5nZXQoKSwgTlVMTCk7Cisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RGTW92ZShtdXRhYmxlRXh0ZW5zaW9uKTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlwZSA9IChDRlN0cmluZ1JlZilDRkRpY3Rp
b25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVuc2lvbi5nZXQoKSkp
CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRNSU1FVHlwZSA9IG5ld01JTUVUeXBlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXggYmIxMTZhOWRmZjNl
ODAyNDllM2MxZmYxMGVlOTEyOWM3MDU2ZmQxNS4uNGZhNTBlNDZiMDk0OTZjZGVlMDczOTY0NWM4
NGYxZDdhNDY5ZmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBXaGVuIHdlIGRpc2FibGVkIGNvbnRlbnQgc25pZmZpbmcgZm9y
IGZpbGUgVVJMcyB3ZSBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGVzZSAxMDArIGV4dGVuc2lvbnMg
dGhhdCBDb3JlVHlwZXMKIC8vIGRvZXNuJ3Qga25vdyBhYm91dC4KIC8vIElmIENvcmVUeXBlcyBp
cyBldmVyIGJyb3VnaHQgdXAgdG8gc3BlZWQgd2UgY2FuIHJlbW92ZSB0aGlzIHRhYmxlIGFuZCBh
c3NvY2lhdGVkIGNvZGUuCi1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRv
TUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4
dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewogICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKICAg
ICAgICAgQ0ZTVFIoImFpIiksCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIENGRGljdGlvbmFy
eVJlZiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKICAgICB9OwogCiAgICAgQVNTRVJU
KHNpemVvZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qg
dm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKS9zaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yo
a2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkKQpAQCAtMzA0LDExICszMDQsMTEgQEAgdm9pZCBhZGp1c3RNSU1FVHlw
ZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNv
dXJjZUwKICAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKICAgICAgICAgICAgICAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAxMDAr
IGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAogICAgICAgICAgICAg
ICAgIC8vIFdoZW4gdGhpcyByYWRhciBpcyByZXNvbHZlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIGZp
bGU6Ly8gdXJsIHNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgc3RhdGljIENGRGljdGlv
bmFyeVJlZiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0g
ICAgICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG11dGFibGVFeHRlbnNpb24gPSBDRlN0
cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5n
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lv
biwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gYWRvcHRDRihtdXRhYmxlRXh0
ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpOworICAgICAgICAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gZXh0
ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOworICAgICAgICAgICAg
ICAgIGF1dG8gbXV0YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxl
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLmdldCgpLCBOVUxMKTsK
KyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11dGFibGVFeHRlbnNpb24pOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVuc2lvbi5nZXQoKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIEdhdGVrZWVwZXItYmFzZWQgbWFwIGRvZXNuJ3QgaGF2ZSBhIE1JTUUgdHlw
ZSwgd2UnbGwgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCBzaG91bGQgYmUgYnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXgg
NWYzNmQwODMxNDg2YzlkOWU0ZmM5M2I5YmRmMWQ2MTc3YzIwZTY0MC4uYTU2MThmZTBjZDY5Zjg2
MTg1ZDc4YjBlNjM5ZGQ5YTI4YWZkMjNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTcxLDIzICs3MSwyMyBAQCBzdGF0
aWMgYm9vbCBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQog
CiBzdGF0aWMgQ0ZTdHJpbmdUb2tlbml6ZXJSZWYgdG9rZW5pemVyRm9yU3RyaW5nKENGU3RyaW5n
UmVmIHN0cikKIHsKLSAgICBzdGF0aWMgQ0ZMb2NhbGVSZWYgbG9jYWxlID0gbnVsbHB0cjsKLSAg
ICBpZiAoIWxvY2FsZSkgeworICAgIHN0YXRpYyBhdXRvIGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHRlbXAgPSBjdXJyZW50VGV4dEJyZWFrTG9j
YWxlSUQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjdXJyZW50TG9jYWxlSUQg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZW1wKSwgc3RybGVuKHRlbXApLCBr
Q0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgICAg
ICBsb2NhbGUgPSBDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9j
YWxlSUQuZ2V0KCkpOwotICAgICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KKyAgICAgICAgYXV0byBjdXJyZW50TG9jYWxlSUQgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZW1wKSwgc3RybGVuKHRlbXApLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQu
Z2V0KCkpKTsKKyAgICB9KCkpOworCisgICAgaWYgKCFsb2NhbGUuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgQ0ZSYW5nZSBlbnRpcmVSYW5nZSA9IENGUmFuZ2VNYWtlKDAs
IENGU3RyaW5nR2V0TGVuZ3RoKHN0cikpOyAgICAKIAotICAgIHN0YXRpYyBDRlN0cmluZ1Rva2Vu
aXplclJlZiB0b2tlbml6ZXIgPSBudWxscHRyOwotICAgIGlmICghdG9rZW5pemVyKQotICAgICAg
ICB0b2tlbml6ZXIgPSBDRlN0cmluZ1Rva2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZTdHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5LCBs
b2NhbGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdUb2tl
bml6ZXJSZWY+PiB0b2tlbml6ZXI7CisgICAgaWYgKCF0b2tlbml6ZXIuZ2V0KCkpCisgICAgICAg
IHRva2VuaXplci5nZXQoKSA9IGFkb3B0Q0YoQ0ZTdHJpbmdUb2tlbml6ZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RyLCBlbnRpcmVSYW5nZSwga0NGU3RyaW5nVG9rZW5pemVyVW5pdFdv
cmRCb3VuZGFyeSwgbG9jYWxlLmdldCgpLmdldCgpKSk7CiAgICAgZWxzZQotICAgICAgICBDRlN0
cmluZ1Rva2VuaXplclNldFN0cmluZyh0b2tlbml6ZXIsIHN0ciwgZW50aXJlUmFuZ2UpOwotICAg
IHJldHVybiB0b2tlbml6ZXI7CisgICAgICAgIENGU3RyaW5nVG9rZW5pemVyU2V0U3RyaW5nKHRv
a2VuaXplci5nZXQoKS5nZXQoKSwgc3RyLCBlbnRpcmVSYW5nZSk7CisgICAgcmV0dXJuIHRva2Vu
aXplci5nZXQoKS5nZXQoKTsKIH0KIAogLy8gU2ltcGxlIGNhc2U6IEEgd29yZCBpcyBhIHN0cmVh
bSBvZiBjaGFyYWN0ZXJzIGRlbGltaXRlZCBieSBhIHNwZWNpYWwgc2V0IG9mIHdvcmQtZGVsaW1p
dGluZyBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKaW5kZXggNGQ4YzVjNjA2ZDVjNTU4N2YyYzk1YWYyZGE2YmZkYmYwMjY5ZGM5
NC4uMzA0YjFmZDJhZGU4YTc0NzI2ZTJmNThjODIyNTExMTVlNGIwNTIzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC01NywxMyArNTcs
MTEgQEAgR0RJT2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUs
IENHQ29udGV4dFJlZiAqdGFyZ2V0UmVmKQogICAgIGlmICghdGFyZ2V0UmVmIHx8ICFoYm1wKQog
ICAgICAgICByZXR1cm4gaGJtcDsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBDb250ZXh0ID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJt
cEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggKiA0
LCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1h
Z2VBbHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJt
cEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LCBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoICog
NCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJ
bWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuIEdESU9iamVjdDxIQklUTUFQPigpOwogCi0gICAgKnRhcmdldFJlZiA9IGJpdG1h
cENvbnRleHQ7CisgICAgKnRhcmdldFJlZiA9IGJpdG1hcENvbnRleHQubGVha1JlZigpOwogICAg
IHJldHVybiBoYm1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggNzVkODExN2YzOGRjMWVjMDQxNTFmMTgzN2QzN2RhMWFlZWU1NmY5MC4uYWRl
NjE5Mjk4MDU3MDRlNjk5ZjliOTUyMTZiYjU5OWI2YTQzMmI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTUyLDM2ICsxNTIsMjUgQEAgc3RhdGlj
IHZvaWQgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdyYWRpZW50KHZvaWQgKmluZm8sIGNvbnN0IENH
RmxvYXQgKmluRGF0YSwgQ0cKIAogc3RhdGljIENHRnVuY3Rpb25SZWYgZ2V0U2hhcmVkRnVuY3Rp
b25SZWYoSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlv
bikKIHsKLSAgICBDR0Z1bmN0aW9uUmVmIGZ1bmN0aW9uID0gbnVsbHB0cjsKLQotICAgIHN0YXRp
YyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiogbGluZWFyRnVuY3Rpb25S
ZWZzOwotICAgIHN0YXRpYyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiog
ZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8SU9TR3JhZGllbnRSZWYsIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPj4+IGxpbmVhckZ1bmN0
aW9uUmVmczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFkaWVudFJl
ZiwgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+Pj4gZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CiAK
ICAgICBpZiAoaW50ZXJwb2xhdGlvbiA9PSBMaW5lYXJJbnRlcnBvbGF0aW9uKSB7Ci0gICAgICAg
IGlmICghbGluZWFyRnVuY3Rpb25SZWZzKQotICAgICAgICAgICAgbGluZWFyRnVuY3Rpb25SZWZz
ID0gbmV3IEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+OwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBmdW5jdGlvbiA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRp
ZW50KTsKLSAgICAKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+
Z2V0KGdyYWRpZW50KTsKICAgICAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICAgICAgc3Rh
dGljIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzID0g
IHsgMCwgaW50ZXJwb2xhdGVMaW5lYXJHcmFkaWVudCwgMCB9OwotICAgICAgICAgICAgbGluZWFy
RnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlvbkNyZWF0ZShn
cmFkaWVudCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwgJmxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tz
KSk7CisgICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rp
b24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoZ3JhZGllbnQsIDEsIG51bGxwdHIsIDQsIG51
bGxwdHIsICZsaW5lYXJGdW5jdGlvbkNhbGxiYWNrcykpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHJldHVybiBmdW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLmdldCgpOwogICAgIH0K
IAotICAgIGlmICghZXhwb25lbnRpYWxGdW5jdGlvblJlZnMpCi0gICAgICAgIGV4cG9uZW50aWFs
RnVuY3Rpb25SZWZzID0gbmV3IEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+
OwotICAgIGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+
Z2V0KGdyYWRpZW50KTsKLQorICAgIGF1dG8gZnVuY3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9u
UmVmcy0+Z2V0KGdyYWRpZW50KTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIHN0YXRp
YyBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBleHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tz
ID0gIHsgMCwgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdyYWRpZW50LCAwIH07Ci0gICAgICAgIGV4
cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlv
bkNyZWF0ZShncmFkaWVudCwgMSwgMCwgNCwgMCwgJmV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFj
a3MpKTsKKyAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVu
Y3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoZ3JhZGllbnQsIDEsIDAsIDQsIDAsICZl
eHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwogICAgIH0KLQotICAgIHJldHVybiBmdW5j
dGlvbjsKKyAgICByZXR1cm4gZnVuY3Rpb24uZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdB
eGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBJT1NHcmFkaWVudFJlZiBncmFkaWVu
dCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgY29uc3QgRmxvYXRQb2ludCYgc3RvcFBv
aW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCmluZGV4IGJlNjYwNzhh
ODNkMGNhNDliNzFhMWZiNTNjMjNhOGM2YjgxZDc2N2UuLjVhOWJiYzcxNWM5ZTVjODQzYWFmMmI5
MTVkZDg4ZjcyZWZhMTllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29j
b2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
Y29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIAotc3Rh
dGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEo
Q0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJl
Zj4gY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNl
RGF0YSkKIHsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZTsKICAgICBhdXRvIHVuYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJv
bURhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXJlc3BvbnNlRGF0YSBlcnJvcjpudWxscHRyXSk7CkBA
IC01Myw3ICs1Myw3IEBAIHN0YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9u
c2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhCiAgICAgfQogCiAgICAgaWYg
KCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKLSAg
ICAgICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9f
YnJpZGdlIENGVVJMUmVmKXJlc3BvbnNlLlVSTCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3Bv
bnNlLk1JTUVUeXBlLCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgsIChfX2JyaWRnZSBD
RlN0cmluZ1JlZilyZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VB
bGxvd2VkKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUs
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKIAogICAgIE5TSFRUUFVSTFJlc3BvbnNlICpo
dHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKIApAQCAtNjQsNyAr
NjQsNyBAQCBzdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJl
c3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYQogICAgIGZvciAoTlNTdHJpbmcgKmhlYWRl
ckZpZWxkIGluIFtoZWFkZXJGaWVsZHMga2V5RW51bWVyYXRvcl0pCiAgICAgICAgIENGSFRUUE1l
c3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKGh0dHBNZXNzYWdlLmdldCgpLCAoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpaGVhZGVyRmllbGQsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilbaGVhZGVyRmllbGRz
IG9iamVjdEZvcktleTpoZWFkZXJGaWVsZF0pOwogCi0gICAgcmV0dXJuIENGVVJMUmVzcG9uc2VD
cmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVS
TFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VB
bGxvd2VkKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBS
ZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2Uu
VVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwogfQog
CiBzdGF0aWMgdm9pZCBjb252ZXJ0TUlNRVR5cGUoQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBl
KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJvcGVyCiAgICAgaWYgKENG
R2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZXNwb25zZSA9IGFkb3B0
Q0YoY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKSk7Cisg
ICAgYXV0byByZXNwb25zZSA9IGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJl
c3BvbnNlRGF0YSk7CiAgICAgaWYgKCFyZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFh
OWY3MTlkNjUxZmE4YWVkMTlmNmVmZjA1MTU3ZjA5NTJkYmVlMTEuLmM1MzdlYTI4ZDkxYzUwNWEy
NThiOWM4MDZlN2U4M2NlMmNmNDBlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00NTEsNyArNDUxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6Om5ld1Rl
c3RpbmdTZXNzaW8KICAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBm
b3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90aGVy
d2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4
NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0i
LCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihX
ZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAog
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAg
IGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVB
UEkoKSkgewpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgYm9vbCBzaG91bGRVCiAgICAg
UmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlmaWVy
QmFzZSwgIi5Qcml2YXRlQnJvd3NpbmcuIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS5j
cmVhdGVDRlN0cmluZygpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAg
ICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKICAgICBlbHNlIGlmIChzZXNz
aW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAgICAgc3Rv
cmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZUNGU3Rv
cmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKGNmSWRlbnRpZmllci5nZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYTQyMzM0ZWMw
Y2ExYWQwNTAyM2VjYmY3OGQxMzFkMDFiM2VmMzZmLi4wNzk5MTVlMmI0YzM5YTgxYzI0ODhlYjlh
Y2E0ODhmYjExNDNkYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTU1Nyw3ICs1
NTgsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBXZSdkIGxpa2UgdG8gYmUgYWJsZSB0byBk
byB0aGlzIHdpdGhvdXQgdGhlICNpZmRlZiwgYnV0IFdvcmtRdWV1ZSArIEJpbmFyeVNlbWFwaG9y
ZSBpc24ndCBnb29kIGVub3VnaCBzaW5jZQogICAgIC8vIG11bHRpcGxlIHJlcXVlc3RzIHRvIGNs
ZWFyIHRoZSBjYWNoZSBjYW4gY29tZSBpbiBiZWZvcmUgcHJldmlvdXMgcmVxdWVzdHMgY29tcGxl
dGUsIGFuZCB3ZSBuZWVkIHRvIHdhaXQgZm9yIGFsbCBvZiB0aGVtLgogICAgIC8vIEluIHRoZSBm
dXR1cmUgdXNpbmcgV29ya1F1ZXVlIGFuZCBhIGNvdW50aW5nIHNlbWFwaG9yZSB3b3VsZCB3b3Jr
LCBhcyB3b3VsZCBXb3JrUXVldWUgc3VwcG9ydGluZyB0aGUgbGliZGlzcGF0Y2ggY29uY2VwdCBv
ZiAid29yayBncm91cHMiLgotICAgIGRpc3BhdGNoX2dyb3VwX3QgbV9jbGVhckNhY2hlRGlzcGF0
Y2hHcm91cCB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9ncm91cF90PiBt
X2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDYwYWY5M2RkZjUxZGU3OTAzMjY0NTQ2
YzZiMDM0YmExYjViYTU3MmUuLjVmYmU4MWQ2ODZiOWM3NGQ3ZGViOTY4NTY0MDM4MTNmZTY3ZWRm
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTE5MSw5ICsxOTEsOSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1l
IG1vZGlmaWVkUwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCkKLSAgICAgICAgbV9j
bGVhckNhY2hlRGlzcGF0Y2hHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgICAg
ICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9ncm91
cF9jcmVhdGUoKSk7CiAKLSAgICBhdXRvIGdyb3VwID0gbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91
cDsKKyAgICBhdXRvIGdyb3VwID0gbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cC5nZXQoKTsKICAg
ICBkaXNwYXRjaF9ncm91cF9hc3luYyhncm91cCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bWFrZUJsb2NrUHRyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlm
aWVkU2luY2UsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewogICAgICAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGZvckVhY2hO
ZXR3b3JrU2Vzc2lvbihbbW9kaWZpZWRTaW5jZSwgJmFnZ3JlZ2F0b3JdKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IGI1ZTBkMWEzZDUxMjUzYTUwMDNkZTY1ZTU4Njk3
OWU0ZDhjMmQwODAuLmIwZjlhNTliYjJjMDgzNzg1Yzg1OWNiNzAxNTkxOGEzYTY0MTE2MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzTWFjLm1tCkBAIC05Nyw5ICs5Nyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7CiAgICAgaWYgKG1fY2xlYXJD
YWNoZURpc3BhdGNoR3JvdXApIHsKLSAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2NsZWFy
Q2FjaGVEaXNwYXRjaEdyb3VwLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwotICAgICAgICBkaXNw
YXRjaF9yZWxlYXNlKG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXApOwotICAgICAgICBtX2NsZWFy
Q2FjaGVEaXNwYXRjaEdyb3VwID0gMDsKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2Ns
ZWFyQ2FjaGVEaXNwYXRjaEdyb3VwLmdldCgpLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOworICAg
ICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gbnVsbHB0cjsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA0ZjZiMTg0ZmY0MGQ5OTI4
OGViNjA2MGE3YzU4ODZiMzczNmM0YjgzLi42ZTM2N2Q1Yjg0YzdmZmUyNjc2MGY3YjBlZjRlZjZh
MWI0OGU5YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ1OCwxMCArNDU5LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxSZWNlaXZlU291cmNlKCk7CiAKICAgICBtYWNoX3Bv
cnRfdCBtX3NlbmRQb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vf
dCBtX3NlbmRTb3VyY2UgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfc291
cmNlX3Q+IG1fc2VuZFNvdXJjZTsKIAogICAgIG1hY2hfcG9ydF90IG1fcmVjZWl2ZVBvcnQgeyBN
QUNIX1BPUlRfTlVMTCB9OwotICAgIGRpc3BhdGNoX3NvdXJjZV90IG1fcmVjZWl2ZVNvdXJjZSB7
IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9zb3VyY2VfdD4gbV9yZWNlaXZl
U291cmNlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBtX3BlbmRpbmdPdXRn
b2luZ01hY2hNZXNzYWdlOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2UgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29u
bmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVj
dGlvbkNvY29hLm1tCmluZGV4IDhkOWNkZTA4ZjQ2NzE0MWE5MGQ4ZWFmOWRkNzg1Yjc5MDM4ZDU4
ZWUuLjkwYmRmMjQ4NzYyNDljZWYxNzFiYzkyZDc2NmU3NGUwMmQ0MTg0NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAg
LTE0Nyw4ICsxNDcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAg
ICAgQVNTRVJUKG1fcmVjZWl2ZVBvcnQpOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXIgcG9ydHMu
Ci0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3NlbmRTb3VyY2UpOwotICAgIGRpc3BhdGNo
X3JlbGVhc2UobV9zZW5kU291cmNlKTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1fc2Vu
ZFNvdXJjZS5nZXQoKSk7CiAgICAgbV9zZW5kU291cmNlID0gbnVsbHB0cjsKICAgICBtX3NlbmRQ
b3J0ID0gTUFDSF9QT1JUX05VTEw7CiAKQEAgLTE1Nyw4ICsxNTYsNyBAQCB2b2lkIENvbm5lY3Rp
b246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6Y2FuY2VsUmVjZWl2
ZVNvdXJjZSgpCiB7Ci0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3JlY2VpdmVTb3VyY2Up
OwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9yZWNlaXZlU291cmNlKTsKKyAgICBkaXNwYXRjaF9z
b3VyY2VfY2FuY2VsKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSk7CiAgICAgbV9yZWNlaXZlU291cmNl
ID0gbnVsbHB0cjsKICAgICBtX3JlY2VpdmVQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiB9CkBAIC0y
MzAsMTEgKzIyOCwxMSBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgIC8vIENoYW5nZSB0
aGUgbWVzc2FnZSBxdWV1ZSBsZW5ndGggZm9yIHRoZSByZWNlaXZlIHBvcnQuCiAgICAgc2V0TWFj
aFBvcnRRdWV1ZUxlbmd0aChtX3JlY2VpdmVQb3J0LCBNQUNIX1BPUlRfUUxJTUlUX0xBUkdFKTsK
IAotICAgIG1fcmVjZWl2ZVNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hf
U09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1
ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRs
ZXIobV9yZWNlaXZlU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyldIHsKKyAgICBtX3JlY2VpdmVTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NvdXJj
ZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAw
LCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKSk7CisgICAgZGlzcGF0Y2hfc291
cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIHJlY2VpdmVTb3VyY2VFdmVu
dEhhbmRsZXIoKTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5k
bGVyKG1fcmVjZWl2ZVNvdXJjZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBy
ZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2Nh
bmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKICNpZiAhUExBVEZP
Uk0oV0FUQ0hPUykKICAgICAgICAgbWFjaF9wb3J0X3VuZ3VhcmQobWFjaF90YXNrX3NlbGYoKSwg
cmVjZWl2ZVBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9wb3J0X2NvbnRleHRfdD4ocHJvdGVj
dGVkVGhpcy5nZXQoKSkpOwogI2VuZGlmCkBAIC0yNDMsMTAgKzI0MSwxMCBAQCBib29sIENvbm5l
Y3Rpb246Om9wZW4oKQogCiAgICAgcmVmKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9jb25uZWN0
aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSwgXnsKLSAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1f
cmVjZWl2ZVNvdXJjZSk7CisgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3JlY2VpdmVTb3VyY2Uu
Z2V0KCkpOwogCiAgICAgICAgIGlmIChtX3NlbmRTb3VyY2UpCi0gICAgICAgICAgICBkaXNwYXRj
aF9yZXN1bWUobV9zZW5kU291cmNlKTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3Nl
bmRTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGRlcmVmKCk7CiAgICAgfSk7CkBAIC0zNzEsMjAg
KzM2OSwyMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVlUmVm
PEVuY29kZXI+JiYgZW5jb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNv
dXJjZSgpCiB7Ci0gICAgbV9zZW5kU291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQ
QVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1NFTkQsIG1fc2VuZFBvcnQsIERJU1BBVENIX01BQ0hfU0VO
RF9ERUFEIHwgRElTUEFUQ0hfTUFDSF9TRU5EX1BPU1NJQkxFLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+
ZGlzcGF0Y2hRdWV1ZSgpKTsKKyAgICBtX3NlbmRTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3Bh
dGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9TRU5ELCBtX3NlbmRQ
b3J0LCBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCB8IERJU1BBVENIX01BQ0hfU0VORF9QT1NTSUJM
RSwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSkpOwogICAgIG1faXNJbml0aWFs
aXppbmdTZW5kU291cmNlID0gdHJ1ZTsKIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfcmVnaXN0
cmF0aW9uX2hhbmRsZXIobV9zZW5kU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyldIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lzdHJhdGlvbl9oYW5k
bGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSA9IGZhbHNlOwogICAgICAgICBy
ZXN1bWVTZW5kU291cmNlKCk7CiAgICAgfSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVu
dF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fc2VuZFNv
dXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAg
ICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHVuc2lnbmVkIGxvbmcgZGF0YSA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtX3NlbmRTb3Vy
Y2UpOworICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2Rh
dGEobV9zZW5kU291cmNlLmdldCgpKTsKIAogICAgICAgICBpZiAoZGF0YSAmIERJU1BBVENIX01B
Q0hfU0VORF9ERUFEKSB7CiAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKQEAgLTQw
MCw3ICszOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNlKCkKIAog
ICAgIGlmIChNQUNIX1BPUlRfVkFMSUQobV9zZW5kUG9ydCkpIHsKICAgICAgICAgbWFjaF9wb3J0
X3Qgc2VuZFBvcnQgPSBtX3NlbmRQb3J0OwotICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2Nh
bmNlbF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfc291cmNlX3Nl
dF9jYW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIF57CiAgICAgICAgICAgICAvLyBS
ZWxlYXNlIG91ciBzZW5kIHJpZ2h0LgogICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNh
ZmVseShzZW5kUG9ydCk7CiAgICAgICAgIH0pOwpAQCAtNTgwLDcgKzU3OCw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgICAgICAgICAgZGVh
bGxvY2F0ZVNlbmRSaWdodFNhZmVseShwcmV2aW91c05vdGlmaWNhdGlvblBvcnQpOwogCiAgICAg
ICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwotICAgICAgICAgICAgZGlzcGF0Y2hfcmVz
dW1lKG1fc2VuZFNvdXJjZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5kU291
cmNlLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJD
aGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNo
ZWNrcy5tbQppbmRleCA1YjY4ODRiZmYyOWY4ZjRmOGRkYWMzNWVlZmNlZTgyZTg1ZDVjMjkzLi41
ODc2MDkwNjA4ZDlhZmM4OGUzNDFjNWRmZjczZjViMzEwZWZhODk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAt
MzEsNiArMzEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hhc2hN
YXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09TT2Jq
ZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CkBAIC0xMTksNyArMTIx
LDExIEBAIHN0YXRpYyBib29sIGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBhcHBXYXNM
aW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0ICE9IGtUQ0NB
Y2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAKLXN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdfaXRw
UXVldWU7CitzdGF0aWMgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mIGl0cFF1ZXVlKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4+IGl0cFF1ZXVlOworICAgIHJldHVybiBpdHBRdWV1ZTsKK30KIAogdm9pZCBkZXRlcm1pbmVJ
VFBTdGF0ZSgpCiB7CkBAIC0xMzAsMTQgKzEzNiwxMyBAQCB2b2lkIGRldGVybWluZUlUUFN0YXRl
KCkKICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IElUUFN0YXRlOjpJbml0aWFsaXppbmc7CiAgICAg
Ym9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIgPSBsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RL
VmVyc2lvbjo6Rmlyc3RXaXRoU2Vzc2lvbkNsZWFudXBCeURlZmF1bHQpOwogCi0gICAgZ19pdHBR
dWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBDaGVja1F1
ZXVlIiwgTlVMTCk7CisgICAgaXRwUXVldWUoKSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0cENoZWNrUXVldWUiLCBOVUxMKSk7CiAKLSAg
ICBkaXNwYXRjaF9hc3luYyhnX2l0cFF1ZXVlLCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5k
bGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhpdHBRdWV1ZSgpLmdldCgpLCBbYXBw
V2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgZ19jdXJyZW50
SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9uT3JBZnRl
ciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRlOjpEaXNh
YmxlZDsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAgICAg
ICAgZGlzcGF0Y2hfcmVsZWFzZShnX2l0cFF1ZXVlKTsKLSAgICAgICAgICAgIGdfaXRwUXVldWUg
PSBudWxscHRyOworICAgICAgICAgICAgaXRwUXVldWUoKSA9IG51bGxwdHI7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpAQCAtMTQ5LDEwICsxNTQsMTAgQEAgYm9vbCBkb2VzQXBwSGF2ZUlUUEVu
YWJsZWQoKQogICAgIGlmIChnX2N1cnJlbnRJVFBTdGF0ZSA+IElUUFN0YXRlOjpJbml0aWFsaXpp
bmcpCiAgICAgICAgIHJldHVybiBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxl
ZDsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGdfaXRwUXVldWUpOworICAgIFJFTEVBU0VfQVNTRVJU
KGl0cFF1ZXVlKCkpOwogCiAgICAgX19ibG9jayBib29sIGlzSVRQRW5hYmxlZDsKLSAgICBkaXNw
YXRjaF9zeW5jKGdfaXRwUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhpdHBRdWV1ZSgpLmdl
dCgpLCBeewogICAgICAgICBpc0lUUEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBT
dGF0ZTo6RW5hYmxlZDsKICAgICB9KTsKICAgICByZXR1cm4gaXNJVFBFbmFibGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCmluZGV4IGFiMDYz
NGYxYWM2NTUzNzczNDgxODUwMmE5MTQzZDFhZGQxMTQ4MzguLjc4ZWFmZjQ1MjA0ODdjYzNkY2Uz
MDVlMDU0NDFiMTZjNzc4MTc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgc2V0QXBw
bGVMYW5ndWFnZXNQcmVmZXJlbmNlKCkKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFu
ZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiB7Ci0gICAgc3RhdGljIHhwY19vYmplY3RfdCBw
cmlvcml0eUJvb3N0TWVzc2FnZSA9IG51bGxwdHI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4+IHByaW9yaXR5Qm9vc3RNZXNzYWdlOwogCiAgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKICAgICB4cGNfY29u
bmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVudCkgewpA
QCAtMTE4LDE5ICsxMTgsMTggQEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4
cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgICAgIGR1cDIoZmQsIFNUREVS
Ul9GSUxFTk8pOwogCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1bmN0aW9u
UHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
ICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNz
YWdlLmdldCgpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxhbmd1YWdl
c1ByZWZlcmVuY2UoKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIGlm
IChwcmlvcml0eUJvb3N0TWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgeHBjX3JlbGVhc2Uo
cHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHByaW9yaXR5Qm9vc3RNZXNz
YWdlLmdldCgpID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gTGVh
ayBhIGJvb3N0IG9udG8gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgICAgICAgICAgaWYgKCFzdHJj
bXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAicHJl
LWJvb3RzdHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJvb3N0TWVz
c2FnZSk7Ci0gICAgICAgICAgICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UgPSB4cGNfcmV0YWlu
KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIXByaW9yaXR5Qm9vc3RNZXNzYWdlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSA9IGV2ZW50
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2Vz
KGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRl
eCAyNTgzYzkzNTFiOTc4NGM0MzliOTk4MDk2Yzc3MzFlNDM1ZDQyMjMyLi42Y2VmODdmM2M0NjQx
NzlkZjc2NjJmZGMzOTkyM2EwNjEzZTIxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHNoYXJlYWJs
ZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCiAgICAgc3RhdGljX2Nh
c3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVm
KCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCiB9CiAgICAgCi1zdGF0
aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFy
ZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVm
PiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiBy
ZXNvdXJjZSkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKICAgICAg
ICAgcmVzb3VyY2UsCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVh
dGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvCiAg
ICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKICAgICB9OwogCi0gICAgcmV0dXJuIENGQWxs
b2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KTsKKyAgICByZXR1cm4g
YWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkp
OwogfQogI2VuZGlmCiAKQEAgLTg1LDggKzg1LDggQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiAgICAgcmVmKCk7IC8vIEJhbGFu
Y2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgogCiAjaWYgVVNF
KENGKQotICAgIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gZGVhbGxvY2F0b3IgPSBhZG9wdENG
KGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcykpOwotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRh
KCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwor
ICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9y
KHRoaXMpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNO
b0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGRhdGEoKSksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgp
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAjZWxp
ZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRl
c19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggZDAyNDI5
MDhkNGM5ZjRmZmQxODViZDhlMWE1MzA1ODlkZjhhZWUwMy4uMzM3YzkzNjQ3MzI4NTdkMjcxMTRm
OTQwMDRjY2QyYzUxOTk2ODI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAKQEAgLTU0MSw4ICs1NDEsNyBAQCBib29sIGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEFTU0VSVChkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgQ0ZOdW1iZXJS
ZWYgbnVtYmVyID0gQ0ZOdW1iZXJDcmVhdGUoMCwgbnVtYmVyVHlwZSwgZGF0YVJlZmVyZW5jZS5k
YXRhKCkpOwotICAgIHJlc3VsdCA9IGFkb3B0Q0YobnVtYmVyKTsKKyAgICByZXN1bHQgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKDAsIG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0YSgpKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU4MSwxMSArNTgwLDExIEBAIGJvb2wgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCBk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5nLCBmYWxz
ZSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAs
IGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgZW5jb2RpbmcsIGZh
bHNlKSk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
c3VsdCA9IGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXN1bHQgPSBXVEZNb3ZlKHN0cmluZyk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggNjNlM2FmNDFkYTA1NTc5
YmI1NDJhMmU2Njc4ODk4MzEwZTU1ZDliOC4uYTM5NDA2NDlmZGJmMmRlZDQ4NGE0ZTI2MTAyYjky
MWNjMjgwNzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2Fj
eVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBzdGF0aWMg
TWFsbG9jUHRyPHVpbnQ4X3QsIEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyTWFsbG9jPiBlbmNvZGVT
ZXNzaW9uSGlzdG9yeUVudAogCiBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gZW5jb2RlU2Vz
c2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkKIHsKLSAg
ICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0RlYWxsb2NhdG9yOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+PiBmYXN0TWFsbG9jRGVh
bGxvY2F0b3I7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTQwMSwxMyArNDAxLDEzIEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShjb25zdCBG
cmFtZVN0YXRlJiBmcmFtCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgbnVsbHB0ciwgLy8g
cHJlZmVycmVkU2l6ZQogICAgICAgICB9OwotICAgICAgICBmYXN0TWFsbG9jRGVhbGxvY2F0b3Ig
PSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7CisgICAg
ICAgIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKSA9IGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKICAgICB9KTsKIAogICAgIHNpemVf
dCBidWZmZXJTaXplOwogICAgIGF1dG8gYnVmZmVyID0gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRy
eURhdGEoZnJhbWVTdGF0ZSwgYnVmZmVyU2l6ZSk7CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRkRh
dGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmxlYWtQ
dHIoKSwgYnVmZmVyU2l6ZSwgZmFzdE1hbGxvY0RlYWxsb2NhdG9yKSk7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1
ZmZlci5sZWFrUHRyKCksIGJ1ZmZlclNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKS5n
ZXQoKSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRGlj
dGlvbmFyeShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENGU3RyaW5nUmVmLCBDRlR5
cGVSZWY+PiBrZXlWYWx1ZVBhaXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KaW5kZXggMmRm
MjMzNWQ5YzVhZGZhYjVhNmJlOTJjOWM3N2MyMDU3YjY5OWUyYS4uYmRkYmIwODlkZWViNWVmZWYy
Y2U3MmVmMjNlYTNjOTYwMTA0MDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0z
OSw3ICszOSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVt
b3J5U3RvcmFnZVNlc3Npb24oKQogICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKSB7
CiAgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJvY2Vz
c1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKICAgICAgICAgYXV0byBjb29raWVB
Y2NlcHRQb2xpY3kgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb29raWVBY2NlcHRQb2xpY3koKTsKLSAgICAgICAgYXV0byBzdG9yYWdl
U2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGljeSkpOwor
ICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2Vw
dFBvbGljeSk7CiAgICAgICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3Rv
cmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdl
U2Vzc2lvbi5nZXQoKSkpOwogICAgICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBtYWtl
VW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vz
c2lvbklEKCksIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2Up
LCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oCmluZGV4IDA2MWYyNjY5OGQ4ZmFjY2ExMzcxNzA0NGVkYTI2MDg2MWM2ODhhZGYuLmQ0ODJi
NDJlMGMyNTQxMjc3Yzk0YTQ1ZGZjZmI1YjAxOTQ1MTExNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTcsNyArMTU4
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9kZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZVdoaWxlV2FpdGluZ0Zv
ckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9OwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Nv
bW1pdFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fY29tbWl0UXVl
dWU7CiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IG1fcGVuZGluZ0JhY2tpbmdTdG9y
ZUZsdXNoZXI7CiAKICAgICBIYXNoU2V0PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvcio+IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA5OTkyODcxYjFjMDBlODIx
MGNiNjZkZWJkMjhlZTZiMDhkYjEyNGQ1Li5hMzg4MTMzNWE0ZWY3ZGEwYTI4ZmI3NjAyYjhhMjk3
YTgwNjg1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCkBAIC02NSw3ICs2NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBX
CiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKHRydWUpOwogICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJkcmF3aW5nIGFyZWEgcm9vdCIp
OwogCi0gICAgbV9jb21taXRRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLkNvbW1pdFF1ZXVl
IiwgbnVsbHB0cik7CisgICAgbV9jb21taXRRdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuQ29tbWl0UXVldWUiLCBudWxscHRyKSk7CiAKICAgICAvLyBJbiBvcmRlciB0
byBlbnN1cmUgdGhhdCB3ZSBnZXQgYSB1bmlxdWUgRGlzcGxheVJlZnJlc2hNb25pdG9yIHBlci1E
cmF3aW5nQXJlYSAobmVjZXNzYXJ5IGJlY2F1c2UgRGlzcGxheVJlZnJlc2hNb25pdG9yCiAgICAg
Ly8gaXMgZHJpdmVuIGJ5IHRoaXMgY2xhc3MpLCBnaXZlIGVhY2ggcGFnZSBhIHVuaXF1ZSBEaXNw
bGF5SUQgZGVyaXZlZCBmcm9tIFdlYlBhZ2UncyB1bmlxdWUgSUQuCkBAIC03OCwxMCArNzgsNyBA
QCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEo
V2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgICAgICBzZXRWaWV3RXhwb3NlZFJlY3Qodmll
d0V4cG9zZWRSZWN0KTsKIH0KIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYSgpCi17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2NvbW1pdFF1
ZXVlKTsKLX0KK1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OnNldE5lZWRzRGlzcGxheSgpCiB7CkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBtX3BlbmRpbmdCYWNraW5n
U3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIGF1dG8gcGFnZUlEID0g
bV93ZWJQYWdlLmlkZW50aWZpZXIoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVl
LCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBh
Z2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUuZ2V0KCksIFtiYWNraW5n
U3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAg
ICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9ub3Rvbmlj
VGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwLmNwcAppbmRleCBhODY3MWZmMTk2MTBiNjFiZDY5ZGZmMjRkNTY2YjZiYzI1MGQ5ZTNl
Li45NWVmMjI5NGE5NzZmODQ0ZWMzYTQ5NWViYmJlM2IzZmQ5NmE3NGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXAuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAvLyBTZXNzaW9uIG5h
bWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0
byBiZSB1bmRlciB0aGUgbGltaXQsIG90ZWhyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsg
KHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUg
PSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0g
ICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vz
c2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewpAQCAtOTAsNyArOTAsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklELCBjbwogCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24g
PSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgp
KTsKICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihjZklkZW50
aWZpZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdJT1MubW0KaW5kZXggY2JkNTBiNmZjYTg1NTcxNWMyYzdjYzNkNjAxMmFiZDE4MmU0
MDI4MC4uOTdjMzc5Y2VlNjZiNDkwODY5MWFmMGRmMWVjYjY2OWJlM2I2NWQyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtNDks
NiArNDksNyBAQAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYk5TVmlld0V4dHJhcy5oPgogI2lt
cG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTksMTEgKzYwLDEx
IEBAIHN0YXRpYyBpbnQgY29tcGFyZVBhZ2VSZWN0cyhjb25zdCB2b2lkICprZXksIGNvbnN0IHZv
aWQgKmFycmF5KTsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX1dJRFRIX0lOU0VUICAgICA9IDQu
MCAqIDIuMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX0hFSUdIVF9JTlNFVCAgICA9IDQuMCAq
IDIuMDsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZShD
R0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVm
PiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxw
aGEpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBncmF5U3BhY2UgPSBDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VHcmF5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+PiBncmF5U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZUdyYXkoKSk7CiAgICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10gPSB7IHdoaXRl
LCBhbHBoYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGdyYXlTcGFjZSwgY29tcG9uZW50
cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UuZ2V0KCkuZ2V0
KCksIGNvbXBvbmVudHMpKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIFdlYlBERlZpZXcgewpAQCAt
ODMsMTQgKzg0LDE0IEBAICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIAogKyAoQ0dD
b2xvclJlZilzaGFkb3dDb2xvcgogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNoYWRvd0NvbG9y
ID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKLSAgICByZXR1cm4g
c2hhZG93Q29sb3I7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9y
UmVmPj4gc2hhZG93Q29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDAsIDIuMCAv
IDMpOworICAgIHJldHVybiBzaGFkb3dDb2xvci5nZXQoKS5nZXQoKTsKIH0KIAogKyAoQ0dDb2xv
clJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBiYWNrZ3JvdW5k
Q29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDIwNC4wIC8gMjU1LCAxKTsKLSAg
ICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8Q0dDb2xvclJlZj4+IGJhY2tncm91bmRDb2xvciA9IGNyZWF0ZUNHQ29sb3JXaXRoRGV2
aWNlV2hpdGUoMjA0LjAgLyAyNTUsIDEpOworICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3IuZ2V0
KCkuZ2V0KCk7CiB9CiAKIC8vIFRoaXMgaXMgYSBzZWNyZXQgcHJvdG9jb2wgZm9yIFdlYkRhdGFT
b3VyY2UgYW5kIFdlYkZyYW1lVmlldyB0byBvZmZlciB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG8g
c29tZXRoaW5nIGRpZmZlcmVudCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCmluZGV4IDFmYjUxOGY4NzRiODNlNjRhZmU1ZmY0
OThkMWVmNTFjZTMxODVmYzguLmFlYjRkOGYxNmZkZGIwMjU1MTA4YjJhMDBlYjlmNjcyMTVmMTc2
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERp
Y3Rpb25hcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVtZW50
RGljdGlvbmFyeS5tbQpAQCAtNTAsMTEgKzUwLDE1IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBsb29rdXBUYWJsZSA9IE5VTEw7
CitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBsb29rdXBUYWJsZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPj4gbG9va3VwVGFibGU7CisgICAgcmV0dXJuIGxvb2t1cFRhYmxlOworfQogCiBzdGF0
aWMgdm9pZCBhZGRMb29rdXBLZXkoTlNTdHJpbmcgKmtleSwgU0VMIHNlbGVjdG9yKQogewotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGxvb2t1cFRhYmxlLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
a2V5LCBzZWxlY3Rvcik7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobG9va3VwVGFibGUoKS5n
ZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgc2VsZWN0b3IpOwogfQogCiBzdGF0aWMg
dm9pZCBjYWNoZVZhbHVlRm9yS2V5KGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUs
IHZvaWQgKnNlbGYpCkBAIC03NiwxMCArODAsMTAgQEAgKyAodm9pZClpbml0aWFsaXplCiAKICsg
KHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRhYmxlCiB7Ci0gICAgaWYgKGxvb2t1cFRhYmxlKQorICAg
IGlmIChsb29rdXBUYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb29rdXBUYWJsZSA9
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRkNv
cHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKKyAgICBsb29rdXBUYWJsZSgp
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCkpOwogCiAgICAg
YWRkTG9va3VwS2V5KFdlYkVsZW1lbnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5vZGUpKTsK
ICAgICBhZGRMb29rdXBLZXkoV2ViRWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dlYkZyYW1l
KSk7CkBAIC0xMjUsNyArMTI5LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpX2ZpbGxD
YWNoZQogewotICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24obG9va3VwVGFibGUsIGNhY2hl
VmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilzZWxmKTsKKyAgICBDRkRpY3Rpb25hcnlBcHBs
eUZ1bmN0aW9uKGxvb2t1cFRhYmxlKCkuZ2V0KCksIGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRn
ZSB2b2lkKilzZWxmKTsKICAgICBfY2FjaGVDb21wbGV0ZSA9IFlFUzsKIH0KIApAQCAtMTQ5LDEy
ICsxNTMsMTIgQEAgLSAoaWQpb2JqZWN0Rm9yS2V5OihpZClrZXkKICAgICBpZiAodmFsdWUgfHwg
X2NhY2hlQ29tcGxldGUgfHwgW19uaWxWYWx1ZXMgY29udGFpbnNPYmplY3Q6a2V5XSkKICAgICAg
ICAgcmV0dXJuIHZhbHVlOwogCi0gICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VMPihj
b25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSwgKF9fYnJp
ZGdlIENGVHlwZVJlZilrZXkpKSk7CisgICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VM
Pihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSgpLmdl
dCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWtleSkpKTsKICAgICBpZiAoIXNlbGVjdG9yKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIHZhbHVlID0gW3NlbGYgcGVyZm9ybVNlbGVjdG9yOnNlbGVj
dG9yXTsKIAotICAgIE5TVUludGVnZXIgbG9va3VwVGFibGVDb3VudCA9IENGRGljdGlvbmFyeUdl
dENvdW50KGxvb2t1cFRhYmxlKTsKKyAgICBOU1VJbnRlZ2VyIGxvb2t1cFRhYmxlQ291bnQgPSBD
RkRpY3Rpb25hcnlHZXRDb3VudChsb29rdXBUYWJsZSgpLmdldCgpKTsKICAgICBpZiAodmFsdWUp
IHsKICAgICAgICAgaWYgKCFfY2FjaGUpCiAgICAgICAgICAgICBfY2FjaGUgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bG9va3VwVGFibGVDb3VudF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDAwOGZiYmEy
OGYyMTk4ZjhiMDkxYmIzYzNhMmVlN2M4MzIwMzU1Yi4uNWIwZWU4YTNhYzhjMzMzYjZlZTM0NGNk
ZDljM2I1NTc2NWMyNmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTI2MywyOCArMTI2MywzMiBAQCBzdGF0aWMgQ0ZTZXRDYWxsQmFja3MgTm9u
UmV0YWluaW5nU2V0Q2FsbGJhY2tzID0gewogICAgIENGSGFzaAogfTsKIAotc3RhdGljIENGTXV0
YWJsZVNldFJlZiBhbGxXZWJWaWV3c1NldDsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0
UmVmPiYgYWxsV2ViVmlld3NTZXQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPj4gYWxsV2ViVmlld3NTZXQ7CisgICAgcmV0dXJuIGFsbFdl
YlZpZXdzU2V0OworfQogCiArICh2b2lkKV9tYWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6
KFNFTClzZWxlY3RvcgogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCisgICAgaWYgKCFhbGxX
ZWJWaWV3c1NldCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBbKF9fYnJpZGdlIE5TTXV0YWJs
ZVNldCAqKWFsbFdlYlZpZXdzU2V0IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9y
XTsKKyAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0KCkuZ2V0KCkg
bWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdOwogfQogCiAtICh2b2lkKV9yZW1v
dmVGcm9tQWxsV2ViVmlld3NTZXQKIHsKLSAgICBpZiAoYWxsV2ViVmlld3NTZXQpCi0gICAgICAg
IENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2Vs
Zik7CisgICAgaWYgKGFsbFdlYlZpZXdzU2V0KCkpCisgICAgICAgIENGU2V0UmVtb3ZlVmFsdWUo
YWxsV2ViVmlld3NTZXQoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAog
LSAodm9pZClfYWRkVG9BbGxXZWJWaWV3c1NldAogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQp
Ci0gICAgICAgIGFsbFdlYlZpZXdzU2V0ID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZO
b25SZXRhaW5pbmdTZXRDYWxsYmFja3MpOworICAgIGlmICghYWxsV2ViVmlld3NTZXQoKSkKKyAg
ICAgICAgYWxsV2ViVmlld3NTZXQoKSA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEws
IDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpKTsKIAotICAgIENGU2V0U2V0VmFsdWUoYWxs
V2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgQ0ZTZXRTZXRWYWx1
ZShhbGxXZWJWaWV3c1NldCgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwogfQog
CiBAZW5kCkBAIC0yMjMwLDcgKzIyMzQsNyBAQCArICh2b2lkKWNsb3NlQWxsV2ViVmlld3MKICAg
ICBXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cygpOwog
CiAgICAgLy8gVGhpcyB3aWxsIGNsb3NlIHRoZSBXZWJWaWV3cyBpbiBhIHJhbmRvbSBvcmRlci4g
Q2hhbmdlIHRoaXMgaWYgY2xvc2Ugb3JkZXIgaXMgaW1wb3J0YW50LgotICAgIGZvciAoV2ViVmll
dyAqd2ViVmlldyBpbiBbKF9fYnJpZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQgYWxsT2JqZWN0
c10pCisgICAgZm9yIChXZWJWaWV3ICp3ZWJWaWV3IGluIFsoX19icmlkZ2UgTlNTZXQgKilhbGxX
ZWJWaWV3c1NldCgpLmdldCgpIGFsbE9iamVjdHNdKQogICAgICAgICBbd2ViVmlldyBjbG9zZV07
CiB9CiAKQEAgLTY5MTEsNyArNjkxNSw3IEBAICsgKEJPT0wpX2RpZFNldENhY2hlTW9kZWwKICsg
KFdlYkNhY2hlTW9kZWwpX21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlCiB7CiAgICAgV2ViQ2Fj
aGVNb2RlbCBjYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwotICAgIE5T
RW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2ViVmlld3NTZXQg
b2JqZWN0RW51bWVyYXRvcl07CisgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gWyhOU011
dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIG9iamVjdEVudW1lcmF0b3JdOwogICAg
IHdoaWxlIChXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW2VudW1lcmF0b3IgbmV4dE9i
amVjdF0gcHJlZmVyZW5jZXNdKQogICAgICAgICBjYWNoZU1vZGVsID0gc3RkOjptYXgoY2FjaGVN
b2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdKTsKICAgICByZXR1cm4gY2FjaGVNb2RlbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5k
ZXggNTExYTkyYjcyZDFjYTBkMjMzZDQ5MWMzMDAxOTYzNDMxY2M2NGQyYS4uOGYyNzE2MmJiYWYx
OGVlMWMxMThiOTUxMWY1MWI0N2U0NDg1Nzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTE5Nyw5ICsxOTcsNyBAQCBIUkVTVUxU
IFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFnKiogb3Jp
Z2lucykKICAgICBmb3IgKGF1dG8mIGNvcmVPcmlnaW4gOiBjb3JlT3JpZ2lucykKICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5SXRlbS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGNvcmVPcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKS5wdHIoKSkpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVm
PiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7Ci0KKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGF1dG8ga2V5ID0gTWFy
c2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKTsK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFy
cmF5SXRlbS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAKaW5kZXggZWEwYjY3NTFjNTU0ZTgyN2RjOTgyNTVjZDRhNzE1N2YxZDVhZDJiMi4u
MWQyNzAyYWRiMDgyNzdjNDQ1MDhkM2RmYmRjNDI3OTg2ZGNmYzIyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBI
UkVTVUxUIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50
aWFsKiBjcmVkZW50aWFsLCBfSW5fbwogICAgIGlmICghd2ViQ3JlZGVudGlhbCkKICAgICAgICAg
cmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRp
YWwoKSkpOworICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbC0+
Y3JlZGVudGlhbCgpKTsKIAogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERvd25s
b2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIHdl
YkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VS
ZWYoKSk7CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGUKICAgICBp
ZiAoIUNGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxsZW5nZSkp
IHsKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChlbXB0
eVN0cmluZygpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFs
bGVuZ2UpKSk7CiAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0Yo
Y3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBj
cmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50
aWFsKG1fZG93bmxvYWQuZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5k
ZXJlci5jcHAKaW5kZXggZDViZWVmODJlOTkwODkxYTcyZTZiNGZjNGJlMzc4ODMwYWI2YWM5MC4u
ZmYzNGFkMDczN2EyNmQyYTE3M2VjZGJiOWI5NjdiNTllMTZiZTYyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0zNzAsMTQgKzM3MCwxMiBAQCBzdGF0aWMgYm9v
bCBwcmVwYXJlRGV2aWNlKElEaXJlY3QzRERldmljZTkqIGRldmljZSwgY29uc3QgQ0dSZWN0JiBi
b3VuZHMsIElEaXJlYwogCiBzdGF0aWMgQ0dSZWN0IHVwZGF0ZUJvdW5kcyhDQVJlbmRlclVwZGF0
ZSogdXBkYXRlKQogewotICAgIENHU1JlZ2lvbk9iaiByZ24gPSBDQVJlbmRlclVwZGF0ZUNvcHlS
ZWdpb24odXBkYXRlKTsKKyAgICBhdXRvIHJnbiA9IGFkb3B0Q0YoQ0FSZW5kZXJVcGRhdGVDb3B5
UmVnaW9uKHVwZGF0ZSkpOwogICAgIGlmICghcmduKQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVy
bzsKIAogICAgIENHUmVjdCByZXN1bHQ7Ci0gICAgQ0dFcnJvciBlcnJvciA9IENHU0dldFJlZ2lv
bkJvdW5kcyhyZ24sICZyZXN1bHQpOwotICAgIENHU1JlbGVhc2VSZWdpb24ocmduKTsKLQorICAg
IENHRXJyb3IgZXJyb3IgPSBDR1NHZXRSZWdpb25Cb3VuZHMocmduLmdldCgpLCAmcmVzdWx0KTsK
ICAgICByZXR1cm4gZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzID8gcmVzdWx0IDogQ0dSZWN0WmVy
bzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3Ry
aW5ncy5jcHAKaW5kZXggYjQxNjhiZjg0MTkxZThhMTE0MzlkOTAwMzJmZTg5ZWE0ZDI2ZjcwNC4u
YmM5ZTIwMzY5MGU3MDNmZjQ2OGU0MTE0ZTY5ZWNhZWQ1NDM3ZmI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC02NywxNyAr
NjcsMTcgQEAgc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCBmcmFtZXdvcmtMb2NTdHJpbmdzKCkK
IGNsYXNzIExvY2FsaXplZFN0cmluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxp
emVkU3RyaW5nKTsKIHB1YmxpYzoKLSAgICBMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgc3Ry
aW5nKQotICAgICAgICA6IG1fY2ZTdHJpbmcoc3RyaW5nKQorICAgIExvY2FsaXplZFN0cmluZyhS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiYgc3RyaW5nKQorICAgICAgICA6IG1fY2ZTdHJpbmcoV1RG
TW92ZShzdHJpbmcpKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyhzdHJpbmcsIHN0cmluZyk7
CisgICAgICAgIEFTU0VSVChtX2NmU3RyaW5nKTsKICAgICB9CiAKICAgICBvcGVyYXRvciBMUENU
U1RSKCkgY29uc3Q7Ci0gICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBt
X2NmU3RyaW5nOyB9CisgICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBt
X2NmU3RyaW5nLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0ZTdHJpbmdSZWYgbV9jZlN0cmlu
ZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fY2ZTdHJpbmc7CiAgICAgbXV0YWJsZSBT
dHJpbmcgbV9zdHJpbmc7CiB9OwogCkBAIC04Niw3ICs4Niw3IEBAIExvY2FsaXplZFN0cmluZzo6
b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBtX3N0cmluZy53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKIAotICAgIG1f
c3RyaW5nID0gbV9jZlN0cmluZzsKKyAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmcuZ2V0KCk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IG1fc3RyaW5nLmxlbmd0aCgpOyBpKysp
CiAgICAgICAgIGlmIChtX3N0cmluZ1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAxXSA9PSAn
JScgfHwgKGkgPiAyICYmIG1fc3RyaW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdbaSAtIDJd
ID49ICcxJyAmJiBtX3N0cmluZ1tpIC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAzXSA9PSAn
JScpKSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JT
dHJpbmdzQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5ncwogICAgIHJl
dHVybiBzdHJpbmdzQnVuZGxlLT5idW5kbGU7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5
TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0
cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQorc3RhdGljIFJldGFuUHRyPENGU3RyaW5n
UmVmPiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NC
dW5kbGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIp
OwogCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRT
dHJpbmdGcm9tQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAo
IWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgQ0ZTdHJpbmdSZWYgcmVz
dWx0ID0gQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CisgICAgYXV0byByZXN1bHQg
PSBhZG9wdENGKENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApKTsKIAogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxp
emFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1
cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmlu
ZGV4IDBhZmZiNDVhMTdmYmJjOThjNzBhZWU4MmI1ZWI5ZWVhNTJjNjhmMDcuLjViYmRlY2FhZTUz
OTYyMTUzMzhiOTE0MGIyY2I2YjBmMDRjZGIzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTExNyw3ICsxMTcsMTEgQEAgc3RhdGljIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gc3RyaW5nVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGUHJvcGVydHlM
aXN0UmVmIHYKIAogLy8gV2ViUHJlZmVyZW5jZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgQ0ZEaWN0aW9u
YXJ5UmVmIGRlZmF1bHRTZXR0aW5nczsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiYgZGVmYXVsdFNldHRpbmdzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4+IGRlZmF1bHRTZXR0aW5nczsKKyAgICByZXR1cm4gZGVmYXVs
dFNldHRpbmdzOworfQogCiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFdlYlByZWZlcmVuY2VzOjpt
X2FwcGxpY2F0aW9uSWQgPSBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsKICNlbmRp
ZgpAQCAtMjE0LDE1NyArMjE4LDE1NyBAQCBDRlN0cmluZ1JlZiBXZWJQcmVmZXJlbmNlczo6YXBw
bGljYXRpb25JZCgpCiB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRp
bmdzKCkKIHsKICNpZiBVU0UoQ0YpCi0gICAgaWYgKGRlZmF1bHRTZXR0aW5ncykKKyAgICBpZiAo
ZGVmYXVsdFNldHRpbmdzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgZGVmYXVsdHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpOworICAgIGF1dG8gZGVmYXVsdHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgSU5JVElBTElaRV9ERUZBVUxUX1BSRUZFUkVOQ0VT
X0RJQ1RJT05BUllfRlJPTV9HRU5FUkFURURfUFJFRkVSRU5DRVM7CiAKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVyZW5jZUtl
eSksIENGU1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ291
cmllciBOZXciKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTYW5zU2VyaWZG
b250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIkNvbWljIFNhbnMgTVMiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5z
IE1TIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQ
aWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9u
dFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNl
S2V5KSwgQ0ZTVFIoIjkiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYiKSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhl
ZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVyZW5j
ZUtleSksIENGU1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBD
RlNUUigiQ291cmllciBOZXciKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMg
TmV3IFJvbWFuIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q3Vy
c2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZhbnRhc3lGb250
UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQaWN0b2dyYXBoRm9udFByZWZl
cmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIjkiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYiKSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERlZmF1
bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAgIFN0cmlu
ZyBkZWZhdWx0RGVmYXVsdEVuY29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEiLCAiVGhl
IGRlZmF1bHQsIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nIG9uIFdpbmRvd3MiKSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRUZXh0RW5j
b2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkUHJpbnRCYWNrZ3Jv
dW5kc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZh
U2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxh
Z3NQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU1JlZ2lv
bnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdl
c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2FkU2l0ZUljb25z
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSksIENG
U1RSKCIxODAwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0Vu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVLZXlFcXVp
dmFsZW50c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93c1VSTHNJblRvb2xUaXBzUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RSKCIxIikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQREZTY2Fs
ZUZhY3RvclByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgZGVmYXVsdERl
ZmF1bHRFbmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldEVuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRMb2NhdGlvblBy
ZWZlcmVuY2VLZXkpLCBDRlNUUigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRKYXZhRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEph
dmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdFJ1
bnRpbWVGbGFnc1ByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRE
YXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TG9jYWxTdG9yYWdl
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEV4cGVyaW1lbnRhbE5vdGlmaWNh
dGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFpvb21zVGV4dE9ubHlQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZ1ByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdERpc3BsYXlJbWFnZXNLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExvYWRT
aXRlSWNvbnNLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbklu
dGVydmFsS2V5KSwgQ0ZTVFIoIjE4MDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRSZXNwZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0U2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0UERGRGlzcGxheU1vZGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjEiKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBERlNjYWxl
RmFjdG9yUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0bGVzUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBsaW5rQmVoYXZpb3JTdHJpbmdSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1h
dCgwLCAwLCBDRlNUUigiJWQiKSwgV2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEVkaXRhYmxl
TGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5nZXQoKSk7
Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SGlzdG9y
eUl0ZW1MaW1pdEtleSksIENGU1RSKCIxMDAwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpLCBDRlNUUigi
NyIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SWNv
bkRhdGFiYXNlTG9jYXRpb25LZXkpLCBDRlNUUigiIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZvbnRTbW9v
dGhpbmdDb250cmFzdFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGlj
eVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoQWxs
b3dDb250aW51b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXNQYWdl
Q2FjaGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5KSwg
bGlua0JlaGF2aW9yU3RyaW5nUmVmLmdldCgpKTsKKworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5SXRlbUxpbWl0S2V5KSwgQ0ZTVFIo
IjEwMDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdEtleSksIENGU1RSKCI3IikpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VM
b2NhdGlvbktleSksIENGU1RSKCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIp
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
Rm9udFNtb290aGluZ0NvbnRyYXN0UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViR3JhbW1hckNoZWNraW5nRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihBbGxvd0NvbnRpbnVvdXNTcGVsbENoZWNraW5n
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkpLCBD
RlNUUigiIikpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZU1vZGVsUmVmID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiksIFdlYkNh
Y2hlTW9kZWxEb2N1bWVudFZpZXdlcikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYu
Z2V0KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYuZ2V0KCkpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXV0aG9yQW5kVXNl
clN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQYWludE5h
dGl2ZUNvbnRyb2xzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250
cm9sc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRTaG93RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3BhdGlh
bE5hdmlnYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNwYXRpYWxO
YXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEROU1ByZWZldGNoaW5n
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlcXVl
c3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0Rp
c3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRBbGxvd0Rpc3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEN1c3RvbUVsZW1lbnRzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRDdXN0b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRX
ZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxp
bmVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0N1c3RvbVByb3BlcnRpZXNB
bmRWYWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU0N1c3RvbVBy
b3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TGlua1By
ZWxvYWRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExpbmtQcmVsb2FkRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQcmVsb2FkaW5nRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRWaXN1YWxWaWV3cG9ydEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0VmlzdWFsVmlld3BvcnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q1NT
T01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRD
U1NPTVZpZXdTY3JvbGxpbmdBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVz
aXplT2JzZXJ2ZXJFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlc2l6ZU9i
c2VydmVyRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Ntb290aFNj
cm9sbGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U21v
b3RoU2Nyb2xsaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvcmVNYXRoTUxF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0V2ViU1FMRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENT
U0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdENTU0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdE92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0T3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwogCi0gICAgZGVmYXVsdFNldHRpbmdzID0gZGVmYXVsdHM7CisgICAgZGVmYXVs
dFNldHRpbmdzKCkgPSBXVEZNb3ZlKGRlZmF1bHRzKTsKICNlbmRpZgogfQogCkBAIC0zNzksNyAr
MzgzLDcgQEAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNlczo6dmFs
dWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQogICAgIGlmICh2YWx1ZSkKICAgICAgICAgcmV0dXJu
IHZhbHVlOwogCi0gICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5n
cywga2V5KTsKKyAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVmYXVsdFNldHRpbmdz
KCkuZ2V0KCksIGtleSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFZhbHVlRm9yS2V5
KENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUpCkBAIC02MjAsNyArNjI0
LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZl
cmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0KQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKG9taXREZWZhdWx0cykgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIGRlZmF1bHRW
YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncywga2V5c1tpXSk7Cisg
ICAgICAgICAgICBDRlR5cGVSZWYgZGVmYXVsdFZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGVmYXVsdFNldHRpbmdzKCkuZ2V0KCksIGtleXNbaV0pOwogICAgICAgICAgICAgaWYgKGRlZmF1
bHRWYWx1ZSAmJiBDRkVxdWFsKGRlZmF1bHRWYWx1ZSwgdmFsdWVzW2ldKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY2NDk5MjUxMzE5YjEyNGFmOWJlYzY0MzI5MjUxODc4MDBh
NzZkNzkuLjAwMGQ2OTQ2ZDVjN2ExYWQ0MjQ2NjRiZDJlMjIzNDk1Y2FiM2I4MTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBA
QAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcDoKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRleHQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oOgorICAg
ICAgICAoQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQpOgor
ICAgICAgICAoQml0bWFwQ29udGV4dDo6Qml0bWFwQ29udGV4dCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoV2ViVGhyZWFkTG9ja0Fm
dGVyRGVsZWdhdGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHA6CisgICAgICAgIChjcmVhdGVCaXRtYXBD
b250ZXh0RnJvbVdlYlZpZXcpOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBJbWFnZURpZmYvY2cvUGxhdGZvcm1JbWFn
ZUNHLmNwcDoKKyAgICAgICAgKEltYWdlRGlmZjo6UGxhdGZvcm1JbWFnZTo6cGl4ZWxzIGNvbnN0
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgor
ICAgICAgICAoV1RSOjpjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZSk6CisgICAgICAgIChXVFI6
OmNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6CisKIDIwMjEtMDMtMTAgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW1dQRV1bR1RL
XSBJbnRyb2R1Y2UgTmVlZHNVbmJyYW5kZWRVc2VyQWdlbnQgcXVpcmsgYW5kIHVzZSBpdCBmb3Ig
YWNjb3VudHMuZ29vZ2xlLmNvbSwgZG9jcy5nb29nbGUuY29tLCBhbmQgZHJpdmUuZ29vZ2xlLmNv
bQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENH
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKaW5k
ZXggNWJjMDQwM2I4MTFiYzY1NWRkMjBmYTJkNDA5MjI5OWYwZTQwN2Q4NS4uOGU2ZGQ1ZmVkN2Qy
YzJlYjM5YmNlZWJiMWQ0NjhjY2VkNTkyOGNkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgUmVmUHRyPEJp
dG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHQoc2l6ZV90IHBpeGVsc1dpZGUsIHNpemVf
dCBwaXhlbHNIaWdoLAogICAgIAogICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFwIGluIHRoZSBk
ZXZpY2UgY29sb3Igc3BhY2UgcHJldmVudHMgYW55IGNvbG9yIGNvbnZlcnNpb24gd2hlbiB0aGUg
aW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCiAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3Bh
Y2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkhvc3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9y
U3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBC
eXRlT3JkZXIzMkhvc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgV1RGTG9nQWx3
YXlzKCJEdW1wUmVuZGVyVHJlZTogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKCVwLCAlenUsICV6dSwg
OCwgJXp1LCAlcCwgMHgleCkgZmFpbGVkXG4iLCBidWZmZXIsIHBpeGVsc0hpZ2gsIHBpeGVsc1dp
ZGUsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKICAgICAgICAgZnJlZShidWZmZXIp
OwpAQCAtMTM0LDYgKzEzNCw2IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBD
b250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5
QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZlciwgY29udGV4dCk7CisgICAgcmV0dXJuIEJp
dG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZlciwgV1RG
TW92ZShjb250ZXh0KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4
ZWxEdW1wU3VwcG9ydENHLmgKaW5kZXggNDEyNGIwY2FlZGNlNzM4ZjQ2NDZjZGMzOGE3YjUxNmEx
YTc2MWMwOC4uYjc5NGIyMTk4ZWQ4YTBhYTE0NzJkMzBiOTNhM2FiZmFjYzcwMjdhNiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKQEAgLTQ3LDkgKzQ3
LDkgQEAgdHlwZWRlZiBIQklUTUFQIFBsYXRmb3JtQml0bWFwQnVmZmVyOwogCiBjbGFzcyBCaXRt
YXBDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Qml0bWFwQ29udGV4dD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Qml0bWFwQ29udGV4dD4gY3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENv
bnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkK
KyAgICBzdGF0aWMgUmVmPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRD
b250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgUmV0YWluUHRyPENHQ29udGV4dFJl
Zj4mJiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFw
Q29udGV4dChidWZmZXIsIGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Qml0bWFwQ29udGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpKTsKICAgICB9CiAKICAgICB+
Qml0bWFwQ29udGV4dCgpCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKIAot
ICAgIEJpdG1hcENvbnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKKyAgICBCaXRtYXBDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZl
ciwgUmV0YWluUHRyPENHQ29udGV4dFJlZj4mJiBjb250ZXh0KQogICAgICAgICA6IG1fYnVmZmVy
KGJ1ZmZlcikKLSAgICAgICAgLCBtX2NvbnRleHQoYWRvcHRDRihjb250ZXh0KSkKKyAgICAgICAg
LCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2RjZTVhYzVjMzI5MWEzNjJl
NDdlYjQyMGU3NzcyMWU4MmI1YjRjNC4uYjUxZTFhZWZlMmRmZjZhY2VlYjc2NDNiM2I0MzJmMjFl
NDA3OWJhZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpA
QCAtMTAwLDYgKzEwMCw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9y
dCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAt
MTgxMCwyMCArMTgxMSwxOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRT
dGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogLy8gbG9jayB0byBw
cmV2ZW50IHBvdGVudGlhbGx5IHJlLWVudGVyaW5nIFdlYkNvcmUuCiBzdGF0aWMgdm9pZCBXZWJU
aHJlYWRMb2NrQWZ0ZXJEZWxlZ2F0ZUNhbGxiYWNrc0hhdmVDb21wbGV0ZWQoKQogewotICAgIGRp
c3BhdGNoX3NlbWFwaG9yZV90IGRlbGVnYXRlU2VtYXBob3JlID0gZGlzcGF0Y2hfc2VtYXBob3Jl
X2NyZWF0ZSgwKTsKKyAgICBhdXRvIGRlbGVnYXRlU2VtYXBob3JlID0gYWRvcHRPU09iamVjdChk
aXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRlKDApKTsKICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAg
ICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChkZWxlZ2F0ZVNlbWFwaG9yZSk7CisgICAgICAg
IGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCkpOwogICAg
IH0pOwogCi0gICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRlU2VtYXBo
b3JlLCBESVNQQVRDSF9USU1FX05PVykpIHsKKyAgICB3aGlsZSAoZGlzcGF0Y2hfc2VtYXBob3Jl
X3dhaXQoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCksIERJU1BBVENIX1RJTUVfTk9XKSkgewogICAg
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRS
dW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBk
aXN0YW50UGFzdF1dOwogICAgICAgICB9CiAgICAgfQogCiAgICAgV2ViVGhyZWFkTG9jaygpOwot
Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShkZWxlZ2F0ZVNlbWFwaG9yZSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4u
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwCmlu
ZGV4IGE5YmE2OTE4MzExOGJiODMyM2M4ZDQ5YjFmZDMzOWE1MWY1MzliNjAuLjM5NWQzMDI3Yjlk
ODdlYTg5NTZlNmIwMDA4N2M2MjE0OGEyNjdkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAgUmVmUHRy
PEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2Ny
ZWVuLCBib29sIGluY3JlbWUKIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0Io
KSk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5m
by5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBjb2xv
clNwYWNlLmdldCgpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QgfCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LCBp
bmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogI2VsaWYgVVNFKENBSVJP
KSAKICAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVh
dGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNoYXIqKWluZm8uYm1CaXRzLCBDQUlST19GT1JNQVRfQVJH
QjMyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgaW5mby5ibVdpZHRoQnl0ZXMpOyAKQEAg
LTExMiw1ICsxMTEsNSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4
dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIGF1dG8gY29udGV4
dCA9IHJlbmRlclRhcmdldC5nZXQoKTsKICNlbmRpZiAKIAotICAgIHJldHVybiBCaXRtYXBDb250
ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIGNvbnRleHQpOwor
ICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4
dChiaXRtYXAsIFdURk1vdmUoY29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvSW1hZ2VE
aWZmL0ltYWdlRGlmZi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvSW1hZ2VEaWZm
L0ltYWdlRGlmZi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4NTRmMjJkYmFmYjVm
YjI2ZTU4MmQ3ZTU5NjQ4MTNiODllZWU5MWQuLjk2NDE2MzdlZDFlMDcyYzFmOGNjMjZiMTk3ZjNi
ZTJkNGE0MjBjNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3Nyw2ICsxNzcsNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDMxREY0MkM2
MUVCQkJCQjkwMDk2RUQ0NCAvKiBJbWFnZURpZmYueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE3IjsKIAkJ
CX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xODQsNiArMTg1LDcgQEAKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAz
MURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251Kysx
NyI7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xOTEsNiArMTkzLDcgQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAzMURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQg
PSAiZ251KysxNyI7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CmRpZmYgLS1n
aXQgYS9Ub29scy9JbWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcCBiL1Rvb2xzL0ltYWdl
RGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCmluZGV4IGYwM2MzNTc5MmFkMGQzNDQxZWZlODVh
ZGRkYmYwN2U3Yzc2ZjUxZGMuLjA0ZDFmNGYzZWE0NzUwYTE4ODEyOTRlYzA2M2Q5ZmIwZjBkNzM3
MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCisr
KyBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKICNpZmRlZiBfV0lOMzIKICNpbmNsdWRlIDx3aW5zb2NrMi5oPgpAQCAtMTQyLDkgKzE0Myw4
IEBAIHVuc2lnbmVkIGNoYXIqIFBsYXRmb3JtSW1hZ2U6OnBpeGVscygpIGNvbnN0CiAgICAgc2l6
ZV90IHJvd0J5dGVzID0gd2lkdGggKiA0OwogCiAgICAgbV9idWZmZXIgPSBjYWxsb2MoaGVpZ2h0
LCByb3dCeXRlcyk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRD
cmVhdGUobV9idWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdlR2V0Q29s
b3JTcGFjZShtX2ltYWdlKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0Jp
dG1hcEJ5dGVPcmRlcjMySG9zdCk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENH
UmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2UpOwotICAgIENGUmVsZWFzZShj
b250ZXh0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZShtX2J1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNw
YWNlKG1faW1hZ2UpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCks
IENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2UpOwogICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZlcik7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCmluZGV4IDAxYzUzMWE5
YjZhY2U4ZTgxNjk0OGY2NzZjZTYzMWY1Mjc5NGI2YzQuLjRlYzljMjBlOTgwZjVlMDdlZmYzMzM2
OGFmOTgxZjViOGI0OTdiMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cv
VGVzdEludm9jYXRpb25DRy5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0
SW52b2NhdGlvbkNHLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiAKIG5hbWVzcGFjZSBXVFIgewog
Ci1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlQ0dDb250ZXh0
RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIHsKICAgICBzaXplX3QgcGl4ZWxzV2lkZSA9
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlKTsKQEAgLTUzLDE1ICs1MywxNSBAQCBzdGF0aWMgQ0dDb250ZXh0UmVm
IGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCiAKICAgICAvLyBD
cmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHNob3VsZCBwcmV2
ZW50IGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIgdmlldyBp
cyBkcmF3biBpbnRvIGl0LgogICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBj
b2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29s
b3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAw
LCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoKSwgaW1hZ2UpOworICAgIENHQ29udGV4dERyYXdJbWFn
ZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gp
LCBpbWFnZSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0YXRpYyBDR0NvbnRleHRSZWYg
Y3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFnZSkKK3N0YXRpYyBSZXRh
aW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoV0tJbWFnZVJlZiB3
a0ltYWdlKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKFdLSW1hZ2VDcmVhdGVDR0ltYWdl
KHdrSW1hZ2UpKTsKICAgICByZXR1cm4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoaW1hZ2Uu
Z2V0KCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhl
bHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFNuYXBzaG90UmVzdWx0VHlwZSBzbmFwc2hvCiAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoImR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkOiBp
bWFnZSBpcyBudWxsXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2tJbWFnZSkpOwor
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKHdrSW1hZ2UpOwogICAg
ICAgICBpbWFnZVNpemUgPSBXS0ltYWdlR2V0U2l6ZSh3a0ltYWdlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTbmFwc2hvdFJlc3VsdFR5cGU6OldlYlZpZXc6CkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQo
U25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG8KICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiZHVt
cFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdlIGlzIG51bGxcbiIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQgPSBhZG9wdENGKGNyZWF0
ZUNHQ29udGV4dEZyb21DR0ltYWdlKGltYWdlLmdldCgpKSk7CisgICAgICAgIGNvbnRleHQgPSBj
cmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlU2l6
ZSA9IFdLU2l6ZU1ha2UoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhl
aWdodChpbWFnZS5nZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422846</attachid>
            <date>2021-03-10 10:50:22 -0800</date>
            <delta_ts>2021-03-10 11:13:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310105021.patch</filename>
            <type>text/plain</type>
            <size>219955</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uMjAyNjc5NGExMDkzZGYzOWZkYmI0ZGQyMDIyZWFhNjA0NTc0NDMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTM1NDEsOSArMzU0Miw4IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBhdXRvJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNp
bmdsZXRvbigpOwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElT
UEFUQ0hfUVVFVUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERp
c3BhdGNoUXVldWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAg
ICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJq
c2Mgc2hlbGwgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
KTsKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92
ZShxdWV1ZSkpOwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGlj
YWxTdGF0ZSA9IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxT
eW5jaHJvbm91cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9u
b3VzPjo6Y3JlYXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRi
NzdiLi4zN2I3MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0
RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4m
JiBxdWV1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3Bh
dGNoX3JldGFpbihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1
ZXVlOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYw
N2NkNjMxZDJlY2Y1ODgzYzU0N2M0N2M0Mi4uMzU2ODc3ZTlmMGQwYzY0M2NiZWFjZDYxMzdjZmVl
MzJlOTk0ZjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTM4
LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBvbGljeSA6IHVp
bnQ4X3QgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3Bh
dGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RGlzcGF0Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRp
ZgogCiAgICAgY2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMTAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1
ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2
OTRiZDhjM2Y1YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNGEzYjdkYWZhZTc4ZjFhNmQ5
YzQ2M2IyY2M2YTAzZGE5NGE0MTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjZWxzZQogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAjZW5kaWYKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMs
IFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmKTsKIAogI2lmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQorICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKTsgfQogI2Vsc2UKICAg
ICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlm
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+
IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbHNlCiAgICAgUnVuTG9vcCogbV9ydW5Mb29wOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tCmluZGV4IDA4OGIxOWNjMTBhNjVlZmZlNWQ0ZTlmYzI3YTA4MWMyNTZiYTM3NmYuLjVjMGY1
YjI1NDRmN2JhNWVlNGQ3MjUwNjA3ZjdmZDZmYmQwNDQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC02OCwxMyArNjgs
MTMgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogICAgIGlmIChtX2lu
c3RhbGxlZCB8fCB0aW1lckV2ZW50U291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBeewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1
dG8gbWVtb3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9OT1JNQUwgfCBE
SVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfQ1JJ
VElDQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX1dBUk4gfCBESVNQQVRD
SF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX0NSSVRJQ0FMOwogI2Vsc2UgLy8gUExBVEZPUk0o
TUFDKQogICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJF
U1NVUkVfQ1JJVElDQUw7CiAjZW5kaWYKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJj
ZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJF
U1NVUkUsIDAsIG1lbW9yeVN0YXR1c0ZsYWdzLCBtX2Rpc3BhdGNoUXVldWUpOworICAgICAgICBt
ZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRD
SF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgbWVtb3J5U3RhdHVzRmxhZ3MsIG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSk7CiAKICAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9o
YW5kbGVyKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UsIF57CiAgICAgICAgICAgICBhdXRvIHN0
YXR1cyA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNl
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAgICAgfSk7CiAKICAgICAvLyBBbGxvdyBzaW11bGF0aW9uIG9mIG1lbW9yeSBwcmVzc3Vy
ZSB3aXRoICJub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5IgotICAgIG5vdGlmeV9y
ZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBd
LCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNo
KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIsICZub3RpZnlUb2tlbnNbMF0sIG1fZGlzcGF0Y2hRdWV1
ZS5nZXQoKSwgXihpbnQpIHsKICNpZiBFTkFCTEUoRk1XX0ZPT1RQUklOVF9DT01QQVJJU09OKQog
ICAgICAgICBhdXRvIGZvb3RwcmludEJlZm9yZSA9IHBhZ2VzUGVyVk1UYWcoKTsKICNlbmRpZgpA
QCAtMTI0LDE1ICsxMjQsMTUgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwo
KQogICAgICAgICBsb2dGb290cHJpbnRDb21wYXJpc29uKGZvb3RwcmludEJlZm9yZSwgZm9vdHBy
aW50QWZ0ZXIpOwogI2VuZGlmCiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57
CiAgICAgICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIAotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7
CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeS5iZWdp
biIsICZub3RpZnlUb2tlbnNbMV0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAg
ICAgICAgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIH0pOwotICAgIG5vdGlm
eV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRv
a2Vuc1syXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9k
aXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRva2Vuc1syXSwgbV9k
aXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQ
cmVzc3VyZSgpOwogICAgIH0pOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAgICAgaWYgKCFtX2luc3RhbGxlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgaWYgKG1lbW9y
eVByZXNzdXJlRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5j
ZWwobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSk7CiAgICAgICAgICAgICBtZW1vcnlQcmVzc3Vy
ZUV2ZW50U291cmNlID0gbnVsbHB0cjsKQEAgLTE2NCw4ICsxNjQsOCBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OmhvbGRPZmYoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0
Y2hRdWV1ZSwgXnsKLSAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9j
cmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZSk7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgICAgICB0
aW1lckV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9USU1FUiwgMCwgMCwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKICAgICAgICAgaWYgKHRp
bWVyRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KHRpbWVy
RXZlbnRTb3VyY2UsIHRoaXMpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmaW5hbCBhcmd1
bWVudCBgc19taW5pbXVtSG9sZE9mZlRpbWUuc2Vjb25kcygpYCBzZWVtcyB3cm9uZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCAzNzczYzc5ODUyZWJiMjFiZDA2
ZDU2N2IwMTdjZjdjOTMyMjUzZGU2Li40OWNkYmI1ODgwYmIxNjZiNWY3NWU1NmRkYzc5YzFjZmEx
YTU0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCkBAIC0zMywx
NCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICB9KS5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNl
Y29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5v
c2Vjb25kc0FzPGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24p
XSB7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
ZHVyYXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgp
KTsKIH0KQEAgLTQ5LDEzICs0OSwxMiBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICBkaXNwYXRj
aF9xdWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENI
X1FVRVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CiAgICAgYXR0ciA9IGRp
c3BhdGNoX3F1ZXVlX2F0dHJfbWFrZV93aXRoX3Fvc19jbGFzcyhhdHRyLCBUaHJlYWQ6OmRpc3Bh
dGNoUU9TQ2xhc3MocW9zKSwgMCk7Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKG5hbWUsIGF0dHIpOwotICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KG1fZGlzcGF0
Y2hRdWV1ZSwgdGhpcyk7CisgICAgbV9kaXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cikpOworICAgIGRpc3BhdGNoX3NldF9jb250ZXh0
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OmNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9u
cywgV1RGOjpGdW5jdGlvbjx2b2lkKHNpemVfdCBpbmRleCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzY3Y2MzYTk2M2E1MGVjMjFhZWI4
NjcyNTA5Y2Q2YjI5MTUzZGM4Yi4uMzBlZjM2MDU3MTQ0Y2IyYTFiZjU2MGI1NGVjNmE2OGI2YWEw
NTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTExLDE2
ICsxMTEsMTMgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAgICAgICAg
IHJldHVybiBzaXplOwogICAgIH0KIAotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGUo
KQotICAgIHsKLSAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxw
dHIsIHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0
ZSwgZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwotICAgICAgICByZXR1cm4gQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpOwotICAgIH0KLQogICAgIHN0YXRpYyBDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IoKQogICAgIHsKLSAgICAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciA9IGNyZWF0ZSgpOwotICAgICAgICByZXR1cm4gYWxsb2NhdG9yOworICAgICAg
ICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxwdHIsIHJldGFpbiwg
cmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0ZSwgZGVhbGxvY2F0
ZSwgcHJlZmVycmVkU2l6ZSB9OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKKyAgICAgICAgfSgpKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci5nZXQoKS5nZXQoKTsKICAgICB9CiAKIH0KQEAgLTEzOCwxNSArMTM1LDE1
IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQog
ICAgIEFTU0VSVCghU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nKTsKICAg
ICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSB0aGlzOwogCi0gICAg
Q0ZTdHJpbmdSZWYgc3RyaW5nOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwog
ICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFj
dGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZh
bHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgZWxzZQotICAgICAgICBzdHJpbmcgPSBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9y
TnVsbCk7CisgICAgICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNo
YXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAvLyBDb3Jl
Rm91bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIg
Y3VycmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAg
IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOworICAgIHJldHVybiBzdHJpbmc7CiB9CiAKIC8vIE9u
IFN0cmluZ0ltcGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0
aGUgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggZmZlNjNhNmMzOWI4NDZjMWU1OTc2MTVkYmM0NzJmZDczZTIwMDY2
OC4uNGIwMWVjMzc5ZWJhOWZjZTFkOGE0ODY5MWM1OGE4MDViODM4NDZhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0
ICJXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIgogI2ltcG9ydCAib2JqY19pbnN0YW5jZS5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CisjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewpAQCAtMzksMjIgKzQxLDI2IEBAIE9i
amNDbGFzczo6T2JqY0NsYXNzKENsYXNzU3RydWN0UHRyIGFDbGFzcykKIHsKIH0KIAotc3RhdGlj
IENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2xhc3Nlc0J5SXNBID0gMDsKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGNsYXNzZXNCeUlzQSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gY2xhc3Nl
c0J5SXNBOworICAgIHJldHVybiBjbGFzc2VzQnlJc0E7Cit9CiAKIHN0YXRpYyB2b2lkIF9jcmVh
dGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCFjbGFzc2VzQnlJc0EpCi0g
ICAgICAgIGNsYXNzZXNCeUlzQSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwg
TlVMTCwgTlVMTCk7CisgICAgaWYgKCFjbGFzc2VzQnlJc0EoKSkKKyAgICAgICAgY2xhc3Nlc0J5
SXNBKCkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwg
TlVMTCkpOwogfQogCiBPYmpjQ2xhc3MqIE9iamNDbGFzczo6Y2xhc3NGb3JJc0EoQ2xhc3NTdHJ1
Y3RQdHIgaXNhKQogewogICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpOwogCi0g
ICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFzcyo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilpc2EpKSk7CisgICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFz
cyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSgp
LmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSkpKTsKICAgICBpZiAoIWFDbGFzcykgewog
ICAgICAgICBhQ2xhc3MgPSBuZXcgT2JqY0NsYXNzKGlzYSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7
CisgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGNsYXNzZXNCeUlzQSgpLmdldCgpLCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKWlzYSwgYUNsYXNzKTsKICAgICB9CiAKICAgICByZXR1cm4gYUNsYXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAppbmRleCA4NWU5YmM0
YWE0ZWRkZmI0NDUzOTRiMGU4ZDM5NjA3ZjQyZDEyNGVmLi4wODhmMDJlOGRhMjQ0MDZhOTAzZjlk
YTA5OGE2MWI4MjQ3MGU3Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nt
YXJ0UmVwbGFjZUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZUNGLmNwcApAQCAtMzYsMzMgKzM2LDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBnZXRTbWFydFNldChib29sIGlzUHJldmlvdXNDaGFy
YWN0ZXIpCiB7Ci0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwcmVTbWFydFNl
dDsKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHBvc3RTbWFydFNldDsKLSAg
ICBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgc21hcnRTZXQgPSBpc1ByZXZpb3VzQ2hhcmFjdGVy
ID8gcHJlU21hcnRTZXQgOiBwb3N0U21hcnRTZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+PiBwcmVTbWFydFNldDsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZUNoYXJhY3RlclNldFJlZj4+
IHBvc3RTbWFydFNldDsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmPiYg
c21hcnRTZXQgPSBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gcHJlU21hcnRTZXQuZ2V0KCkgOiBwb3N0
U21hcnRTZXQuZ2V0KCk7CiAgICAgaWYgKCFzbWFydFNldCkgewotICAgICAgICBzbWFydFNldCA9
IENGQ2hhcmFjdGVyU2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKLSAgICAg
ICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21hcnRTZXQsIGlzUHJldmlv
dXNDaGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7IikgOiBDRlNUUigiKV0uLDs6P1wnIVwi
JSotL30iKSk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQsIENGQ2hhcmFj
dGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGluZSkp
OyAgICAgICAgCisgICAgICAgIHNtYXJ0U2V0ID0gYWRvcHRDRihDRkNoYXJhY3RlclNldENyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgICAgICBDRkNoYXJhY3RlclNldEFk
ZENoYXJhY3RlcnNJblN0cmluZyhzbWFydFNldC5nZXQoKSwgaXNQcmV2aW91c0NoYXJhY3RlciA/
IENGU1RSKCIoW1wiXCcjJC8tYHsiKSA6IENGU1RSKCIpXS4sOzo/XCchXCIlKi0vfSIpKTsKKyAg
ICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldC5nZXQoKSwgQ0ZDaGFyYWN0ZXJTZXRH
ZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFdoaXRlc3BhY2VBbmROZXdsaW5lKSk7CisKICAg
ICAgICAgLy8gQWRkaW5nIENKSyByYW5nZXMKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFy
YWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgxMTAwLCAyNTYpKTsgLy8gSGFu
Z3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFy
YWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgyRTgwLCAzNTIpKTsgLy8gQ0pL
ICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYpCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MkZGMCwgNDY0
KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMsIENKSyBTeW1ib2xzLCBIaXJhZ2FuYSwgS2F0
YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vLCBLYW5idW4sICYgQm9w
b21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hh
cmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MzIwMCwgMjkzOTIpKTsgLy8g
RW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dyYXBocyAoVW5pIEhhbiAmIEV4dCBBKSwgJiBZaSAoMHgz
MjAwIC0gMHhBNENGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdl
KHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweEFDMDAsIDExMTgzKSk7IC8vIEhhbmd1bCBTeWxsYWJs
ZXMgKDB4QUMwMCAtIDB4RDdBRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJz
SW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhGOTAwLCAzNTIpKTsgLy8gQ0pLIENvbXBh
dGliaWxpdHkgSWRlb2dyYXBocyAoMHhGOTAwIC0gMHhGQTVGKQotICAgICAgICBDRkNoYXJhY3Rl
clNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweEZFMzAsIDMy
KSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0RikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhGRjAwLCAyNDApKTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYwMCAtIDB4RkZFRikK
LSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZS
YW5nZU1ha2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGggRXhudGVuc2lvbiBC
Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENG
UmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3Jh
cGhzICgweDJGODAwIC0gMHgyRkExRCkKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHgxMTAwLCAyNTYpKTsgLy8g
SGFuZ3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRD
aGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHgyRTgwLCAzNTIp
KTsgLy8gQ0pLICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYpCisgICAgICAgIENG
Q2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VN
YWtlKDB4MkZGMCwgNDY0KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMsIENKSyBTeW1ib2xz
LCBIaXJhZ2FuYSwgS2F0YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1v
LCBLYW5idW4sICYgQm9wb21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCisgICAgICAgIENGQ2hh
cmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtl
KDB4MzIwMCwgMjkzOTIpKTsgLy8gRW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dyYXBocyAoVW5pIEhh
biAmIEV4dCBBKSwgJiBZaSAoMHgzMjAwIC0gMHhBNENGKQorICAgICAgICBDRkNoYXJhY3RlclNl
dEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweEFDMDAs
IDExMTgzKSk7IC8vIEhhbmd1bCBTeWxsYWJsZXMgKDB4QUMwMCAtIDB4RDdBRikKKyAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5n
ZU1ha2UoMHhGOTAwLCAzNTIpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHhG
OTAwIC0gMHhGQTVGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdl
KHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweEZFMzAsIDMyKSk7IC8vIENKSyBDb21wYXRp
YmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0RikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRD
aGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhGRjAwLCAyNDAp
KTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYwMCAtIDB4RkZFRikKKyAgICAgICAgQ0ZD
aGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGggRXhudGVuc2lvbiBCCisgICAg
ICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENG
UmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3Jh
cGhzICgweDJGODAwIC0gMHgyRkExRCkKIAotICAgICAgICBpZiAoaXNQcmV2aW91c0NoYXJhY3Rl
cikKLSAgICAgICAgICAgIHByZVNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldCwgQ0ZDaGFyYWN0ZXJTZXRH
ZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFB1bmN0dWF0aW9uKSk7ICAgICAgIAotICAgICAg
ICAgICAgcG9zdFNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFp
c1ByZXZpb3VzQ2hhcmFjdGVyKQorICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFy
dFNldC5nZXQoKSwgQ0ZDaGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFB1
bmN0dWF0aW9uKSk7CiAgICAgfQotICAgIHJldHVybiBzbWFydFNldDsKKyAgICByZXR1cm4gc21h
cnRTZXQuZ2V0KCk7CiB9CiAKIGJvb2wgaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQoVUNo
YXIzMiBjLCBib29sIGlzUHJldmlvdXNDaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KaW5kZXggMWNkNWQ5
ZmRiOGExNDE5ZDM2N2MwODZlMGM2Y2E2M2RmZWQ2MzMyNS4uNTA5ZjIzYmFjZTFlZTVmYTYxN2Q4
NWNiZGExNTY4ZDk5MzhiODU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2Nv
YS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtMTE5LDEwICsxMTksMTAgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJlbnQgeyAwIH07CiB9OwogCi1zdGF0aWMgQ0dD
b2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQor
c3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9hdCBn
LCBmbG9hdCBiLCBmbG9hdCBhKQogewogICAgIENHRmxvYXQgY29tcG9uZW50c1s0XSA9IHsgciwg
ZywgYiwgYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCks
IGNvbXBvbmVudHMpOworICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2VSZWYoKSwgY29tcG9uZW50cykpOwogfQogCiBzdHJ1Y3QgSGlzdG9yaWNNZW1vcnlDYXRl
Z29yeUluZm8gewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAKICAgICBbbV9sYXllci5nZXQoKSBzZXRBbmNob3JQb2lu
dDpDR1BvaW50WmVyb107CiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNTY2FsZToyLjBd
OwotICAgIFttX2xheWVyLmdldCgpIHNldEJhY2tncm91bmRDb2xvcjphZG9wdENGKGNyZWF0ZUNv
bG9yKDAsIDAsIDAsIDAuOCkpLmdldCgpXTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRCYWNrZ3Jv
dW5kQ29sb3I6Y3JlYXRlQ29sb3IoMCwgMCwgMCwgMC44KS5nZXQoKV07CiAgICAgW21fbGF5ZXIu
Z2V0KCkgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdo
dCldOwogCiAgICAgb3ZlcmxheSgpLmxheWVyKCkuc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
bV9sYXllci5nZXQoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6Ok5vbmUp
OwpAQCAtMjgwLDE3ICsyODAsMTcgQEAgc3RhdGljIHZvaWQgc2hvd1RleHQoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHksIENHQ29sb3JSZWYgY29sb3IsIGMKIAogc3RhdGlj
IHZvaWQgZHJhd0dyYXBoTGFiZWwoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0
IHksIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBibGFjayA9
IGNyZWF0ZUNvbG9yKDAsIDAsIDAsIDEpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA1LCB5
IC0gMywgYmxhY2ssIHRleHQpOwotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlID0gY3JlYXRl
Q29sb3IoMSwgMSwgMSwgMSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgeCArIDQsIHkgLSA0LCB3
aGl0ZSwgdGV4dCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9y
UmVmPj4gYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBzaG93VGV4dChjb250
ZXh0LCB4ICsgNSwgeSAtIDMsIGJsYWNrLmdldCgpLmdldCgpLCB0ZXh0KTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiB3aGl0ZSA9IGNyZWF0ZUNvbG9y
KDEsIDEsIDEsIDEpOworICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA0LCB5IC0gNCwgd2hpdGUu
Z2V0KCkuZ2V0KCksIHRleHQpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3Q3B1SGlzdG9yeShDR0Nv
bnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB5MiwgUmluZ0J1ZmZl
cjxmbG9hdD4mIGhpc3RvcnkpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgY3B1Q29sb3IgPSBj
cmVhdGVDb2xvcigwLCAxLCAwLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENHQ29sb3JSZWY+PiBjcHVDb2xvciA9IGNyZWF0ZUNvbG9yKDAsIDEsIDAsIDEpOwogCi0g
ICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY3B1Q29sb3IpOwor
ICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNwdUNvbG9yLmdl
dCgpLmdldCgpKTsKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMSk7CiAKICAg
ICBpbnQgaSA9IDA7CkBAIC0zMjEsOCArMzIxLDggQEAgc3RhdGljIHZvaWQgZHJhd0dDSGlzdG9y
eShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB5MiwgUmkK
IAogICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCAxKTsKIAotICAgIHN0YXRpYyBD
R0NvbG9yUmVmIGNhcGFjaXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAwLjMsIDEpOwotICAg
IENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhcGFjaXR5Q29sb3Ip
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGNhcGFj
aXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAwLjMsIDEpOworICAgIENHQ29udGV4dFNldFN0
cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhcGFjaXR5Q29sb3IuZ2V0KCkuZ2V0KCkpOwog
CiAgICAgc2l6ZV90IGkgPSAwOwogCkBAIC0zMzUsOCArMzM1LDggQEAgc3RhdGljIHZvaWQgZHJh
d0dDSGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9h
dCB5MiwgUmkKICAgICAgICAgaSsrOwogICAgIH0pOwogCi0gICAgc3RhdGljIENHQ29sb3JSZWYg
c2l6ZUNvbG9yID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7Ci0gICAgQ0dDb250ZXh0
U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9yKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBzaXplQ29sb3IgPSBjcmVhdGVD
b2xvcigwLjYsIDAuNSwgMC45LCAxKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBzaXplQ29sb3IuZ2V0KCkuZ2V0KCkpOwogCiAgICAgaSA9IDA7CiAKQEAg
LTQ1NiwxMCArNDU2LDEwIEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtRHJh
dyhDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBDR1JlY3Qgdmlld0JvdW5kcyA9IG1fb3Zlcmxh
eS0+Ym91bmRzKCk7CiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNvbnRleHQsIHZpZXdCb3VuZHMp
OwogCi0gICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3JGb3JMYWJlbHMgPSBjcmVhdGVDb2xvcigw
LjksIDAuOSwgMC45LCAxKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMjAsIGNvbG9yRm9y
TGFiZWxzLCBtYWtlU3RyaW5nKCIgICAgICAgIENQVTogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSkpOwotICAg
IHNob3dUZXh0KGNvbnRleHQsIDEwLCAzMCwgY29sb3JGb3JMYWJlbHMsICIgIEZvb3RwcmludDog
IiArIGZvcm1hdEJ5dGVOdW1iZXIobWVtb3J5Rm9vdHByaW50KCkpKTsKLSAgICBzaG93VGV4dChj
b250ZXh0LCAxMCwgNDAsIGNvbG9yRm9yTGFiZWxzLCAiICAgRXh0ZXJuYWw6ICIgKyBmb3JtYXRC
eXRlTnVtYmVyKGRhdGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY29sb3JGb3JMYWJlbHMgPSBjcmVh
dGVDb2xvcigwLjksIDAuOSwgMC45LCAxKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMjAs
IGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCBtYWtlU3RyaW5nKCIgICAgICAgIENQVTogIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0KCksIDYsIEtlZXBU
cmFpbGluZ1plcm9zKSkpOworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCAzMCwgY29sb3JGb3JM
YWJlbHMuZ2V0KCkuZ2V0KCksICIgIEZvb3RwcmludDogIiArIGZvcm1hdEJ5dGVOdW1iZXIobWVt
b3J5Rm9vdHByaW50KCkpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgNDAsIGNvbG9yRm9y
TGFiZWxzLmdldCgpLmdldCgpLCAiICAgRXh0ZXJuYWw6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKGRh
dGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7CiAKICAgICBmbG9hdCB5ID0gNTU7CiAgICAg
Zm9yIChhdXRvJiBjYXRlZ29yeSA6IGRhdGEuY2F0ZWdvcmllcykgewpAQCAtNDgwLDggKzQ4MCw4
IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtRHJhdyhDR0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICB5IC09IDU7CiAKICAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9y
TGFiZWxzLCAiICAgIEVkZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEVk
ZW5Db2xsZWN0aW9uLCBub3cpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIwLCBj
b2xvckZvckxhYmVscywgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVP
Zk5leHRGdWxsQ29sbGVjdGlvbiwgbm93KSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIHkg
KyAxMCwgY29sb3JGb3JMYWJlbHMuZ2V0KCkuZ2V0KCksICIgICAgRWRlbiBHQzogIiArIGdjVGlt
ZXJTdHJpbmcoZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24sIG5vdykpOworICAgIHNob3dU
ZXh0KGNvbnRleHQsIDEwLCB5ICsgMjAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICAg
IEZ1bGwgR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9u
LCBub3cpKTsKIAogICAgIGRyYXdDcHVIaXN0b3J5KGNvbnRleHQsIHZpZXdCb3VuZHMuc2l6ZS53
aWR0aCAtIDcwLCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRhLmNwdSk7CiAgICAgZHJh
d0dDSGlzdG9yeShjb250ZXh0LCB2aWV3Qm91bmRzLnNpemUud2lkdGggLSAxNDAsIDAsIHZpZXdC
b3VuZHMuc2l6ZS5oZWlnaHQsIGRhdGEuZ2NIZWFwU2l6ZSwgZGF0YS5jYXRlZ29yaWVzW01lbW9y
eUNhdGVnb3J5OjpHQ0hlYXBdLmRpcnR5U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKaW5kZXggODIwM2MwMzZhMzYxMjU3
ZTUyZTgwNWQxZmY5NTg4NGM2YjQ4MWE2NC4uMzBkNWUwNTU1MTliY2EwMDNkMjQ1NDVmNDNkZDIx
MzcwY2YwMmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0Nl
cnRpZmljYXRlQ0ZXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9D
ZXJ0aWZpY2F0ZUNGV2luLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ2VydGlmaWNhdGVDRldpbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDE5ICszNSwxOSBAQCBz
dGF0aWMgdm9pZCBkZWFsbG9jQ2VydENvbnRleHQodm9pZCogcHRyLCB2b2lkKiBpbmZvKQogICAg
ICAgICBDZXJ0RnJlZUNlcnRpZmljYXRlQ29udGV4dChzdGF0aWNfY2FzdDxQQ0NFUlRfQ09OVEVY
VD4ocHRyKSk7CiB9CiAKLXN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGVDZXJ0Q29udGV4dERl
YWxsb2NhdG9yKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZUNlcnRD
b250ZXh0RGVhbGxvY2F0b3IoKQogewogICAgIENGQWxsb2NhdG9yQ29udGV4dCBhbGxvY0NvbnRl
eHQgPSB7CiAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGRlYWxsb2NDZXJ0Q29udGV4dCwg
MAogICAgIH07Ci0gICAgcmV0dXJuIENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsICZhbGxvY0NvbnRleHQpOworICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsICZhbGxvY0NvbnRleHQpKTsKIH0KIAogUmV0YWluUHRyPENG
RGF0YVJlZj4gY29weUNlcnRpZmljYXRlVG9EYXRhKFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRl
KQogewotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjZXJ0RGVhbGxvYyA9IGNyZWF0ZUNlcnRD
b250ZXh0RGVhbGxvY2F0b3IoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGQWxsb2NhdG9yUmVmPj4gY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2Nh
dG9yKCk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGVDb3B5ID0gQ2VydER1cGxpY2F0
ZUNlcnRpZmljYXRlQ29udGV4dChjZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2YoKmNlcnRpZmljYXRl
Q29weSksIGNlcnREZWFsbG9jKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0
aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2YoKmNlcnRpZmljYXRlQ29weSksIGNlcnRE
ZWFsbG9jLmdldCgpLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApp
bmRleCAwNTczMjVjMDYyZGJjZTVkODEyZmI0OGY4NDczMjU5ODYyYWVkNzQ5Li4zMDU4ZWU4MTdm
Y2RmOTU4NGNiYjM2MTcxZjRjNmZjODQ3MTI3ZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiA9IEZvbnRPcmll
bnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRXaWR0aFZhcmlhbnQ6
OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0
b1RleHRSZW5kZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKIAogI2lmIFVTRShDT1JF
X1RFWFQpCi0gICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRmb3JtRGF0YShDVEZvbnRSZWYsIGZs
b2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlx
dWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jpem9udGFs
LCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRoLCBUZXh0
UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmluZywgQ3Jl
YXRpb25EYXRhKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQbGF0Zm9ybURh
dGEoUmV0YWluUHRyPENURm9udFJlZj4mJiwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
ID0gZmFsc2UsIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IGZhbHNlLCBGb250T3JpZW50YXRpb24g
PSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBGb250V2lk
dGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gVGV4dFJlbmRlcmlu
Z01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlvbkRhdGEqID0gbnVsbHB0cik7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCBhYTMxMzJiYWJmNzAyM2NmYTVmMzgwOGMyMzhlOWFmZDNkZmJmYjg0
Li5kMDJhNDZiM2EzYWY4Y2Q3MmQ4ODA5MmI5MzhlOWYyMjcxMGVjMjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNp
ZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BhdHRlcm4qIENHUGF0dGVyblJlZjsKLXR5cGVk
ZWYgQ0dQYXR0ZXJuUmVmIFBsYXRmb3JtUGF0dGVyblB0cjsKK3R5cGVkZWYgUmV0YWluUHRyPENH
UGF0dGVyblJlZj4gUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VsaWYgVVNFKERJUkVDVDJEKQogaW50
ZXJmYWNlIElEMkQxQml0bWFwQnJ1c2g7CiB0eXBlZGVmIElEMkQxQml0bWFwQnJ1c2gqIFBsYXRm
b3JtUGF0dGVyblB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGE4MjE1Y2MwNWZmMjJkMTI5MGYx
NzA4MDE5MDU0MjFhMDE5NzA5NWEuLjc2N2E5NmJhMWViN2ViMWJlNDAyN2JmMzE4MGI3NTBmYWRl
NTNiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNjksMTAgKzY5LDExIEBACiAjZW5kaWYKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAvLyBTb2Z0LWxpbmtpbmcgaGVhZGVycyBtdXN0IGJl
IGluY2x1ZGVkIGxhc3Qgc2luY2UgdGhleSAjZGVmaW5lIGZ1bmN0aW9ucywgY29uc3RhbnRzLCBl
dGMuCiAjaW5jbHVkZSAiQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oIgpAQCAtMTU3LDcgKzE1
OCw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVm
IGxlZ2libGVPdXRwdXQoKSBjb25zdCB7IHJldHVybiBtX2xlZ2libGVPdXRwdXQuZ2V0KCk7IH0K
ICAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZv
ckxlZ2libGVNZWRpYSgpIGNvbnN0OwogI2VuZGlmCi0gICAgaW5saW5lIGRpc3BhdGNoX3F1ZXVl
X3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWU7IH0K
KyAgICBpbmxpbmUgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1
cm4gbV9ub3RpZmljYXRpb25RdWV1ZS5nZXQoKTsgfQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gdGFrZVJlcXVlc3RG
b3JLZXlVUkkoY29uc3QgU3RyaW5nJik7CkBAIC0xOTUsNyArMTk2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZXRhaW5QdHI8QVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWY+IG1fc2VsZWN0aW9uR3JvdXA7
CiAjZW5kaWYKIAotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9ub3RpZmljYXRpb25RdWV1ZTsKKyAg
ICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX25vdGlmaWNhdGlvblF1ZXVlOwogCiAg
ICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX2NhVmlkZW9MYXllcjsKICAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3ZpZGVvTGF5ZXJXcmFwcGVyOwpAQCAtMjQ0LDcgKzI0
NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogfQogI2VuZGlm
CiAKLXN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKQorc3RhdGljIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKIHsKICAgICBzdGF0
aWMgY29uc3QgQ0ZTdHJpbmdSZWYga2V5TmFtZXNbXSA9IHsKICAgICAgICAgQVZDRkFzc2V0UHJv
cGVydHlEdXJhdGlvbiwKQEAgLTI1OCwxMyArMjU5LDEzIEBAIHN0YXRpYyBDRkFycmF5UmVmIGNy
ZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKQogI2VuZGlmCiAgICAgfTsKICAgICAKLSAgICByZXR1cm4g
Q0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXplb2Yoa2V5TmFtZXMp
IC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXpl
b2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOwogfQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBtZXRhZGF0YUtleU5hbWVzKCkKIHsKLSAgICBz
dGF0aWMgQ0ZBcnJheVJlZiBrZXlzID0gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpOwotICAgIHJl
dHVybiBrZXlzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4+IGtleXMgPSBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCk7CisgICAgcmV0dXJuIGtleXMuZ2V0
KCkuZ2V0KCk7CiB9CiAKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgQVZDRlRpbWVk
TWV0YWRhdGFHcm91cC5oIGV4cG9ydGVkIHRoaXMga2V5LgpAQCAtMTM3NSw3ICsxMzc2LDcgQEAg
QVZGV3JhcHBlcjo6QVZGV3JhcHBlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiog
b3duZXIpCiAgICAgQVNTRVJUKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgPT0gZGlzcGF0Y2hf
Z2V0X2N1cnJlbnRfcXVldWUoKSk7CiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6QVZGV3Jh
cHBlciglcCkiLCB0aGlzKTsKIAotICAgIG1fbm90aWZpY2F0aW9uUXVldWUgPSBkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLm5vdGlmaWNhdGlv
blF1ZXVlIiwgMCk7CisgICAgbV9ub3RpZmljYXRpb25RdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5ub3Rp
ZmljYXRpb25RdWV1ZSIsIDApKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxF
R0FURSkKICAgICBtX3Jlc291cmNlTG9hZGVyQ2FsbGJhY2tzLnZlcnNpb24gPSBrQVZDRkFzc2V0
UmVzb3VyY2VMb2FkZXJfQ2FsbGJhY2tzVmVyc2lvbl8xOwpAQCAtMTM5NSw5ICsxMzk2LDYgQEAg
QVZGV3JhcHBlcjo6fkFWRldyYXBwZXIoKQogICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CiAgICAg
ZGVzdHJveUltYWdlR2VuZXJhdG9yKCk7CiAKLSAgICBpZiAobV9ub3RpZmljYXRpb25RdWV1ZSkK
LSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX25vdGlmaWNhdGlvblF1ZXVlKTsKLQogICAgIGlm
IChhdkFzc2V0KCkpIHsKICAgICAgICAgQVZDRkFzc2V0Q2FuY2VsTG9hZGluZyhhdkFzc2V0KCkp
OwogICAgICAgICBtX2F2QXNzZXQgPSAwOwpAQCAtMTUzMCw3ICsxNTI4LDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgYm9vbCBpbmhlcml0VVJJ
KQogCiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUob3B0aW9uc1JlZi5nZXQoKSwgQVZDRlVSTEFz
c2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5LCBjZlJlc3RyaWN0aW9ucy5nZXQoKSk7CiAKLSAg
ICBtX2F2QXNzZXQgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25z
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSkpOworICAgIG1fYXZBc3NldCA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0
Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgp
LCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpKSk7CiAKICNpZiBI
QVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAgICAgQVNTRVJUKGNhbGxiYWNrQ29u
dGV4dCgpKTsKQEAgLTE1NjcsMjQgKzE1NjUsMjQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQ
bGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogV2UgbmVlZCBhIHdheSB0byBjcmVhdGUgYSBBVlBsYXllciB3aXRob3V0IGFuIEFWUGxheWVy
SXRlbSwgc2VlIDxyZGFyOi8vcHJvYmxlbS85ODc3NzMwPi4KLSAgICBBVkNGUGxheWVyUmVmIHBs
YXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZp
Y2F0aW9uUXVldWUpOwotICAgIG1fYXZQbGF5ZXIgPSBhZG9wdENGKHBsYXllclJlZik7CisgICAg
YXV0byBwbGF5ZXJSZWYgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFu
ZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYu
Z2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKKyAgICBtX2F2UGxheWVyID0gcGxh
eWVyUmVmOwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYg
SEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKLSAgICBBVkNGUGxheWVy
U2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKHBsYXllclJlZiwgRkFMU0UpOworICAgIEFW
Q0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQocGxheWVyUmVmLmdldCgpLCBG
QUxTRSk7CiAjZW5kaWYKIAogICAgIGlmIChtX2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGly
ZWN0M0REZXZpY2VQdHIoKSkKLSAgICAgICAgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRy
KCkocGxheWVyUmVmLCBtX2QzZERldmljZS5nZXQoKSk7CisgICAgICAgIEFWQ0ZQbGF5ZXJTZXRE
aXJlY3QzRERldmljZVB0cigpKHBsYXllclJlZi5nZXQoKSwgbV9kM2REZXZpY2UuZ2V0KCkpOwog
CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgY2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50
ZXJHZXRMb2NhbENlbnRlcigpOwogICAgIEFTU0VSVChjZW50ZXIpOwogCi0gICAgQ0ZOb3RpZmlj
YXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmlj
YXRpb25DYWxsYmFjaywgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJS
ZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
KyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVyUmF0ZUNoYW5nZWROb3RpZmlj
YXRpb24sIHBsYXllclJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOwogCiAgICAgLy8gQWRkIGEgdGltZSBvYnNlcnZlciwgYXNrIHRv
IGJlIGNhbGxlZCBpbmZyZXF1ZW50bHkgYmVjYXVzZSB3ZSBkb24ndCByZWFsbHkgd2FudCBwZXJp
b2RpYyBjYWxsYmFja3MgYnV0CiAgICAgLy8gb3VyIG9ic2VydmVyIHdpbGwgYWxzbyBiZSBjYWxs
ZWQgd2hlbmV2ZXIgYSBzZWVrIGhhcHBlbnMuCiAgICAgY29uc3QgZG91YmxlIHZlcnlMb25nSW50
ZXJ2YWwgPSA2MCo2MCo2MCoyNCozMDsKLSAgICBtX3RpbWVPYnNlcnZlciA9IGFkb3B0Q0YoQVZD
RlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwocGxheWVyUmVmLCBD
TVRpbWVNYWtlKHZlcnlMb25nSW50ZXJ2YWwsIDEwKSwgbV9ub3RpZmljYXRpb25RdWV1ZSwgJnBl
cmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2ssIGNhbGxiYWNrQ29udGV4dCgpKSk7CisgICAgbV90
aW1lT2JzZXJ2ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZl
ckZvckludGVydmFsKHBsYXllclJlZi5nZXQoKSwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFs
LCAxMCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCksICZwZXJpb2RpY1RpbWVPYnNlcnZlckNh
bGxiYWNrLCBjYWxsYmFja0NvbnRleHQoKSkpOwogfQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBV
VF9TVVBQT1JUKQpAQCAtMTYwNywyMiArMTYwNSwyMiBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0
ZVBsYXllckl0ZW0oKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDcmVhdGUgdGhlIHBsYXll
ciBpdGVtIHNvIHdlIGJlZ2luIGxvYWRpbmcgbWVkaWEgZGF0YS4KLSAgICBBVkNGUGxheWVySXRl
bVJlZiBpdGVtUmVmID0gQVZDRlBsYXllckl0ZW1DcmVhdGVXaXRoQXNzZXQoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgYXZBc3NldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxheWVy
SXRlbSA9IGFkb3B0Q0YoaXRlbVJlZik7CisgICAgYXV0byBpdGVtUmVmID0gYWRvcHRGKEFWQ0ZQ
bGF5ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwg
bV9ub3RpZmljYXRpb25RdWV1ZS5nZXQoKSkpOworICAgIG1fYXZQbGF5ZXJJdGVtID0gaXRlbVJl
ZjsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9u
Q2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIAotICAgIENGTm90
aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90
aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNh
dGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU3Rh
dHVzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtVHJhY2tzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3Rp
ZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90
aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90
aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
Y2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5
ZXJJdGVtTG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90
aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5v
dGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5v
dGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2Vk
Tm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRl
bGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihj
ZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXll
ckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVm
LCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0g
ICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4
dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVy
RW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNp
b25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJB
ZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFj
aywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24s
IGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUR1cmF0aW9u
Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVo
YXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2Jz
ZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFW
Q0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU3RhdHVzQ2hhbmdlZE5vdGlm
aWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
Y2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5
ZXJJdGVtVHJhY2tzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmlj
YXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZp
Y2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdlZE5v
dGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZp
b3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQ
bGF5ZXJJdGVtTG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0
KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
KyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNp
emVDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZp
Y2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRl
bGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihj
ZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXll
ckl0ZW1Jc1BsYXliYWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdl
dCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7
CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVm
ZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9u
U3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRl
bVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwogICAgIC8vIEZJWE1FOiBBcmUgdGhlcmUgb3RoZXIgbGVnaWJsZSBvdXRwdXQgdGhp
bmdzIHdlIG5lZWQgdG8gcmVnaXN0ZXIgZm9yPyBhc3NldCBhbmQgaGFzRW5hYmxlZEF1ZGlvIGFy
ZSBub3QgZXhwb3NlZCBieSBBVkNGCiAKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBDQUNG
Q29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24oKSwgMCwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwpAQCAtMTc1NCwxNSArMTc1MiwxNCBAQCB2
b2lkIEFWRldyYXBwZXI6OmNoZWNrUGxheWFiaWxpdHkoKQogewogICAgIExPRyhNZWRpYSwgIkFW
RldyYXBwZXI6OmNoZWNrUGxheWFiaWxpdHkoJXApIiwgdGhpcyk7CiAKLSAgICBzdGF0aWMgQ0ZB
cnJheVJlZiBwcm9wZXJ0eUtleU5hbWU7Ci0gICAgaWYgKCFwcm9wZXJ0eUtleU5hbWUpIHsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtleU5hbWVzW10gPSB7IAorICAgIHN0YXRp
YyBhdXRvIHByb3BlcnR5S2V5TmFtZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
IHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrZXlOYW1lc1tdID0gewogICAgICAgICAgICAgQVZD
RkFzc2V0UHJvcGVydHlQbGF5YWJsZQogICAgICAgICB9OwotICAgICAgICBwcm9wZXJ0eUtleU5h
bWUgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlO
YW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAg
ICB9CisgICAgICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQq
KilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICB9KCkpOwogCi0gICAgQVZDRkFzc2V0TG9hZFZhbHVl
c0FzeW5jaHJvbm91c2x5Rm9yUHJvcGVydGllcyhhdkFzc2V0KCksIHByb3BlcnR5S2V5TmFtZSwg
bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrLCBjYWxsYmFja0NvbnRleHQoKSk7CisgICAg
QVZDRkFzc2V0TG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yUHJvcGVydGllcyhhdkFzc2V0KCks
IHByb3BlcnR5S2V5TmFtZS5nZXQoKS5nZXQoKSwgbG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxi
YWNrLCBjYWxsYmFja0NvbnRleHQoKSk7CiB9CiAKIHZvaWQgQVZGV3JhcHBlcjo6bG9hZE1ldGFk
YXRhQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29udGV4dCkKQEAgLTIw
MDMsNyArMjAwMCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQVZDRlZpZGVvTGF5ZXIoKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgbGF5ZXIgd2lsbCBnZXQgaG9va2VkIHVwIHZp
YSBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oKS4KLSAgICBtX2F2Q0ZW
aWRlb0xheWVyID0gYWRvcHRDRihBVkNGUGxheWVyTGF5ZXJDcmVhdGVXaXRoQVZDRlBsYXllcihr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBhdlBsYXllcigpLCBtX25vdGlmaWNhdGlvblF1ZXVlKSk7Cisg
ICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXllckxheWVyQ3JlYXRlV2l0aEFW
Q0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIoKSwgbV9ub3RpZmljYXRpb25R
dWV1ZS5nZXQoKSkpOwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRl
b0xheWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIHZpZGVvTGF5ZXIoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXgg
MGVhYThlN2ZhMThjMjAyNGM5ZjgwZjUyMDk4YTlkY2I2NTVlMTM2OS4uYzY3NDlkODNkYzFmYzEw
OTRlODM5NDdjZjUwYTg1N2VlNDk0ZTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyBDR0NvbG9y
UmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKK3N0YXRp
YyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYpOwogfQog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1w
bGF0ZTw+CiBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gVGlueUxSVUNhY2hlUG9saWN5PFdlYkNvcmU6
OkNvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoV2ViQ29yZTo6bGVh
a0NHQ29sb3IoY29sb3IpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlQ0dDb2xvcihjb2xv
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpAQCAtODksNyArODksNyBAQCBDb2xvcjo6Q29s
b3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKIH0KIAotc3Rh
dGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIFJl
dGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
ICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRD
b21wb25lbnRzKCk7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFr
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21w
b25lbnRzOwogICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07
CiAKLSAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25l
bnRzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dG
bG9hdENvbXBvbmVudHMpKTsKIH0KIAogQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKQEAgLTEyNiwxNiArMTI2LDE2IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKGF1dG8gc3JnYiA9IGNvbG9yLnRyeUdldEFz
U1JHQkFCeXRlcygpKSB7CiAgICAgICAgIHN3aXRjaCAoUGFja2VkQ29sb3I6OlJHQkEgeyAqc3Jn
YiB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6dHJh
bnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB0
cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICByZXR1
cm4gdHJhbnNwYXJlbnRDR0NvbG9yOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDR0NvbG9yUmVmPj4gdHJhbnNwYXJlbnRDR0NvbG9yID0gY3JlYXRlQ0dDb2xv
cihjb2xvcik7CisgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRDR0NvbG9yLmdldCgpLmdl
dCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6
YmxhY2sgfS52YWx1ZTogewotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0Nv
bG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwotICAgICAgICAgICAgcmV0dXJuIGJsYWNrQ0dDb2xv
cjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJl
Zj4+IGJsYWNrQ0dDb2xvciA9IGNyZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgcmV0
dXJuIGJsYWNrQ0dDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBh
Y2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKLSAgICAg
ICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiB3aGl0ZUNHQ29sb3IgPSBjcmVhdGVDR0NvbG9y
KGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3IuZ2V0KCkuZ2V0KCk7CiAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCmluZGV4IGEzZmI4OWQ1MGQ4OWM2YmRi
NjYzYTkwZGIwMjU0MzlkYTQzMDJhZWEuLjIwZTFjY2FiY2Q4ZmU3MDM5ZDQ1Y2Y5NGJmNmI5MTM1
NjRhOTBiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdGVtcGxhdGU8Y29uc3QgQ0ZTdHJpbmdSZWYmIGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29u
c3RhbnQ+IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbmFtZWRDb2xvclNwYWNlKCkKIHsKLSAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2U7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+PiBjb2xvclNwYWNlOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
ewotICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoY29sb3JT
cGFjZU5hbWVHbG9iYWxDb25zdGFudCk7Ci0gICAgICAgIEFTU0VSVChjb2xvclNwYWNlKTsKKyAg
ICAgICAgY29sb3JTcGFjZS5nZXQoKSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5h
bWUoY29sb3JTcGFjZU5hbWVHbG9iYWxDb25zdGFudCkpOworICAgICAgICBBU1NFUlQoY29sb3JT
cGFjZS5nZXQoKSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGNvbG9yU3BhY2U7CisgICAgcmV0dXJu
IGNvbG9yU3BhY2UuZ2V0KCkuZ2V0KCk7CiB9CiAKIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZVJlZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMWJhOWViZWMyZGQyYzBlMDc2M2YwMDdl
NmIyZWJiNDRmYjk4NDEyYi4uNTNlYjVlY2E2NzQ2YTE5YTgxNmJkY2M4YTExNmM5ZGE5MDhkNWNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9
IEFmZmluZVRyYW5zZm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0gICAgUmV0
YWluUHRyPENHUGF0dGVyblJlZj4gcGxhdGZvcm1QYXR0ZXJuID0gYWRvcHRDRihtX3N0YXRlLnN0
cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKSk7CisgICAg
YXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBtX3N0YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRm
b3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9IEFmZmluZVRy
YW5zZm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0gICAgUmV0YWluUHRyPENH
UGF0dGVyblJlZj4gcGxhdGZvcm1QYXR0ZXJuID0gYWRvcHRDRihtX3N0YXRlLmZpbGxQYXR0ZXJu
LT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSkpOworICAgIGF1dG8gcGxhdGZv
cm1QYXR0ZXJuID0gbV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVz
ZXJUb0Jhc2VDVE0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCmluZGV4IGM2OWI1
MmQ3NzZmOTVkNTY3N2I3ZTllMDZmZGI5ODAxMTA3ZGYyOTIuLjI3MTU5MjRkMTRhNjk1OGU4MDRm
NTY1ZmEwNjRlMDIyZWZjNGM2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlQ0cuaApAQCAtNDEsOCArNDEsOCBAQCB0eXBlZGVmIHVuc2lnbmVkIEdyYXBoaWNzQ29u
dGV4dENHRmxhZ3M7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZShDR0NvbnRleHRSZWYgY2dDb250ZXh0LCBHcmFwaGljc0NvbnRleHRDR0Zs
YWdzIGZsYWdzID0gMCkKLSAgICAgICAgOiBtX2NnQ29udGV4dChjZ0NvbnRleHQpCisgICAgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFJldGFpblB0cjxDR0NvbnRleHRSZWY+JiYgY2dD
b250ZXh0LCBHcmFwaGljc0NvbnRleHRDR0ZsYWdzIGZsYWdzID0gMCkKKyAgICAgICAgOiBtX2Nn
Q29udGV4dChXVEZNb3ZlKGNnQ29udGV4dCkpCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAs
IG1faGRjKDApCiAgICAgICAgICwgbV9zaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKaW5kZXgg
YWY5NmY4Zjk0M2RmNmQwMmIxMDUwNTU1N2UxNzFmOWExODMzMGQyNC4uYTE5YTIxMWE4NzE3OTg1
ZDZkNGM5Zjk0MTM4OGFjMWIxNDYwMDhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCkBAIC00NSwyMyArNDUsMjMgQEAgc3RhdGljIHNpemVf
dCBwdXRCeXRlc05vd2hlcmUodm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3QgY291bnQpCiAgICAg
cmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZVNjcmF0Y2hDb250
ZXh0KCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVTY3JhdGNoQ29udGV4
dCgpCiB7CiAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyBwdXRCeXRl
c05vd2hlcmUsIDAgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhQ29uc3VtZXJSZWY+IGNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7Ci0gICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAs
IDApOworICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlKDAs
ICZjYWxsYmFja3MpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHUERGQ29udGV4dENy
ZWF0ZShjb25zdW1lci5nZXQoKSwgMCwgMCkpOwogCiAgICAgQ0dGbG9hdCBibGFja1s0XSA9IHsg
MCwgMCwgMCwgMSB9OwotICAgIENHQ29udGV4dFNldEZpbGxDb2xvcihjb250ZXh0LCBibGFjayk7
Ci0gICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3IoY29udGV4dCwgYmxhY2spOworICAgIENHQ29u
dGV4dFNldEZpbGxDb2xvcihjb250ZXh0LmdldCgpLCBibGFjayk7CisgICAgQ0dDb250ZXh0U2V0
U3Ryb2tlQ29sb3IoY29udGV4dC5nZXQoKSwgYmxhY2spOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgQ0dDb250ZXh0UmVmIHNjcmF0Y2hDb250ZXh0KCkKIHsKLSAg
ICBzdGF0aWMgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBjcmVhdGVTY3JhdGNoQ29udGV4dCgpOwot
ICAgIHJldHVybiBjb250ZXh0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPj4gY29udGV4dCA9IGNyZWF0ZVNjcmF0Y2hDb250ZXh0KCk7CisgICAgcmV0
dXJuIGNvbnRleHQuZ2V0KCkuZ2V0KCk7CiB9CiAKIFBhdGggUGF0aDo6cG9seWdvblBhdGhGcm9t
UG9pbnRzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50PiYgcG9pbnRzKQpAQCAtMjEwLDExICsyMTAs
MTEgQEAgc3RhdGljIHZvaWQgY29weUNsb3NpbmdTdWJwYXRoc0FwcGxpZXJGdW5jdGlvbih2b2lk
KiBpbmZvLCBjb25zdCBDR1BhdGhFbGVtZW50KgogICAgIH0KIH0KIAotc3RhdGljIENHTXV0YWJs
ZVBhdGhSZWYgY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2luYWxQYXRo
KQorc3RhdGljIFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiBjb3B5Q0dQYXRoQ2xvc2luZ1N1
YnBhdGhzKENHUGF0aFJlZiBvcmlnaW5hbFBhdGgpCiB7Ci0gICAgQ0dNdXRhYmxlUGF0aFJlZiBw
YXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0aEFwcGx5KG9yaWdpbmFsUGF0
aCwgcGF0aCwgY29weUNsb3NpbmdTdWJwYXRoc0FwcGxpZXJGdW5jdGlvbik7Ci0gICAgQ0dQYXRo
Q2xvc2VTdWJwYXRoKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRl
TXV0YWJsZSgpKTsKKyAgICBDR1BhdGhBcHBseShvcmlnaW5hbFBhdGgsIHBhdGguZ2V0KCksIGNv
cHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24pOworICAgIENHUGF0aENsb3NlU3VicGF0
aChwYXRoLmdldCgpKTsKICAgICByZXR1cm4gcGF0aDsKIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBA
IGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2ludCAmcG9pbnQsIFdpbmRSdWxlIHJ1
bGUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENHUGF0aENvbnRhaW5z
UG9pbnQgcmV0dXJucyBmYWxzZSBmb3Igbm9uLWNsb3NlZCBwYXRocywgYXMgYSB3b3JrLWFyb3Vu
ZCwgd2UgY29weSBhbmQgY2xvc2UgdGhlIHBhdGggZmlyc3QuICBSYWRhciA0NzU4OTk4IGFza3Mg
Zm9yIGEgYmV0dGVyIENHIEFQSSB0byB1c2UKLSAgICBhdXRvIHBhdGggPSBhZG9wdENGKGNvcHlD
R1BhdGhDbG9zaW5nU3VicGF0aHMocGxhdGZvcm1QYXRoKCkpKTsKKyAgICBhdXRvIHBhdGggPSBj
b3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBsYXRmb3JtUGF0aCgpKTsKICAgICBib29sIHJldCA9
IENHUGF0aENvbnRhaW5zUG9pbnQocGF0aC5nZXQoKSwgMCwgcG9pbnQsIHJ1bGUgPT0gV2luZFJ1
bGU6OkV2ZW5PZGQgPyB0cnVlIDogZmFsc2UpOwogICAgIHJldHVybiByZXQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCAz
YWVjNzc1NmRiOGNkMjUwYWZlZjEwZDgzZmRlYjFkY2M5M2NmOWMzLi43NmVhOWFmNGQ0MjMyNDk0
MWE4OTdmYWEzZTVkZmRhYjIzZGY4MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZv
aWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2ltYWdlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKSldIHsgfSk7
CiB9CiAKLUNHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CitSZXRhaW5QdHI8Q0dQ
YXR0ZXJuUmVmPiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHRpbGVS
ZWN0ID0geyB7IH0sIHRpbGVJbWFnZSgpLnNpemUoKSB9OwogCkBAIC02OCw3ICs2OCw3IEBAIENH
UGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGgg
ZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0
ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNr
cy4KICAgICBpZiAocmVwZWF0WCgpICYmIHJlcGVhdFkoKSkKLSAgICAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVyblRyYW5zZm9y
bSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBhZG9w
dENGKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVy
blRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZykpOwogCiAgICAgLy8g
SWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGlu
ZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJl
c3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtODIsNyArODIsNyBAQCBDR1BhdHRl
cm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbgogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBwbGF0Zm9ybUltYWdlLmxl
YWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tz
ID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICBy
ZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
eFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0
dGVybkNhbGxiYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlKGltYWdl
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGls
aW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcykpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA2ZjMyMmMzNWE5
Zjk5MTU2ZjkxNTY5OWI2MmE2ZTY1MDVjZWExZWMyLi5mNzdmMTFiMzg3ZjAzMjZlNGViZTlmOGQ3
M2U0NzM4M2Y0YWM1OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKQEAgLTM1LDE4ICszNSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmIGZvbnQsIGZsb2F0IHNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRp
b24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBUZXh0UmVuZGVy
aW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCitG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+JiYg
Zm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlx
dWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZh
cmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBDcmVhdGlvbkRhdGEq
IGNyZWF0aW9uRGF0YSkKICAgICA6IEZvbnRQbGF0Zm9ybURhdGEoc2l6ZSwgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgdGV4dFJlbmRl
cmluZ01vZGUsIGNyZWF0aW9uRGF0YSkKIHsKICAgICBBU1NFUlRfQVJHKGZvbnQsIGZvbnQpOwog
I2lmIFBMQVRGT1JNKFdJTikKLSAgICBtX2N0Rm9udCA9IGZvbnQ7CisgICAgbV9jdEZvbnQgPSBX
VEZNb3ZlKGZvbnQ7KQogI2Vsc2UKLSAgICBtX2ZvbnQgPSBmb250OworICAgIG1fZm9udCA9IFdU
Rk1vdmUoZm9udCk7CiAjZW5kaWYKLSAgICBtX2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0
U3ltYm9saWNUcmFpdHMoZm9udCkgJiBrQ1RGb250Q29sb3JHbHlwaHNUcmFpdDsKLSAgICBtX2lz
U3lzdGVtRm9udCA9IFdlYkNvcmU6OmlzU3lzdGVtRm9udChmb250KTsKLSAgICBhdXRvIHZhcmlh
dGlvbnMgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0
dHJpYnV0ZShmb250LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOworICAgIG1faXNDb2xv
ckJpdG1hcEZvbnQgPSBDVEZvbnRHZXRTeW1ib2xpY1RyYWl0cyhmb250LmdldCgpKSAmIGtDVEZv
bnRDb2xvckdseXBoc1RyYWl0OworICAgIG1faXNTeXN0ZW1Gb250ID0gV2ViQ29yZTo6aXNTeXN0
ZW1Gb250KGZvbnQuZ2V0KCkpOworICAgIGF1dG8gdmFyaWF0aW9ucyA9IGFkb3B0Q0Yoc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDVEZvbnRDb3B5QXR0cmlidXRlKGZvbnQuZ2V0KCksIGtD
VEZvbnRWYXJpYXRpb25BdHRyaWJ1dGUpKSk7CiAgICAgbV9oYXNWYXJpYXRpb25zID0gdmFyaWF0
aW9ucyAmJiBDRkRpY3Rpb25hcnlHZXRDb3VudCh2YXJpYXRpb25zLmdldCgpKTsKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCA3N2UxYzNm
MTYyZjA2NjNmYjg1M2ZhMjI1YWMyNDhiNDU2ZTQxYWY0Li5lM2YwOTI3MDM0OGU3YTVhZWY3MjY2
ZWI0NzJkZGJhZTczYmMzNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTIxMSwx
NCArMjExLDEzIEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcihDR0ltYWdlUmVmCiAgICAgQ1ZQaXhlbEJ1ZmZlckxv
Y2tCYXNlQWRkcmVzcyhyZ2JCdWZmZXIsIDApOwogICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVm
ZmVyR2V0QmFzZUFkZHJlc3MocmdiQnVmZmVyKTsKICAgICBhdXRvIHJldGFpbmVkUkdCQnVmZmVy
ID0gYWRvcHRDRihyZ2JCdWZmZXIpOwotICAgIGF1dG8gY29udGV4dCA9IENHQml0bWFwQ29udGV4
dENyZWF0ZShkYXRhLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBD
VlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8g
Y29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJv
dyhyZ2JCdWZmZXIpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCAoQ0dCaXRtYXBJbmZvKSBrQ0dJbWFn
ZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBSRUxF
QVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVBpeGVsQnVmZmVy
OiBDR0JpdG1hcENvbnRleHRDcmVhdGUgcmV0dXJuZWQgbnVsbHB0ciIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHJldGFpbmVkQ29udGV4dCA9IGFkb3B0Q0Yo
Y29udGV4dCk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwg
MCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgaW1hZ2UpOwogICAgIENWUGl4ZWxCdWZm
ZXJVbmxvY2tCYXNlQWRkcmVzcyhyZ2JCdWZmZXIsIDApOwogCiAgICAgcmV0dXJuIGNvbnZlcnRQ
aXhlbEJ1ZmZlcihyZ2JCdWZmZXIsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tCmluZGV4IDQ1MTEwN2JiYjQ2NWJkZTM5NTQ0OWRjMDc4ZDgwNWE4ZTE2NGY4
YTQuLjAzMjA5Njk4OGZjZGUyMTcxNzU5MzM1MDAxMzkwZWIzZmJiOTlhNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTE0MiwxMyArMTQyLDEzIEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBvcHRpb25L
ZXlzW10gPSB7IGtDVFR5cGVzZXR0ZXJPcHRpb25Gb3JjZWRFbWJlZGRpbmdMZXZlbCB9OwogICAg
ICAgICBzdGF0aWMgY29uc3Qgdm9pZCogbHRyT3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNob3J0VHlwZSwgJmx0ckZvcmNlZEVt
YmVkZGluZ0xldmVsVmFsdWUpIH07CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxPcHRp
b25WYWx1ZXNbXSA9IHsgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyU2hvcnRUeXBlLCAmcnRsRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKLSAgICAgICAg
c3RhdGljIENGRGljdGlvbmFyeVJlZiBsdHJUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMs
IFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgICAgICBz
dGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywg
V1RGX0FSUkFZX0xFTkdUSChvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gbHRyVHlwZXNl
dHRlck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9u
S2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9w
dGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwogCiAgICAgICAgIFByb3ZpZGVySW5mbyBpbmZvID0geyBjcCwgbGVuZ3RoLCBzdHJpbmdBdHRy
aWJ1dGVzLmdldCgpIH07CiAgICAgICAgIC8vIEZJWE1FOiBTb21lIFNES3MgY29tcGxhaW4gdGhh
dCB0aGUgc2Vjb25kIHBhcmFtZXRlciBiZWxvdyBjYW5ub3QgYmUgbnVsbC4KICAgICAgICAgSUdO
T1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVHSU4KLSAgICAgICAgUmV0YWluUHRyPENUVHlwZXNl
dHRlclJlZj4gdHlwZXNldHRlciA9IGFkb3B0Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aFVuaUNo
YXJQcm92aWRlckFuZE9wdGlvbnMoJnByb3ZpZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5m
bywgbV9ydW4ubHRyKCkgPyBsdHJUeXBlc2V0dGVyT3B0aW9ucyA6IHJ0bFR5cGVzZXR0ZXJPcHRp
b25zKSk7CisgICAgICAgIFJldGFpblB0cjxDVFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBh
ZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZw
cm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywgMCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlw
ZXNldHRlck9wdGlvbnMuZ2V0KCkuZ2V0KCkgOiBydGxUeXBlc2V0dGVyT3B0aW9ucy5nZXQoKS5n
ZXQoKSkpOwogICAgICAgICBJR05PUkVfTlVMTF9DSEVDS19XQVJOSU5HU19FTkQKIAogICAgICAg
ICBpZiAoIXR5cGVzZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggNzQ4
ZWRiOTQwMDlmZDI4YTg5MjVmZGFmMjRmM2IwZTI1OWJhNmQxOC4uZmFhYjZlMTRmMDI3YTQ0NGJk
NmRlMjcxMmU2Njk1NGE3NjU1ZGQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApA
QCAtNjMsOSArNjMsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGb250OjpnZXRDRlN0
cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVLZXJuaW5nLCBGb250TwogCiAgICAgaWYgKCFlbmFi
bGVLZXJuaW5nKSB7CiAgICAgICAgIGNvbnN0IGZsb2F0IHplcm8gPSAwOwotICAgICAgICBzdGF0
aWMgQ0ZOdW1iZXJSZWYgemVyb0tlcm5pbmdWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJnplcm8pOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gemVyb0tlcm5pbmdWYWx1ZSA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxv
YXRUeXBlLCAmemVybykpOwogICAgICAgICBrZXlzW2NvdW50XSA9IGtDVEtlcm5BdHRyaWJ1dGVO
YW1lOwotICAgICAgICB2YWx1ZXNbY291bnRdID0gemVyb0tlcm5pbmdWYWx1ZTsKKyAgICAgICAg
dmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWUuZ2V0KCkuZ2V0KCk7CiAgICAgICAgICsr
Y291bnQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCBjZWRiMDJlYjll
MWY5NWJmOTAzMzExM2JhNjA1ZDljY2ZmZjg2OWU4Li5iNjIwMTU4MzgxYjRjMGFiNDcyNzJiYTQx
NzYxYzU1N2QxZWIwNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIENHQ29u
dGV4dFdpdGhIREMoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dD
b250ZXh0UmVmPiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiB7CiAg
ICAgSEJJVE1BUCBiaXRtYXAgPSBzdGF0aWNfY2FzdDxIQklUTUFQPihHZXRDdXJyZW50T2JqZWN0
KGhkYywgT0JKX0JJVE1BUCkpOwogCkBAIC01NSwxMiArNTUsMTEgQEAgc3RhdGljIENHQ29udGV4
dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkxpdHRsZSB8IChoYXNBbHBoYSA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
OiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxEYXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEuc2l6
ZSgpLndpZHRoKCksIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCksIDgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93
KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcEluZm8pOworICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxE
YXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LCBwaXhlbERh
dGEuYnl0ZXNQZXJSb3coKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbykpOwogCiAg
ICAgLy8gRmxpcCBjb29yZHMKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwg
cGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LmdldCgpLCAwLCBw
aXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0
LmdldCgpLCAxLCAtMSk7CiAgICAgCiAgICAgLy8gUHV0IHRoZSBIREMgSW4gYWR2YW5jZWQgbW9k
ZSBzbyBpdCB3aWxsIGhvbm9yIGFmZmluZSB0cmFuc2Zvcm1zLgogICAgIFNldEdyYXBoaWNzTW9k
ZShoZGMsIEdNX0FEVkFOQ0VEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAK
aW5kZXggNmExNjAzZDIxYjY4ZWM1YmUyOGZkMDY5NTk3Y2RkMjJjYWYyM2Q2Yy4uOGU1YjNlNDIy
MTQ3N2U5MjFkNzgyMjUxOTQ1MjYyZjllMGE4ZTgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RldmljZS5jcHAKQEAgLTU4LDEyICs1OCwxMiBAQCBNR0RldmljZUNsYXNzIGRldmljZUNs
YXNzKCkKIFN0cmluZyBkZXZpY2VOYW1lKCkKIHsKICNpZiBUQVJHRVRfT1NfSU9TCi0gICAgc3Rh
dGljIENGU3RyaW5nUmVmIGRldmljZU5hbWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4+IGRldmljZU5hbWU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10gewotICAgICAgICBk
ZXZpY2VOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2
aWNlTmFtZSwgbnVsbHB0cikpOworICAgICAgICBkZXZpY2VOYW1lLmdldCgpID0gYWRvcHRDRihz
dGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oTUdDb3B5QW5zd2VyKGtNR1FEZXZpY2VOYW1lLCBudWxs
cHRyKSkpOwogICAgIH0pOwotICAgIHJldHVybiBkZXZpY2VOYW1lOworICAgIHJldHVybiBkZXZp
Y2VOYW1lLmdldCgpLmdldCgpOwogI2Vsc2UKICAgICByZXR1cm4gImlQaG9uZSJfczsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggYzY0
YTRiY2ExYWQ4ZTdiNzJhZjIyNjAzZmIxY2MwMWY5NzY5ZjYyMC4uNzM1OTMzZjE3MjA4NWI5ZTY2
OTNhZDQ0YjJhZjE2MGIzNDBjNGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBkZWxldGVEcmFnSW1hZ2Uo
RHJhZ0ltYWdlUmVmKQogc3RhdGljIEZvbnRDYXNjYWRlIGNhc2NhZGVGb3JTeXN0ZW1Gb250KENH
RmxvYXQgc2l6ZSkKIHsKICAgICBVSUZvbnQgKmZvbnQgPSBbUEFMOjpnZXRVSUZvbnRDbGFzcygp
IHN5c3RlbUZvbnRPZlNpemU6c2l6ZV07Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRlKEZvbnRQbGF0
Zm9ybURhdGEoQ1RGb250Q3JlYXRlV2l0aE5hbWUoKENGU3RyaW5nUmVmKWZvbnQuZm9udE5hbWUs
IGZvbnQucG9pbnRTaXplLCBuaWwpLCBmb250LnBvaW50U2l6ZSkpOworICAgIHJldHVybiBGb250
Q2FzY2FkZShGb250UGxhdGZvcm1EYXRhKGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoKENG
U3RyaW5nUmVmKWZvbnQuZm9udE5hbWUsIGZvbnQucG9pbnRTaXplLCBuaWwpKSwgZm9udC5wb2lu
dFNpemUpKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVu
dCYgbGlua0VsZW1lbnQsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBUZXh0SW5kaWNh
dG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgRm9udFJlbmRlcmluZ01vZGUsIGZsb2F0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDkz
MmM3ODJjNmJjYjNiMmQ2N2U5MzQwMmVjNDIxYTM0MmQzNmJmNDEuLmE2MDg4ZjdmNmU4MGRhZjFl
ZjhhOTFlMTdhYjE5MWNiNGYwZjVkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTEyNCwxOCArMTI0LDM4IEBAIHR5cGVkZWYg
ZW51bSB7CiAgICAgSWdub3JlQXV0b3JlbGVhc2VQb29sCiB9IEF1dG9yZWxlYXNlUG9vbE9wZXJh
dGlvbjsKIAotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNl
Owotc3RhdGljIENGTXV0YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKK3N0
YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgd2ViVGhyZWFkUmVsZWFzZVNvdXJj
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1bkxvb3BTb3Vy
Y2VSZWY+PiB3ZWJUaHJlYWRSZWxlYXNlU291cmNlOworICAgIHJldHVybiB3ZWJUaHJlYWRSZWxl
YXNlU291cmNlOworfQorCitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiYgd2Vi
VGhyZWFkUmVsZWFzZU9iakFycmF5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPj4gd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworICAg
IHJldHVybiB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXk7Cit9CiAKIHN0YXRpYyBMb2NrIGRlbGVn
YXRlTG9jazsKIHN0YXRpYyBTdGF0aWNDb25kaXRpb24gZGVsZWdhdGVDb25kaXRpb247Ci1zdGF0
aWMgQ0ZSdW5Mb29wU291cmNlUmVmIGRlbGVnYXRlU291cmNlID0gbnVsbHB0cjsKKworc3RhdGlj
IFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+JiBkZWxlZ2F0ZVNvdXJjZSgpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBkZWxl
Z2F0ZVNvdXJjZTsKKyAgICByZXR1cm4gZGVsZWdhdGVTb3VyY2U7Cit9CisKIHN0YXRpYyBCT09M
IGRlbGVnYXRlSGFuZGxlZDsKICNpZiBMT0dfTUFJTl9USFJFQURfTE9DS0lORwogc3RhdGljIEJP
T0wgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZTsKICNlbmRpZgogCi1zdGF0aWMgQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7CitzdGF0aWMgUmV0YWluUHRy
PENGUnVuTG9vcE9ic2VydmVyUmVmPiYgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWY+PiBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcjsKKyAgICByZXR1cm4gbWFpblJ1bkxv
b3BBdXRvVW5sb2NrT2JzZXJ2ZXI7Cit9CisKIHN0YXRpYyBCT09MIG1haW5UaHJlYWRIYXNQZW5k
aW5nQXV0b1VubG9jazsKIAogc3RhdGljIExvY2sgc3RhcnR1cExvY2s7CkBAIC0yMzQsNyArMjU0
LDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0
aW9uPiYmIGludm9jYXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
ZGVsZWdhdGVTb3VyY2UpOworICAgIEFTU0VSVChkZWxlZ2F0ZVNvdXJjZSgpKTsKICAgICBkZWxl
Z2F0ZUxvY2subG9jaygpOwogCiAgICAgZGVsZWdhdGVJbnZvY2F0aW9uKCkgPSBXVEZNb3ZlKGlu
dm9jYXRpb24pOwpAQCAtMjU1LDcgKzI3NSw3IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1l
c3NhZ2UoUmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsK
ICAgICAgICAgX1dlYlRocmVhZFVubG9jaygpOwogCi0gICAgICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxl
Z2F0ZVNvdXJjZSgpLmdldCgpKTsKICAgICAgICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdl
dE1haW4oKSk7CiAKICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKQEAgLTI5Niw3
ICszMTYsNyBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJs
b2NrKSgpKQogdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogewogICAgIEFT
U0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIEFTU0VSVChXZWJUaHJlYWRSZWxlYXNl
U291cmNlKTsKKyAgICBBU1NFUlQod2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpKTsKIAogI2lmIExP
R19SRUxFQVNFUwogICAgIE5TTG9nKEAiUmVsZWFzZSBzZW5kIFttYWluIHRocmVhZF06ICVAIiwg
b2JqKTsKQEAgLTMwNCwxMCArMzI0LDEwIEBAIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNl
KGlkIG9iaikKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxv
Y2spOwogCi0gICAgaWYgKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9PSBuaWwpCi0gICAgICAg
IFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvclN5c3RlbURlZmF1bHQsIDAsIG51bGxwdHIpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShX
ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXksIG9iaik7Ci0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFs
KFdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOworICAgIGlmICh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKSA9PSBuaWwpCisgICAgICAgIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpID0gYWRvcHRD
RihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxs
cHRyKSk7CisgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgp
LmdldCgpLCBvYmopOworICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKCkuZ2V0KCkpOwogICAgIENGUnVuTG9vcFdha2VVcCh3ZWJUaHJlYWRSdW5Mb29wKTsK
IH0KIApAQCAtNDA0LDkgKzQyNCw5IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVh
c2VTb3VyY2Uodm9pZCopCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBvYmplY3Rz
OwogICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNl
TG9jayk7Ci0gICAgICAgIGlmIChDRkFycmF5R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFzZU9iakFy
cmF5KSkgewotICAgICAgICAgICAgb2JqZWN0cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGVDb3B5KG51bGxwdHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpOwotICAgICAgICAg
ICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAg
ICAgICBpZiAoQ0ZBcnJheUdldENvdW50KHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgp
KSkgeworICAgICAgICAgICAgb2JqZWN0cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVD
b3B5KG51bGxwdHIsIDAsIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKSk7CisgICAg
ICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFsdWVzKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgp
LmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDczLDcgKzQ5Myw3IEBAIHN0YXRpYyB2
b2lkIE1haW5SdW5Mb29wQXV0b1VubG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29w
QWN0aXZpdHksIHZvaWQqCiAgICAgICAgIHJldHVybjsKIAogICAgIG1haW5UaHJlYWRIYXNQZW5k
aW5nQXV0b1VubG9jayA9IE5POwotICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9v
cEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOwogCiAgICAgX1dlYlRocmVhZFVubG9jaygpOwogfQpAQCAtNDg0LDcgKzUw
NCw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRBdXRvTG9jayh2b2lkKQogCiAgICAgaWYgKCFt
YWluVGhyZWFkTG9ja0NvdW50KSB7CiAgICAgICAgIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1Vu
bG9jayA9IFlFUzsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1v
ZGVzKTsgICAgCisgICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJl
bnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKICAgICAgICAgX1dlYlRocmVhZExvY2soKTsKICAgICAgICAgQ0ZSdW5Mb29w
V2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7CiAgICAgfQpAQCAtNTU2LDEyICs1NzYsMTIgQEAg
c3RhdGljIHZvaWQgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBv
YnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXYKIAogc3RhdGljIHZvaWQgX1dlYlJ1bkxvb3BFbmFibGVO
ZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5Mb29wRGlzYWJsZU5l
c3RlZEZyb21NYWluVGhyZWFkKCkKIHsKLSAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxv
b3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOyAKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViUnVuTG9vcEVuYWJsZU5lc3RlZCgpCkBAIC02NDIs
OCArNjYyLDggQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKICAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJS
ZWYuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAKICAgICBDRlJ1bkxvb3BTb3VyY2VD
b250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZVdl
YlRocmVhZFJlbGVhc2VTb3VyY2V9OwotICAgIFdlYlRocmVhZFJlbGVhc2VTb3VyY2UgPSBDRlJ1
bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNlU291cmNlQ29udGV4dCk7Ci0g
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHdlYlRocmVhZFJ1bkxvb3AsIFdlYlRocmVhZFJlbGVhc2VT
b3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgd2ViVGhyZWFkUmVsZWFzZVNvdXJj
ZSgpID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNl
U291cmNlQ29udGV4dCkpOworICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29w
LCB3ZWJUaHJlYWRSZWxlYXNlU291cmNlKCkuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
CiAKICAgICBwZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZCA9IF9DRlJ1bkxvb3BTZXRQ
ZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZChZRVMpOwogCkBAIC02NzksMTYgKzY5OSwx
NiBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICBDRlJ1bkxvb3BSZWYgcnVu
TG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0
IGRlbGVnYXRlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVEZWxlZ2F0
ZVNvdXJjZX07Ci0gICAgZGVsZWdhdGVTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVs
bHB0ciwgMCwgJmRlbGVnYXRlU291cmNlQ29udGV4dCk7CisgICAgZGVsZWdhdGVTb3VyY2UoKSA9
IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJj
ZUNvbnRleHQpKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBnZXQgZGVsZWdhdGUgY2FsbGJhY2tz
IHdoaWxlIHNjcm9sbGluZywgYnV0IHRoZXJlIG1pZ2h0IGJlCiAgICAgLy8gb25lIG91dHN0YW5k
aW5nIHdoZW4gd2Ugc3RhcnQuICBBZGQgdGhlIHNvdXJjZSBmb3IgYWxsIGNvbW1vbiBydW4gbG9v
cAogICAgIC8vIG1vZGVzIHNvIHdlIGRvbid0IGJsb2NrIHRoZSB3ZWIgdGhyZWFkIHdoaWxlIHNj
cm9sbGluZy4KLSAgICBDRlJ1bkxvb3BBZGRTb3VyY2UocnVuTG9vcCwgZGVsZWdhdGVTb3VyY2Us
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3As
IGRlbGVnYXRlU291cmNlKCkuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAKICAgICBz
QXN5bmNEZWxlZ2F0ZXMoKSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogCi0gICAgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZl
ckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0
LCBZRVMsIDMwMDAwMDEsIE1haW5SdW5Mb29wQXV0b1VubG9jaywgbnVsbHB0cik7CisgICAgbWFp
blJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJD
cmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwg
WUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxwdHIpKTsKIAogICAgIHB0
aHJlYWRfYXR0cl90IHRhdHRyOwogICAgIHB0aHJlYWRfYXR0cl9pbml0KCZ0YXR0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNw
cAppbmRleCBlZmE4NDY0NWJhMzk4YTRiZTFiY2RlMmRlYzNkMDEwOGE0Mzk3NTUzLi5jYTk4YThm
Y2I0OTc2MjUxYTJjYzE5YmRjZjI3MWY3ZjY0OTZlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKQEAgLTExMiwxNCAr
MTEyLDE5IEBAIGV4dGVybiAiQyIgewogdHlwZWRlZiBXVEY6OlZlY3RvcjxXZWJUaHJlYWRCbG9j
az4gV2ViVGhyZWFkUnVuUXVldWU7CiAKIHN0YXRpYyBMb2NrIHJ1blF1ZXVlTXV0ZXg7Ci1zdGF0
aWMgQ0ZSdW5Mb29wU291cmNlUmVmIHJ1blNvdXJjZTsKIHN0YXRpYyBXZWJUaHJlYWRSdW5RdWV1
ZSogcnVuUXVldWU7CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgcnVu
U291cmNlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9v
cFNvdXJjZVJlZj4+IHJ1blNvdXJjZTsKKyAgICByZXR1cm4gcnVuU291cmNlOworfQorCiBzdGF0
aWMgdm9pZCBIYW5kbGVSdW5Tb3VyY2Uodm9pZCAqaW5mbykKIHsKICAgICBVTlVTRURfUEFSQU0o
aW5mbyk7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQocnVu
U291cmNlKTsKKyAgICBBU1NFUlQocnVuU291cmNlKCkpOwogICAgIEFTU0VSVChydW5RdWV1ZSk7
CiAKICAgICBXZWJUaHJlYWRSdW5RdWV1ZSBxdWV1ZUNvcHk7CkBAIC0xNDAsNyArMTQ1LDcgQEAg
c3RhdGljIHZvaWQgX1dlYlRocmVhZFJ1bih2b2lkICheYmxvY2spKHZvaWQpLCBib29sIHN5bmNo
cm9ub3VzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHJ1blNvdXJjZSk7
CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsKICAgICBBU1NFUlQocnVuUXVldWUpOwogCiAgICAg
V2ViVGhyZWFkQmxvY2tTdGF0ZSogc3RhdGUgPSAwOwpAQCAtMTUyLDcgKzE1Nyw3IEBAIHN0YXRp
YyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwgYm9vbCBzeW5jaHJvbm91
cykKICAgICAgICAgcnVuUXVldWUtPmFwcGVuZChXZWJUaHJlYWRCbG9jayhibG9jaywgc3RhdGUp
KTsKICAgICB9CiAKLSAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwocnVuU291cmNlKTsKKyAgICBD
RlJ1bkxvb3BTb3VyY2VTaWduYWwocnVuU291cmNlKCkuZ2V0KCkpOwogICAgIENGUnVuTG9vcFdh
a2VVcChXZWJUaHJlYWRSdW5Mb29wKCkpOwogCiAgICAgaWYgKHN5bmNocm9ub3VzKSB7CkBAIC0x
NjksMTUgKzE3NCwxNSBAQCB2b2lkIFdlYlRocmVhZFJ1bih2b2lkICheYmxvY2spKHZvaWQpKQog
dm9pZCBXZWJUaHJlYWRJbml0UnVuUXVldWUoKQogewogICAgIEFTU0VSVCghcnVuUXVldWUpOwot
ICAgIEFTU0VSVCghcnVuU291cmNlKTsKKyAgICBBU1NFUlQoIXJ1blNvdXJjZSgpKTsKIAogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgcHJlZDsKICAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBe
ewogICAgICAgICBydW5RdWV1ZSA9IG5ldyBXZWJUaHJlYWRSdW5RdWV1ZTsKIAotICAgICAgICBD
RlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1blNvdXJjZUNvbnRleHQgPSB7MCwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgSGFuZGxlUnVuU291cmNlfTsKLSAg
ICAgICAgcnVuU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKE5VTEwsIC0xLCAmcnVuU291
cmNlQ29udGV4dCk7Ci0gICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29w
KCksIHJ1blNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgQ0ZSdW5Mb29w
U291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250ZXh0ID0geyAwLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5k
bGVSdW5Tb3VyY2UgfTsKKyAgICAgICAgcnVuU291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNv
dXJjZUNyZWF0ZShudWxscHRyLCAtMSwgJnJ1blNvdXJjZUNvbnRleHQpKTsKKyAgICAgICAgQ0ZS
dW5Mb29wQWRkU291cmNlKFdlYlRocmVhZFJ1bkxvb3AoKSwgcnVuU291cmNlKCkuZ2V0KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcAppbmRleCA4ZjM3ZGQ3MWYwNzc0ZTM4
NWI2Njk2MjljYmQyZTBkNTg0YzQ2NmJhLi5hNDdlMzQzZjRkY2EwMzZmZWFlZmQzYzEwZDVmMjQw
ZTM0YjlmMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJP
YnNlcnZlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2Jz
ZXJ2ZXJNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2
ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcikKICAgICAsIG1fcG93ZXJD
b25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlmaWNhdGlvblBvcnQobnVsbHB0cikKICAgICAsIG1f
bm90aWZpZXJSZWZlcmVuY2UoMCkKLSAgICAsIG1fZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1
ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuUG93ZXJPYnNlcnZlciIsIDApKQorICAgICwgbV9k
aXNwYXRjaFF1ZXVlKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkpCiB7CiAgICAgbV9wb3dlckNvbm5lY3Rpb24g
PSBJT1JlZ2lzdGVyRm9yU3lzdGVtUG93ZXIodGhpcywgJm1fbm90aWZpY2F0aW9uUG9ydCwgW10o
dm9pZCogY29udGV4dCwgaW9fc2VydmljZV90IHNlcnZpY2UsIHVpbnQzMl90IG1lc3NhZ2VUeXBl
LCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UG93ZXJPYnNl
cnZlcio+KGNvbnRleHQpLT5kaWRSZWNlaXZlU3lzdGVtUG93ZXJOb3RpZmljYXRpb24oc2Vydmlj
ZSwgbWVzc2FnZVR5cGUsIG1lc3NhZ2VBcmd1bWVudCk7CkBAIC00Myw3ICs0Myw3IEBAIFBvd2Vy
T2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhh
bmRlcikKICAgICBpZiAoIW1fcG93ZXJDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBJT05vdGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVlKG1fbm90aWZpY2F0aW9uUG9ydCwg
bV9kaXNwYXRjaFF1ZXVlKTsKKyAgICBJT05vdGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVl
KG1fbm90aWZpY2F0aW9uUG9ydCwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKIH0KIAogUG93ZXJP
YnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQpAQCAtNTEsOCArNTEsNiBAQCBQb3dlck9ic2VydmVy
Ojp+UG93ZXJPYnNlcnZlcigpCiAgICAgaWYgKCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotCiAgICAg
SU9EZXJlZ2lzdGVyRm9yU3lzdGVtUG93ZXIoJm1fbm90aWZpZXJSZWZlcmVuY2UpOwogICAgIElP
U2VydmljZUNsb3NlKG1fcG93ZXJDb25uZWN0aW9uKTsKICAgICBJT05vdGlmaWNhdGlvblBvcnRE
ZXN0cm95KG1fbm90aWZpY2F0aW9uUG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRleCAxNTg2ZDdiYjdhZjI1OTMxMTY2ZDI2ZWM1ZGZj
NDY5M2E4ZjYyODlhLi5hODBiNjIwNzVjMDFkYzE0OWY4MzExYzc0OTRjODEzMjlhYzYwNTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPElPS2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgogI2ltcG9y
dCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbXBvcnQg
PHd0Zi9PU09iamVjdFB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ4
LDcgQEAgcHJpdmF0ZToKICAgICBpb19jb25uZWN0X3QgbV9wb3dlckNvbm5lY3Rpb247CiAgICAg
SU9Ob3RpZmljYXRpb25Qb3J0UmVmIG1fbm90aWZpY2F0aW9uUG9ydDsKICAgICBpb19vYmplY3Rf
dCBtX25vdGlmaWVyUmVmZXJlbmNlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1
ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IDBiNzcwY2ZiMTMzZjNhOGE0ZTdkYjZkYjhjODBm
ZjYyNWMyMzkyNDkuLmQzZjFhYzcyOWI1YjVjZGU2M2RiNDRjMDA1MjdjMDk4NjNjODJhNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMjcs
NiArMjcsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAKICNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVj
dFB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVC
dWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252
ZXJ0ZXJSZWY7CkBAIC02Myw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU2Ft
cGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7CiAgICAgT1NTdGF0dXMgcHJvdmlk
ZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1
ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
c2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBt
X3NlcmlhbERpc3BhdGNoUXVldWU7CiAgICAgQ01UaW1lIG1fbG93V2F0ZXJUaW1lIHsga0NNVGlt
ZUludmFsaWQgfTsKIAogICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1
ZmZlclF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbQppbmRleCBjNzlhNDc5NjI0MDJiYjEzMjkzM2M4N2JmZTk4ZDIzN2Y1NmVlMDY5Li5jY2M4
ZGQzYTlkNGYwZmRhODg5MzNmMGZkMWUyODFkZTNhZGU5N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtNTIsMTQgKzUyLDEzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlCiB9CiAKIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRj
aFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAg
ICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElN
RV9JTl9TRUNPTkRTLCAxMDAwKSB9CiB7CiB9CiAKIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCiB7Ci0gICAgZGlzcGF0Y2hfcmVsZWFz
ZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwogICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAg
ICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9jb252ZXJ0ZXIpOwogICAgICAgICBtX2NvbnZlcnRl
ciA9IG51bGxwdHI7CkBAIC04OSw3ICs4OCw3IEBAIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhCiAK
IHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQogewotICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVy
c1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgYXV0byBlcnJvciA9
IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOwog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVk
IiwgZXJyb3IpOwpAQCAtNTEwLDcgKzUwOSw3IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIAog
dm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZiBidWZmZXIpCiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNo
UXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCks
IF57CiAgICAgICAgIGlmIChtX2lzRW5jb2RpbmcpCiAgICAgICAgICAgICBwcm9jZXNzU2FtcGxl
QnVmZmVyKGJ1ZmZlcik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaAppbmRleCBjMDU4Mzc0NzBiMWM4MjcyZGU3Yzg5YzQxNGJhMThhMGYw
ZTllOWNkLi4zNzZhNWNmYmVhYjFhMTQ2ZjI5MGIyY2IyNDNjNWMxMzMyZGQ3NGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxWaWRl
b1Rvb2xib3gvVlRFcnJvcnMuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KIAogdHlw
ZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lvblNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNz
aW9uUmVmOwpAQCAtNTgsNyArNTksNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgdmlk
ZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVu
Y29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYpOwogCi0gICAgZGlzcGF0Y2hfcXVldWVf
dCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRD
b2RlY1R5cGUgeyBrQ01WaWRlb0NvZGVjVHlwZV9IMjY0IH07CiAKICAgICBSZXRhaW5QdHI8Q01C
dWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggZTAzZTc3MGYwY2FhOWJkYzZiMTZk
NWFjNzRiYjM3ODZkZjhmNGFkNy4uMTc2Nzk5NzQxYmQ0ZmJiOTkwOTlhZDg0MzRlZjZjMmY0NmI4
YWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KQEAgLTQ4LDE0ICs0OCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZp
ZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRj
aFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAg
ICAgLCBtX291dHB1dENvZGVjVHlwZSB7IG91dHB1dENvZGVjVHlwZSB9CiB7CiB9CiAKIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCiB7
Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwogICAgIGlmICht
X3Z0U2Vzc2lvbikgewogICAgICAgICBWVENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUobV92
dFNlc3Npb24uZ2V0KCkpOwogICAgICAgICBtX3Z0U2Vzc2lvbiA9IG51bGxwdHI7CkBAIC04Myw3
ICs4Miw3IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vj
b25kKHVuc2lnbmVkIGJpdFJhdGUpCiAKIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpmaW5pc2goKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBe
eworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAg
ICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyhtX3Z0
U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOwogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRD
b21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
IApAQCAtMTY1LDcgKzE2NCw3IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpw
cm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIAogdm9pZCBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
ZiBidWZmZXIpCiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57
CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAg
ICAgIGlmICghbV9pc0VuY29kaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCAzY2JlOGNl
YTY4NWE1NDU4ODIwZGYyODhiZGY2Y2E2ZGVhYjIzYjliLi5mODYxOWY2YTE5MThhZjA2MGUyYTA1
ZTA2MzE4MmY1NGU4NmEyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
KyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKIE9CSkNfQ0xBU1MgQVZBdWRpb1Nlc3Npb247CkBAIC03Nyw3ICs3OCw3IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPFdlYkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXI+
IG1fbGlzdGVuZXI7CiAgICAgUmV0YWluUHRyPEFWQXVkaW9TZXNzaW9uPiBtX2F1ZGlvU2Vzc2lv
bjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3VwZGF0ZURldmljZVN0YXRlUXVldWU7
Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWUgeyBudWxscHRyIH07CisgICAg
T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOwogICAgIExvY2sg
bV9sb2NrOwogICAgIEF1ZGlvU2Vzc2lvblN0YXRlIG1fYXVkaW9TZXNzaW9uU3RhdGUgeyBBdWRp
b1Nlc3Npb25TdGF0ZTo6Tm90TmVlZGVkIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBiMWI0N2FmMjljNGE0NDUyZmM4
MTAwM2JhMzU4NmQ5MDJlODZhZTlmLi5lZjliZTEwNmJiZDRlYTE2ODQ0ZWU3MDljNjBhMjU4Y2M2
MmNlYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQpAQCAtODcsOSArODcsOSBAQCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyJiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0bwogfQog
CiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyKCkKLSAgICA6IG1fZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV9j
cmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpCisgICAgOiBtX2Rpc3BhdGNoUXVldWUoYWRvcHRP
U09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpKQogewot
ICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayldIHsKICAgICAgICAgY3JlYXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQpA
QCAtMTEzLDcgKzExMyw2IEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Y3JlYXRlQXVkaW9TZXNzaW9uKCkKIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlcjo6fkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIoKQogewotICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKICAgICBbbV9saXN0ZW5lciBpbnZhbGlkYXRl
XTsKICAgICBtX2xpc3RlbmVyID0gbnVsbHB0cjsKIH0KQEAgLTE1NywxMyArMTU2LDEzIEBAIHZv
aWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMoKQogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0
YXRlOjpJbmFjdGl2ZSkgewogICAgICAgICBtX2F1ZGlvU2Vzc2lvblN0YXRlID0gQXVkaW9TZXNz
aW9uU3RhdGU6OkFjdGl2ZTsKIAotICAgICAgICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1
ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRl
QXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9CiAKICAgICBWZWN0b3I8
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPiBuZXdBdWRpb0RldmljZXM7Ci0gICAgZGlzcGF0
Y2hfc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbJl0geworICAgIGRpc3BhdGNo
X3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoWyZdIHsKICAgICAgICAg
bmV3QXVkaW9EZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwog
ICAgIH0pLmdldCgpKTsKICAgICBzZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVk
aW9EZXZpY2VzKSk7CkBAIC0xNzQsMTIgKzE3MywxMiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmdldENhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZv
aQogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpJbmFj
dGl2ZSkgewogICAgICAgICBtX2F1ZGlvU2Vzc2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6
OkFjdGl2ZTsKIAotICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VC
bG9ja1B0cihbdGhpc10geworICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUu
Z2V0KCksIG1ha2VCbG9ja1B0cihbdGhpc10gewogICAgICAgICAgICAgYWN0aXZhdGVBdWRpb1Nl
c3Npb24oKTsKICAgICAgICAgfSkuZ2V0KCkpOwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNv
bXBsZXRpb24pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBuZXdBdWRpb0RldmljZXMgPSBy
ZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VzKCk7CiAgICAgICAgIGNhbGxPbldlYlRo
cmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRpb0RldmljZXMgPSBXVEZNb3ZlKG5l
d0F1ZGlvRGV2aWNlcyldICgpIG11dGFibGUgewogICAgICAgICAgICAgc2V0QXVkaW9DYXB0dXJl
RGV2aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwpAQCAtMjU0LDcgKzI1Myw3IEBAIHZv
aWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGlzYWJsZUFsbERldmljZXNR
dWVyeSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09
IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmUpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9k
aXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5
bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAg
ICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlICE9IEF1ZGlvU2Vzc2lvblN0YXRlOjpOb3ROZWVk
ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgTlNFcnJvciAqZXJyb3Ig
PSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA4YjE4ZmYxMjkyNTc4OTM3OTE1ZWFhNmE0OTk4Mzc5
MTcwNTE4MzA4Li43OGVjMDZiNzRlNDcyYmQ2MzhhOWY1ZTkzNzBiZjJmNmI4ZjliMjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotV0VCQ09SRV9FWFBPUlQgQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYg
aWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxv
cHQpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNy
ZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25h
bDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5jcHAKaW5kZXggYTM3ODUwZDc2ZWJkZTg4NGIyMmQ4OTAwZGVlMzZmODRjODQ1MTZh
Yi4uY2VlNWQ3ZWFjYmNiNjIxMGIyMjlkY2VhYzg3YjQ2ZjRmYmQ4ZWNlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwCkBAIC03MiwxNyArNzIsMTYgQEAgYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxh
dGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLAogICAgIHJldHVy
biB0cnVlOwogfQogCi1DRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCitSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmPiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNo
YWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVu
Z2VSZWYgaW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQu
CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRD
RihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7Ci0gICAgUmV0
YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdENG
KGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKLSAgICBDRlVSTEF1
dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3Rl
Y3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91
c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVz
cG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGF1dG8gY3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50
aWFsKCkpOworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0gY3JlYXRlQ0YoY29yZUNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxBdXRoQ2hhbGxl
bmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29y
ZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKSk7CiB9CiAK
LUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVu
dGlhbCkKK1JldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWF0ZUNGKGNvbnN0IENyZWRl
bnRpYWwmIGNvcmVDcmVkZW50aWFsKQogewogICAgIENGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHBlcnNpc3RlbmNlID0ga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKICAgICBzd2l0
Y2ggKGNvcmVDcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkpIHsKQEAgLTk4LDEwICs5NywxMCBAQCBD
RlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRp
YWwpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICByZXR1
cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWRl
bnRpYWxDcmVhdGUoMCwgY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwg
cGVyc2lzdGVuY2UpKTsKIH0KIAotQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCitSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9u
U3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQogewog
ICAgIENGVVJMUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0ga0NGVVJMUHJv
dGVjdGlvblNwYWNlU2VydmVySFRUUDsKICAgICBzd2l0Y2ggKGNvcmVTcGFjZS5zZXJ2ZXJUeXBl
KCkpIHsKQEAgLTE2NSw3ICsxNjQsNyBAQCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVD
Rihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENGVVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRl
KDAsIGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZVNwYWNlLnBv
cnQoKSwgc2VydmVyVHlwZSwgY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgc2NoZW1lKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTFByb3RlY3Rpb25TcGFjZUNyZWF0
ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFjZS5w
b3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIHNjaGVtZSkpOwogfQogCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmIGNm
Q3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmgKaW5kZXggODlhOTM1Mjg5YWQ3OWQ0MGIzN2RkMjAzYTgwZTll
OGRmNzExYjI2ZS4uNzBmNTAyMDVlYjJiZGEwODE2YmJkMDg4YzQ2Y2RhYWI5YzQ1MzIzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3JlZGVudGlhbFByaXYuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogCiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1
dGhDaGFsbGVuZ2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2UqIENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmOwpAQCAtMzgsOSArMzksOSBAQCBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7
CiAKLUNGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOwotQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwm
KTsKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYpOworUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKK1JldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNy
ZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKK1JldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFj
ZVJlZj4gY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiBDcmVkZW50aWFsIGNvcmUo
Q0ZVUkxDcmVkZW50aWFsUmVmKTsKIFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlv
blNwYWNlUmVmKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKaW5kZXggNmVhMzAxMjM5NTZlZGJk
MzA5ZDZjZTBlYWZmZTc4M2Q3MzhlNmRmYy4uMWZhODliYWUxZGUxY2IwNzYzZTA3YzYxYTQxOGEz
MWNjZWY1NWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBi
b29sIGNlcnRpZmljYXRlc01hdGNoKFNlY1RydXN0UmVmIHRydXN0MSwgU2VjVHJ1c3RSZWYgdHJ1
c3QyKQogUmV0YWluUHRyPENGQXJyYXlSZWY+IENlcnRpZmljYXRlSW5mbzo6Y2VydGlmaWNhdGVD
aGFpbkZyb21TZWNUcnVzdChTZWNUcnVzdFJlZiB0cnVzdCkKIHsKICAgICBhdXRvIGNvdW50ID0g
U2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUNvdW50KHRydXN0KTsKLSAgICBhdXRvIGNlcnRpZmljYXRl
Q2hhaW4gPSBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZUNoYWluID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoQ0ZJ
bmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShj
ZXJ0aWZpY2F0ZUNoYWluLCBTZWNUcnVzdEdldENlcnRpZmljYXRlQXRJbmRleCh0cnVzdCwgaSkp
OwotICAgIHJldHVybiBhZG9wdENGKChDRkFycmF5UmVmKWNlcnRpZmljYXRlQ2hhaW4pOworICAg
ICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2VydGlmaWNhdGVDaGFpbi5nZXQoKSwgU2VjVHJ1c3RH
ZXRDZXJ0aWZpY2F0ZUF0SW5kZXgodHJ1c3QsIGkpKTsKKyAgICByZXR1cm4gY2VydGlmaWNhdGVD
aGFpbjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAppbmRleCAwNzUyY2Ex
MDU1MmZkYjFhN2MzNTc1OTMyYTIzMmFhZWJlZGM1ZDYwLi4wYTAzMzg2ZDkzYzVjMTJlNjYwMTY2
ZmUyOTA2YjgxMTRiNWRlNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKQEAgLTM2LDE2
ICszNiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1zdGF0aWMgaW5saW5lIENG
VVJMQ3JlZGVudGlhbFJlZiBjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQorc3RhdGljIGlubGluZSBSZXRhaW5Q
dHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2Uo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQogewogICAgIGF1dG8gc3Rv
cmFnZSA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0KSk7Ci0gICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDb3B5RGVmYXVsdENy
ZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZS5nZXQoKSwgcHJvdGVjdGlvblNwYWNl
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ29weURlZmF1bHRD
cmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2UuZ2V0KCksIHByb3RlY3Rpb25TcGFj
ZSkpOwogfQogCiBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAg
YXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNl
KSk7Ci0gICAgYXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVBy
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOworICAgIGF1dG8gcHJvdGVj
dGlvblNwYWNlQ0YgPSBjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpOworICAgIGF1dG8gY3JlZGVu
dGlhbENGID0gY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFj
ZUNGLmdldCgpKTsKICAgICByZXR1cm4gY29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAKaW5kZXggNWVhNDQ4ZmNlNzczZTAzOTRkNzRmZDdiMWY5YzM3NjM2OWNkOWY4My4u
YmI4M2RmZjRhMjliZmQ5N2ZiNTA1YTQ5M2I4OTRiMThlMTE2ZjVmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcApA
QCAtNjMsOCArNjMsOCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCiAKICAgICAgICAg
ICAgICAgICAvLyBNdXN0IGFkZCBhIHNvdXJjZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBD
RlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRpbmcuCiAgICAgICAgICAgICAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBjdHh0ID0gezAsICh2b2lkKikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZvcm19OwotICAgICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4
dCk7Ci0gICAgICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKGxvYWRlclJ1bkxvb3BPYmpl
Y3QsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgICAg
IGF1dG8gYm9ndXNTb3VyY2UgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAm
Y3R4dCkpOworICAgICAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShsb2FkZXJSdW5Mb29w
T2JqZWN0LCBib2d1c1NvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKIAogICAg
ICAgICAgICAgICAgIGxvYWRlclJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5k
ZXggNWQ3ZDc5NjE0NDY1ZmNhYjViZDZiNjQxOGUwNjBmNjhlYjA5NGE0YS4uYTUxYmRiOGUzMjVi
MzM3NmQxNGM2ZjRmNWU4MDdkMzgxZGJiOGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldFdpbi5jcHAKQEAgLTc5LDE2ICs3OSwxNiBAQCBzdGF0aWMgQ0ZIVFRQQ29va2llU3Rv
cmFnZUFjY2VwdFBvbGljeSB0b0NGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koSFRUUENv
bwogICAgIHJldHVybiBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQog
Ci1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0
cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29r
aWVBY2NlcHRQb2xpY3kpCitSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhU
VFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKIHsKICAgICBjb25zdCB2
b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10gPSB7IF9rQ0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJp
dmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eVZhbHVlc1tdID0geyBrQ0ZC
b29sZWFuVHJ1ZSB9OwotICAgIENGRGljdGlvbmFyeVJlZiBzZXNzaW9uUHJvcGVydGllcyA9IENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uUHJvcGVydHlLZXlz
LCBzZXNzaW9uUHJvcGVydHlWYWx1ZXMsIHNpemVvZihzZXNzaW9uUHJvcGVydHlLZXlzKSAvIHNp
emVvZigqc2Vzc2lvblByb3BlcnR5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBpZGVudGlmaWVyLCBzZXNzaW9uUHJvcGVydGllcyk7CisgICAgYXV0
byBzZXNzaW9uUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHNlc3Npb25Qcm9wZXJ0eUtleXMsIHNlc3Npb25Qcm9wZXJ0eVZhbHVlcywg
c2l6ZW9mKHNlc3Npb25Qcm9wZXJ0eUtleXMpIC8gc2l6ZW9mKCpzZXNzaW9uUHJvcGVydHlLZXlz
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOworICAgIGF1dG8gc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkZW50aWZpZXIsIHNlc3Np
b25Qcm9wZXJ0aWVzLmdldCgpKSk7CiAgICAgCiAgICAgLy8gVGhlIHByaXZhdGUgc3RvcmFnZSBz
ZXNzaW9uIHNob3VsZCBoYXZlIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIGRlZmF1bHQgc3Rv
cmFnZSBzZXNzaW9uLAogICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGl0IHNob3VsZCBi
ZSBpbi1tZW1vcnkgb25seSBzdG9yYWdlLgotICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVS
TFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNz
aW9uKSk7CisgICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5
Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBD
RlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNhY2hlLmdldCgpLCAwKTsKICAgICBhdXRvIGRlZmF1
bHRDYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBD
RlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlD
YXBhY2l0eShkZWZhdWx0Q2FjaGUuZ2V0KCkpKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBp
ZGVudGlmaWVyLCBPcHRpbwogICAgICAgICBjZkNvb2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENv
b2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UpOwog
ICAgIH0KIAotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNl
c3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bikpOworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Np
b25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5n
ZXQoKSkpOwogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29v
a2llU3RvcmFnZS5nZXQoKSwgY2ZDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIAogICAgIHJldHVy
biBzdG9yYWdlU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKaW5kZXggY2IwOGI5MzczNTA5
YTUwMDc5Mjc0NjhjMDc2Y2Y4MmU2NWQ1YjA3ZS4uODczN2M0YzcxNGY2NWRlNGMwNDZkNTkxNzA2
MjFhOWFhNWU3MDZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIFByb3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVk
ZW50aWFsU2VjdXJlbHkoKSBjb25zdAogewotICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZj4gY2ZTcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoKnRoaXMpKTsKKyAgICBhdXRvIGNm
U3BhY2UgPSBjcmVhdGVDRigqdGhpcyk7CiAgICAgcmV0dXJuIGNmU3BhY2UgJiYgQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseShjZlNwYWNlLmdldCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMmQ0ZWZmNTA1Y2M0MTNhMGNkNjUyM2NiMDljMDQ0
YzRiNDllODU1ZC4uNmJmM2NjMjA0MDQwYjhhZmU5MjRjN2Y5ZjU1MTNkN2E1YzJiMTczMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0zODksNyArMzg5LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2gKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywg
cG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAg
ICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlh
bFN0b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNm
Q3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAg
ICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAgICAg
ICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCks
IGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTQzNiwxMSAr
NDM2LDExIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCku
Y2FjaGVQYXJ0aXRpb24oKSwgd2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9w
dENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpKTsKKyAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50
aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCk7CiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgp
LCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVu
dGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7Cisg
ICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAg
IENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNy
ZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAg
fQogCkBAIC01NTksOCArNTU5LDggQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXgKIAogICAgICAg
ICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZS
dW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgogICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VS
ZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAg
ICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2lnbmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0
cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggMWZlNjkwMjRiY2Jm
YjhkNzdiYWI5OGE5MWEzY2E4MTU5ZmJhNGUwMy4uM2M4MmJjM2I0YzY4NTliOGJhOTRhMzJiZTlh
NDI2YTgzOTk2ZWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0x
MTAsOCArMTEwLDggQEAgc3RhdGljIENGUnVuTG9vcFJlZiBnZXRSdW5Mb29wKCkKIAogICAgICAg
ICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZS
dW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgogICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VS
ZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAg
ICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2lnbmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0
cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCBmNmUxYjliNWQzYTViYTdhZTM1YTc3OTIz
ZDU2ZDUzZWFlMzI3MTk5Li5iN2VmNWI4NzU4NGZmYmI2NmFmN2Q5YTExM2Y0MzA2ZDkxNWExNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMTY3LDUxICsxNjcsNTEgQEAgc3RhdGljIENG
VVJMUmVmIHNpdGVGb3JDb29raWVzKFJlc291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3NpdGlv
biBkaXNwb3NpdGlvbiwKICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3Np
dGlvbjo6U2FtZVNpdGU6CiAgICAgICAgIHJldHVybiB1cmw7CiAgICAgY2FzZSBSZXNvdXJjZVJl
cXVlc3Q6OlNhbWVTaXRlRGlzcG9zaXRpb246OkNyb3NzU2l0ZToKLSAgICAgICAgc3RhdGljIENG
VVJMUmVmIGVtcHR5VVJMID0gQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKG51bGxwdHIsIENGU1RSKCIi
KSwgbnVsbHB0cik7Ci0gICAgICAgIHJldHVybiBlbXB0eVVSTDsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlVSTFJlZj4+IGVtcHR5VVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgQ0ZTVFIoIiIpLCBudWxscHRyKSk7CisgICAgICAg
IHJldHVybiBlbXB0eVVSTC5nZXQoKS5nZXQoKTsKICAgICB9CiB9CiAjZW5kaWYKIAogdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIHsKLSAgICBDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZj4gY2ZSZXF1ZXN0OwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBSZXNv
dXJjZVJlcXVlc3Q6OnVybCgpLmNyZWF0ZUNGVVJMKCk7CiAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiBmaXJzdFBhcnR5Rm9yQ29va2llcyA9IFJlc291cmNlUmVxdWVzdDo6Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKS5jcmVhdGVDRlVSTCgpOwogICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwgPSBSZXNv
dXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA/IFJlc291cmNlUmVxdWVzdEJhc2U6
OnRpbWVvdXRJbnRlcnZhbCgpIDogUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVmYXVsdFRpbWVvdXRJ
bnRlcnZhbCgpOwogICAgIGlmIChtX2NmUmVxdWVzdCkgewotICAgICAgICBjZlJlcXVlc3QgPSBD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7Ci0gICAg
ICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QsIHVybC5nZXQoKSk7Ci0gICAgICAgIENG
VVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChjZlJlcXVlc3QsIGZpcnN0UGFydHlGb3JDb29r
aWVzLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0
LCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpKTsKLSAgICAgICAg
Q0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVydmFsKGNmUmVxdWVzdCwgdGltZW91dEludGVydmFs
KTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwo
Y2ZSZXF1ZXN0LmdldCgpLCB1cmwuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWlu
RG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7
CisgICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVzdC5nZXQoKSwgdG9Q
bGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7CisgICAgICAgIENGVVJM
UmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QuZ2V0KCksIHRpbWVvdXRJbnRlcnZh
bCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11
dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9s
aWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAg
ICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVy
bC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSwgdGlt
ZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSkpOwogCi0gICAgQ0ZVUkxS
ZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LCBodHRwTWV0aG9kKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2Qo
Y2ZSZXF1ZXN0LmdldCgpLCBodHRwTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAK
ICAgICBpZiAoaHR0cFBpcGVsaW5pbmdFbmFibGVkKCkpCi0gICAgICAgIENGVVJMUmVxdWVzdFNl
dFNob3VsZFBpcGVsaW5lSFRUUChjZlJlcXVlc3QsIHRydWUsIHRydWUpOworICAgICAgICBDRlVS
TFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhUVFAoY2ZSZXF1ZXN0LmdldCgpLCB0cnVlLCB0cnVl
KTsKIAogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpIHsKLSAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RQ
cmlvcml0eShwcmlvcml0eSgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlv
cml0eShjZlJlcXVlc3QuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHko
KSkpOwogCiAgICAgICAgIC8vIFVzZWQgYnkgUExUIHRvIGlnbm9yZSB2ZXJ5IGxvdyBwcmlvcml0
eSBiZWFjb24gYW5kIHBpbmcgbG9hZHMuCiAgICAgICAgIGlmIChwcmlvcml0eSgpID09IFJlc291
cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93KQotICAgICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFBy
b3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBDRlNUUigiV0tWZXJ5TG93TG9hZFByaW9yaXR5Iiks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFBy
b3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIldLVmVyeUxvd0xvYWRQcmlvcml0eSIpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQogCi0gICAgc2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwg
aHR0cEhlYWRlckZpZWxkcygpKTsKKyAgICBzZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LmdldCgp
LCBodHRwSGVhZGVyRmllbGRzKCkpOwogCi0gICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxl
SFRUUENvb2tpZXMoY2ZSZXF1ZXN0LCBhbGxvd0Nvb2tpZXMoKSk7CisgICAgQ0ZVUkxSZXF1ZXN0
U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMoY2ZSZXF1ZXN0LmdldCgpLCBhbGxvd0Nvb2tpZXMo
KSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90
b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgQ0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVy
dHlTaXRlRm9yQ29va2llcyIpLCBzaXRlRm9yQ29va2llcyhtX3NhbWVTaXRlRGlzcG9zaXRpb24s
IHVybC5nZXQoKSkpOworICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVx
dWVzdC5nZXQoKSwgQ0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29v
a2llcyIpLCBzaXRlRm9yQ29va2llcyhtX3NhbWVTaXRlRGlzcG9zaXRpb24sIHVybC5nZXQoKSkp
OwogCiAgICAgaW50IGlzVG9wU2l0ZSA9IG1faXNUb3BTaXRlOwogICAgIFJldGFpblB0cjxDRk51
bWJlclJlZj4gaXNUb3BTaXRlQ0YgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtD
Rk51bWJlckludFR5cGUsICZpc1RvcFNpdGUpKTsKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9j
b2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5
aXNUb3BTaXRlIiksIGlzVG9wU2l0ZUNGLmdldCgpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGlj
eVByb3BlcnR5aXNUb3BTaXRlIiksIGlzVG9wU2l0ZUNGLmdldCgpKTsKICNlbmRpZgogCiAgICAg
dW5zaWduZWQgZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwpAQCAtMjIyLDUxICsyMjIsNTEgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgaWYgKGVuY29k
aW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tzLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPihlbmNvZGluZykpOwogICAgIH0KLSAgICBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkoY2ZSZXF1ZXN0LCBlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSk7Cisg
ICAgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNmUmVxdWVzdC5n
ZXQoKSwgZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKICAgICBTdHJpbmcgcGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBp
ZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAhcGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAg
ICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwYXJ0aXRpb24udXRmOCgpOwogICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZhbHVlID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRmOFN0cmluZy5kYXRh
KCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7
Ci0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgX2tD
RlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7CisgICAgICAgIF9D
RlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgX2tDRlVSTENh
Y2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAK
LSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9
IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1IVFRQQm9keSgpCiB7Ci0gICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVl
c3Q7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVh
dGVDRlVSTCgpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMg
PSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0UGFydHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsK
ICAgICBkb3VibGUgdGltZW91dEludGVydmFsID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91
dEludGVydmFsKCkgPyBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJl
c291cmNlUmVxdWVzdEJhc2U6OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9j
ZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwo
Y2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1l
bnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENG
VVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNo
ZVBvbGljeShjYWNoZVBvbGljeSgpKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJ
bnRlcnZhbChjZlJlcXVlc3QsIHRpbWVvdXRJbnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9
IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0
KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdl
dCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5n
ZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRDYWNoZVBvbGljeShjZlJlcXVlc3QuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xp
Y3koY2FjaGVQb2xpY3koKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2
YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1lb3V0SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAg
ICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9Q
bGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFs
LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0
Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1
ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0
eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAogICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5
KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKQotICAgICAgICBX
ZWJDb3JlOjpzZXRIVFRQQm9keShjZlJlcXVlc3QsIGZvcm1EYXRhKTsKKyAgICAgICAgV2ViQ29y
ZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LmdldCgpLCBmb3JtRGF0YSk7CiAKLSAgICBpZiAoUmV0
YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0
Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShjZlJlcXVlc3QpKSkgeworICAgIGlmIChSZXRhaW5Q
dHI8Q0ZSZWFkU3RyZWFtUmVmPiBib2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5
SFRUUFJlcXVlc3RCb2R5U3RyZWFtKGNmUmVxdWVzdC5nZXQoKSkpKSB7CiAgICAgICAgIC8vIEZv
ciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVudC1MZW5ndGggdG8gYXZvaWQgdXNpbmcgY2h1bmtl
ZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1cmF0ZSB0b3RhbCBsZW5ndGggaW4gY2FsbGJhY2tz
LgogICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsZW5ndGhTdHJpbmcgPSBhZG9w
dENGKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoYm9k
eVN0cmVhbS5nZXQoKSwgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKSkpKSkgewot
ICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0
LCBDRlNUUigiQ29udGVudC1MZW5ndGgiKSwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKKyAgICAgICAg
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKGNmUmVxdWVzdC5nZXQoKSwg
Q0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxlbmd0aFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAg
ICAvLyBTaW5jZSByZXNvdXJjZSByZXF1ZXN0IGlzIGFscmVhZHkgbWFya2VkIHVwZGF0ZWQsIHdl
IG5lZWQgdG8ga2VlcCBpdCB1cCB0byBkYXRlIHRvby4KICAgICAgICAgICAgIEFTU0VSVChtX3Jl
c291cmNlUmVxdWVzdFVwZGF0ZWQpOwogICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNl
dChIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOwor
ICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQpAQCAtMzU1LDEwICszNTUsMTAgQEAg
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc3RvcmFnZVNlc3Npb24pCiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7CiAK
LSAgICBhdXRvIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1f
Y2ZSZXF1ZXN0LmdldCgpKTsKKyAgICBhdXRvIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1
ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKICAgICBpZiAoc3Rv
cmFnZVNlc3Npb24pCi0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJl
cXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKLSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1
ZXN0KTsKKyAgICAgICAgX0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdC5n
ZXQoKSwgc3RvcmFnZVNlc3Npb24pOworICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVl
c3QpOwogfQogCiAjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDgwYmQ2NmQ3OGQ0MWE3NTBhMjYwZWViYzlmNjdm
NGJjYjZmYmUyMTEuLjg2NGJiOTk3MzEwODljMjM2NWViMTVkOTNhMjljZmUzMWY4NDgwOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMTczLDcgKzE3Myw3IEBA
IENvb2tpZVN0b3JhZ2VPYnNlcnZlciYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9y
YWdlT2JzZXJ2ZXIoKSBjb25zdAogICAgIHJldHVybiAqbV9jb29raWVTdG9yYWdlT2JzZXJ2ZXI7
CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+
IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBj
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9u
YWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gY29va2llQWNjZXB0UG9saWN5KQogewogICAgIGNv
bnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eUtleXNbXSA9IHsgX2tDRlVSTFN0b3JhZ2VTZXNzaW9u
SXNQcml2YXRlIH07CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5VmFsdWVzW10gPSB7
IGtDRkJvb2xlYW5UcnVlIH07CkBAIC0yMTAsNyArMjEwLDcgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwg
T3B0aW8KICAgICAvLyBGSVhNRTogVXNlIF9DRkhUVFBDb29raWVTdG9yYWdlR2V0RGVmYXVsdCB3
aGVuIFVTRShDRk5FVFdPUkspIGlzIGRlZmluZWQgaW4gV2ViS2l0IGZvciBjb25zaXN0ZW5jeS4K
ICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3Jh
Z2UuZ2V0KCksIG5zQ29va2llQWNjZXB0UG9saWN5KTsKIAotICAgIHJldHVybiBzdG9yYWdlU2Vz
c2lvbi5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQogCiBSZXRhaW5Q
dHI8TlNBcnJheT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBDb29r
aWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0K
aW5kZXggNDU1YTdhNjJjYzEyNDE2MGNkOGJlOTJkNzQ5MzEyM2JhNjg2ZTRmZi4uMzU3NzQwZjIy
NTZmOTg5MGJhNzFhMzYzOGVmNTcwN2U3MWE5ZDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bQpAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyA8cmRhcjovL3By
b2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5tanMgZmlsZXMgYXMgd2hhdGV2ZXIgVVRJIGluZGlj
YXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRv
TUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4
dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewogICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKICAg
ICAgICAgQ0ZTVFIoIm1qcyIpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlS
ZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCiAgICAgfTsKIAogICAgIEFTU0VSVChz
aXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVlcykpOwotICAgIHJldHVybiBDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZv
aWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yo
a2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkKQpAQCAtNjYsMTEgKzY2LDExIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJ
Zk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3Vy
Y2VMCiAgICAgICAgIGlmIChbKF9fYnJpZGdlIE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKICAg
ICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVS
TENvcHlQYXRoRXh0ZW5zaW9uKHVybCkpOwogICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewot
ICAgICAgICAgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9uTWFwID0gY3Jl
YXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOwotICAgICAgICAgICAgICAgIENGTXV0YWJsZVN0
cmluZ1JlZiBtdXRhYmxlRXh0ZW5zaW9uID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpOwotICAgICAgICAgICAgICAgIENG
U3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24sIE5VTEwpOwotICAgICAgICAgICAgICAg
IGV4dGVuc2lvbiA9IGFkb3B0Q0YobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAg
aWYgKGF1dG8gbmV3TUlNRVR5cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpKQorICAgICAgICAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gZXh0ZW5zaW9uTWFwID0g
Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOworICAgICAgICAgICAgICAgIGF1dG8gbXV0
YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBDRlN0
cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLmdldCgpLCBOVUxMKTsKKyAgICAgICAgICAg
ICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11dGFibGVFeHRlbnNpb24pOworICAgICAgICAgICAg
ICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKSkKICAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlZE1JTUVUeXBlID0gbmV3TUlNRVR5cGU7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCBiYjExNmE5ZGZmM2U4MDI0OWUzYzFm
ZjEwZWU5MTI5YzcwNTZmZDE1Li40ZmE1MGU0NmIwOTQ5NmNkZWUwNzM5NjQ1Yzg0ZjFkN2E0Njlm
ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIFdoZW4gd2UgZGlzYWJsZWQgY29udGVudCBzbmlmZmluZyBmb3IgZmlsZSBVUkxz
IHdlIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRoZXNlIDEwMCsgZXh0ZW5zaW9ucyB0aGF0IENvcmVU
eXBlcwogLy8gZG9lc24ndCBrbm93IGFib3V0LgogLy8gSWYgQ29yZVR5cGVzIGlzIGV2ZXIgYnJv
dWdodCB1cCB0byBzcGVlZCB3ZSBjYW4gcmVtb3ZlIHRoaXMgdGFibGUgYW5kIGFzc29jaWF0ZWQg
Y29kZS4KLXN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1h
cCgpCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9N
SU1FVHlwZU1hcCgpCiB7CiAgICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewogICAgICAgICBDRlNU
UigiYWkiKSwKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0
ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogICAgIH07CiAKICAgICBBU1NFUlQoc2l6ZW9mKGtl
eXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZh
bHVlcywgc2l6ZW9mKGtleXMpL3NpemVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIHJl
dHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNp
emVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIH0KIAogdm9pZCBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJj
ZUxvYWQpCkBAIC0zMDQsMTEgKzMwNCwxMSBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nh
cnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAg
ICAgICAgICAgaWYgKGV4dGVuc2lvbikgewogICAgICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS83MDA3Mzg5PiBDb3JlVHlwZXMgVVRJIG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRl
bnNpb25zIHRoYXQgR2F0ZUtlZXBlciBrbmV3IGFib3V0CiAgICAgICAgICAgICAgICAgLy8gV2hl
biB0aGlzIHJhZGFyIGlzIHJlc29sdmVkLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgZmlsZTovLyB1cmwg
c3BlY2lmaWMgY29kZS4KLSAgICAgICAgICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGV4
dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAg
ICAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRl
TXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKLSAg
ICAgICAgICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsK
LSAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShleHRlbnNpb25NYXAsIGV4dGVuc2lvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAg
PSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7CisgICAgICAgICAgICAgICAgYXV0byBt
dXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSkpOworICAgICAgICAgICAgICAgIENG
U3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOworICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbiA9IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lv
bk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0
aGUgR2F0ZWtlZXBlci1iYXNlZCBtYXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0
cnkgdG8gZmlndXJlIG91dCB3aGF0IGl0IHNob3VsZCBiZSBieQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQppbmRleCA1ZjM2ZDA4MzE0
ODZjOWQ5ZTRmYzkzYjliZGYxZDYxNzdjMjBlNjQwLi5hNTYxOGZlMGNkNjlmODYxODVkNzhiMGU2
MzlkZDlhMjhhZmQyM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAtNzEsMjMgKzcxLDIzIEBAIHN0YXRpYyBib29sIGlz
QW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBD
RlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXJGb3JTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQog
ewotICAgIHN0YXRpYyBDRkxvY2FsZVJlZiBsb2NhbGUgPSBudWxscHRyOwotICAgIGlmICghbG9j
YWxlKSB7CisgICAgc3RhdGljIGF1dG8gbG9jYWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
ICAgICAgICAgY29uc3QgY2hhciogdGVtcCA9IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRlbXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0Vu
Y29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgICAgIGxvY2FsZSA9
IENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQo
KSk7Ci0gICAgICAgIGlmICghbG9jYWxlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQorICAgICAgICBhdXRvIGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KHRlbXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUks
IGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENGTG9j
YWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSkpOwor
ICAgIH0oKSk7CisKKyAgICBpZiAoIWxvY2FsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBDRlJhbmdlIGVudGlyZVJhbmdlID0gQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdH
ZXRMZW5ndGgoc3RyKSk7ICAgIAogCi0gICAgc3RhdGljIENGU3RyaW5nVG9rZW5pemVyUmVmIHRv
a2VuaXplciA9IG51bGxwdHI7Ci0gICAgaWYgKCF0b2tlbml6ZXIpCi0gICAgICAgIHRva2VuaXpl
ciA9IENGU3RyaW5nVG9rZW5pemVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0ciwgZW50
aXJlUmFuZ2UsIGtDRlN0cmluZ1Rva2VuaXplclVuaXRXb3JkQm91bmRhcnksIGxvY2FsZSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1Rva2VuaXplclJlZj4+
IHRva2VuaXplcjsKKyAgICBpZiAoIXRva2VuaXplci5nZXQoKSkKKyAgICAgICAgdG9rZW5pemVy
LmdldCgpID0gYWRvcHRDRihDRlN0cmluZ1Rva2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZTdHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5
LCBsb2NhbGUuZ2V0KCkuZ2V0KCkpKTsKICAgICBlbHNlCi0gICAgICAgIENGU3RyaW5nVG9rZW5p
emVyU2V0U3RyaW5nKHRva2VuaXplciwgc3RyLCBlbnRpcmVSYW5nZSk7Ci0gICAgcmV0dXJuIHRv
a2VuaXplcjsKKyAgICAgICAgQ0ZTdHJpbmdUb2tlbml6ZXJTZXRTdHJpbmcodG9rZW5pemVyLmdl
dCgpLmdldCgpLCBzdHIsIGVudGlyZVJhbmdlKTsKKyAgICByZXR1cm4gdG9rZW5pemVyLmdldCgp
LmdldCgpOwogfQogCiAvLyBTaW1wbGUgY2FzZTogQSB3b3JkIGlzIGEgc3RyZWFtIG9mIGNoYXJh
Y3RlcnMgZGVsaW1pdGVkIGJ5IGEgc3BlY2lhbCBzZXQgb2Ygd29yZC1kZWxpbWl0aW5nIGNoYXJh
Y3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNw
cAppbmRleCA0ZDhjNWM2MDZkNWM1NTg3ZjJjOTVhZjJkYTZiZmRiZjAyNjlkYzk0Li4zMDRiMWZk
MmFkZThhNzQ3MjZlMmY1OGM4MjI1MTExNWU0YjA1MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTU3LDEzICs1NywxMSBAQCBHRElP
YmplY3Q8SEJJVE1BUD4gYWxsb2NJbWFnZShIREMgZGMsIEludFNpemUgc2l6ZSwgQ0dDb250ZXh0
UmVmICp0YXJnZXRSZWYpCiAgICAgaWYgKCF0YXJnZXRSZWYgfHwgIWhibXApCiAgICAgICAgIHJl
dHVybiBoYm1wOwogCi0gICAgQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlI
ZWFkZXIuYmlIZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCAqIDQsIHNSR0JDb2xv
clNwYWNlUmVmKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBGaXJzdCk7CisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlI
ZWFkZXIuYmlIZWlnaHQsIDgsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggKiA0LCBzUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFO
b25lU2tpcEZpcnN0KSk7CiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAgICAgICByZXR1cm4g
R0RJT2JqZWN0PEhCSVRNQVA+KCk7CiAKLSAgICAqdGFyZ2V0UmVmID0gYml0bWFwQ29udGV4dDsK
KyAgICAqdGFyZ2V0UmVmID0gYml0bWFwQ29udGV4dC5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGhi
bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRl
eCA3NWQ4MTE3ZjM4ZGMxZWMwNDE1MWYxODM3ZDM3ZGExYWVlZTU2ZjkwLi5hZGU2MTkyOTgwNTcw
NGU2OTlmOWI5NTIxNmJiNTk5YjZhNDMyYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNTIsMzYgKzE1MiwyNSBAQCBzdGF0aWMgdm9pZCBpbnRl
cnBvbGF0ZUV4cG9uZW50aWFsR3JhZGllbnQodm9pZCAqaW5mbywgY29uc3QgQ0dGbG9hdCAqaW5E
YXRhLCBDRwogCiBzdGF0aWMgQ0dGdW5jdGlvblJlZiBnZXRTaGFyZWRGdW5jdGlvblJlZihJT1NH
cmFkaWVudFJlZiBncmFkaWVudCwgSW50ZXJwb2xhdGlvbiBpbnRlcnBvbGF0aW9uKQogewotICAg
IENHRnVuY3Rpb25SZWYgZnVuY3Rpb24gPSBudWxscHRyOwotCi0gICAgc3RhdGljIEhhc2hNYXA8
SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+KiBsaW5lYXJGdW5jdGlvblJlZnM7Ci0gICAg
c3RhdGljIEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+KiBleHBvbmVudGlh
bEZ1bmN0aW9uUmVmczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFk
aWVudFJlZiwgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+Pj4gbGluZWFyRnVuY3Rpb25SZWZzOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBSZXRhaW5Q
dHI8Q0dGdW5jdGlvblJlZj4+PiBleHBvbmVudGlhbEZ1bmN0aW9uUmVmczsKIAogICAgIGlmIChp
bnRlcnBvbGF0aW9uID09IExpbmVhckludGVycG9sYXRpb24pIHsKLSAgICAgICAgaWYgKCFsaW5l
YXJGdW5jdGlvblJlZnMpCi0gICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJlZnMgPSBuZXcgSGFz
aE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5jdGlvblJlZj47Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGZ1bmN0aW9uID0gbGluZWFyRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwotICAg
IAorICAgICAgICBhdXRvIGZ1bmN0aW9uID0gbGluZWFyRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGll
bnQpOwogICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBzdGF0aWMgc3RydWN0
IENHRnVuY3Rpb25DYWxsYmFja3MgbGluZWFyRnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBpbnRl
cnBvbGF0ZUxpbmVhckdyYWRpZW50LCAwIH07Ci0gICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJl
ZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAx
LCBudWxscHRyLCA0LCBudWxscHRyLCAmbGluZWFyRnVuY3Rpb25DYWxsYmFja3MpKTsKKyAgICAg
ICAgICAgIGxpbmVhckZ1bmN0aW9uUmVmcy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFkb3B0
Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwgJmxp
bmVhckZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uOworICAgICAgICByZXR1cm4gZnVuY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaWYg
KCFleHBvbmVudGlhbEZ1bmN0aW9uUmVmcykKLSAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJl
ZnMgPSBuZXcgSGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5jdGlvblJlZj47Ci0gICAgZWxz
ZQotICAgICAgICBmdW5jdGlvbiA9IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGll
bnQpOwotCisgICAgYXV0byBmdW5jdGlvbiA9IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQo
Z3JhZGllbnQpOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgc3RhdGljIHN0cnVjdCBD
R0Z1bmN0aW9uQ2FsbGJhY2tzIGV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBp
bnRlcnBvbGF0ZUV4cG9uZW50aWFsR3JhZGllbnQsIDAgfTsKLSAgICAgICAgZXhwb25lbnRpYWxG
dW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBDR0Z1bmN0aW9uQ3JlYXRlKGdy
YWRpZW50LCAxLCAwLCA0LCAwLCAmZXhwb25lbnRpYWxGdW5jdGlvbkNhbGxiYWNrcykpOworICAg
ICAgICBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFk
b3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgMCwgNCwgMCwgJmV4cG9uZW50aWFs
RnVuY3Rpb25DYWxsYmFja3MpKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOworICAg
IHJldHVybiBmdW5jdGlvbi5nZXQoKTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd0F4aWFsR3JhZGll
bnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBjb25zdCBG
bG9hdFBvaW50JiBzdGFydFBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBzdG9wUG9pbnQsIEludGVy
cG9sYXRpb24gaW50ZXJwb2xhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggYmU2NjA3OGE4M2QwY2E0OWI3
MWExZmI1M2MyM2E4YzZiODFkNzY3ZS4uNWE5YmJjNzE1YzllNWM4NDNhYWYyYjkxNWRkODhmNzJl
ZmExOWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNo
aXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJB
cmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQgewogCi1zdGF0aWMgQ0ZVUkxS
ZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYg
cmVzcG9uc2VEYXRhKQorc3RhdGljIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBjcmVhdGVD
RlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQogewog
ICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTooX19i
cmlkZ2UgTlNEYXRhICopcmVzcG9uc2VEYXRhIGVycm9yOm51bGxwdHJdKTsKQEAgLTUzLDcgKzUz
LDcgQEAgc3RhdGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNw
b25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGEKICAgICB9CiAKICAgICBpZiAoIVtyZXNwb25z
ZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dKQotICAgICAgICByZXR1
cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZV
UkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5
cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUsIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOwor
ICAgICAgICByZXR1cm4gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilyZXNwb25zZS5NSU1FVHlwZSwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSwga0NGVVJMQ2Fj
aGVTdG9yYWdlQWxsb3dlZCkpOwogCiAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25z
ZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwogCkBAIC02NCw3ICs2NCw3IEBAIHN0
YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRh
KENGRGF0YVJlZiByZXNwb25zZURhCiAgICAgZm9yIChOU1N0cmluZyAqaGVhZGVyRmllbGQgaW4g
W2hlYWRlckZpZWxkcyBrZXlFbnVtZXJhdG9yXSkKICAgICAgICAgQ0ZIVFRQTWVzc2FnZVNldEhl
YWRlckZpZWxkVmFsdWUoaHR0cE1lc3NhZ2UuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZilo
ZWFkZXJGaWVsZCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9y
S2V5OmhlYWRlckZpZWxkXSk7CiAKLSAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhI
VFRQUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3Bv
bnNlLlVSTCwgaHR0cE1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOwor
ICAgIHJldHVybiBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBN
ZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGNvbnZlcnRNSU1FVHlwZShDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUpCkBAIC0xNTYs
NyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rp
b25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9wZXIKICAgICBpZiAoQ0ZHZXRUeXBlSUQo
cmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlc3BvbnNlID0gYWRvcHRDRihjcmVhdGVD
RlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpKTsKKyAgICBhdXRvIHJl
c3BvbnNlID0gY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRh
KTsKICAgICBpZiAoIXJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMWE5ZjcxOWQ2NTFm
YThhZWQxOWY2ZWZmMDUxNTdmMDk1MmRiZWUxMS4uYzUzN2VhMjhkOTFjNTA1YTI1OGI5YzgwNmU3
ZTgzY2UyY2Y0MGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Np
bwogICAgIC8vIFNlc3Npb24gbmFtZSBzaG91bGQgYmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQg
bWVtb3J5IHJlZ2lvbiBuYW1lIHRvIGJlIHVuZGVyIHRoZSBsaW1pdCwgb3RoZXJ3aXNlIHNhbmRi
b3ggcnVsZXMgd29uJ3Qgd29yayAoc2VlIDxyZGFyOi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgogICAg
IFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJl
bnRQcm9jZXNzSUQoKSk7CiAKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNy
ZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKSk7CisgICAgYXV0byBzZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CkBA
IC00ODUsNyArNDg1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBib29sIHNob3VsZFUKICAgICBSZXRhaW5QdHI8
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3RvcmFnZVNlc3Npb247CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlBy
aXZhdGVCcm93c2luZy4iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBzdG9yYWdl
U2Vzc2lvbiA9IGFkb3B0Q0YoY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmll
ci5nZXQoKSkpOworICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IGNyZWF0ZVByaXZhdGVTdG9yYWdl
U2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOwogICAgIGVsc2UgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICBzdG9yYWdlU2Vzc2lv
biA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lv
bkZvcklkZW50aWZpZXIoY2ZJZGVudGlmaWVyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZhNDIzMzRlYzBjYTFhZDA1MDIz
ZWNiZjc4ZDEzMWQwMWIzZWYzNmYuLjA3OTkxNWUyYjRjMzlhODFjMjQ4OGViOWFjYTQ4OGZiMTE0
M2RjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTU3LDcgKzU1OCw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gRklYTUU6IFdlJ2QgbGlrZSB0byBiZSBhYmxlIHRvIGRvIHRoaXMgd2l0
aG91dCB0aGUgI2lmZGVmLCBidXQgV29ya1F1ZXVlICsgQmluYXJ5U2VtYXBob3JlIGlzbid0IGdv
b2QgZW5vdWdoIHNpbmNlCiAgICAgLy8gbXVsdGlwbGUgcmVxdWVzdHMgdG8gY2xlYXIgdGhlIGNh
Y2hlIGNhbiBjb21lIGluIGJlZm9yZSBwcmV2aW91cyByZXF1ZXN0cyBjb21wbGV0ZSwgYW5kIHdl
IG5lZWQgdG8gd2FpdCBmb3IgYWxsIG9mIHRoZW0uCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB1c2lu
ZyBXb3JrUXVldWUgYW5kIGEgY291bnRpbmcgc2VtYXBob3JlIHdvdWxkIHdvcmssIGFzIHdvdWxk
IFdvcmtRdWV1ZSBzdXBwb3J0aW5nIHRoZSBsaWJkaXNwYXRjaCBjb25jZXB0IG9mICJ3b3JrIGdy
b3VwcyIuCi0gICAgZGlzcGF0Y2hfZ3JvdXBfdCBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwIHsg
bnVsbHB0ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1fY2xlYXJDYWNo
ZURpc3BhdGNoR3JvdXA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNjBhZjkzZGRmNTFkZTc5MDMyNjQ1NDZjNmIwMzRiYTFi
NWJhNTcyZS4uNWZiZTgxZDY4NmI5Yzc0ZDdkZWI5Njg1NjQwMzgxM2ZlNjdlZGYyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQpAQCAtMTkxLDkgKzE5MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgbW9kaWZpZWRT
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKQotICAgICAgICBtX2NsZWFyQ2FjaGVE
aXNwYXRjaEdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7CisgICAgICAgIG1fY2xlYXJD
YWNoZURpc3BhdGNoR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgp
KTsKIAotICAgIGF1dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwOworICAgIGF1
dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwLmdldCgpOwogICAgIGRpc3BhdGNo
X2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQ
dHIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRTaW5jZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFttb2RpZmllZFNpbmNlLCAmYWdncmVnYXRvcl0oTmV0d29ya1Nlc3Npb24mIHNlc3Npb24p
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1By
b2Nlc3NNYWMubW0KaW5kZXggYjVlMGQxYTNkNTEyNTNhNTAwM2RlNjVlNTg2OTc5ZTRkOGMyZDA4
MC4uYjBmOWE1OWJiMmMwODM3ODVjODU5Y2I3MDE1OTE4YTNhNjQxMTYxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0K
QEAgLTk3LDkgKzk3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3go
Y29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW0KIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKICAgICBpZiAobV9jbGVhckNhY2hlRGlzcGF0
Y2hHcm91cCkgewotICAgICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURpc3Bh
dGNoR3JvdXAsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVh
c2UobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCk7Ci0gICAgICAgIG1fY2xlYXJDYWNoZURpc3Bh
dGNoR3JvdXAgPSAwOworICAgICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURp
c3BhdGNoR3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CisgICAgICAgIG1fY2xl
YXJDYWNoZURpc3BhdGNoR3JvdXAgPSBudWxscHRyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDRmNmIxODRmZjQwZDk5Mjg4ZWI2MDYwYTdj
NTg4NmIzNzM2YzRiODMuLmQ5YjUzMDMzNThkNjQ3ODY2YzlhYjZhNTdjYzE3YmRlYTk0MmY4ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQ1OCwxMCArNDU4
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxSZWNlaXZlU291cmNlKCk7CiAKICAgICBt
YWNoX3BvcnRfdCBtX3NlbmRQb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsKLSAgICBkaXNwYXRjaF9z
b3VyY2VfdCBtX3NlbmRTb3VyY2UgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0
Y2hfc291cmNlX3Q+IG1fc2VuZFNvdXJjZTsKIAogICAgIG1hY2hfcG9ydF90IG1fcmVjZWl2ZVBv
cnQgeyBNQUNIX1BPUlRfTlVMTCB9OwotICAgIGRpc3BhdGNoX3NvdXJjZV90IG1fcmVjZWl2ZVNv
dXJjZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9zb3VyY2VfdD4gbV9y
ZWNlaXZlU291cmNlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBtX3BlbmRp
bmdPdXRnb2luZ01hY2hNZXNzYWdlOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZ1NlbmRTb3Vy
Y2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDhkOWNkZTA4ZjQ2NzE0MWE5MGQ4ZWFmOWRkNzg1Yjc5
MDM4ZDU4ZWUuLjkwYmRmMjQ4NzYyNDljZWYxNzFiYzkyZDc2NmU3NGUwMmQ0MTg0NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2Eu
bW0KQEAgLTE0Nyw4ICsxNDcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCiAgICAgQVNTRVJUKG1fcmVjZWl2ZVBvcnQpOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXIg
cG9ydHMuCi0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3NlbmRTb3VyY2UpOwotICAgIGRp
c3BhdGNoX3JlbGVhc2UobV9zZW5kU291cmNlKTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2Vs
KG1fc2VuZFNvdXJjZS5nZXQoKSk7CiAgICAgbV9zZW5kU291cmNlID0gbnVsbHB0cjsKICAgICBt
X3NlbmRQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiAKQEAgLTE1Nyw4ICsxNTYsNyBAQCB2b2lkIENv
bm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6Y2FuY2Vs
UmVjZWl2ZVNvdXJjZSgpCiB7Ci0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3JlY2VpdmVT
b3VyY2UpOwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9yZWNlaXZlU291cmNlKTsKKyAgICBkaXNw
YXRjaF9zb3VyY2VfY2FuY2VsKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSk7CiAgICAgbV9yZWNlaXZl
U291cmNlID0gbnVsbHB0cjsKICAgICBtX3JlY2VpdmVQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiB9
CkBAIC0yMzAsMTEgKzIyOCwxMSBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgIC8vIENo
YW5nZSB0aGUgbWVzc2FnZSBxdWV1ZSBsZW5ndGggZm9yIHRoZSByZWNlaXZlIHBvcnQuCiAgICAg
c2V0TWFjaFBvcnRRdWV1ZUxlbmd0aChtX3JlY2VpdmVQb3J0LCBNQUNIX1BPUlRfUUxJTUlUX0xB
UkdFKTsKIAotICAgIG1fcmVjZWl2ZVNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElT
UEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rp
b25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50
X2hhbmRsZXIobV9yZWNlaXZlU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyldIHsKKyAgICBtX3JlY2VpdmVTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNo
X3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQ
b3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKSk7CisgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIHJlY2VpdmVTb3Vy
Y2VFdmVudEhhbmRsZXIoKTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNl
bF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vf
c2V0X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKICNpZiAh
UExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAgbWFjaF9wb3J0X3VuZ3VhcmQobWFjaF90YXNrX3Nl
bGYoKSwgcmVjZWl2ZVBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9wb3J0X2NvbnRleHRfdD4o
cHJvdGVjdGVkVGhpcy5nZXQoKSkpOwogI2VuZGlmCkBAIC0yNDMsMTAgKzI0MSwxMCBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogCiAgICAgcmVmKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9j
b25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSwgXnsKLSAgICAgICAgZGlzcGF0Y2hfcmVz
dW1lKG1fcmVjZWl2ZVNvdXJjZSk7CisgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3JlY2VpdmVT
b3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGlmIChtX3NlbmRTb3VyY2UpCi0gICAgICAgICAgICBk
aXNwYXRjaF9yZXN1bWUobV9zZW5kU291cmNlKTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3Vt
ZShtX3NlbmRTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGRlcmVmKCk7CiAgICAgfSk7CkBAIC0z
NzEsMjAgKzM2OSwyMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5p
cXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXpl
U2VuZFNvdXJjZSgpCiB7Ci0gICAgbV9zZW5kU291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0
ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1NFTkQsIG1fc2VuZFBvcnQsIERJU1BBVENIX01B
Q0hfU0VORF9ERUFEIHwgRElTUEFUQ0hfTUFDSF9TRU5EX1BPU1NJQkxFLCBtX2Nvbm5lY3Rpb25R
dWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKKyAgICBtX3NlbmRTb3VyY2UgPSBhZG9wdE9TT2JqZWN0
KGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9TRU5ELCBt
X3NlbmRQb3J0LCBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCB8IERJU1BBVENIX01BQ0hfU0VORF9Q
T1NTSUJMRSwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSkpOwogICAgIG1faXNJ
bml0aWFsaXppbmdTZW5kU291cmNlID0gdHJ1ZTsKIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRf
cmVnaXN0cmF0aW9uX2hhbmRsZXIobV9zZW5kU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyldIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lzdHJhdGlv
bl9oYW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSA9IGZhbHNlOwogICAg
ICAgICByZXN1bWVTZW5kU291cmNlKCk7CiAgICAgfSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3Nl
dF9ldmVudF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1f
c2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
XSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtX3Nl
bmRTb3VyY2UpOworICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSBkaXNwYXRjaF9zb3VyY2Vf
Z2V0X2RhdGEobV9zZW5kU291cmNlLmdldCgpKTsKIAogICAgICAgICBpZiAoZGF0YSAmIERJU1BB
VENIX01BQ0hfU0VORF9ERUFEKSB7CiAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsK
QEAgLTQwMCw3ICszOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNl
KCkKIAogICAgIGlmIChNQUNIX1BPUlRfVkFMSUQobV9zZW5kUG9ydCkpIHsKICAgICAgICAgbWFj
aF9wb3J0X3Qgc2VuZFBvcnQgPSBtX3NlbmRQb3J0OwotICAgICAgICBkaXNwYXRjaF9zb3VyY2Vf
c2V0X2NhbmNlbF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfc291
cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIF57CiAgICAgICAgICAg
ICAvLyBSZWxlYXNlIG91ciBzZW5kIHJpZ2h0LgogICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRS
aWdodFNhZmVseShzZW5kUG9ydCk7CiAgICAgICAgIH0pOwpAQCAtNTgwLDcgKzU3OCw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgICAgICAg
ICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNhZmVseShwcmV2aW91c05vdGlmaWNhdGlvblBvcnQpOwog
CiAgICAgICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwotICAgICAgICAgICAgZGlzcGF0
Y2hfcmVzdW1lKG1fc2VuZFNvdXJjZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9z
ZW5kU291cmNlLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJy
b3dzZXJDaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJv
d3NlckNoZWNrcy5tbQppbmRleCA1YjY4ODRiZmYyOWY4ZjRmOGRkYWMzNWVlZmNlZTgyZTg1ZDVj
MjkzLi41ODc2MDkwNjA4ZDlhZmM4OGUzNDFjNWRmZjczZjViMzEwZWZhODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5t
bQpAQCAtMzEsNiArMzEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3Rm
L0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CkBAIC0xMTks
NyArMTIxLDExIEBAIHN0YXRpYyBib29sIGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBh
cHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0ICE9
IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAKLXN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90
IGdfaXRwUXVldWU7CitzdGF0aWMgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mIGl0cFF1
ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4+IGl0cFF1ZXVlOworICAgIHJldHVybiBpdHBRdWV1ZTsKK30KIAogdm9pZCBkZXRl
cm1pbmVJVFBTdGF0ZSgpCiB7CkBAIC0xMzAsMTQgKzEzNiwxMyBAQCB2b2lkIGRldGVybWluZUlU
UFN0YXRlKCkKICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IElUUFN0YXRlOjpJbml0aWFsaXppbmc7
CiAgICAgYm9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIgPSBsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29y
ZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoU2Vzc2lvbkNsZWFudXBCeURlZmF1bHQpOwogCi0gICAg
Z19pdHBRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBD
aGVja1F1ZXVlIiwgTlVMTCk7CisgICAgaXRwUXVldWUoKSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0cENoZWNrUXVldWUiLCBOVUxMKSk7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnX2l0cFF1ZXVlLCBbYXBwV2FzTGlua2VkT25PckFmdGVy
LCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhpdHBRdWV1ZSgpLmdldCgp
LCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgZ19j
dXJyZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9u
T3JBZnRlciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRl
OjpEaXNhYmxlZDsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAg
ICAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShnX2l0cFF1ZXVlKTsKLSAgICAgICAgICAgIGdfaXRw
UXVldWUgPSBudWxscHRyOworICAgICAgICAgICAgaXRwUXVldWUoKSA9IG51bGxwdHI7CiAgICAg
ICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTQ5LDEwICsxNTQsMTAgQEAgYm9vbCBkb2VzQXBwSGF2
ZUlUUEVuYWJsZWQoKQogICAgIGlmIChnX2N1cnJlbnRJVFBTdGF0ZSA+IElUUFN0YXRlOjpJbml0
aWFsaXppbmcpCiAgICAgICAgIHJldHVybiBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6
RW5hYmxlZDsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGdfaXRwUXVldWUpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGl0cFF1ZXVlKCkpOwogCiAgICAgX19ibG9jayBib29sIGlzSVRQRW5hYmxlZDsKLSAg
ICBkaXNwYXRjaF9zeW5jKGdfaXRwUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhpdHBRdWV1
ZSgpLmdldCgpLCBeewogICAgICAgICBpc0lUUEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0ZSA9
PSBJVFBTdGF0ZTo6RW5hYmxlZDsKICAgICB9KTsKICAgICByZXR1cm4gaXNJVFBFbmFibGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCmluZGV4
IGFiMDYzNGYxYWM2NTUzNzczNDgxODUwMmE5MTQzZDFhZGQxMTQ4MzguLjc4ZWFmZjQ1MjA0ODdj
YzNkY2UzMDVlMDU0NDFiMTZjNzc4MTc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQg
c2V0QXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlKCkKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2
ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiB7Ci0gICAgc3RhdGljIHhwY19vYmpl
Y3RfdCBwcmlvcml0eUJvb3N0TWVzc2FnZSA9IG51bGxwdHI7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4+IHByaW9yaXR5Qm9vc3RNZXNzYWdlOwog
CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRf
Z2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKICAgICB4
cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVu
dCkgewpAQCAtMTE4LDE5ICsxMTgsMTggQEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFu
ZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgICAgIGR1cDIoZmQs
IFNUREVSUl9GSUxFTk8pOwogCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1
bmN0aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVzc2FnZSk7CisgICAgICAgICAg
ICAgICAgICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9v
c3RNZXNzYWdlLmdldCgpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxh
bmd1YWdlc1ByZWZlcmVuY2UoKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
ICAgIGlmIChwcmlvcml0eUJvb3N0TWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgeHBjX3Jl
bGVhc2UocHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHByaW9yaXR5Qm9v
c3RNZXNzYWdlLmdldCgpID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gTGVhayBhIGJvb3N0IG9udG8gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgICAgICAgICAgaWYg
KCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIp
LCAicHJlLWJvb3RzdHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJv
b3N0TWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UgPSB4cGNf
cmV0YWluKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIXByaW9yaXR5Qm9vc3RNZXNz
YWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSA9
IGV2ZW50OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBoYW5kbGVYUENFbmRwb2ludE1l
c3NhZ2VzKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cAppbmRleCAyNTgzYzkzNTFiOTc4NGM0MzliOTk4MDk2Yzc3MzFlNDM1ZDQyMjMyLi42Y2VmODdm
M2M0NjQxNzlkZjc2NjJmZGMzOTkyM2EwNjEzZTIxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHNo
YXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCiAgICAgc3Rh
dGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQg
YnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCiB9CiAgICAg
Ci1zdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRv
cihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2Nh
dG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291
cmNlKiByZXNvdXJjZSkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwK
ICAgICAgICAgcmVzb3VyY2UsCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBDRkFsbG9jYXRvclJl
ZiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiBy
ZXNvCiAgICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKICAgICB9OwogCi0gICAgcmV0dXJu
IENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29u
dGV4dCkpOwogfQogI2VuZGlmCiAKQEAgLTg1LDggKzg1LDggQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiAgICAgcmVmKCk7IC8v
IEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgogCiAj
aWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gZGVhbGxvY2F0b3IgPSBh
ZG9wdENGKGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcykpOwotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVz
Tm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihkYXRhKCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQo
KSkpOworICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxs
b2NhdG9yKHRoaXMpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRo
Qnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KGRhdGEoKSksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9y
LmdldCgpKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7
CiAjZWxpZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
Z19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0Yu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXgg
ZDAyNDI5MDhkNGM5ZjRmZmQxODViZDhlMWE1MzA1ODlkZjhhZWUwMy4uMzM3YzkzNjQ3MzI4NTdk
MjcxMTRmOTQwMDRjY2QyYzUxOTk2ODI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTU0MSw4ICs1NDEsNyBAQCBib29sIGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgQ0ZO
dW1iZXJSZWYgbnVtYmVyID0gQ0ZOdW1iZXJDcmVhdGUoMCwgbnVtYmVyVHlwZSwgZGF0YVJlZmVy
ZW5jZS5kYXRhKCkpOwotICAgIHJlc3VsdCA9IGFkb3B0Q0YobnVtYmVyKTsKKyAgICByZXN1bHQg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0
YSgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU4MSwxMSArNTgwLDExIEBAIGJvb2wg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRl
cygwLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5n
LCBmYWxzZSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5
dGVzKDAsIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgZW5jb2Rp
bmcsIGZhbHNlKSk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJlc3VsdCA9IGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXN1bHQgPSBXVEZNb3ZlKHN0cmlu
Zyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggNjNlM2FmNDFk
YTA1NTc5YmI1NDJhMmU2Njc4ODk4MzEwZTU1ZDliOC4uYTM5NDA2NDlmZGJmMmRlZDQ4NGE0ZTI2
MTAyYjkyMWNjMjgwNzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBz
dGF0aWMgTWFsbG9jUHRyPHVpbnQ4X3QsIEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyTWFsbG9jPiBl
bmNvZGVTZXNzaW9uSGlzdG9yeUVudAogCiBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gZW5j
b2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkK
IHsKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0RlYWxsb2NhdG9yOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+PiBmYXN0TWFs
bG9jRGVhbGxvY2F0b3I7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTQwMSwxMyArNDAxLDEzIEBAIHN0
YXRpYyBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShj
b25zdCBGcmFtZVN0YXRlJiBmcmFtCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgbnVsbHB0
ciwgLy8gcHJlZmVycmVkU2l6ZQogICAgICAgICB9OwotICAgICAgICBmYXN0TWFsbG9jRGVhbGxv
Y2F0b3IgPSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7
CisgICAgICAgIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKSA9IGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKICAgICB9KTsKIAogICAg
IHNpemVfdCBidWZmZXJTaXplOwogICAgIGF1dG8gYnVmZmVyID0gZW5jb2RlU2Vzc2lvbkhpc3Rv
cnlFbnRyeURhdGEoZnJhbWVTdGF0ZSwgYnVmZmVyU2l6ZSk7CiAKLSAgICByZXR1cm4gYWRvcHRD
RihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVy
LmxlYWtQdHIoKSwgYnVmZmVyU2l6ZSwgZmFzdE1hbGxvY0RlYWxsb2NhdG9yKSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIGJ1ZmZlci5sZWFrUHRyKCksIGJ1ZmZlclNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5n
ZXQoKS5nZXQoKSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3Jl
YXRlRGljdGlvbmFyeShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENGU3RyaW5nUmVm
LCBDRlR5cGVSZWY+PiBrZXlWYWx1ZVBhaXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KaW5k
ZXggMmRmMjMzNWQ5YzVhZGZhYjVhNmJlOTJjOWM3N2MyMDU3YjY5OWUyYS4uYmRkYmIwODlkZWVi
NWVmZWYyY2U3MmVmMjNlYTNjOTYwMTA0MDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1t
CkBAIC0zOSw3ICszOSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6
OmluTWVtb3J5U3RvcmFnZVNlc3Npb24oKQogICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNz
aW9uKSB7CiAgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdElu
UHJvY2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKICAgICAgICAgYXV0byBj
b29raWVBY2NlcHRQb2xpY3kgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb29raWVBY2NlcHRQb2xpY3koKTsKLSAgICAgICAgYXV0byBz
dG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGlj
eSkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0
ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tp
ZUFjY2VwdFBvbGljeSk7CiAgICAgICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NG
VVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24g
PSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc2Vzc2lvbklEKCksIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0
b3JhZ2UpLCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVz
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5oCmluZGV4IDA2MWYyNjY5OGQ4ZmFjY2ExMzcxNzA0NGVkYTI2MDg2MWM2ODhhZGYu
LmQ0ODJiNDJlMGMyNTQxMjc3Yzk0YTQ1ZGZjZmI1YjAxOTQ1MTExNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTcs
NyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3
YXAgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZVdoaWxlV2Fp
dGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9OwogCi0gICAgZGlzcGF0Y2hfcXVldWVf
dCBtX2NvbW1pdFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fY29t
bWl0UXVldWU7CiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IG1fcGVuZGluZ0JhY2tp
bmdTdG9yZUZsdXNoZXI7CiAKICAgICBIYXNoU2V0PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcio+IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA5OTkyODcxYjFj
MDBlODIxMGNiNjZkZWJkMjhlZTZiMDhkYjEyNGQ1Li5hMzg4MTMzNWE0ZWY3ZGEwYTI4ZmI3NjAy
YjhhMjk3YTgwNjg1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC02NSw3ICs2NSw3IEBAIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBj
b25zdCBXCiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9z
aXRpbmdNb2RlKHRydWUpOwogICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJkcmF3aW5nIGFyZWEg
cm9vdCIpOwogCi0gICAgbV9jb21taXRRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLkNvbW1p
dFF1ZXVlIiwgbnVsbHB0cik7CisgICAgbV9jb21taXRRdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuQ29tbWl0UXVldWUiLCBudWxscHRyKSk7CiAKICAgICAvLyBJbiBv
cmRlciB0byBlbnN1cmUgdGhhdCB3ZSBnZXQgYSB1bmlxdWUgRGlzcGxheVJlZnJlc2hNb25pdG9y
IHBlci1EcmF3aW5nQXJlYSAobmVjZXNzYXJ5IGJlY2F1c2UgRGlzcGxheVJlZnJlc2hNb25pdG9y
CiAgICAgLy8gaXMgZHJpdmVuIGJ5IHRoaXMgY2xhc3MpLCBnaXZlIGVhY2ggcGFnZSBhIHVuaXF1
ZSBEaXNwbGF5SUQgZGVyaXZlZCBmcm9tIFdlYlBhZ2UncyB1bmlxdWUgSUQuCkBAIC03OCwxMCAr
NzgsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgICAgICBzZXRWaWV3RXhwb3NlZFJl
Y3Qodmlld0V4cG9zZWRSZWN0KTsKIH0KIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCi17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Nv
bW1pdFF1ZXVlKTsKLX0KK1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7CkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBtX3BlbmRpbmdC
YWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIGF1dG8gcGFn
ZUlEID0gbV93ZWJQYWdlLmlkZW50aWZpZXIoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1p
dFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hl
ciksIHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUuZ2V0KCksIFti
YWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlE
XSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9u
b3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwLmNwcAppbmRleCBhODY3MWZmMTk2MTBiNjFiZDY5ZGZmMjRkNTY2YjZiYzI1
MGQ5ZTNlLi45NWVmMjI5NGE5NzZmODQ0ZWMzYTQ5NWViYmJlM2IzZmQ5NmE3NGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAvLyBTZXNz
aW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24g
bmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90ZWhyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0
IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lv
bk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkp
OwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1
dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9u
TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewpAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6
OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwogCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNl
c3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihj
ZklkZW50aWZpZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggY2JkNTBiNmZjYTg1NTcxNWMyYzdjYzNkNjAxMmFi
ZDE4MmU0MDI4MC4uOTdjMzc5Y2VlNjZiNDkwODY5MWFmMGRmMWVjYjY2OWJlM2I2NWQyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpA
QCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYk5TVmlld0V4dHJhcy5o
PgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTksMTEg
KzYwLDExIEBAIHN0YXRpYyBpbnQgY29tcGFyZVBhZ2VSZWN0cyhjb25zdCB2b2lkICprZXksIGNv
bnN0IHZvaWQgKmFycmF5KTsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX1dJRFRIX0lOU0VUICAg
ICA9IDQuMCAqIDIuMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX0hFSUdIVF9JTlNFVCAgICA9
IDQuMCAqIDIuMDsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VX
aGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQorc3RhdGljIFJldGFpblB0cjxDR0Nv
bG9yUmVmPiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxv
YXQgYWxwaGEpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBncmF5U3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+PiBncmF5U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZUdyYXkoKSk7CiAgICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10gPSB7
IHdoaXRlLCBhbHBoYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGdyYXlTcGFjZSwgY29t
cG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UuZ2V0
KCkuZ2V0KCksIGNvbXBvbmVudHMpKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIFdlYlBERlZpZXcg
ewpAQCAtODMsMTQgKzg0LDE0IEBAICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIAog
KyAoQ0dDb2xvclJlZilzaGFkb3dDb2xvcgogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNoYWRv
d0NvbG9yID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKLSAgICBy
ZXR1cm4gc2hhZG93Q29sb3I7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxD
R0NvbG9yUmVmPj4gc2hhZG93Q29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDAs
IDIuMCAvIDMpOworICAgIHJldHVybiBzaGFkb3dDb2xvci5nZXQoKS5nZXQoKTsKIH0KIAogKyAo
Q0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBiYWNr
Z3JvdW5kQ29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDIwNC4wIC8gMjU1LCAx
KTsKLSAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJhY2tncm91bmRDb2xvciA9IGNyZWF0ZUNHQ29sb3JX
aXRoRGV2aWNlV2hpdGUoMjA0LjAgLyAyNTUsIDEpOworICAgIHJldHVybiBiYWNrZ3JvdW5kQ29s
b3IuZ2V0KCkuZ2V0KCk7CiB9CiAKIC8vIFRoaXMgaXMgYSBzZWNyZXQgcHJvdG9jb2wgZm9yIFdl
YkRhdGFTb3VyY2UgYW5kIFdlYkZyYW1lVmlldyB0byBvZmZlciB1cyB0aGUgb3Bwb3J0dW5pdHkg
dG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCmluZGV4IDFmYjUxOGY4NzRiODNlNjRh
ZmU1ZmY0OThkMWVmNTFjZTMxODVmYzguLmFlYjRkOGYxNmZkZGIwMjU1MTA4YjJhMDBlYjlmNjcy
MTVmMTc2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxl
bWVudERpY3Rpb25hcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJF
bGVtZW50RGljdGlvbmFyeS5tbQpAQCAtNTAsMTEgKzUwLDE1IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBsb29rdXBUYWJsZSA9
IE5VTEw7CitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBsb29rdXBU
YWJsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVE
aWN0aW9uYXJ5UmVmPj4gbG9va3VwVGFibGU7CisgICAgcmV0dXJuIGxvb2t1cFRhYmxlOworfQog
CiBzdGF0aWMgdm9pZCBhZGRMb29rdXBLZXkoTlNTdHJpbmcgKmtleSwgU0VMIHNlbGVjdG9yKQog
ewotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGxvb2t1cFRhYmxlLCAoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpa2V5LCBzZWxlY3Rvcik7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobG9va3VwVGFi
bGUoKS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgc2VsZWN0b3IpOwogfQogCiBz
dGF0aWMgdm9pZCBjYWNoZVZhbHVlRm9yS2V5KGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAq
dmFsdWUsIHZvaWQgKnNlbGYpCkBAIC03NiwxMCArODAsMTAgQEAgKyAodm9pZClpbml0aWFsaXpl
CiAKICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRhYmxlCiB7Ci0gICAgaWYgKGxvb2t1cFRhYmxl
KQorICAgIGlmIChsb29rdXBUYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb29rdXBU
YWJsZSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKKyAgICBsb29rdXBU
YWJsZSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCkpOwog
CiAgICAgYWRkTG9va3VwS2V5KFdlYkVsZW1lbnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5v
ZGUpKTsKICAgICBhZGRMb29rdXBLZXkoV2ViRWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dl
YkZyYW1lKSk7CkBAIC0xMjUsNyArMTI5LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQp
X2ZpbGxDYWNoZQogewotICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24obG9va3VwVGFibGUs
IGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilzZWxmKTsKKyAgICBDRkRpY3Rpb25h
cnlBcHBseUZ1bmN0aW9uKGxvb2t1cFRhYmxlKCkuZ2V0KCksIGNhY2hlVmFsdWVGb3JLZXksIChf
X2JyaWRnZSB2b2lkKilzZWxmKTsKICAgICBfY2FjaGVDb21wbGV0ZSA9IFlFUzsKIH0KIApAQCAt
MTQ5LDEyICsxNTMsMTIgQEAgLSAoaWQpb2JqZWN0Rm9yS2V5OihpZClrZXkKICAgICBpZiAodmFs
dWUgfHwgX2NhY2hlQ29tcGxldGUgfHwgW19uaWxWYWx1ZXMgY29udGFpbnNPYmplY3Q6a2V5XSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8
U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSwg
KF9fYnJpZGdlIENGVHlwZVJlZilrZXkpKSk7CisgICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nh
c3Q8U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJs
ZSgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWtleSkpKTsKICAgICBpZiAoIXNlbGVjdG9y
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHZhbHVlID0gW3NlbGYgcGVyZm9ybVNlbGVjdG9y
OnNlbGVjdG9yXTsKIAotICAgIE5TVUludGVnZXIgbG9va3VwVGFibGVDb3VudCA9IENGRGljdGlv
bmFyeUdldENvdW50KGxvb2t1cFRhYmxlKTsKKyAgICBOU1VJbnRlZ2VyIGxvb2t1cFRhYmxlQ291
bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChsb29rdXBUYWJsZSgpLmdldCgpKTsKICAgICBpZiAo
dmFsdWUpIHsKICAgICAgICAgaWYgKCFfY2FjaGUpCiAgICAgICAgICAgICBfY2FjaGUgPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bG9va3VwVGFibGVDb3Vu
dF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDAw
OGZiYmEyOGYyMTk4ZjhiMDkxYmIzYzNhMmVlN2M4MzIwMzU1Yi4uNWIwZWU4YTNhYzhjMzMzYjZl
ZTM0NGNkZDljM2I1NTc2NWMyNmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtMTI2MywyOCArMTI2MywzMiBAQCBzdGF0aWMgQ0ZTZXRDYWxsQmFj
a3MgTm9uUmV0YWluaW5nU2V0Q2FsbGJhY2tzID0gewogICAgIENGSGFzaAogfTsKIAotc3RhdGlj
IENGTXV0YWJsZVNldFJlZiBhbGxXZWJWaWV3c1NldDsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRh
YmxlU2V0UmVmPiYgYWxsV2ViVmlld3NTZXQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPj4gYWxsV2ViVmlld3NTZXQ7CisgICAgcmV0dXJu
IGFsbFdlYlZpZXdzU2V0OworfQogCiArICh2b2lkKV9tYWtlQWxsV2ViVmlld3NQZXJmb3JtU2Vs
ZWN0b3I6KFNFTClzZWxlY3RvcgogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCisgICAgaWYg
KCFhbGxXZWJWaWV3c1NldCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBbKF9fYnJpZGdlIE5T
TXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOnNl
bGVjdG9yXTsKKyAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0KCku
Z2V0KCkgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdOwogfQogCiAtICh2b2lk
KV9yZW1vdmVGcm9tQWxsV2ViVmlld3NTZXQKIHsKLSAgICBpZiAoYWxsV2ViVmlld3NTZXQpCi0g
ICAgICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVS
ZWYpc2VsZik7CisgICAgaWYgKGFsbFdlYlZpZXdzU2V0KCkpCisgICAgICAgIENGU2V0UmVtb3Zl
VmFsdWUoYWxsV2ViVmlld3NTZXQoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsK
IH0KIAogLSAodm9pZClfYWRkVG9BbGxXZWJWaWV3c1NldAogewotICAgIGlmICghYWxsV2ViVmll
d3NTZXQpCi0gICAgICAgIGFsbFdlYlZpZXdzU2V0ID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEws
IDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpOworICAgIGlmICghYWxsV2ViVmlld3NTZXQo
KSkKKyAgICAgICAgYWxsV2ViVmlld3NTZXQoKSA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxl
KE5VTEwsIDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpKTsKIAotICAgIENGU2V0U2V0VmFs
dWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgQ0ZTZXRT
ZXRWYWx1ZShhbGxXZWJWaWV3c1NldCgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYp
OwogfQogCiBAZW5kCkBAIC0yMjMwLDcgKzIyMzQsNyBAQCArICh2b2lkKWNsb3NlQWxsV2ViVmll
d3MKICAgICBXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50
cygpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNsb3NlIHRoZSBXZWJWaWV3cyBpbiBhIHJhbmRvbSBv
cmRlci4gQ2hhbmdlIHRoaXMgaWYgY2xvc2Ugb3JkZXIgaXMgaW1wb3J0YW50LgotICAgIGZvciAo
V2ViVmlldyAqd2ViVmlldyBpbiBbKF9fYnJpZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQgYWxs
T2JqZWN0c10pCisgICAgZm9yIChXZWJWaWV3ICp3ZWJWaWV3IGluIFsoX19icmlkZ2UgTlNTZXQg
KilhbGxXZWJWaWV3c1NldCgpLmdldCgpIGFsbE9iamVjdHNdKQogICAgICAgICBbd2ViVmlldyBj
bG9zZV07CiB9CiAKQEAgLTY5MTEsNyArNjkxNSw3IEBAICsgKEJPT0wpX2RpZFNldENhY2hlTW9k
ZWwKICsgKFdlYkNhY2hlTW9kZWwpX21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlCiB7CiAgICAg
V2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwot
ICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2ViVmll
d3NTZXQgb2JqZWN0RW51bWVyYXRvcl07CisgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0g
WyhOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIG9iamVjdEVudW1lcmF0b3Jd
OwogICAgIHdoaWxlIChXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW2VudW1lcmF0b3Ig
bmV4dE9iamVjdF0gcHJlZmVyZW5jZXNdKQogICAgICAgICBjYWNoZU1vZGVsID0gc3RkOjptYXgo
Y2FjaGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdKTsKICAgICByZXR1cm4gY2FjaGVN
b2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9u
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAKaW5kZXggNTExYTkyYjcyZDFjYTBkMjMzZDQ5MWMzMDAxOTYzNDMxY2M2NGQyYS4uOGYyNzE2
MmJiYWYxOGVlMWMxMThiOTUxMWY1MWI0N2U0NDg1Nzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTE5Nyw5ICsxOTcsNyBAQCBI
UkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFn
Kiogb3JpZ2lucykKICAgICBmb3IgKGF1dG8mIGNvcmVPcmlnaW4gOiBjb3JlT3JpZ2lucykKICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5SXRlbS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGNvcmVPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKS5wdHIoKSkpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0KKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGF1dG8ga2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lu
cyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0
KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKaW5kZXggZWEwYjY3NTFjNTU0ZTgyN2RjOTgyNTVjZDRhNzE1N2YxZDVh
ZDJiMi4uMWQyNzAyYWRiMDgyNzdjNDQ1MDhkM2RmYmRjNDI3OTg2ZGNmYzIyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMzNCw3ICszMzQs
NyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxD
cmVkZW50aWFsKiBjcmVkZW50aWFsLCBfSW5fbwogICAgIGlmICghd2ViQ3JlZGVudGlhbCkKICAg
ICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNy
ZWRlbnRpYWwoKSkpOworICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVu
dGlhbC0+Y3JlZGVudGlhbCgpKTsKIAogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVS
TERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0
KCksIHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSk7CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGUK
ICAgICBpZiAoIUNGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxs
ZW5nZSkpIHsKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdl
dChlbXB0eVN0cmluZygpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFj
ZShjaGFsbGVuZ2UpKSk7CiAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFk
b3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRp
YWwgPSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VD
cmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHAKaW5kZXggZDViZWVmODJlOTkwODkxYTcyZTZiNGZjNGJlMzc4ODMwYWI2
YWM5MC4uZmYzNGFkMDczN2EyNmQyYTE3M2VjZGJiOWI5NjdiNTllMTZiZTYyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0zNzAsMTQgKzM3MCwxMiBAQCBzdGF0
aWMgYm9vbCBwcmVwYXJlRGV2aWNlKElEaXJlY3QzRERldmljZTkqIGRldmljZSwgY29uc3QgQ0dS
ZWN0JiBib3VuZHMsIElEaXJlYwogCiBzdGF0aWMgQ0dSZWN0IHVwZGF0ZUJvdW5kcyhDQVJlbmRl
clVwZGF0ZSogdXBkYXRlKQogewotICAgIENHU1JlZ2lvbk9iaiByZ24gPSBDQVJlbmRlclVwZGF0
ZUNvcHlSZWdpb24odXBkYXRlKTsKKyAgICBhdXRvIHJnbiA9IGFkb3B0Q0YoQ0FSZW5kZXJVcGRh
dGVDb3B5UmVnaW9uKHVwZGF0ZSkpOwogICAgIGlmICghcmduKQogICAgICAgICByZXR1cm4gQ0dS
ZWN0WmVybzsKIAogICAgIENHUmVjdCByZXN1bHQ7Ci0gICAgQ0dFcnJvciBlcnJvciA9IENHU0dl
dFJlZ2lvbkJvdW5kcyhyZ24sICZyZXN1bHQpOwotICAgIENHU1JlbGVhc2VSZWdpb24ocmduKTsK
LQorICAgIENHRXJyb3IgZXJyb3IgPSBDR1NHZXRSZWdpb25Cb3VuZHMocmduLmdldCgpLCAmcmVz
dWx0KTsKICAgICByZXR1cm4gZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzID8gcmVzdWx0IDogQ0dS
ZWN0WmVybzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9j
YWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXph
YmxlU3RyaW5ncy5jcHAKaW5kZXggYjQxNjhiZjg0MTkxZThhMTE0MzlkOTAwMzJmZTg5ZWE0ZDI2
ZjcwNC4uYmM5ZTIwMzY5MGU3MDNmZjQ2OGU0MTE0ZTY5ZWNhZWQ1NDM3ZmI5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC02
NywxNyArNjcsMTcgQEAgc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCBmcmFtZXdvcmtMb2NTdHJp
bmdzKCkKIGNsYXNzIExvY2FsaXplZFN0cmluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TG9jYWxpemVkU3RyaW5nKTsKIHB1YmxpYzoKLSAgICBMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdS
ZWYgc3RyaW5nKQotICAgICAgICA6IG1fY2ZTdHJpbmcoc3RyaW5nKQorICAgIExvY2FsaXplZFN0
cmluZyhSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiYgc3RyaW5nKQorICAgICAgICA6IG1fY2ZTdHJp
bmcoV1RGTW92ZShzdHJpbmcpKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyhzdHJpbmcsIHN0
cmluZyk7CisgICAgICAgIEFTU0VSVChtX2NmU3RyaW5nKTsKICAgICB9CiAKICAgICBvcGVyYXRv
ciBMUENUU1RSKCkgY29uc3Q7Ci0gICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2NmU3RyaW5nOyB9CisgICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2NmU3RyaW5nLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0ZTdHJpbmdSZWYgbV9j
ZlN0cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fY2ZTdHJpbmc7CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9zdHJpbmc7CiB9OwogCkBAIC04Niw3ICs4Niw3IEBAIExvY2FsaXplZFN0
cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBtX3N0cmluZy53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKIAot
ICAgIG1fc3RyaW5nID0gbV9jZlN0cmluZzsKKyAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmcuZ2V0
KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IG1fc3RyaW5nLmxlbmd0aCgp
OyBpKyspCiAgICAgICAgIGlmIChtX3N0cmluZ1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAx
XSA9PSAnJScgfHwgKGkgPiAyICYmIG1fc3RyaW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdb
aSAtIDJdID49ICcxJyAmJiBtX3N0cmluZ1tpIC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAz
XSA9PSAnJScpKSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5k
bGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5ncwog
ICAgIHJldHVybiBzdHJpbmdzQnVuZGxlLT5idW5kbGU7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1Jl
ZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5k
bGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQorc3RhdGljIFJldGFuUHRyPENG
U3RyaW5nUmVmPiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0
cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBm
b3VuZCIpOwogCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2Nh
bGl6ZWRTdHJpbmdGcm9tQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAg
ICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgQ0ZTdHJpbmdS
ZWYgcmVzdWx0ID0gQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CisgICAgYXV0byBy
ZXN1bHQgPSBhZG9wdENGKENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApKTsKIAogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQg
bG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleS51dGY4KCkuZGF0YSgpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDBhZmZiNDVhMTdmYmJjOThjNzBhZWU4MmI1ZWI5ZWVhNTJjNjhmMDcuLjViYmRl
Y2FhZTUzOTYyMTUzMzhiOTE0MGIyY2I2YjBmMDRjZGIzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTExNyw3ICsxMTcsMTEgQEAgc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGUHJv
cGVydHlMaXN0UmVmIHYKIAogLy8gV2ViUHJlZmVyZW5jZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgQ0ZE
aWN0aW9uYXJ5UmVmIGRlZmF1bHRTZXR0aW5nczsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiYgZGVmYXVsdFNldHRpbmdzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGRlZmF1bHRTZXR0aW5nczsKKyAgICByZXR1cm4g
ZGVmYXVsdFNldHRpbmdzOworfQogCiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFdlYlByZWZlcmVu
Y2VzOjptX2FwcGxpY2F0aW9uSWQgPSBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsK
ICNlbmRpZgpAQCAtMjE0LDE1NyArMjE4LDE1NyBAQCBDRlN0cmluZ1JlZiBXZWJQcmVmZXJlbmNl
czo6YXBwbGljYXRpb25JZCgpCiB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVs
dFNldHRpbmdzKCkKIHsKICNpZiBVU0UoQ0YpCi0gICAgaWYgKGRlZmF1bHRTZXR0aW5ncykKKyAg
ICBpZiAoZGVmYXVsdFNldHRpbmdzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgZGVmYXVsdHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOworICAgIGF1dG8gZGVmYXVsdHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgSU5JVElBTElaRV9ERUZBVUxUX1BSRUZF
UkVOQ0VTX0RJQ1RJT05BUllfRlJPTV9HRU5FUkFURURfUFJFRkVSRU5DRVM7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVy
ZW5jZUtleSksIENGU1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNU
UigiQ291cmllciBOZXciKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFu
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTYW5z
U2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21p
YyBTYW5zIE1TIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRQaWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9s
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5p
bXVtRm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIjkiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYi
KSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1
bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJl
ZmVyZW5jZUtleSksIENGU1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiQ291cmllciBOZXciKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigi
VGltZXMgTmV3IFJvbWFuIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlh
bCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZhbnRh
c3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQaWN0b2dyYXBoRm9u
dFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQ
cmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNl
S2V5KSwgQ0ZTVFIoIjkiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYi
KSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAg
IFN0cmluZyBkZWZhdWx0RGVmYXVsdEVuY29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEi
LCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nIG9uIFdpbmRvd3MiKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkUHJpbnRC
YWNrZ3JvdW5kc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50
aW1lRmxhZ3NQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5B
Y2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENT
U1JlZ2lvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRl
ZEltYWdlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2FkU2l0
ZUljb25zS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtl
eSksIENGU1RSKCIxODAwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFByaXZhdGVCcm93
c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVL
ZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93c1VSTHNJblRvb2xUaXBz
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RS
KCIxIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQ
REZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgZGVm
YXVsdERlZmF1bHRFbmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVl
dEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvblByZWZlcmVuY2VLZXkpLCBDRlNUUigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRKYXZhRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNj
cmlwdFJ1bnRpbWVGbGFnc1ByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TG9jYWxT
dG9yYWdlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEV4cGVyaW1lbnRhbE5v
dGlmaWNhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFpvb21zVGV4
dE9ubHlQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZ1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERpc3BsYXlJbWFnZXNLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dExvYWRTaXRlSWNvbnNLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJh
dGlvbkludGVydmFsS2V5KSwgQ0ZTVFIoIjE4MDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRSZXNwZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0U2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0UERGRGlzcGxheU1vZGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjEiKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBE
RlNjYWxlRmFjdG9yUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0
bGVzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9u
c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCiAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBsaW5rQmVoYXZpb3JTdHJpbmdSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEZvcm1hdCgwLCAwLCBDRlNUUigiJWQiKSwgV2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2
aW9yKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEVk
aXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5n
ZXQoKSk7Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
SGlzdG9yeUl0ZW1MaW1pdEtleSksIENGU1RSKCIxMDAwIikpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpLCBD
RlNUUigiNyIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkpLCBDRlNUUigiIikpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZv
bnRTbW9vdGhpbmdDb250cmFzdFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2Vw
dFBvbGljeVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoQWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVz
ZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGhQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNl
S2V5KSwgbGlua0JlaGF2aW9yU3RyaW5nUmVmLmdldCgpKTsKKworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5SXRlbUxpbWl0S2V5KSwg
Q0ZTVFIoIjEwMDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdEtleSksIENGU1RSKCI3IikpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJY29uRGF0
YWJhc2VMb2NhdGlvbktleSksIENGU1RSKCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBDRlNU
UigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0Rm9udFNtb290aGluZ0NvbnRyYXN0UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViR3JhbW1hckNoZWNr
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihBbGxvd0NvbnRpbnVvdXNTcGVsbENo
ZWNraW5nUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiIikpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZU1vZGVs
UmVmID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiks
IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9k
ZWxSZWYuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYuZ2V0KCkp
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQ
YWludE5hdGl2ZUNvbnRyb2xzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGFpbnROYXRp
dmVDb250cm9sc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1l
cnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRTaG93RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwog
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEROU1ByZWZl
dGNoaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGlu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRB
bGxvd0Rpc3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRBbGxvd0Rpc3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEN1c3RvbUVsZW1lbnRzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRDdXN0b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRXZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxl
VGltZWxpbmVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0N1c3RvbVByb3Bl
cnRpZXNBbmRWYWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU0N1
c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
TGlua1ByZWxvYWRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExpbmtQcmVs
b2FkRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQcmVsb2FkaW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRWaXN1YWxWaWV3cG9ydEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0VmlzdWFsVmlld3BvcnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRDU1NPTVZpZXdTY3JvbGxpbmdBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0UmVzaXplT2JzZXJ2ZXJFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJl
c2l6ZU9ic2VydmVyRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Nt
b290aFNjcm9sbGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01W
aWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvcmVN
YXRoTUxFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViU1FMRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdENTU0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdENTU0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdE92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0T3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwogCi0gICAgZGVmYXVsdFNldHRpbmdzID0gZGVmYXVsdHM7CisgICAg
ZGVmYXVsdFNldHRpbmdzKCkgPSBXVEZNb3ZlKGRlZmF1bHRzKTsKICNlbmRpZgogfQogCkBAIC0z
NzksNyArMzgzLDcgQEAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNl
czo6dmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQogICAgIGlmICh2YWx1ZSkKICAgICAgICAg
cmV0dXJuIHZhbHVlOwogCi0gICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRT
ZXR0aW5ncywga2V5KTsKKyAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVmYXVsdFNl
dHRpbmdzKCkuZ2V0KCksIGtleSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFZhbHVl
Rm9yS2V5KENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUpCkBAIC02MjAs
NyArNjI0LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9D
RlByZWZlcmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0KQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKG9taXREZWZhdWx0cykgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIGRl
ZmF1bHRWYWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncywga2V5c1tp
XSk7CisgICAgICAgICAgICBDRlR5cGVSZWYgZGVmYXVsdFZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGVmYXVsdFNldHRpbmdzKCkuZ2V0KCksIGtleXNbaV0pOwogICAgICAgICAgICAgaWYg
KGRlZmF1bHRWYWx1ZSAmJiBDRkVxdWFsKGRlZmF1bHRWYWx1ZSwgdmFsdWVzW2ldKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY2NDk5MjUxMzE5YjEyNGFmOWJlYzY0MzI5MjUx
ODc4MDBhNzZkNzkuLjAwMGQ2OTQ2ZDVjN2ExYWQ0MjQ2NjRiZDJlMjIzNDk1Y2FiM2I4MTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcDoKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENv
bnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5o
OgorICAgICAgICAoQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRl
eHQpOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6Qml0bWFwQ29udGV4dCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoV2ViVGhyZWFk
TG9ja0FmdGVyRGVsZWdhdGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHA6CisgICAgICAgIChjcmVhdGVC
aXRtYXBDb250ZXh0RnJvbVdlYlZpZXcpOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBJbWFnZURpZmYvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcDoKKyAgICAgICAgKEltYWdlRGlmZjo6UGxhdGZvcm1JbWFnZTo6cGl4ZWxz
IGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cu
Y3BwOgorICAgICAgICAoV1RSOjpjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZSk6CisgICAgICAg
IChXVFI6OmNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6CisKIDIwMjEtMDMtMTAg
IE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW1dQ
RV1bR1RLXSBJbnRyb2R1Y2UgTmVlZHNVbmJyYW5kZWRVc2VyQWdlbnQgcXVpcmsgYW5kIHVzZSBp
dCBmb3IgYWNjb3VudHMuZ29vZ2xlLmNvbSwgZG9jcy5nb29nbGUuY29tLCBhbmQgZHJpdmUuZ29v
Z2xlLmNvbQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3Vw
cG9ydENHLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5j
cHAKaW5kZXggNWJjMDQwM2I4MTFiYzY1NWRkMjBmYTJkNDA5MjI5OWYwZTQwN2Q4NS4uOGU2ZGQ1
ZmVkN2QyYzJlYjM5YmNlZWJiMWQ0NjhjY2VkNTkyOGNkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgUmVm
UHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHQoc2l6ZV90IHBpeGVsc1dpZGUs
IHNpemVfdCBwaXhlbHNIaWdoLAogICAgIAogICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFwIGlu
IHRoZSBkZXZpY2UgY29sb3Igc3BhY2UgcHJldmVudHMgYW55IGNvbG9yIGNvbnZlcnNpb24gd2hl
biB0aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCiAgICAgUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNv
bG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMs
IGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCJEdW1wUmVuZGVyVHJlZTogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKCVwLCAlenUs
ICV6dSwgOCwgJXp1LCAlcCwgMHgleCkgZmFpbGVkXG4iLCBidWZmZXIsIHBpeGVsc0hpZ2gsIHBp
eGVsc1dpZGUsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKICAgICAgICAgZnJlZShi
dWZmZXIpOwpAQCAtMTM0LDYgKzEzNCw2IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVC
aXRtYXBDb250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6OmNy
ZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZlciwgY29udGV4dCk7CisgICAgcmV0
dXJuIEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZl
ciwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKaW5kZXggNDEyNGIwY2FlZGNlNzM4ZjQ2NDZjZGMzOGE3
YjUxNmExYTc2MWMwOC4uYjc5NGIyMTk4ZWQ4YTBhYTE0NzJkMzBiOTNhM2FiZmFjYzcwMjdhNiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKQEAgLTQ3
LDkgKzQ3LDkgQEAgdHlwZWRlZiBIQklUTUFQIFBsYXRmb3JtQml0bWFwQnVmZmVyOwogCiBjbGFz
cyBCaXRtYXBDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Qml0bWFwQ29udGV4dD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwQ29udGV4dD4gY3JlYXRlQnlBZG9wdGluZ0JpdG1h
cEFuZENvbnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRSZWYgY29u
dGV4dCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRt
YXBBbmRDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4mJiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Qml0bWFwQ29udGV4dChidWZmZXIsIGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQml0bWFwQ29udGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpKTsKICAgICB9CiAK
ICAgICB+Qml0bWFwQ29udGV4dCgpCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKIAotICAgIEJpdG1hcENvbnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0Nv
bnRleHRSZWYgY29udGV4dCkKKyAgICBCaXRtYXBDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVy
IGJ1ZmZlciwgUmV0YWluUHRyPENHQ29udGV4dFJlZj4mJiBjb250ZXh0KQogICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlcikKLSAgICAgICAgLCBtX2NvbnRleHQoYWRvcHRDRihjb250ZXh0KSkKKyAg
ICAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICB7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2RjZTVhYzVjMzI5
MWEzNjJlNDdlYjQyMGU3NzcyMWU4MmI1YjRjNC4uYjUxZTFhZWZlMmRmZjZhY2VlYjc2NDNiM2I0
MzJmMjFlNDA3OWJhZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lt
cG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVn
ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5o
PgpAQCAtMTgxMCwyMCArMTgxMSwxOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogLy8gbG9j
ayB0byBwcmV2ZW50IHBvdGVudGlhbGx5IHJlLWVudGVyaW5nIFdlYkNvcmUuCiBzdGF0aWMgdm9p
ZCBXZWJUaHJlYWRMb2NrQWZ0ZXJEZWxlZ2F0ZUNhbGxiYWNrc0hhdmVDb21wbGV0ZWQoKQogewot
ICAgIGRpc3BhdGNoX3NlbWFwaG9yZV90IGRlbGVnYXRlU2VtYXBob3JlID0gZGlzcGF0Y2hfc2Vt
YXBob3JlX2NyZWF0ZSgwKTsKKyAgICBhdXRvIGRlbGVnYXRlU2VtYXBob3JlID0gYWRvcHRPU09i
amVjdChkaXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRlKDApKTsKICAgICBXZWJUaHJlYWRSdW4oXnsK
LSAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChkZWxlZ2F0ZVNlbWFwaG9yZSk7Cisg
ICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCkp
OwogICAgIH0pOwogCi0gICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRl
U2VtYXBob3JlLCBESVNQQVRDSF9USU1FX05PVykpIHsKKyAgICB3aGlsZSAoZGlzcGF0Y2hfc2Vt
YXBob3JlX3dhaXQoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCksIERJU1BBVENIX1RJTUVfTk9XKSkg
ewogICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIFtbTlNSdW5Mb29wIGN1
cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05T
RGF0ZSBkaXN0YW50UGFzdF1dOwogICAgICAgICB9CiAgICAgfQogCiAgICAgV2ViVGhyZWFkTG9j
aygpOwotCi0gICAgZGlzcGF0Y2hfcmVsZWFzZShkZWxlZ2F0ZVNlbWFwaG9yZSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBv
cnRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4u
Y3BwCmluZGV4IGE5YmE2OTE4MzExOGJiODMyM2M4ZDQ5YjFmZDMzOWE1MWY1MzliNjAuLjM5NWQz
MDI3YjlkODdlYTg5NTZlNmIwMDA4N2M2MjE0OGEyNjdkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAg
UmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29s
IG9uc2NyZWVuLCBib29sIGluY3JlbWUKIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZp
Y2VSR0IoKSk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVh
dGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVz
LCBjb2xvclNwYWNlLmdldCgpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QgfCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0
LCA4LCBpbmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0ZU9y
ZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogI2VsaWYgVVNF
KENBSVJPKSAKICAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNoYXIqKWluZm8uYm1CaXRzLCBDQUlST19GT1JN
QVRfQVJHQjMyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgaW5mby5ibVdpZHRoQnl0ZXMp
OyAKQEAgLTExMiw1ICsxMTEsNSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFw
Q29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIGF1dG8g
Y29udGV4dCA9IHJlbmRlclRhcmdldC5nZXQoKTsKICNlbmRpZiAKIAotICAgIHJldHVybiBCaXRt
YXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIGNvbnRl
eHQpOworICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5k
Q29udGV4dChiaXRtYXAsIFdURk1vdmUoY29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
SW1hZ2VEaWZmL0ltYWdlRGlmZi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvSW1h
Z2VEaWZmL0ltYWdlRGlmZi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4NTRmMjJk
YmFmYjVmYjI2ZTU4MmQ3ZTU5NjQ4MTNiODllZWU5MWQuLjk2NDE2MzdlZDFlMDcyYzFmOGNjMjZi
MTk3ZjNiZTJkNGE0MjBjNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZm
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3Nyw2ICsxNzcsNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDMx
REY0MkM2MUVCQkJCQjkwMDk2RUQ0NCAvKiBJbWFnZURpZmYueGNjb25maWcgKi87CiAJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE3
IjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xODQsNiArMTg1LDcgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSAzMURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAi
Z251KysxNyI7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC0xOTEsNiArMTkz
LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSAzMURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29u
ZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RB
TkRBUkQgPSAiZ251KysxNyI7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CmRp
ZmYgLS1naXQgYS9Ub29scy9JbWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcCBiL1Rvb2xz
L0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCmluZGV4IGYwM2MzNTc5MmFkMGQzNDQx
ZWZlODVhZGRkYmYwN2U3Yzc2ZjUxZGMuLjA0ZDFmNGYzZWE0NzUwYTE4ODEyOTRlYzA2M2Q5ZmIw
ZjBkNzM3MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cu
Y3BwCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24uaD4KICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpZmRlZiBfV0lOMzIKICNpbmNsdWRlIDx3aW5zb2NrMi5oPgpAQCAtMTQyLDkg
KzE0Myw4IEBAIHVuc2lnbmVkIGNoYXIqIFBsYXRmb3JtSW1hZ2U6OnBpeGVscygpIGNvbnN0CiAg
ICAgc2l6ZV90IHJvd0J5dGVzID0gd2lkdGggKiA0OwogCiAgICAgbV9idWZmZXIgPSBjYWxsb2Mo
aGVpZ2h0LCByb3dCeXRlcyk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGUobV9idWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdl
R2V0Q29sb3JTcGFjZShtX2ltYWdlKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQsIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2UpOwotICAgIENGUmVs
ZWFzZShjb250ZXh0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZShtX2J1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRD
b2xvclNwYWNlKG1faW1hZ2UpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2UpOwogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZlcik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCmluZGV4IDAx
YzUzMWE5YjZhY2U4ZTgxNjk0OGY2NzZjZTYzMWY1Mjc5NGI2YzQuLjRlYzljMjBlOTgwZjVlMDdl
ZmYzMzM2OGFmOTgxZjViOGI0OTdiMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
Zy9UZXN0SW52b2NhdGlvbkNHLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3QgQ0ZT
dHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiAKIG5hbWVzcGFjZSBX
VFIgewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENH
SW1hZ2VSZWYgaW1hZ2UpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlQ0dD
b250ZXh0RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIHsKICAgICBzaXplX3QgcGl4ZWxz
V2lkZSA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKQEAgLTUzLDE1ICs1MywxNSBAQCBzdGF0aWMgQ0dDb250
ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCiAKICAg
ICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHNob3Vs
ZCBwcmV2ZW50IGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIg
dmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5
dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwg
a0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRl
cywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFr
ZSgwLCAwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoKSwgaW1hZ2UpOworICAgIENHQ29udGV4dERy
YXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBpeGVsc1dpZGUsIHBpeGVs
c0hpZ2gpLCBpbWFnZSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0YXRpYyBDR0NvbnRl
eHRSZWYgY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFnZSkKK3N0YXRp
YyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoV0tJbWFn
ZVJlZiB3a0ltYWdlKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKFdLSW1hZ2VDcmVhdGVD
R0ltYWdlKHdrSW1hZ2UpKTsKICAgICByZXR1cm4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2Uo
aW1hZ2UuZ2V0KCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1
bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFNuYXBzaG90UmVzdWx0VHlwZSBzbmFwc2hv
CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoImR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVj
dGVkOiBpbWFnZSBpcyBudWxsXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2tJbWFn
ZSkpOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKHdrSW1hZ2Up
OwogICAgICAgICBpbWFnZVNpemUgPSBXS0ltYWdlR2V0U2l6ZSh3a0ltYWdlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTbmFwc2hvdFJlc3VsdFR5cGU6OldlYlZpZXc6CkBAIC0xNjcsNyAr
MTY3LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhw
ZWN0ZWQoU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG8KICAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdlIGlzIG51bGxcbiIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQgPSBhZG9wdENG
KGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKGltYWdlLmdldCgpKSk7CisgICAgICAgIGNvbnRl
eHQgPSBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQoKSk7CiAgICAgICAgIGlt
YWdlU2l6ZSA9IFdLU2l6ZU1ha2UoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFn
ZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="442047"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422849</attachid>
            <date>2021-03-10 11:06:26 -0800</date>
            <delta_ts>2021-03-10 12:21:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310110625.patch</filename>
            <type>text/plain</type>
            <size>217716</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uMjAyNjc5NGExMDkzZGYzOWZkYmI0ZGQyMDIyZWFhNjA0NTc0NDMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTM1NDEsOSArMzU0Miw4IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBhdXRvJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNp
bmdsZXRvbigpOwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElT
UEFUQ0hfUVVFVUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERp
c3BhdGNoUXVldWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAg
ICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJq
c2Mgc2hlbGwgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
KTsKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92
ZShxdWV1ZSkpOwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGlj
YWxTdGF0ZSA9IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxT
eW5jaHJvbm91cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9u
b3VzPjo6Y3JlYXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRi
NzdiLi4zN2I3MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0
RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4m
JiBxdWV1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3Bh
dGNoX3JldGFpbihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1
ZXVlOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYw
N2NkNjMxZDJlY2Y1ODgzYzU0N2M0N2M0Mi4uMzU2ODc3ZTlmMGQwYzY0M2NiZWFjZDYxMzdjZmVl
MzJlOTk0ZjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTM4
LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBvbGljeSA6IHVp
bnQ4X3QgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3Bh
dGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RGlzcGF0Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRp
ZgogCiAgICAgY2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMTAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1
ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2
OTRiZDhjM2Y1YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNGEzYjdkYWZhZTc4ZjFhNmQ5
YzQ2M2IyY2M2YTAzZGE5NGE0MTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjZWxzZQogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAjZW5kaWYKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMs
IFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmKTsKIAogI2lmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQorICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKTsgfQogI2Vsc2UKICAg
ICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlm
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+
IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbHNlCiAgICAgUnVuTG9vcCogbV9ydW5Mb29wOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tCmluZGV4IDA4OGIxOWNjMTBhNjVlZmZlNWQ0ZTlmYzI3YTA4MWMyNTZiYTM3NmYuLjVjMGY1
YjI1NDRmN2JhNWVlNGQ3MjUwNjA3ZjdmZDZmYmQwNDQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC02OCwxMyArNjgs
MTMgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogICAgIGlmIChtX2lu
c3RhbGxlZCB8fCB0aW1lckV2ZW50U291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBeewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1
dG8gbWVtb3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9OT1JNQUwgfCBE
SVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfQ1JJ
VElDQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX1dBUk4gfCBESVNQQVRD
SF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX0NSSVRJQ0FMOwogI2Vsc2UgLy8gUExBVEZPUk0o
TUFDKQogICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJF
U1NVUkVfQ1JJVElDQUw7CiAjZW5kaWYKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJj
ZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJF
U1NVUkUsIDAsIG1lbW9yeVN0YXR1c0ZsYWdzLCBtX2Rpc3BhdGNoUXVldWUpOworICAgICAgICBt
ZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRD
SF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgbWVtb3J5U3RhdHVzRmxhZ3MsIG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSk7CiAKICAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9o
YW5kbGVyKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UsIF57CiAgICAgICAgICAgICBhdXRvIHN0
YXR1cyA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNl
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAgICAgfSk7CiAKICAgICAvLyBBbGxvdyBzaW11bGF0aW9uIG9mIG1lbW9yeSBwcmVzc3Vy
ZSB3aXRoICJub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5IgotICAgIG5vdGlmeV9y
ZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBd
LCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNo
KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIsICZub3RpZnlUb2tlbnNbMF0sIG1fZGlzcGF0Y2hRdWV1
ZS5nZXQoKSwgXihpbnQpIHsKICNpZiBFTkFCTEUoRk1XX0ZPT1RQUklOVF9DT01QQVJJU09OKQog
ICAgICAgICBhdXRvIGZvb3RwcmludEJlZm9yZSA9IHBhZ2VzUGVyVk1UYWcoKTsKICNlbmRpZgpA
QCAtMTI0LDE1ICsxMjQsMTUgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwo
KQogICAgICAgICBsb2dGb290cHJpbnRDb21wYXJpc29uKGZvb3RwcmludEJlZm9yZSwgZm9vdHBy
aW50QWZ0ZXIpOwogI2VuZGlmCiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57
CiAgICAgICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIAotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7
CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeS5iZWdp
biIsICZub3RpZnlUb2tlbnNbMV0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAg
ICAgICAgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIH0pOwotICAgIG5vdGlm
eV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRv
a2Vuc1syXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9k
aXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRva2Vuc1syXSwgbV9k
aXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQ
cmVzc3VyZSgpOwogICAgIH0pOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAgICAgaWYgKCFtX2luc3RhbGxlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgaWYgKG1lbW9y
eVByZXNzdXJlRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5j
ZWwobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSk7CiAgICAgICAgICAgICBtZW1vcnlQcmVzc3Vy
ZUV2ZW50U291cmNlID0gbnVsbHB0cjsKQEAgLTE2NCw4ICsxNjQsOCBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OmhvbGRPZmYoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0
Y2hRdWV1ZSwgXnsKLSAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9j
cmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZSk7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgICAgICB0
aW1lckV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9USU1FUiwgMCwgMCwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKICAgICAgICAgaWYgKHRp
bWVyRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KHRpbWVy
RXZlbnRTb3VyY2UsIHRoaXMpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmaW5hbCBhcmd1
bWVudCBgc19taW5pbXVtSG9sZE9mZlRpbWUuc2Vjb25kcygpYCBzZWVtcyB3cm9uZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCAzNzczYzc5ODUyZWJiMjFiZDA2
ZDU2N2IwMTdjZjdjOTMyMjUzZGU2Li40OWNkYmI1ODgwYmIxNjZiNWY3NWU1NmRkYzc5YzFjZmEx
YTU0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCkBAIC0zMywx
NCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICB9KS5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNl
Y29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5v
c2Vjb25kc0FzPGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24p
XSB7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
ZHVyYXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgp
KTsKIH0KQEAgLTQ5LDEzICs0OSwxMiBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICBkaXNwYXRj
aF9xdWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENI
X1FVRVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CiAgICAgYXR0ciA9IGRp
c3BhdGNoX3F1ZXVlX2F0dHJfbWFrZV93aXRoX3Fvc19jbGFzcyhhdHRyLCBUaHJlYWQ6OmRpc3Bh
dGNoUU9TQ2xhc3MocW9zKSwgMCk7Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKG5hbWUsIGF0dHIpOwotICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KG1fZGlzcGF0
Y2hRdWV1ZSwgdGhpcyk7CisgICAgbV9kaXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cikpOworICAgIGRpc3BhdGNoX3NldF9jb250ZXh0
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OmNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9u
cywgV1RGOjpGdW5jdGlvbjx2b2lkKHNpemVfdCBpbmRleCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzY3Y2MzYTk2M2E1MGVjMjFhZWI4
NjcyNTA5Y2Q2YjI5MTUzZGM4Yi4uMzBlZjM2MDU3MTQ0Y2IyYTFiZjU2MGI1NGVjNmE2OGI2YWEw
NTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTExLDE2
ICsxMTEsMTMgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAgICAgICAg
IHJldHVybiBzaXplOwogICAgIH0KIAotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGUo
KQotICAgIHsKLSAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxw
dHIsIHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0
ZSwgZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwotICAgICAgICByZXR1cm4gQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpOwotICAgIH0KLQogICAgIHN0YXRpYyBDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IoKQogICAgIHsKLSAgICAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciA9IGNyZWF0ZSgpOwotICAgICAgICByZXR1cm4gYWxsb2NhdG9yOworICAgICAg
ICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxwdHIsIHJldGFpbiwg
cmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0ZSwgZGVhbGxvY2F0
ZSwgcHJlZmVycmVkU2l6ZSB9OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKKyAgICAgICAgfSgpKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci5nZXQoKS5nZXQoKTsKICAgICB9CiAKIH0KQEAgLTEzOCwxNSArMTM1LDE1
IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQog
ICAgIEFTU0VSVCghU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nKTsKICAg
ICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSB0aGlzOwogCi0gICAg
Q0ZTdHJpbmdSZWYgc3RyaW5nOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwog
ICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFj
dGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZh
bHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgZWxzZQotICAgICAgICBzdHJpbmcgPSBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9y
TnVsbCk7CisgICAgICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNo
YXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAvLyBDb3Jl
Rm91bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIg
Y3VycmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAg
IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOworICAgIHJldHVybiBzdHJpbmc7CiB9CiAKIC8vIE9u
IFN0cmluZ0ltcGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0
aGUgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggZmZlNjNhNmMzOWI4NDZjMWU1OTc2MTVkYmM0NzJmZDczZTIwMDY2
OC4uNGIwMWVjMzc5ZWJhOWZjZTFkOGE0ODY5MWM1OGE4MDViODM4NDZhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0
ICJXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIgogI2ltcG9ydCAib2JqY19pbnN0YW5jZS5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CisjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewpAQCAtMzksMjIgKzQxLDI2IEBAIE9i
amNDbGFzczo6T2JqY0NsYXNzKENsYXNzU3RydWN0UHRyIGFDbGFzcykKIHsKIH0KIAotc3RhdGlj
IENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2xhc3Nlc0J5SXNBID0gMDsKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGNsYXNzZXNCeUlzQSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gY2xhc3Nl
c0J5SXNBOworICAgIHJldHVybiBjbGFzc2VzQnlJc0E7Cit9CiAKIHN0YXRpYyB2b2lkIF9jcmVh
dGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCFjbGFzc2VzQnlJc0EpCi0g
ICAgICAgIGNsYXNzZXNCeUlzQSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwg
TlVMTCwgTlVMTCk7CisgICAgaWYgKCFjbGFzc2VzQnlJc0EoKSkKKyAgICAgICAgY2xhc3Nlc0J5
SXNBKCkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwg
TlVMTCkpOwogfQogCiBPYmpjQ2xhc3MqIE9iamNDbGFzczo6Y2xhc3NGb3JJc0EoQ2xhc3NTdHJ1
Y3RQdHIgaXNhKQogewogICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpOwogCi0g
ICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFzcyo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilpc2EpKSk7CisgICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFz
cyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSgp
LmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSkpKTsKICAgICBpZiAoIWFDbGFzcykgewog
ICAgICAgICBhQ2xhc3MgPSBuZXcgT2JqY0NsYXNzKGlzYSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7
CisgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGNsYXNzZXNCeUlzQSgpLmdldCgpLCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKWlzYSwgYUNsYXNzKTsKICAgICB9CiAKICAgICByZXR1cm4gYUNsYXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAppbmRleCA4NWU5YmM0
YWE0ZWRkZmI0NDUzOTRiMGU4ZDM5NjA3ZjQyZDEyNGVmLi4wODhmMDJlOGRhMjQ0MDZhOTAzZjlk
YTA5OGE2MWI4MjQ3MGU3Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nt
YXJ0UmVwbGFjZUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZUNGLmNwcApAQCAtMzYsMzMgKzM2LDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBnZXRTbWFydFNldChib29sIGlzUHJldmlvdXNDaGFy
YWN0ZXIpCiB7Ci0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwcmVTbWFydFNl
dDsKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHBvc3RTbWFydFNldDsKLSAg
ICBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgc21hcnRTZXQgPSBpc1ByZXZpb3VzQ2hhcmFjdGVy
ID8gcHJlU21hcnRTZXQgOiBwb3N0U21hcnRTZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+PiBwcmVTbWFydFNldDsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZUNoYXJhY3RlclNldFJlZj4+
IHBvc3RTbWFydFNldDsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmPiYg
c21hcnRTZXQgPSBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gcHJlU21hcnRTZXQuZ2V0KCkgOiBwb3N0
U21hcnRTZXQuZ2V0KCk7CiAgICAgaWYgKCFzbWFydFNldCkgewotICAgICAgICBzbWFydFNldCA9
IENGQ2hhcmFjdGVyU2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKLSAgICAg
ICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21hcnRTZXQsIGlzUHJldmlv
dXNDaGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7IikgOiBDRlNUUigiKV0uLDs6P1wnIVwi
JSotL30iKSk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQsIENGQ2hhcmFj
dGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGluZSkp
OyAgICAgICAgCisgICAgICAgIHNtYXJ0U2V0ID0gYWRvcHRDRihDRkNoYXJhY3RlclNldENyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgICAgICBDRkNoYXJhY3RlclNldEFk
ZENoYXJhY3RlcnNJblN0cmluZyhzbWFydFNldC5nZXQoKSwgaXNQcmV2aW91c0NoYXJhY3RlciA/
IENGU1RSKCIoW1wiXCcjJC8tYHsiKSA6IENGU1RSKCIpXS4sOzo/XCchXCIlKi0vfSIpKTsKKyAg
ICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldC5nZXQoKSwgQ0ZDaGFyYWN0ZXJTZXRH
ZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFdoaXRlc3BhY2VBbmROZXdsaW5lKSk7CisKICAg
ICAgICAgLy8gQWRkaW5nIENKSyByYW5nZXMKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFy
YWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgxMTAwLCAyNTYpKTsgLy8gSGFu
Z3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFy
YWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgyRTgwLCAzNTIpKTsgLy8gQ0pL
ICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYpCi0gICAgICAgIENGQ2hhcmFjdGVy
U2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MkZGMCwgNDY0
KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMsIENKSyBTeW1ib2xzLCBIaXJhZ2FuYSwgS2F0
YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vLCBLYW5idW4sICYgQm9w
b21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hh
cmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MzIwMCwgMjkzOTIpKTsgLy8g
RW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dyYXBocyAoVW5pIEhhbiAmIEV4dCBBKSwgJiBZaSAoMHgz
MjAwIC0gMHhBNENGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdl
KHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweEFDMDAsIDExMTgzKSk7IC8vIEhhbmd1bCBTeWxsYWJs
ZXMgKDB4QUMwMCAtIDB4RDdBRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJz
SW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhGOTAwLCAzNTIpKTsgLy8gQ0pLIENvbXBh
dGliaWxpdHkgSWRlb2dyYXBocyAoMHhGOTAwIC0gMHhGQTVGKQotICAgICAgICBDRkNoYXJhY3Rl
clNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweEZFMzAsIDMy
KSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0RikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhGRjAwLCAyNDApKTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYwMCAtIDB4RkZFRikK
LSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZS
YW5nZU1ha2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGggRXhudGVuc2lvbiBC
Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENG
UmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3Jh
cGhzICgweDJGODAwIC0gMHgyRkExRCkKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0
ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHgxMTAwLCAyNTYpKTsgLy8g
SGFuZ3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRD
aGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHgyRTgwLCAzNTIp
KTsgLy8gQ0pLICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYpCisgICAgICAgIENG
Q2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VN
YWtlKDB4MkZGMCwgNDY0KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMsIENKSyBTeW1ib2xz
LCBIaXJhZ2FuYSwgS2F0YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1v
LCBLYW5idW4sICYgQm9wb21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCisgICAgICAgIENGQ2hh
cmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtl
KDB4MzIwMCwgMjkzOTIpKTsgLy8gRW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dyYXBocyAoVW5pIEhh
biAmIEV4dCBBKSwgJiBZaSAoMHgzMjAwIC0gMHhBNENGKQorICAgICAgICBDRkNoYXJhY3RlclNl
dEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweEFDMDAs
IDExMTgzKSk7IC8vIEhhbmd1bCBTeWxsYWJsZXMgKDB4QUMwMCAtIDB4RDdBRikKKyAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5n
ZU1ha2UoMHhGOTAwLCAzNTIpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHhG
OTAwIC0gMHhGQTVGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdl
KHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweEZFMzAsIDMyKSk7IC8vIENKSyBDb21wYXRp
YmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0RikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRD
aGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhGRjAwLCAyNDAp
KTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYwMCAtIDB4RkZFRikKKyAgICAgICAgQ0ZD
aGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGggRXhudGVuc2lvbiBCCisgICAg
ICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENG
UmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3Jh
cGhzICgweDJGODAwIC0gMHgyRkExRCkKIAotICAgICAgICBpZiAoaXNQcmV2aW91c0NoYXJhY3Rl
cikKLSAgICAgICAgICAgIHByZVNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldCwgQ0ZDaGFyYWN0ZXJTZXRH
ZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFB1bmN0dWF0aW9uKSk7ICAgICAgIAotICAgICAg
ICAgICAgcG9zdFNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFp
c1ByZXZpb3VzQ2hhcmFjdGVyKQorICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFy
dFNldC5nZXQoKSwgQ0ZDaGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFB1
bmN0dWF0aW9uKSk7CiAgICAgfQotICAgIHJldHVybiBzbWFydFNldDsKKyAgICByZXR1cm4gc21h
cnRTZXQuZ2V0KCk7CiB9CiAKIGJvb2wgaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQoVUNo
YXIzMiBjLCBib29sIGlzUHJldmlvdXNDaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KaW5kZXggMWNkNWQ5
ZmRiOGExNDE5ZDM2N2MwODZlMGM2Y2E2M2RmZWQ2MzMyNS4uNTA5ZjIzYmFjZTFlZTVmYTYxN2Q4
NWNiZGExNTY4ZDk5MzhiODU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2Nv
YS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtMTE5LDEwICsxMTksMTAgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJlbnQgeyAwIH07CiB9OwogCi1zdGF0aWMgQ0dD
b2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQor
c3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9hdCBn
LCBmbG9hdCBiLCBmbG9hdCBhKQogewogICAgIENHRmxvYXQgY29tcG9uZW50c1s0XSA9IHsgciwg
ZywgYiwgYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCks
IGNvbXBvbmVudHMpOworICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2VSZWYoKSwgY29tcG9uZW50cykpOwogfQogCiBzdHJ1Y3QgSGlzdG9yaWNNZW1vcnlDYXRl
Z29yeUluZm8gewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAKICAgICBbbV9sYXllci5nZXQoKSBzZXRBbmNob3JQb2lu
dDpDR1BvaW50WmVyb107CiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNTY2FsZToyLjBd
OwotICAgIFttX2xheWVyLmdldCgpIHNldEJhY2tncm91bmRDb2xvcjphZG9wdENGKGNyZWF0ZUNv
bG9yKDAsIDAsIDAsIDAuOCkpLmdldCgpXTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRCYWNrZ3Jv
dW5kQ29sb3I6Y3JlYXRlQ29sb3IoMCwgMCwgMCwgMC44KS5nZXQoKV07CiAgICAgW21fbGF5ZXIu
Z2V0KCkgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdo
dCldOwogCiAgICAgb3ZlcmxheSgpLmxheWVyKCkuc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
bV9sYXllci5nZXQoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6Ok5vbmUp
OwpAQCAtMjgwLDE3ICsyODAsMTcgQEAgc3RhdGljIHZvaWQgc2hvd1RleHQoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHksIENHQ29sb3JSZWYgY29sb3IsIGMKIAogc3RhdGlj
IHZvaWQgZHJhd0dyYXBoTGFiZWwoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0
IHksIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBibGFjayA9
IGNyZWF0ZUNvbG9yKDAsIDAsIDAsIDEpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA1LCB5
IC0gMywgYmxhY2ssIHRleHQpOwotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlID0gY3JlYXRl
Q29sb3IoMSwgMSwgMSwgMSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgeCArIDQsIHkgLSA0LCB3
aGl0ZSwgdGV4dCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9y
UmVmPj4gYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBzaG93VGV4dChjb250
ZXh0LCB4ICsgNSwgeSAtIDMsIGJsYWNrLmdldCgpLmdldCgpLCB0ZXh0KTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiB3aGl0ZSA9IGNyZWF0ZUNvbG9y
KDEsIDEsIDEsIDEpOworICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA0LCB5IC0gNCwgd2hpdGUu
Z2V0KCkuZ2V0KCksIHRleHQpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3Q3B1SGlzdG9yeShDR0Nv
bnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB5MiwgUmluZ0J1ZmZl
cjxmbG9hdD4mIGhpc3RvcnkpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgY3B1Q29sb3IgPSBj
cmVhdGVDb2xvcigwLCAxLCAwLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENHQ29sb3JSZWY+PiBjcHVDb2xvciA9IGNyZWF0ZUNvbG9yKDAsIDEsIDAsIDEpOwogCi0g
ICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY3B1Q29sb3IpOwor
ICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNwdUNvbG9yLmdl
dCgpLmdldCgpKTsKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMSk7CiAKICAg
ICBpbnQgaSA9IDA7CkBAIC0zMjEsOCArMzIxLDggQEAgc3RhdGljIHZvaWQgZHJhd0dDSGlzdG9y
eShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB5MiwgUmkK
IAogICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCAxKTsKIAotICAgIHN0YXRpYyBD
R0NvbG9yUmVmIGNhcGFjaXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAwLjMsIDEpOwotICAg
IENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhcGFjaXR5Q29sb3Ip
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGNhcGFj
aXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAwLjMsIDEpOworICAgIENHQ29udGV4dFNldFN0
cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhcGFjaXR5Q29sb3IuZ2V0KCkuZ2V0KCkpOwog
CiAgICAgc2l6ZV90IGkgPSAwOwogCkBAIC0zMzUsOCArMzM1LDggQEAgc3RhdGljIHZvaWQgZHJh
d0dDSGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9h
dCB5MiwgUmkKICAgICAgICAgaSsrOwogICAgIH0pOwogCi0gICAgc3RhdGljIENHQ29sb3JSZWYg
c2l6ZUNvbG9yID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7Ci0gICAgQ0dDb250ZXh0
U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9yKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBzaXplQ29sb3IgPSBjcmVhdGVD
b2xvcigwLjYsIDAuNSwgMC45LCAxKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBzaXplQ29sb3IuZ2V0KCkuZ2V0KCkpOwogCiAgICAgaSA9IDA7CiAKQEAg
LTQ1NiwxMCArNDU2LDEwIEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtRHJh
dyhDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBDR1JlY3Qgdmlld0JvdW5kcyA9IG1fb3Zlcmxh
eS0+Ym91bmRzKCk7CiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNvbnRleHQsIHZpZXdCb3VuZHMp
OwogCi0gICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3JGb3JMYWJlbHMgPSBjcmVhdGVDb2xvcigw
LjksIDAuOSwgMC45LCAxKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMjAsIGNvbG9yRm9y
TGFiZWxzLCBtYWtlU3RyaW5nKCIgICAgICAgIENQVTogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSkpOwotICAg
IHNob3dUZXh0KGNvbnRleHQsIDEwLCAzMCwgY29sb3JGb3JMYWJlbHMsICIgIEZvb3RwcmludDog
IiArIGZvcm1hdEJ5dGVOdW1iZXIobWVtb3J5Rm9vdHByaW50KCkpKTsKLSAgICBzaG93VGV4dChj
b250ZXh0LCAxMCwgNDAsIGNvbG9yRm9yTGFiZWxzLCAiICAgRXh0ZXJuYWw6ICIgKyBmb3JtYXRC
eXRlTnVtYmVyKGRhdGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY29sb3JGb3JMYWJlbHMgPSBjcmVh
dGVDb2xvcigwLjksIDAuOSwgMC45LCAxKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgMjAs
IGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCBtYWtlU3RyaW5nKCIgICAgICAgIENQVTogIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0KCksIDYsIEtlZXBU
cmFpbGluZ1plcm9zKSkpOworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCAzMCwgY29sb3JGb3JM
YWJlbHMuZ2V0KCkuZ2V0KCksICIgIEZvb3RwcmludDogIiArIGZvcm1hdEJ5dGVOdW1iZXIobWVt
b3J5Rm9vdHByaW50KCkpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgNDAsIGNvbG9yRm9y
TGFiZWxzLmdldCgpLmdldCgpLCAiICAgRXh0ZXJuYWw6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKGRh
dGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7CiAKICAgICBmbG9hdCB5ID0gNTU7CiAgICAg
Zm9yIChhdXRvJiBjYXRlZ29yeSA6IGRhdGEuY2F0ZWdvcmllcykgewpAQCAtNDgwLDggKzQ4MCw4
IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtRHJhdyhDR0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICB5IC09IDU7CiAKICAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9y
TGFiZWxzLCAiICAgIEVkZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEVk
ZW5Db2xsZWN0aW9uLCBub3cpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIwLCBj
b2xvckZvckxhYmVscywgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVP
Zk5leHRGdWxsQ29sbGVjdGlvbiwgbm93KSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIHkg
KyAxMCwgY29sb3JGb3JMYWJlbHMuZ2V0KCkuZ2V0KCksICIgICAgRWRlbiBHQzogIiArIGdjVGlt
ZXJTdHJpbmcoZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24sIG5vdykpOworICAgIHNob3dU
ZXh0KGNvbnRleHQsIDEwLCB5ICsgMjAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICAg
IEZ1bGwgR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9u
LCBub3cpKTsKIAogICAgIGRyYXdDcHVIaXN0b3J5KGNvbnRleHQsIHZpZXdCb3VuZHMuc2l6ZS53
aWR0aCAtIDcwLCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRhLmNwdSk7CiAgICAgZHJh
d0dDSGlzdG9yeShjb250ZXh0LCB2aWV3Qm91bmRzLnNpemUud2lkdGggLSAxNDAsIDAsIHZpZXdC
b3VuZHMuc2l6ZS5oZWlnaHQsIGRhdGEuZ2NIZWFwU2l6ZSwgZGF0YS5jYXRlZ29yaWVzW01lbW9y
eUNhdGVnb3J5OjpHQ0hlYXBdLmRpcnR5U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKaW5kZXggODIwM2MwMzZhMzYxMjU3
ZTUyZTgwNWQxZmY5NTg4NGM2YjQ4MWE2NC4uMzBkNWUwNTU1MTliY2EwMDNkMjQ1NDVmNDNkZDIx
MzcwY2YwMmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0Nl
cnRpZmljYXRlQ0ZXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9D
ZXJ0aWZpY2F0ZUNGV2luLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ2VydGlmaWNhdGVDRldpbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDE5ICszNSwxOSBAQCBz
dGF0aWMgdm9pZCBkZWFsbG9jQ2VydENvbnRleHQodm9pZCogcHRyLCB2b2lkKiBpbmZvKQogICAg
ICAgICBDZXJ0RnJlZUNlcnRpZmljYXRlQ29udGV4dChzdGF0aWNfY2FzdDxQQ0NFUlRfQ09OVEVY
VD4ocHRyKSk7CiB9CiAKLXN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGVDZXJ0Q29udGV4dERl
YWxsb2NhdG9yKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZUNlcnRD
b250ZXh0RGVhbGxvY2F0b3IoKQogewogICAgIENGQWxsb2NhdG9yQ29udGV4dCBhbGxvY0NvbnRl
eHQgPSB7CiAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGRlYWxsb2NDZXJ0Q29udGV4dCwg
MAogICAgIH07Ci0gICAgcmV0dXJuIENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsICZhbGxvY0NvbnRleHQpOworICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsICZhbGxvY0NvbnRleHQpKTsKIH0KIAogUmV0YWluUHRyPENG
RGF0YVJlZj4gY29weUNlcnRpZmljYXRlVG9EYXRhKFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRl
KQogewotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjZXJ0RGVhbGxvYyA9IGNyZWF0ZUNlcnRD
b250ZXh0RGVhbGxvY2F0b3IoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGQWxsb2NhdG9yUmVmPj4gY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2Nh
dG9yKCk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGVDb3B5ID0gQ2VydER1cGxpY2F0
ZUNlcnRpZmljYXRlQ29udGV4dChjZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2YoKmNlcnRpZmljYXRl
Q29weSksIGNlcnREZWFsbG9jKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0
aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2YoKmNlcnRpZmljYXRlQ29weSksIGNlcnRE
ZWFsbG9jLmdldCgpLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApp
bmRleCAwNTczMjVjMDYyZGJjZTVkODEyZmI0OGY4NDczMjU5ODYyYWVkNzQ5Li4zMDU4ZWU4MTdm
Y2RmOTU4NGNiYjM2MTcxZjRjNmZjODQ3MTI3ZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiA9IEZvbnRPcmll
bnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRXaWR0aFZhcmlhbnQ6
OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0
b1RleHRSZW5kZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKIAogI2lmIFVTRShDT1JF
X1RFWFQpCi0gICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRmb3JtRGF0YShDVEZvbnRSZWYsIGZs
b2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlx
dWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jpem9udGFs
LCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRoLCBUZXh0
UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmluZywgQ3Jl
YXRpb25EYXRhKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQbGF0Zm9ybURh
dGEoUmV0YWluUHRyPENURm9udFJlZj4mJiwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
ID0gZmFsc2UsIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IGZhbHNlLCBGb250T3JpZW50YXRpb24g
PSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBGb250V2lk
dGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0gVGV4dFJlbmRlcmlu
Z01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlvbkRhdGEqID0gbnVsbHB0cik7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCBhYTMxMzJiYWJmNzAyM2NmYTVmMzgwOGMyMzhlOWFmZDNkZmJmYjg0
Li5kMDJhNDZiM2EzYWY4Y2Q3MmQ4ODA5MmI5MzhlOWYyMjcxMGVjMjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNp
ZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BhdHRlcm4qIENHUGF0dGVyblJlZjsKLXR5cGVk
ZWYgQ0dQYXR0ZXJuUmVmIFBsYXRmb3JtUGF0dGVyblB0cjsKK3R5cGVkZWYgUmV0YWluUHRyPENH
UGF0dGVyblJlZj4gUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VsaWYgVVNFKERJUkVDVDJEKQogaW50
ZXJmYWNlIElEMkQxQml0bWFwQnJ1c2g7CiB0eXBlZGVmIElEMkQxQml0bWFwQnJ1c2gqIFBsYXRm
b3JtUGF0dGVyblB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGE4MjE1Y2MwNWZmMjJkMTI5MGYx
NzA4MDE5MDU0MjFhMDE5NzA5NWEuLjc2N2E5NmJhMWViN2ViMWJlNDAyN2JmMzE4MGI3NTBmYWRl
NTNiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNjksMTAgKzY5LDExIEBACiAjZW5kaWYKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAvLyBTb2Z0LWxpbmtpbmcgaGVhZGVycyBtdXN0IGJl
IGluY2x1ZGVkIGxhc3Qgc2luY2UgdGhleSAjZGVmaW5lIGZ1bmN0aW9ucywgY29uc3RhbnRzLCBl
dGMuCiAjaW5jbHVkZSAiQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oIgpAQCAtMTU3LDcgKzE1
OCw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVm
IGxlZ2libGVPdXRwdXQoKSBjb25zdCB7IHJldHVybiBtX2xlZ2libGVPdXRwdXQuZ2V0KCk7IH0K
ICAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZv
ckxlZ2libGVNZWRpYSgpIGNvbnN0OwogI2VuZGlmCi0gICAgaW5saW5lIGRpc3BhdGNoX3F1ZXVl
X3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWU7IH0K
KyAgICBpbmxpbmUgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1
cm4gbV9ub3RpZmljYXRpb25RdWV1ZS5nZXQoKTsgfQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TE9BREVSX0RFTEVHQVRFKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gdGFrZVJlcXVlc3RG
b3JLZXlVUkkoY29uc3QgU3RyaW5nJik7CkBAIC0xOTUsNyArMTk2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZXRhaW5QdHI8QVZDRk1lZGlhU2VsZWN0aW9uR3JvdXBSZWY+IG1fc2VsZWN0aW9uR3JvdXA7
CiAjZW5kaWYKIAotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9ub3RpZmljYXRpb25RdWV1ZTsKKyAg
ICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX25vdGlmaWNhdGlvblF1ZXVlOwogCiAg
ICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX2NhVmlkZW9MYXllcjsKICAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3ZpZGVvTGF5ZXJXcmFwcGVyOwpAQCAtMjQ0LDcgKzI0
NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogfQogI2VuZGlm
CiAKLXN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKQorc3RhdGljIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKIHsKICAgICBzdGF0
aWMgY29uc3QgQ0ZTdHJpbmdSZWYga2V5TmFtZXNbXSA9IHsKICAgICAgICAgQVZDRkFzc2V0UHJv
cGVydHlEdXJhdGlvbiwKQEAgLTI1OCwxMyArMjU5LDEzIEBAIHN0YXRpYyBDRkFycmF5UmVmIGNy
ZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKQogI2VuZGlmCiAgICAgfTsKICAgICAKLSAgICByZXR1cm4g
Q0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXplb2Yoa2V5TmFtZXMp
IC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXpl
b2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOwogfQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBtZXRhZGF0YUtleU5hbWVzKCkKIHsKLSAgICBz
dGF0aWMgQ0ZBcnJheVJlZiBrZXlzID0gY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpOwotICAgIHJl
dHVybiBrZXlzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4+IGtleXMgPSBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCk7CisgICAgcmV0dXJuIGtleXMuZ2V0
KCkuZ2V0KCk7CiB9CiAKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgQVZDRlRpbWVk
TWV0YWRhdGFHcm91cC5oIGV4cG9ydGVkIHRoaXMga2V5LgpAQCAtMTM3NSw3ICsxMzc2LDcgQEAg
QVZGV3JhcHBlcjo6QVZGV3JhcHBlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiog
b3duZXIpCiAgICAgQVNTRVJUKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgPT0gZGlzcGF0Y2hf
Z2V0X2N1cnJlbnRfcXVldWUoKSk7CiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6QVZGV3Jh
cHBlciglcCkiLCB0aGlzKTsKIAotICAgIG1fbm90aWZpY2F0aW9uUXVldWUgPSBkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLm5vdGlmaWNhdGlv
blF1ZXVlIiwgMCk7CisgICAgbV9ub3RpZmljYXRpb25RdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5ub3Rp
ZmljYXRpb25RdWV1ZSIsIDApKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxF
R0FURSkKICAgICBtX3Jlc291cmNlTG9hZGVyQ2FsbGJhY2tzLnZlcnNpb24gPSBrQVZDRkFzc2V0
UmVzb3VyY2VMb2FkZXJfQ2FsbGJhY2tzVmVyc2lvbl8xOwpAQCAtMTM5NSw5ICsxMzk2LDYgQEAg
QVZGV3JhcHBlcjo6fkFWRldyYXBwZXIoKQogICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CiAgICAg
ZGVzdHJveUltYWdlR2VuZXJhdG9yKCk7CiAKLSAgICBpZiAobV9ub3RpZmljYXRpb25RdWV1ZSkK
LSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX25vdGlmaWNhdGlvblF1ZXVlKTsKLQogICAgIGlm
IChhdkFzc2V0KCkpIHsKICAgICAgICAgQVZDRkFzc2V0Q2FuY2VsTG9hZGluZyhhdkFzc2V0KCkp
OwogICAgICAgICBtX2F2QXNzZXQgPSAwOwpAQCAtMTUzMCw3ICsxNTI4LDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpjcmVhdGVBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwgYm9vbCBpbmhlcml0VVJJ
KQogCiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUob3B0aW9uc1JlZi5nZXQoKSwgQVZDRlVSTEFz
c2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5LCBjZlJlc3RyaWN0aW9ucy5nZXQoKSk7CiAKLSAg
ICBtX2F2QXNzZXQgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25z
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSkpOworICAgIG1fYXZBc3NldCA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0
Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgp
LCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpKSk7CiAKICNpZiBI
QVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAgICAgQVNTRVJUKGNhbGxiYWNrQ29u
dGV4dCgpKTsKQEAgLTE1NjcsMjQgKzE1NjUsMjQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQ
bGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogV2UgbmVlZCBhIHdheSB0byBjcmVhdGUgYSBBVlBsYXllciB3aXRob3V0IGFuIEFWUGxheWVy
SXRlbSwgc2VlIDxyZGFyOi8vcHJvYmxlbS85ODc3NzMwPi4KLSAgICBBVkNGUGxheWVyUmVmIHBs
YXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZp
Y2F0aW9uUXVldWUpOwotICAgIG1fYXZQbGF5ZXIgPSBhZG9wdENGKHBsYXllclJlZik7CisgICAg
YXV0byBwbGF5ZXJSZWYgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFu
ZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYu
Z2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKKyAgICBtX2F2UGxheWVyID0gcGxh
eWVyUmVmOwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYg
SEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKLSAgICBBVkNGUGxheWVy
U2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlFbmFibGVkKHBsYXllclJlZiwgRkFMU0UpOworICAgIEFW
Q0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQocGxheWVyUmVmLmdldCgpLCBG
QUxTRSk7CiAjZW5kaWYKIAogICAgIGlmIChtX2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGly
ZWN0M0REZXZpY2VQdHIoKSkKLSAgICAgICAgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRy
KCkocGxheWVyUmVmLCBtX2QzZERldmljZS5nZXQoKSk7CisgICAgICAgIEFWQ0ZQbGF5ZXJTZXRE
aXJlY3QzRERldmljZVB0cigpKHBsYXllclJlZi5nZXQoKSwgbV9kM2REZXZpY2UuZ2V0KCkpOwog
CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgY2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50
ZXJHZXRMb2NhbENlbnRlcigpOwogICAgIEFTU0VSVChjZW50ZXIpOwogCi0gICAgQ0ZOb3RpZmlj
YXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmlj
YXRpb25DYWxsYmFjaywgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJS
ZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
KyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVyUmF0ZUNoYW5nZWROb3RpZmlj
YXRpb24sIHBsYXllclJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOwogCiAgICAgLy8gQWRkIGEgdGltZSBvYnNlcnZlciwgYXNrIHRv
IGJlIGNhbGxlZCBpbmZyZXF1ZW50bHkgYmVjYXVzZSB3ZSBkb24ndCByZWFsbHkgd2FudCBwZXJp
b2RpYyBjYWxsYmFja3MgYnV0CiAgICAgLy8gb3VyIG9ic2VydmVyIHdpbGwgYWxzbyBiZSBjYWxs
ZWQgd2hlbmV2ZXIgYSBzZWVrIGhhcHBlbnMuCiAgICAgY29uc3QgZG91YmxlIHZlcnlMb25nSW50
ZXJ2YWwgPSA2MCo2MCo2MCoyNCozMDsKLSAgICBtX3RpbWVPYnNlcnZlciA9IGFkb3B0Q0YoQVZD
RlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwocGxheWVyUmVmLCBD
TVRpbWVNYWtlKHZlcnlMb25nSW50ZXJ2YWwsIDEwKSwgbV9ub3RpZmljYXRpb25RdWV1ZSwgJnBl
cmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2ssIGNhbGxiYWNrQ29udGV4dCgpKSk7CisgICAgbV90
aW1lT2JzZXJ2ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1RpbWVPYnNlcnZl
ckZvckludGVydmFsKHBsYXllclJlZi5nZXQoKSwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFs
LCAxMCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCksICZwZXJpb2RpY1RpbWVPYnNlcnZlckNh
bGxiYWNrLCBjYWxsYmFja0NvbnRleHQoKSkpOwogfQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBV
VF9TVVBQT1JUKQpAQCAtMTYwNywyMiArMTYwNSwyMiBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0
ZVBsYXllckl0ZW0oKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDcmVhdGUgdGhlIHBsYXll
ciBpdGVtIHNvIHdlIGJlZ2luIGxvYWRpbmcgbWVkaWEgZGF0YS4KLSAgICBBVkNGUGxheWVySXRl
bVJlZiBpdGVtUmVmID0gQVZDRlBsYXllckl0ZW1DcmVhdGVXaXRoQXNzZXQoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgYXZBc3NldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxheWVy
SXRlbSA9IGFkb3B0Q0YoaXRlbVJlZik7CisgICAgYXV0byBpdGVtUmVmID0gYWRvcHRGKEFWQ0ZQ
bGF5ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwg
bV9ub3RpZmljYXRpb25RdWV1ZS5nZXQoKSkpOworICAgIG1fYXZQbGF5ZXJJdGVtID0gaXRlbVJl
ZjsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9u
Q2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIAotICAgIENGTm90
aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90
aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNh
dGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU3Rh
dHVzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9u
QmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRk
T2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ss
IEFWQ0ZQbGF5ZXJJdGVtVHJhY2tzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3Rp
ZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90
aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90
aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
Y2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5
ZXJJdGVtTG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90
aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5v
dGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5v
dGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2Vk
Tm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRl
bGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihj
ZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXll
ckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVm
LCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0g
ICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4
dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVy
RW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNp
b25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJB
ZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFj
aywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24s
IGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUR1cmF0aW9u
Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVo
YXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2Jz
ZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFW
Q0ZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU3RhdHVzQ2hhbmdlZE5vdGlm
aWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
Y2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5
ZXJJdGVtVHJhY2tzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmlj
YXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZp
Y2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtU2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdlZE5v
dGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZp
b3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQ
bGF5ZXJJdGVtTG9hZGVkVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0
KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
KyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNp
emVDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrTGlrZWx5VG9LZWVwVXBDaGFuZ2VkTm90aWZp
Y2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRl
bGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihj
ZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXll
ckl0ZW1Jc1BsYXliYWNrQnVmZmVyRW1wdHlDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdl
dCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7
CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNrQnVm
ZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9u
U3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUR1cmF0aW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRl
bVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwogICAgIC8vIEZJWE1FOiBBcmUgdGhlcmUgb3RoZXIgbGVnaWJsZSBvdXRwdXQgdGhp
bmdzIHdlIG5lZWQgdG8gcmVnaXN0ZXIgZm9yPyBhc3NldCBhbmQgaGFzRW5hYmxlZEF1ZGlvIGFy
ZSBub3QgZXhwb3NlZCBieSBBVkNGCiAKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBDQUNG
Q29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24oKSwgMCwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwpAQCAtMTc1NCwxNSArMTc1MiwxNCBAQCB2
b2lkIEFWRldyYXBwZXI6OmNoZWNrUGxheWFiaWxpdHkoKQogewogICAgIExPRyhNZWRpYSwgIkFW
RldyYXBwZXI6OmNoZWNrUGxheWFiaWxpdHkoJXApIiwgdGhpcyk7CiAKLSAgICBzdGF0aWMgQ0ZB
cnJheVJlZiBwcm9wZXJ0eUtleU5hbWU7Ci0gICAgaWYgKCFwcm9wZXJ0eUtleU5hbWUpIHsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtleU5hbWVzW10gPSB7IAorICAgIHN0YXRp
YyBhdXRvIHByb3BlcnR5S2V5TmFtZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
IHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrZXlOYW1lc1tdID0gewogICAgICAgICAgICAgQVZD
RkFzc2V0UHJvcGVydHlQbGF5YWJsZQogICAgICAgICB9OwotICAgICAgICBwcm9wZXJ0eUtleU5h
bWUgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlO
YW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAg
ICB9CisgICAgICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQq
KilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSksICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICB9KCkpOwogCi0gICAgQVZDRkFzc2V0TG9hZFZhbHVl
c0FzeW5jaHJvbm91c2x5Rm9yUHJvcGVydGllcyhhdkFzc2V0KCksIHByb3BlcnR5S2V5TmFtZSwg
bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrLCBjYWxsYmFja0NvbnRleHQoKSk7CisgICAg
QVZDRkFzc2V0TG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yUHJvcGVydGllcyhhdkFzc2V0KCks
IHByb3BlcnR5S2V5TmFtZS5nZXQoKS5nZXQoKSwgbG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxi
YWNrLCBjYWxsYmFja0NvbnRleHQoKSk7CiB9CiAKIHZvaWQgQVZGV3JhcHBlcjo6bG9hZE1ldGFk
YXRhQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29udGV4dCkKQEAgLTIw
MDMsNyArMjAwMCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQVZDRlZpZGVvTGF5ZXIoKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgbGF5ZXIgd2lsbCBnZXQgaG9va2VkIHVwIHZp
YSBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oKS4KLSAgICBtX2F2Q0ZW
aWRlb0xheWVyID0gYWRvcHRDRihBVkNGUGxheWVyTGF5ZXJDcmVhdGVXaXRoQVZDRlBsYXllcihr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBhdlBsYXllcigpLCBtX25vdGlmaWNhdGlvblF1ZXVlKSk7Cisg
ICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXllckxheWVyQ3JlYXRlV2l0aEFW
Q0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIoKSwgbV9ub3RpZmljYXRpb25R
dWV1ZS5nZXQoKSkpOwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRl
b0xheWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIHZpZGVvTGF5ZXIoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXgg
MGVhYThlN2ZhMThjMjAyNGM5ZjgwZjUyMDk4YTlkY2I2NTVlMTM2OS4uYzY3NDlkODNkYzFmYzEw
OTRlODM5NDdjZjUwYTg1N2VlNDk0ZTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyBDR0NvbG9y
UmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKK3N0YXRp
YyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYpOwogfQog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1w
bGF0ZTw+CiBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gVGlueUxSVUNhY2hlUG9saWN5PFdlYkNvcmU6
OkNvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoV2ViQ29yZTo6bGVh
a0NHQ29sb3IoY29sb3IpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlQ0dDb2xvcihjb2xv
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpAQCAtODksNyArODksNyBAQCBDb2xvcjo6Q29s
b3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKIH0KIAotc3Rh
dGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIFJl
dGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
ICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRD
b21wb25lbnRzKCk7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFr
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21w
b25lbnRzOwogICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07
CiAKLSAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25l
bnRzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dG
bG9hdENvbXBvbmVudHMpKTsKIH0KIAogQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKQEAgLTEyNiwxNiArMTI2LDE2IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKGF1dG8gc3JnYiA9IGNvbG9yLnRyeUdldEFz
U1JHQkFCeXRlcygpKSB7CiAgICAgICAgIHN3aXRjaCAoUGFja2VkQ29sb3I6OlJHQkEgeyAqc3Jn
YiB9LnZhbHVlKSB7CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6dHJh
bnNwYXJlbnRCbGFjayB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB0
cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICByZXR1
cm4gdHJhbnNwYXJlbnRDR0NvbG9yOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDR0NvbG9yUmVmPj4gdHJhbnNwYXJlbnRDR0NvbG9yID0gY3JlYXRlQ0dDb2xv
cihjb2xvcik7CisgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRDR0NvbG9yLmdldCgpLmdl
dCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6
YmxhY2sgfS52YWx1ZTogewotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0Nv
bG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwotICAgICAgICAgICAgcmV0dXJuIGJsYWNrQ0dDb2xv
cjsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJl
Zj4+IGJsYWNrQ0dDb2xvciA9IGNyZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgcmV0
dXJuIGJsYWNrQ0dDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBh
Y2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OndoaXRlIH0udmFsdWU6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKLSAgICAg
ICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiB3aGl0ZUNHQ29sb3IgPSBjcmVhdGVDR0NvbG9y
KGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3IuZ2V0KCkuZ2V0KCk7CiAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCmluZGV4IGEzZmI4OWQ1MGQ4OWM2YmRi
NjYzYTkwZGIwMjU0MzlkYTQzMDJhZWEuLjIwZTFjY2FiY2Q4ZmU3MDM5ZDQ1Y2Y5NGJmNmI5MTM1
NjRhOTBiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdGVtcGxhdGU8Y29uc3QgQ0ZTdHJpbmdSZWYmIGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29u
c3RhbnQ+IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgbmFtZWRDb2xvclNwYWNlKCkKIHsKLSAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2U7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+PiBjb2xvclNwYWNlOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
ewotICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoY29sb3JT
cGFjZU5hbWVHbG9iYWxDb25zdGFudCk7Ci0gICAgICAgIEFTU0VSVChjb2xvclNwYWNlKTsKKyAg
ICAgICAgY29sb3JTcGFjZS5nZXQoKSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5h
bWUoY29sb3JTcGFjZU5hbWVHbG9iYWxDb25zdGFudCkpOworICAgICAgICBBU1NFUlQoY29sb3JT
cGFjZS5nZXQoKSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGNvbG9yU3BhY2U7CisgICAgcmV0dXJu
IGNvbG9yU3BhY2UuZ2V0KCkuZ2V0KCk7CiB9CiAKIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZVJlZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMWJhOWViZWMyZGQyYzBlMDc2M2YwMDdl
NmIyZWJiNDRmYjk4NDEyYi4uNTNlYjVlY2E2NzQ2YTE5YTgxNmJkY2M4YTExNmM5ZGE5MDhkNWNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9
IEFmZmluZVRyYW5zZm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0gICAgUmV0
YWluUHRyPENHUGF0dGVyblJlZj4gcGxhdGZvcm1QYXR0ZXJuID0gYWRvcHRDRihtX3N0YXRlLnN0
cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKSk7CisgICAg
YXV0byBwbGF0Zm9ybVBhdHRlcm4gPSBtX3N0YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRm
b3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTSA9IEFmZmluZVRy
YW5zZm9ybShnZXRVc2VyVG9CYXNlQ1RNKGNnQ29udGV4dCkpOwogCi0gICAgUmV0YWluUHRyPENH
UGF0dGVyblJlZj4gcGxhdGZvcm1QYXR0ZXJuID0gYWRvcHRDRihtX3N0YXRlLmZpbGxQYXR0ZXJu
LT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSkpOworICAgIGF1dG8gcGxhdGZv
cm1QYXR0ZXJuID0gbV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVz
ZXJUb0Jhc2VDVE0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCmluZGV4IGM2OWI1
MmQ3NzZmOTVkNTY3N2I3ZTllMDZmZGI5ODAxMTA3ZGYyOTIuLjI3MTU5MjRkMTRhNjk1OGU4MDRm
NTY1ZmEwNjRlMDIyZWZjNGM2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlQ0cuaApAQCAtNDEsOCArNDEsOCBAQCB0eXBlZGVmIHVuc2lnbmVkIEdyYXBoaWNzQ29u
dGV4dENHRmxhZ3M7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZShDR0NvbnRleHRSZWYgY2dDb250ZXh0LCBHcmFwaGljc0NvbnRleHRDR0Zs
YWdzIGZsYWdzID0gMCkKLSAgICAgICAgOiBtX2NnQ29udGV4dChjZ0NvbnRleHQpCisgICAgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFJldGFpblB0cjxDR0NvbnRleHRSZWY+JiYgY2dD
b250ZXh0LCBHcmFwaGljc0NvbnRleHRDR0ZsYWdzIGZsYWdzID0gMCkKKyAgICAgICAgOiBtX2Nn
Q29udGV4dChXVEZNb3ZlKGNnQ29udGV4dCkpCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAs
IG1faGRjKDApCiAgICAgICAgICwgbV9zaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKaW5kZXgg
YWY5NmY4Zjk0M2RmNmQwMmIxMDUwNTU1N2UxNzFmOWExODMzMGQyNC4uYTE5YTIxMWE4NzE3OTg1
ZDZkNGM5Zjk0MTM4OGFjMWIxNDYwMDhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCkBAIC00NSwyMyArNDUsMjMgQEAgc3RhdGljIHNpemVf
dCBwdXRCeXRlc05vd2hlcmUodm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3QgY291bnQpCiAgICAg
cmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZVNjcmF0Y2hDb250
ZXh0KCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVTY3JhdGNoQ29udGV4
dCgpCiB7CiAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyBwdXRCeXRl
c05vd2hlcmUsIDAgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhQ29uc3VtZXJSZWY+IGNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7Ci0gICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAs
IDApOworICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlKDAs
ICZjYWxsYmFja3MpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHUERGQ29udGV4dENy
ZWF0ZShjb25zdW1lci5nZXQoKSwgMCwgMCkpOwogCiAgICAgQ0dGbG9hdCBibGFja1s0XSA9IHsg
MCwgMCwgMCwgMSB9OwotICAgIENHQ29udGV4dFNldEZpbGxDb2xvcihjb250ZXh0LCBibGFjayk7
Ci0gICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3IoY29udGV4dCwgYmxhY2spOworICAgIENHQ29u
dGV4dFNldEZpbGxDb2xvcihjb250ZXh0LmdldCgpLCBibGFjayk7CisgICAgQ0dDb250ZXh0U2V0
U3Ryb2tlQ29sb3IoY29udGV4dC5nZXQoKSwgYmxhY2spOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgQ0dDb250ZXh0UmVmIHNjcmF0Y2hDb250ZXh0KCkKIHsKLSAg
ICBzdGF0aWMgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBjcmVhdGVTY3JhdGNoQ29udGV4dCgpOwot
ICAgIHJldHVybiBjb250ZXh0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPj4gY29udGV4dCA9IGNyZWF0ZVNjcmF0Y2hDb250ZXh0KCk7CisgICAgcmV0
dXJuIGNvbnRleHQuZ2V0KCkuZ2V0KCk7CiB9CiAKIFBhdGggUGF0aDo6cG9seWdvblBhdGhGcm9t
UG9pbnRzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50PiYgcG9pbnRzKQpAQCAtMjEwLDExICsyMTAs
MTEgQEAgc3RhdGljIHZvaWQgY29weUNsb3NpbmdTdWJwYXRoc0FwcGxpZXJGdW5jdGlvbih2b2lk
KiBpbmZvLCBjb25zdCBDR1BhdGhFbGVtZW50KgogICAgIH0KIH0KIAotc3RhdGljIENHTXV0YWJs
ZVBhdGhSZWYgY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2luYWxQYXRo
KQorc3RhdGljIFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiBjb3B5Q0dQYXRoQ2xvc2luZ1N1
YnBhdGhzKENHUGF0aFJlZiBvcmlnaW5hbFBhdGgpCiB7Ci0gICAgQ0dNdXRhYmxlUGF0aFJlZiBw
YXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0aEFwcGx5KG9yaWdpbmFsUGF0
aCwgcGF0aCwgY29weUNsb3NpbmdTdWJwYXRoc0FwcGxpZXJGdW5jdGlvbik7Ci0gICAgQ0dQYXRo
Q2xvc2VTdWJwYXRoKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRl
TXV0YWJsZSgpKTsKKyAgICBDR1BhdGhBcHBseShvcmlnaW5hbFBhdGgsIHBhdGguZ2V0KCksIGNv
cHlDbG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24pOworICAgIENHUGF0aENsb3NlU3VicGF0
aChwYXRoLmdldCgpKTsKICAgICByZXR1cm4gcGF0aDsKIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBA
IGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2ludCAmcG9pbnQsIFdpbmRSdWxlIHJ1
bGUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENHUGF0aENvbnRhaW5z
UG9pbnQgcmV0dXJucyBmYWxzZSBmb3Igbm9uLWNsb3NlZCBwYXRocywgYXMgYSB3b3JrLWFyb3Vu
ZCwgd2UgY29weSBhbmQgY2xvc2UgdGhlIHBhdGggZmlyc3QuICBSYWRhciA0NzU4OTk4IGFza3Mg
Zm9yIGEgYmV0dGVyIENHIEFQSSB0byB1c2UKLSAgICBhdXRvIHBhdGggPSBhZG9wdENGKGNvcHlD
R1BhdGhDbG9zaW5nU3VicGF0aHMocGxhdGZvcm1QYXRoKCkpKTsKKyAgICBhdXRvIHBhdGggPSBj
b3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBsYXRmb3JtUGF0aCgpKTsKICAgICBib29sIHJldCA9
IENHUGF0aENvbnRhaW5zUG9pbnQocGF0aC5nZXQoKSwgMCwgcG9pbnQsIHJ1bGUgPT0gV2luZFJ1
bGU6OkV2ZW5PZGQgPyB0cnVlIDogZmFsc2UpOwogICAgIHJldHVybiByZXQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCAz
YWVjNzc1NmRiOGNkMjUwYWZlZjEwZDgzZmRlYjFkY2M5M2NmOWMzLi43NmVhOWFmNGQ0MjMyNDk0
MWE4OTdmYWEzZTVkZmRhYjIzZGY4MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZv
aWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2ltYWdlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKSldIHsgfSk7
CiB9CiAKLUNHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CitSZXRhaW5QdHI8Q0dQ
YXR0ZXJuUmVmPiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHRpbGVS
ZWN0ID0geyB7IH0sIHRpbGVJbWFnZSgpLnNpemUoKSB9OwogCkBAIC02OCw3ICs2OCw3IEBAIENH
UGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGgg
ZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0
ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNr
cy4KICAgICBpZiAocmVwZWF0WCgpICYmIHJlcGVhdFkoKSkKLSAgICAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVyblRyYW5zZm9y
bSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBhZG9w
dENGKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVy
blRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZykpOwogCiAgICAgLy8g
SWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGlu
ZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJl
c3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtODIsNyArODIsNyBAQCBDR1BhdHRl
cm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbgogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBwbGF0Zm9ybUltYWdlLmxl
YWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tz
ID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICBy
ZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
eFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0
dGVybkNhbGxiYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlKGltYWdl
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGls
aW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcykpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA2ZjMyMmMzNWE5
Zjk5MTU2ZjkxNTY5OWI2MmE2ZTY1MDVjZWExZWMyLi5mNzdmMTFiMzg3ZjAzMjZlNGViZTlmOGQ3
M2U0NzM4M2Y0YWM1OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKQEAgLTM1LDE4ICszNSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmIGZvbnQsIGZsb2F0IHNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRp
b24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBUZXh0UmVuZGVy
aW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCitG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+JiYg
Zm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlx
dWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZh
cmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBDcmVhdGlvbkRhdGEq
IGNyZWF0aW9uRGF0YSkKICAgICA6IEZvbnRQbGF0Zm9ybURhdGEoc2l6ZSwgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgdGV4dFJlbmRl
cmluZ01vZGUsIGNyZWF0aW9uRGF0YSkKIHsKICAgICBBU1NFUlRfQVJHKGZvbnQsIGZvbnQpOwog
I2lmIFBMQVRGT1JNKFdJTikKLSAgICBtX2N0Rm9udCA9IGZvbnQ7CisgICAgbV9jdEZvbnQgPSBX
VEZNb3ZlKGZvbnQ7KQogI2Vsc2UKLSAgICBtX2ZvbnQgPSBmb250OworICAgIG1fZm9udCA9IFdU
Rk1vdmUoZm9udCk7CiAjZW5kaWYKLSAgICBtX2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0
U3ltYm9saWNUcmFpdHMoZm9udCkgJiBrQ1RGb250Q29sb3JHbHlwaHNUcmFpdDsKLSAgICBtX2lz
U3lzdGVtRm9udCA9IFdlYkNvcmU6OmlzU3lzdGVtRm9udChmb250KTsKLSAgICBhdXRvIHZhcmlh
dGlvbnMgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0
dHJpYnV0ZShmb250LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOworICAgIG1faXNDb2xv
ckJpdG1hcEZvbnQgPSBDVEZvbnRHZXRTeW1ib2xpY1RyYWl0cyhmb250LmdldCgpKSAmIGtDVEZv
bnRDb2xvckdseXBoc1RyYWl0OworICAgIG1faXNTeXN0ZW1Gb250ID0gV2ViQ29yZTo6aXNTeXN0
ZW1Gb250KGZvbnQuZ2V0KCkpOworICAgIGF1dG8gdmFyaWF0aW9ucyA9IGFkb3B0Q0Yoc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDVEZvbnRDb3B5QXR0cmlidXRlKGZvbnQuZ2V0KCksIGtD
VEZvbnRWYXJpYXRpb25BdHRyaWJ1dGUpKSk7CiAgICAgbV9oYXNWYXJpYXRpb25zID0gdmFyaWF0
aW9ucyAmJiBDRkRpY3Rpb25hcnlHZXRDb3VudCh2YXJpYXRpb25zLmdldCgpKTsKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCA3N2UxYzNm
MTYyZjA2NjNmYjg1M2ZhMjI1YWMyNDhiNDU2ZTQxYWY0Li5lM2YwOTI3MDM0OGU3YTVhZWY3MjY2
ZWI0NzJkZGJhZTczYmMzNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTIxMSwx
NCArMjExLDEzIEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcihDR0ltYWdlUmVmCiAgICAgQ1ZQaXhlbEJ1ZmZlckxv
Y2tCYXNlQWRkcmVzcyhyZ2JCdWZmZXIsIDApOwogICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVm
ZmVyR2V0QmFzZUFkZHJlc3MocmdiQnVmZmVyKTsKICAgICBhdXRvIHJldGFpbmVkUkdCQnVmZmVy
ID0gYWRvcHRDRihyZ2JCdWZmZXIpOwotICAgIGF1dG8gY29udGV4dCA9IENHQml0bWFwQ29udGV4
dENyZWF0ZShkYXRhLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBD
VlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8g
Y29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJv
dyhyZ2JCdWZmZXIpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCAoQ0dCaXRtYXBJbmZvKSBrQ0dJbWFn
ZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBSRUxF
QVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVBpeGVsQnVmZmVy
OiBDR0JpdG1hcENvbnRleHRDcmVhdGUgcmV0dXJuZWQgbnVsbHB0ciIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHJldGFpbmVkQ29udGV4dCA9IGFkb3B0Q0Yo
Y29udGV4dCk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwg
MCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgaW1hZ2UpOwogICAgIENWUGl4ZWxCdWZm
ZXJVbmxvY2tCYXNlQWRkcmVzcyhyZ2JCdWZmZXIsIDApOwogCiAgICAgcmV0dXJuIGNvbnZlcnRQ
aXhlbEJ1ZmZlcihyZ2JCdWZmZXIsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tCmluZGV4IDQ1MTEwN2JiYjQ2NWJkZTM5NTQ0OWRjMDc4ZDgwNWE4ZTE2NGY4
YTQuLjAzMjA5Njk4OGZjZGUyMTcxNzU5MzM1MDAxMzkwZWIzZmJiOTlhNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTE0MiwxMyArMTQyLDEzIEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBvcHRpb25L
ZXlzW10gPSB7IGtDVFR5cGVzZXR0ZXJPcHRpb25Gb3JjZWRFbWJlZGRpbmdMZXZlbCB9OwogICAg
ICAgICBzdGF0aWMgY29uc3Qgdm9pZCogbHRyT3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNob3J0VHlwZSwgJmx0ckZvcmNlZEVt
YmVkZGluZ0xldmVsVmFsdWUpIH07CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxPcHRp
b25WYWx1ZXNbXSA9IHsgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyU2hvcnRUeXBlLCAmcnRsRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKLSAgICAgICAg
c3RhdGljIENGRGljdGlvbmFyeVJlZiBsdHJUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMs
IFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgICAgICBz
dGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywg
V1RGX0FSUkFZX0xFTkdUSChvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gbHRyVHlwZXNl
dHRlck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9u
S2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9w
dGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwogCiAgICAgICAgIFByb3ZpZGVySW5mbyBpbmZvID0geyBjcCwgbGVuZ3RoLCBzdHJpbmdBdHRy
aWJ1dGVzLmdldCgpIH07CiAgICAgICAgIC8vIEZJWE1FOiBTb21lIFNES3MgY29tcGxhaW4gdGhh
dCB0aGUgc2Vjb25kIHBhcmFtZXRlciBiZWxvdyBjYW5ub3QgYmUgbnVsbC4KICAgICAgICAgSUdO
T1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVHSU4KLSAgICAgICAgUmV0YWluUHRyPENUVHlwZXNl
dHRlclJlZj4gdHlwZXNldHRlciA9IGFkb3B0Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aFVuaUNo
YXJQcm92aWRlckFuZE9wdGlvbnMoJnByb3ZpZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5m
bywgbV9ydW4ubHRyKCkgPyBsdHJUeXBlc2V0dGVyT3B0aW9ucyA6IHJ0bFR5cGVzZXR0ZXJPcHRp
b25zKSk7CisgICAgICAgIFJldGFpblB0cjxDVFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBh
ZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZw
cm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywgMCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlw
ZXNldHRlck9wdGlvbnMuZ2V0KCkuZ2V0KCkgOiBydGxUeXBlc2V0dGVyT3B0aW9ucy5nZXQoKS5n
ZXQoKSkpOwogICAgICAgICBJR05PUkVfTlVMTF9DSEVDS19XQVJOSU5HU19FTkQKIAogICAgICAg
ICBpZiAoIXR5cGVzZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggNzQ4
ZWRiOTQwMDlmZDI4YTg5MjVmZGFmMjRmM2IwZTI1OWJhNmQxOC4uZmFhYjZlMTRmMDI3YTQ0NGJk
NmRlMjcxMmU2Njk1NGE3NjU1ZGQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApA
QCAtNjMsOSArNjMsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGb250OjpnZXRDRlN0
cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVLZXJuaW5nLCBGb250TwogCiAgICAgaWYgKCFlbmFi
bGVLZXJuaW5nKSB7CiAgICAgICAgIGNvbnN0IGZsb2F0IHplcm8gPSAwOwotICAgICAgICBzdGF0
aWMgQ0ZOdW1iZXJSZWYgemVyb0tlcm5pbmdWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJnplcm8pOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gemVyb0tlcm5pbmdWYWx1ZSA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxv
YXRUeXBlLCAmemVybykpOwogICAgICAgICBrZXlzW2NvdW50XSA9IGtDVEtlcm5BdHRyaWJ1dGVO
YW1lOwotICAgICAgICB2YWx1ZXNbY291bnRdID0gemVyb0tlcm5pbmdWYWx1ZTsKKyAgICAgICAg
dmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWUuZ2V0KCkuZ2V0KCk7CiAgICAgICAgICsr
Y291bnQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCBjZWRiMDJlYjll
MWY5NWJmOTAzMzExM2JhNjA1ZDljY2ZmZjg2OWU4Li5iNjIwMTU4MzgxYjRjMGFiNDcyNzJiYTQx
NzYxYzU1N2QxZWIwNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIENHQ29u
dGV4dFdpdGhIREMoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dD
b250ZXh0UmVmPiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiB7CiAg
ICAgSEJJVE1BUCBiaXRtYXAgPSBzdGF0aWNfY2FzdDxIQklUTUFQPihHZXRDdXJyZW50T2JqZWN0
KGhkYywgT0JKX0JJVE1BUCkpOwogCkBAIC01NSwxMiArNTUsMTEgQEAgc3RhdGljIENHQ29udGV4
dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkxpdHRsZSB8IChoYXNBbHBoYSA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
OiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxEYXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEuc2l6
ZSgpLndpZHRoKCksIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCksIDgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93
KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcEluZm8pOworICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxE
YXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LCBwaXhlbERh
dGEuYnl0ZXNQZXJSb3coKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbykpOwogCiAg
ICAgLy8gRmxpcCBjb29yZHMKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwg
cGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LmdldCgpLCAwLCBw
aXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0
LmdldCgpLCAxLCAtMSk7CiAgICAgCiAgICAgLy8gUHV0IHRoZSBIREMgSW4gYWR2YW5jZWQgbW9k
ZSBzbyBpdCB3aWxsIGhvbm9yIGFmZmluZSB0cmFuc2Zvcm1zLgogICAgIFNldEdyYXBoaWNzTW9k
ZShoZGMsIEdNX0FEVkFOQ0VEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAK
aW5kZXggNmExNjAzZDIxYjY4ZWM1YmUyOGZkMDY5NTk3Y2RkMjJjYWYyM2Q2Yy4uOGU1YjNlNDIy
MTQ3N2U5MjFkNzgyMjUxOTQ1MjYyZjllMGE4ZTgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RldmljZS5jcHAKQEAgLTU4LDEyICs1OCwxMiBAQCBNR0RldmljZUNsYXNzIGRldmljZUNs
YXNzKCkKIFN0cmluZyBkZXZpY2VOYW1lKCkKIHsKICNpZiBUQVJHRVRfT1NfSU9TCi0gICAgc3Rh
dGljIENGU3RyaW5nUmVmIGRldmljZU5hbWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4+IGRldmljZU5hbWU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10gewotICAgICAgICBk
ZXZpY2VOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2
aWNlTmFtZSwgbnVsbHB0cikpOworICAgICAgICBkZXZpY2VOYW1lLmdldCgpID0gYWRvcHRDRihz
dGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oTUdDb3B5QW5zd2VyKGtNR1FEZXZpY2VOYW1lLCBudWxs
cHRyKSkpOwogICAgIH0pOwotICAgIHJldHVybiBkZXZpY2VOYW1lOworICAgIHJldHVybiBkZXZp
Y2VOYW1lLmdldCgpLmdldCgpOwogI2Vsc2UKICAgICByZXR1cm4gImlQaG9uZSJfczsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggYzY0
YTRiY2ExYWQ4ZTdiNzJhZjIyNjAzZmIxY2MwMWY5NzY5ZjYyMC4uNzM1OTMzZjE3MjA4NWI5ZTY2
OTNhZDQ0YjJhZjE2MGIzNDBjNGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBkZWxldGVEcmFnSW1hZ2Uo
RHJhZ0ltYWdlUmVmKQogc3RhdGljIEZvbnRDYXNjYWRlIGNhc2NhZGVGb3JTeXN0ZW1Gb250KENH
RmxvYXQgc2l6ZSkKIHsKICAgICBVSUZvbnQgKmZvbnQgPSBbUEFMOjpnZXRVSUZvbnRDbGFzcygp
IHN5c3RlbUZvbnRPZlNpemU6c2l6ZV07Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRlKEZvbnRQbGF0
Zm9ybURhdGEoQ1RGb250Q3JlYXRlV2l0aE5hbWUoKENGU3RyaW5nUmVmKWZvbnQuZm9udE5hbWUs
IGZvbnQucG9pbnRTaXplLCBuaWwpLCBmb250LnBvaW50U2l6ZSkpOworICAgIHJldHVybiBGb250
Q2FzY2FkZShGb250UGxhdGZvcm1EYXRhKGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoKENG
U3RyaW5nUmVmKWZvbnQuZm9udE5hbWUsIGZvbnQucG9pbnRTaXplLCBuaWwpKSwgZm9udC5wb2lu
dFNpemUpKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVu
dCYgbGlua0VsZW1lbnQsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBUZXh0SW5kaWNh
dG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgRm9udFJlbmRlcmluZ01vZGUsIGZsb2F0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDkz
MmM3ODJjNmJjYjNiMmQ2N2U5MzQwMmVjNDIxYTM0MmQzNmJmNDEuLmE2MDg4ZjdmNmU4MGRhZjFl
ZjhhOTFlMTdhYjE5MWNiNGYwZjVkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTEyNCwxOCArMTI0LDM4IEBAIHR5cGVkZWYg
ZW51bSB7CiAgICAgSWdub3JlQXV0b3JlbGVhc2VQb29sCiB9IEF1dG9yZWxlYXNlUG9vbE9wZXJh
dGlvbjsKIAotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNl
Owotc3RhdGljIENGTXV0YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKK3N0
YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgd2ViVGhyZWFkUmVsZWFzZVNvdXJj
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1bkxvb3BTb3Vy
Y2VSZWY+PiB3ZWJUaHJlYWRSZWxlYXNlU291cmNlOworICAgIHJldHVybiB3ZWJUaHJlYWRSZWxl
YXNlU291cmNlOworfQorCitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiYgd2Vi
VGhyZWFkUmVsZWFzZU9iakFycmF5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPj4gd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworICAg
IHJldHVybiB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXk7Cit9CiAKIHN0YXRpYyBMb2NrIGRlbGVn
YXRlTG9jazsKIHN0YXRpYyBTdGF0aWNDb25kaXRpb24gZGVsZWdhdGVDb25kaXRpb247Ci1zdGF0
aWMgQ0ZSdW5Mb29wU291cmNlUmVmIGRlbGVnYXRlU291cmNlID0gbnVsbHB0cjsKKworc3RhdGlj
IFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+JiBkZWxlZ2F0ZVNvdXJjZSgpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBkZWxl
Z2F0ZVNvdXJjZTsKKyAgICByZXR1cm4gZGVsZWdhdGVTb3VyY2U7Cit9CisKIHN0YXRpYyBCT09M
IGRlbGVnYXRlSGFuZGxlZDsKICNpZiBMT0dfTUFJTl9USFJFQURfTE9DS0lORwogc3RhdGljIEJP
T0wgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZTsKICNlbmRpZgogCi1zdGF0aWMgQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7CitzdGF0aWMgUmV0YWluUHRy
PENGUnVuTG9vcE9ic2VydmVyUmVmPiYgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWY+PiBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcjsKKyAgICByZXR1cm4gbWFpblJ1bkxv
b3BBdXRvVW5sb2NrT2JzZXJ2ZXI7Cit9CisKIHN0YXRpYyBCT09MIG1haW5UaHJlYWRIYXNQZW5k
aW5nQXV0b1VubG9jazsKIAogc3RhdGljIExvY2sgc3RhcnR1cExvY2s7CkBAIC0yMzQsNyArMjU0
LDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0
aW9uPiYmIGludm9jYXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
ZGVsZWdhdGVTb3VyY2UpOworICAgIEFTU0VSVChkZWxlZ2F0ZVNvdXJjZSgpKTsKICAgICBkZWxl
Z2F0ZUxvY2subG9jaygpOwogCiAgICAgZGVsZWdhdGVJbnZvY2F0aW9uKCkgPSBXVEZNb3ZlKGlu
dm9jYXRpb24pOwpAQCAtMjU1LDcgKzI3NSw3IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1l
c3NhZ2UoUmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsK
ICAgICAgICAgX1dlYlRocmVhZFVubG9jaygpOwogCi0gICAgICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxl
Z2F0ZVNvdXJjZSgpLmdldCgpKTsKICAgICAgICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdl
dE1haW4oKSk7CiAKICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKQEAgLTI5Niw3
ICszMTYsNyBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJs
b2NrKSgpKQogdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogewogICAgIEFT
U0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIEFTU0VSVChXZWJUaHJlYWRSZWxlYXNl
U291cmNlKTsKKyAgICBBU1NFUlQod2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpKTsKIAogI2lmIExP
R19SRUxFQVNFUwogICAgIE5TTG9nKEAiUmVsZWFzZSBzZW5kIFttYWluIHRocmVhZF06ICVAIiwg
b2JqKTsKQEAgLTMwNCwxMCArMzI0LDEwIEBAIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNl
KGlkIG9iaikKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxv
Y2spOwogCi0gICAgaWYgKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9PSBuaWwpCi0gICAgICAg
IFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvclN5c3RlbURlZmF1bHQsIDAsIG51bGxwdHIpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShX
ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXksIG9iaik7Ci0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFs
KFdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOworICAgIGlmICh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKSA9PSBuaWwpCisgICAgICAgIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpID0gYWRvcHRD
RihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxs
cHRyKSk7CisgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgp
LmdldCgpLCBvYmopOworICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKCkuZ2V0KCkpOwogICAgIENGUnVuTG9vcFdha2VVcCh3ZWJUaHJlYWRSdW5Mb29wKTsK
IH0KIApAQCAtNDA0LDkgKzQyNCw5IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVh
c2VTb3VyY2Uodm9pZCopCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBvYmplY3Rz
OwogICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNl
TG9jayk7Ci0gICAgICAgIGlmIChDRkFycmF5R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFzZU9iakFy
cmF5KSkgewotICAgICAgICAgICAgb2JqZWN0cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGVDb3B5KG51bGxwdHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpOwotICAgICAgICAg
ICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAg
ICAgICBpZiAoQ0ZBcnJheUdldENvdW50KHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgp
KSkgeworICAgICAgICAgICAgb2JqZWN0cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVD
b3B5KG51bGxwdHIsIDAsIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKSk7CisgICAg
ICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFsdWVzKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgp
LmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDczLDcgKzQ5Myw3IEBAIHN0YXRpYyB2
b2lkIE1haW5SdW5Mb29wQXV0b1VubG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29w
QWN0aXZpdHksIHZvaWQqCiAgICAgICAgIHJldHVybjsKIAogICAgIG1haW5UaHJlYWRIYXNQZW5k
aW5nQXV0b1VubG9jayA9IE5POwotICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9v
cEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOwogCiAgICAgX1dlYlRocmVhZFVubG9jaygpOwogfQpAQCAtNDg0LDcgKzUw
NCw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRBdXRvTG9jayh2b2lkKQogCiAgICAgaWYgKCFt
YWluVGhyZWFkTG9ja0NvdW50KSB7CiAgICAgICAgIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1Vu
bG9jayA9IFlFUzsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1v
ZGVzKTsgICAgCisgICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJl
bnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKICAgICAgICAgX1dlYlRocmVhZExvY2soKTsKICAgICAgICAgQ0ZSdW5Mb29w
V2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7CiAgICAgfQpAQCAtNTU2LDEyICs1NzYsMTIgQEAg
c3RhdGljIHZvaWQgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBv
YnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXYKIAogc3RhdGljIHZvaWQgX1dlYlJ1bkxvb3BFbmFibGVO
ZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5Mb29wRGlzYWJsZU5l
c3RlZEZyb21NYWluVGhyZWFkKCkKIHsKLSAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxv
b3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOyAKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViUnVuTG9vcEVuYWJsZU5lc3RlZCgpCkBAIC02NDIs
OCArNjYyLDggQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKICAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJS
ZWYuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAKICAgICBDRlJ1bkxvb3BTb3VyY2VD
b250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZVdl
YlRocmVhZFJlbGVhc2VTb3VyY2V9OwotICAgIFdlYlRocmVhZFJlbGVhc2VTb3VyY2UgPSBDRlJ1
bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNlU291cmNlQ29udGV4dCk7Ci0g
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHdlYlRocmVhZFJ1bkxvb3AsIFdlYlRocmVhZFJlbGVhc2VT
b3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgd2ViVGhyZWFkUmVsZWFzZVNvdXJj
ZSgpID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNl
U291cmNlQ29udGV4dCkpOworICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29w
LCB3ZWJUaHJlYWRSZWxlYXNlU291cmNlKCkuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
CiAKICAgICBwZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZCA9IF9DRlJ1bkxvb3BTZXRQ
ZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZChZRVMpOwogCkBAIC02NzksMTYgKzY5OSwx
NiBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICBDRlJ1bkxvb3BSZWYgcnVu
TG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0
IGRlbGVnYXRlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVEZWxlZ2F0
ZVNvdXJjZX07Ci0gICAgZGVsZWdhdGVTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVs
bHB0ciwgMCwgJmRlbGVnYXRlU291cmNlQ29udGV4dCk7CisgICAgZGVsZWdhdGVTb3VyY2UoKSA9
IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJj
ZUNvbnRleHQpKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBnZXQgZGVsZWdhdGUgY2FsbGJhY2tz
IHdoaWxlIHNjcm9sbGluZywgYnV0IHRoZXJlIG1pZ2h0IGJlCiAgICAgLy8gb25lIG91dHN0YW5k
aW5nIHdoZW4gd2Ugc3RhcnQuICBBZGQgdGhlIHNvdXJjZSBmb3IgYWxsIGNvbW1vbiBydW4gbG9v
cAogICAgIC8vIG1vZGVzIHNvIHdlIGRvbid0IGJsb2NrIHRoZSB3ZWIgdGhyZWFkIHdoaWxlIHNj
cm9sbGluZy4KLSAgICBDRlJ1bkxvb3BBZGRTb3VyY2UocnVuTG9vcCwgZGVsZWdhdGVTb3VyY2Us
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3As
IGRlbGVnYXRlU291cmNlKCkuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAKICAgICBz
QXN5bmNEZWxlZ2F0ZXMoKSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogCi0gICAgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZl
ckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0
LCBZRVMsIDMwMDAwMDEsIE1haW5SdW5Mb29wQXV0b1VubG9jaywgbnVsbHB0cik7CisgICAgbWFp
blJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJD
cmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwg
WUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxwdHIpKTsKIAogICAgIHB0
aHJlYWRfYXR0cl90IHRhdHRyOwogICAgIHB0aHJlYWRfYXR0cl9pbml0KCZ0YXR0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNw
cAppbmRleCBlZmE4NDY0NWJhMzk4YTRiZTFiY2RlMmRlYzNkMDEwOGE0Mzk3NTUzLi5jYTk4YThm
Y2I0OTc2MjUxYTJjYzE5YmRjZjI3MWY3ZjY0OTZlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKQEAgLTExMiwxNCAr
MTEyLDE5IEBAIGV4dGVybiAiQyIgewogdHlwZWRlZiBXVEY6OlZlY3RvcjxXZWJUaHJlYWRCbG9j
az4gV2ViVGhyZWFkUnVuUXVldWU7CiAKIHN0YXRpYyBMb2NrIHJ1blF1ZXVlTXV0ZXg7Ci1zdGF0
aWMgQ0ZSdW5Mb29wU291cmNlUmVmIHJ1blNvdXJjZTsKIHN0YXRpYyBXZWJUaHJlYWRSdW5RdWV1
ZSogcnVuUXVldWU7CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgcnVu
U291cmNlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9v
cFNvdXJjZVJlZj4+IHJ1blNvdXJjZTsKKyAgICByZXR1cm4gcnVuU291cmNlOworfQorCiBzdGF0
aWMgdm9pZCBIYW5kbGVSdW5Tb3VyY2Uodm9pZCAqaW5mbykKIHsKICAgICBVTlVTRURfUEFSQU0o
aW5mbyk7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQocnVu
U291cmNlKTsKKyAgICBBU1NFUlQocnVuU291cmNlKCkpOwogICAgIEFTU0VSVChydW5RdWV1ZSk7
CiAKICAgICBXZWJUaHJlYWRSdW5RdWV1ZSBxdWV1ZUNvcHk7CkBAIC0xNDAsNyArMTQ1LDcgQEAg
c3RhdGljIHZvaWQgX1dlYlRocmVhZFJ1bih2b2lkICheYmxvY2spKHZvaWQpLCBib29sIHN5bmNo
cm9ub3VzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHJ1blNvdXJjZSk7
CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsKICAgICBBU1NFUlQocnVuUXVldWUpOwogCiAgICAg
V2ViVGhyZWFkQmxvY2tTdGF0ZSogc3RhdGUgPSAwOwpAQCAtMTUyLDcgKzE1Nyw3IEBAIHN0YXRp
YyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwgYm9vbCBzeW5jaHJvbm91
cykKICAgICAgICAgcnVuUXVldWUtPmFwcGVuZChXZWJUaHJlYWRCbG9jayhibG9jaywgc3RhdGUp
KTsKICAgICB9CiAKLSAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwocnVuU291cmNlKTsKKyAgICBD
RlJ1bkxvb3BTb3VyY2VTaWduYWwocnVuU291cmNlKCkuZ2V0KCkpOwogICAgIENGUnVuTG9vcFdh
a2VVcChXZWJUaHJlYWRSdW5Mb29wKCkpOwogCiAgICAgaWYgKHN5bmNocm9ub3VzKSB7CkBAIC0x
NjksMTUgKzE3NCwxNSBAQCB2b2lkIFdlYlRocmVhZFJ1bih2b2lkICheYmxvY2spKHZvaWQpKQog
dm9pZCBXZWJUaHJlYWRJbml0UnVuUXVldWUoKQogewogICAgIEFTU0VSVCghcnVuUXVldWUpOwot
ICAgIEFTU0VSVCghcnVuU291cmNlKTsKKyAgICBBU1NFUlQoIXJ1blNvdXJjZSgpKTsKIAogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgcHJlZDsKICAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBe
ewogICAgICAgICBydW5RdWV1ZSA9IG5ldyBXZWJUaHJlYWRSdW5RdWV1ZTsKIAotICAgICAgICBD
RlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1blNvdXJjZUNvbnRleHQgPSB7MCwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgSGFuZGxlUnVuU291cmNlfTsKLSAg
ICAgICAgcnVuU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKE5VTEwsIC0xLCAmcnVuU291
cmNlQ29udGV4dCk7Ci0gICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29w
KCksIHJ1blNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgQ0ZSdW5Mb29w
U291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250ZXh0ID0geyAwLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5k
bGVSdW5Tb3VyY2UgfTsKKyAgICAgICAgcnVuU291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNv
dXJjZUNyZWF0ZShudWxscHRyLCAtMSwgJnJ1blNvdXJjZUNvbnRleHQpKTsKKyAgICAgICAgQ0ZS
dW5Mb29wQWRkU291cmNlKFdlYlRocmVhZFJ1bkxvb3AoKSwgcnVuU291cmNlKCkuZ2V0KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcAppbmRleCA4ZjM3ZGQ3MWYwNzc0ZTM4
NWI2Njk2MjljYmQyZTBkNTg0YzQ2NmJhLi5hNDdlMzQzZjRkY2EwMzZmZWFlZmQzYzEwZDVmMjQw
ZTM0YjlmMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJP
YnNlcnZlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2Jz
ZXJ2ZXJNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2
ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcikKICAgICAsIG1fcG93ZXJD
b25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlmaWNhdGlvblBvcnQobnVsbHB0cikKICAgICAsIG1f
bm90aWZpZXJSZWZlcmVuY2UoMCkKLSAgICAsIG1fZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1
ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuUG93ZXJPYnNlcnZlciIsIDApKQorICAgICwgbV9k
aXNwYXRjaFF1ZXVlKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkpCiB7CiAgICAgbV9wb3dlckNvbm5lY3Rpb24g
PSBJT1JlZ2lzdGVyRm9yU3lzdGVtUG93ZXIodGhpcywgJm1fbm90aWZpY2F0aW9uUG9ydCwgW10o
dm9pZCogY29udGV4dCwgaW9fc2VydmljZV90IHNlcnZpY2UsIHVpbnQzMl90IG1lc3NhZ2VUeXBl
LCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8UG93ZXJPYnNl
cnZlcio+KGNvbnRleHQpLT5kaWRSZWNlaXZlU3lzdGVtUG93ZXJOb3RpZmljYXRpb24oc2Vydmlj
ZSwgbWVzc2FnZVR5cGUsIG1lc3NhZ2VBcmd1bWVudCk7CkBAIC00Myw3ICs0Myw3IEBAIFBvd2Vy
T2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhh
bmRlcikKICAgICBpZiAoIW1fcG93ZXJDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBJT05vdGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVlKG1fbm90aWZpY2F0aW9uUG9ydCwg
bV9kaXNwYXRjaFF1ZXVlKTsKKyAgICBJT05vdGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVl
KG1fbm90aWZpY2F0aW9uUG9ydCwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKIH0KIAogUG93ZXJP
YnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQpAQCAtNTEsOCArNTEsNiBAQCBQb3dlck9ic2VydmVy
Ojp+UG93ZXJPYnNlcnZlcigpCiAgICAgaWYgKCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotCiAgICAg
SU9EZXJlZ2lzdGVyRm9yU3lzdGVtUG93ZXIoJm1fbm90aWZpZXJSZWZlcmVuY2UpOwogICAgIElP
U2VydmljZUNsb3NlKG1fcG93ZXJDb25uZWN0aW9uKTsKICAgICBJT05vdGlmaWNhdGlvblBvcnRE
ZXN0cm95KG1fbm90aWZpY2F0aW9uUG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRleCAxNTg2ZDdiYjdhZjI1OTMxMTY2ZDI2ZWM1ZGZj
NDY5M2E4ZjYyODlhLi5hODBiNjIwNzVjMDFkYzE0OWY4MzExYzc0OTRjODEzMjlhYzYwNTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPElPS2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgogI2ltcG9y
dCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbXBvcnQg
PHd0Zi9PU09iamVjdFB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ4
LDcgQEAgcHJpdmF0ZToKICAgICBpb19jb25uZWN0X3QgbV9wb3dlckNvbm5lY3Rpb247CiAgICAg
SU9Ob3RpZmljYXRpb25Qb3J0UmVmIG1fbm90aWZpY2F0aW9uUG9ydDsKICAgICBpb19vYmplY3Rf
dCBtX25vdGlmaWVyUmVmZXJlbmNlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1
ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IDBiNzcwY2ZiMTMzZjNhOGE0ZTdkYjZkYjhjODBm
ZjYyNWMyMzkyNDkuLmQzZjFhYzcyOWI1YjVjZGU2M2RiNDRjMDA1MjdjMDk4NjNjODJhNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMjcs
NiArMjcsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAKICNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVj
dFB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVC
dWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252
ZXJ0ZXJSZWY7CkBAIC02Myw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU2Ft
cGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7CiAgICAgT1NTdGF0dXMgcHJvdmlk
ZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1
ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
c2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBt
X3NlcmlhbERpc3BhdGNoUXVldWU7CiAgICAgQ01UaW1lIG1fbG93V2F0ZXJUaW1lIHsga0NNVGlt
ZUludmFsaWQgfTsKIAogICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1
ZmZlclF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbQppbmRleCBjNzlhNDc5NjI0MDJiYjEzMjkzM2M4N2JmZTk4ZDIzN2Y1NmVlMDY5Li5jY2M4
ZGQzYTlkNGYwZmRhODg5MzNmMGZkMWUyODFkZTNhZGU5N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtNTIsMTQgKzUyLDEzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlCiB9CiAKIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRj
aFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAg
ICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElN
RV9JTl9TRUNPTkRTLCAxMDAwKSB9CiB7CiB9CiAKIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCiB7Ci0gICAgZGlzcGF0Y2hfcmVsZWFz
ZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwogICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAg
ICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9jb252ZXJ0ZXIpOwogICAgICAgICBtX2NvbnZlcnRl
ciA9IG51bGxwdHI7CkBAIC04OSw3ICs4OCw3IEBAIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhCiAK
IHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQogewotICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVy
c1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgYXV0byBlcnJvciA9
IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOwog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVk
IiwgZXJyb3IpOwpAQCAtNTEwLDcgKzUwOSw3IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIAog
dm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZiBidWZmZXIpCiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNo
UXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCks
IF57CiAgICAgICAgIGlmIChtX2lzRW5jb2RpbmcpCiAgICAgICAgICAgICBwcm9jZXNzU2FtcGxl
QnVmZmVyKGJ1ZmZlcik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaAppbmRleCBjMDU4Mzc0NzBiMWM4MjcyZGU3Yzg5YzQxNGJhMThhMGYw
ZTllOWNkLi4zNzZhNWNmYmVhYjFhMTQ2ZjI5MGIyY2IyNDNjNWMxMzMyZGQ3NGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxWaWRl
b1Rvb2xib3gvVlRFcnJvcnMuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KIAogdHlw
ZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lvblNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNz
aW9uUmVmOwpAQCAtNTgsNyArNTksNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgdmlk
ZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVu
Y29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYpOwogCi0gICAgZGlzcGF0Y2hfcXVldWVf
dCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRD
b2RlY1R5cGUgeyBrQ01WaWRlb0NvZGVjVHlwZV9IMjY0IH07CiAKICAgICBSZXRhaW5QdHI8Q01C
dWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggZTAzZTc3MGYwY2FhOWJkYzZiMTZk
NWFjNzRiYjM3ODZkZjhmNGFkNy4uMTc2Nzk5NzQxYmQ0ZmJiOTkwOTlhZDg0MzRlZjZjMmY0NmI4
YWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KQEAgLTQ4LDE0ICs0OCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZp
ZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRj
aFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAg
ICAgLCBtX291dHB1dENvZGVjVHlwZSB7IG91dHB1dENvZGVjVHlwZSB9CiB7CiB9CiAKIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCiB7
Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwogICAgIGlmICht
X3Z0U2Vzc2lvbikgewogICAgICAgICBWVENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUobV92
dFNlc3Npb24uZ2V0KCkpOwogICAgICAgICBtX3Z0U2Vzc2lvbiA9IG51bGxwdHI7CkBAIC04Myw3
ICs4Miw3IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vj
b25kKHVuc2lnbmVkIGJpdFJhdGUpCiAKIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpmaW5pc2goKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBe
eworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAg
ICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyhtX3Z0
U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOwogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRD
b21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
IApAQCAtMTY1LDcgKzE2NCw3IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpw
cm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIAogdm9pZCBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
ZiBidWZmZXIpCiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57
CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAg
ICAgIGlmICghbV9pc0VuY29kaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCAzY2JlOGNl
YTY4NWE1NDU4ODIwZGYyODhiZGY2Y2E2ZGVhYjIzYjliLi5mODYxOWY2YTE5MThhZjA2MGUyYTA1
ZTA2MzE4MmY1NGU4NmEyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
KyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKIE9CSkNfQ0xBU1MgQVZBdWRpb1Nlc3Npb247CkBAIC03Nyw3ICs3OCw3IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPFdlYkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXI+
IG1fbGlzdGVuZXI7CiAgICAgUmV0YWluUHRyPEFWQXVkaW9TZXNzaW9uPiBtX2F1ZGlvU2Vzc2lv
bjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3VwZGF0ZURldmljZVN0YXRlUXVldWU7
Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWUgeyBudWxscHRyIH07CisgICAg
T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOwogICAgIExvY2sg
bV9sb2NrOwogICAgIEF1ZGlvU2Vzc2lvblN0YXRlIG1fYXVkaW9TZXNzaW9uU3RhdGUgeyBBdWRp
b1Nlc3Npb25TdGF0ZTo6Tm90TmVlZGVkIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBiMWI0N2FmMjljNGE0NDUyZmM4
MTAwM2JhMzU4NmQ5MDJlODZhZTlmLi5lZjliZTEwNmJiZDRlYTE2ODQ0ZWU3MDljNjBhMjU4Y2M2
MmNlYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQpAQCAtODcsOSArODcsOSBAQCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyJiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0bwogfQog
CiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyKCkKLSAgICA6IG1fZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV9j
cmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpCisgICAgOiBtX2Rpc3BhdGNoUXVldWUoYWRvcHRP
U09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpKQogewot
ICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayldIHsKICAgICAgICAgY3JlYXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQpA
QCAtMTEzLDcgKzExMyw2IEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Y3JlYXRlQXVkaW9TZXNzaW9uKCkKIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlcjo6fkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIoKQogewotICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKICAgICBbbV9saXN0ZW5lciBpbnZhbGlkYXRl
XTsKICAgICBtX2xpc3RlbmVyID0gbnVsbHB0cjsKIH0KQEAgLTE1NywxMyArMTU2LDEzIEBAIHZv
aWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMoKQogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0
YXRlOjpJbmFjdGl2ZSkgewogICAgICAgICBtX2F1ZGlvU2Vzc2lvblN0YXRlID0gQXVkaW9TZXNz
aW9uU3RhdGU6OkFjdGl2ZTsKIAotICAgICAgICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1
ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRl
QXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9CiAKICAgICBWZWN0b3I8
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPiBuZXdBdWRpb0RldmljZXM7Ci0gICAgZGlzcGF0
Y2hfc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbJl0geworICAgIGRpc3BhdGNo
X3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoWyZdIHsKICAgICAgICAg
bmV3QXVkaW9EZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwog
ICAgIH0pLmdldCgpKTsKICAgICBzZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVk
aW9EZXZpY2VzKSk7CkBAIC0xNzQsMTIgKzE3MywxMiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmdldENhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZv
aQogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpJbmFj
dGl2ZSkgewogICAgICAgICBtX2F1ZGlvU2Vzc2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6
OkFjdGl2ZTsKIAotICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VC
bG9ja1B0cihbdGhpc10geworICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUu
Z2V0KCksIG1ha2VCbG9ja1B0cihbdGhpc10gewogICAgICAgICAgICAgYWN0aXZhdGVBdWRpb1Nl
c3Npb24oKTsKICAgICAgICAgfSkuZ2V0KCkpOwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNv
bXBsZXRpb24pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBuZXdBdWRpb0RldmljZXMgPSBy
ZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VzKCk7CiAgICAgICAgIGNhbGxPbldlYlRo
cmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRpb0RldmljZXMgPSBXVEZNb3ZlKG5l
d0F1ZGlvRGV2aWNlcyldICgpIG11dGFibGUgewogICAgICAgICAgICAgc2V0QXVkaW9DYXB0dXJl
RGV2aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwpAQCAtMjU0LDcgKzI1Myw3IEBAIHZv
aWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGlzYWJsZUFsbERldmljZXNR
dWVyeSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09
IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmUpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9k
aXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5
bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAg
ICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlICE9IEF1ZGlvU2Vzc2lvblN0YXRlOjpOb3ROZWVk
ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgTlNFcnJvciAqZXJyb3Ig
PSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA4YjE4ZmYxMjkyNTc4OTM3OTE1ZWFhNmE0OTk4Mzc5
MTcwNTE4MzA4Li43OGVjMDZiNzRlNDcyYmQ2MzhhOWY1ZTkzNzBiZjJmNmI4ZjliMjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotV0VCQ09SRV9FWFBPUlQgQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYg
aWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxv
cHQpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNy
ZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25h
bDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5jcHAKaW5kZXggYTM3ODUwZDc2ZWJkZTg4NGIyMmQ4OTAwZGVlMzZmODRjODQ1MTZh
Yi4uY2VlNWQ3ZWFjYmNiNjIxMGIyMjlkY2VhYzg3YjQ2ZjRmYmQ4ZWNlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwCkBAIC03MiwxNyArNzIsMTYgQEAgYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxh
dGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLAogICAgIHJldHVy
biB0cnVlOwogfQogCi1DRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCitSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmPiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNo
YWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVu
Z2VSZWYgaW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQu
CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRD
RihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7Ci0gICAgUmV0
YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdENG
KGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKLSAgICBDRlVSTEF1
dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3Rl
Y3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91
c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVz
cG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGF1dG8gY3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50
aWFsKCkpOworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0gY3JlYXRlQ0YoY29yZUNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxBdXRoQ2hhbGxl
bmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29y
ZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKSk7CiB9CiAK
LUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVu
dGlhbCkKK1JldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWF0ZUNGKGNvbnN0IENyZWRl
bnRpYWwmIGNvcmVDcmVkZW50aWFsKQogewogICAgIENGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHBlcnNpc3RlbmNlID0ga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKICAgICBzd2l0
Y2ggKGNvcmVDcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkpIHsKQEAgLTk4LDEwICs5NywxMCBAQCBD
RlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRp
YWwpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICByZXR1
cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWRl
bnRpYWxDcmVhdGUoMCwgY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwg
cGVyc2lzdGVuY2UpKTsKIH0KIAotQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCitSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9u
U3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQogewog
ICAgIENGVVJMUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0ga0NGVVJMUHJv
dGVjdGlvblNwYWNlU2VydmVySFRUUDsKICAgICBzd2l0Y2ggKGNvcmVTcGFjZS5zZXJ2ZXJUeXBl
KCkpIHsKQEAgLTE2NSw3ICsxNjQsNyBAQCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVD
Rihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENGVVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRl
KDAsIGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZVNwYWNlLnBv
cnQoKSwgc2VydmVyVHlwZSwgY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgc2NoZW1lKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTFByb3RlY3Rpb25TcGFjZUNyZWF0
ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFjZS5w
b3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIHNjaGVtZSkpOwogfQogCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmIGNm
Q3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmgKaW5kZXggODlhOTM1Mjg5YWQ3OWQ0MGIzN2RkMjAzYTgwZTll
OGRmNzExYjI2ZS4uNzBmNTAyMDVlYjJiZGEwODE2YmJkMDg4YzQ2Y2RhYWI5YzQ1MzIzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3JlZGVudGlhbFByaXYuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogCiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1
dGhDaGFsbGVuZ2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2UqIENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmOwpAQCAtMzgsOSArMzksOSBAQCBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7
CiAKLUNGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOwotQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwm
KTsKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYpOworUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKK1JldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNy
ZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKK1JldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFj
ZVJlZj4gY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiBDcmVkZW50aWFsIGNvcmUo
Q0ZVUkxDcmVkZW50aWFsUmVmKTsKIFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlv
blNwYWNlUmVmKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKaW5kZXggNmVhMzAxMjM5NTZlZGJk
MzA5ZDZjZTBlYWZmZTc4M2Q3MzhlNmRmYy4uMWZhODliYWUxZGUxY2IwNzYzZTA3YzYxYTQxOGEz
MWNjZWY1NWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBi
b29sIGNlcnRpZmljYXRlc01hdGNoKFNlY1RydXN0UmVmIHRydXN0MSwgU2VjVHJ1c3RSZWYgdHJ1
c3QyKQogUmV0YWluUHRyPENGQXJyYXlSZWY+IENlcnRpZmljYXRlSW5mbzo6Y2VydGlmaWNhdGVD
aGFpbkZyb21TZWNUcnVzdChTZWNUcnVzdFJlZiB0cnVzdCkKIHsKICAgICBhdXRvIGNvdW50ID0g
U2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUNvdW50KHRydXN0KTsKLSAgICBhdXRvIGNlcnRpZmljYXRl
Q2hhaW4gPSBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZUNoYWluID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoQ0ZJ
bmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShj
ZXJ0aWZpY2F0ZUNoYWluLCBTZWNUcnVzdEdldENlcnRpZmljYXRlQXRJbmRleCh0cnVzdCwgaSkp
OwotICAgIHJldHVybiBhZG9wdENGKChDRkFycmF5UmVmKWNlcnRpZmljYXRlQ2hhaW4pOworICAg
ICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2VydGlmaWNhdGVDaGFpbi5nZXQoKSwgU2VjVHJ1c3RH
ZXRDZXJ0aWZpY2F0ZUF0SW5kZXgodHJ1c3QsIGkpKTsKKyAgICByZXR1cm4gY2VydGlmaWNhdGVD
aGFpbjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAppbmRleCAwNzUyY2Ex
MDU1MmZkYjFhN2MzNTc1OTMyYTIzMmFhZWJlZGM1ZDYwLi4wYTAzMzg2ZDkzYzVjMTJlNjYwMTY2
ZmUyOTA2YjgxMTRiNWRlNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKQEAgLTM2LDE2
ICszNiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1zdGF0aWMgaW5saW5lIENG
VVJMQ3JlZGVudGlhbFJlZiBjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQorc3RhdGljIGlubGluZSBSZXRhaW5Q
dHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2Uo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQogewogICAgIGF1dG8gc3Rv
cmFnZSA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0KSk7Ci0gICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDb3B5RGVmYXVsdENy
ZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZS5nZXQoKSwgcHJvdGVjdGlvblNwYWNl
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ29weURlZmF1bHRD
cmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2UuZ2V0KCksIHByb3RlY3Rpb25TcGFj
ZSkpOwogfQogCiBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAg
YXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNl
KSk7Ci0gICAgYXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVBy
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOworICAgIGF1dG8gcHJvdGVj
dGlvblNwYWNlQ0YgPSBjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpOworICAgIGF1dG8gY3JlZGVu
dGlhbENGID0gY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFj
ZUNGLmdldCgpKTsKICAgICByZXR1cm4gY29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAKaW5kZXggNWVhNDQ4ZmNlNzczZTAzOTRkNzRmZDdiMWY5YzM3NjM2OWNkOWY4My4u
YmI4M2RmZjRhMjliZmQ5N2ZiNTA1YTQ5M2I4OTRiMThlMTE2ZjVmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcApA
QCAtNjMsOCArNjMsOCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCiAKICAgICAgICAg
ICAgICAgICAvLyBNdXN0IGFkZCBhIHNvdXJjZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBD
RlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRpbmcuCiAgICAgICAgICAgICAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBjdHh0ID0gezAsICh2b2lkKikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZvcm19OwotICAgICAgICAgICAgICAgIENGUnVuTG9v
cFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4
dCk7Ci0gICAgICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKGxvYWRlclJ1bkxvb3BPYmpl
Y3QsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgICAg
IGF1dG8gYm9ndXNTb3VyY2UgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAm
Y3R4dCkpOworICAgICAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShsb2FkZXJSdW5Mb29w
T2JqZWN0LCBib2d1c1NvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKIAogICAg
ICAgICAgICAgICAgIGxvYWRlclJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5k
ZXggNWQ3ZDc5NjE0NDY1ZmNhYjViZDZiNjQxOGUwNjBmNjhlYjA5NGE0YS4uYTUxYmRiOGUzMjVi
MzM3NmQxNGM2ZjRmNWU4MDdkMzgxZGJiOGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldFdpbi5jcHAKQEAgLTc5LDE2ICs3OSwxNiBAQCBzdGF0aWMgQ0ZIVFRQQ29va2llU3Rv
cmFnZUFjY2VwdFBvbGljeSB0b0NGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koSFRUUENv
bwogICAgIHJldHVybiBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQog
Ci1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0
cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29r
aWVBY2NlcHRQb2xpY3kpCitSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhU
VFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKIHsKICAgICBjb25zdCB2
b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10gPSB7IF9rQ0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJp
dmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eVZhbHVlc1tdID0geyBrQ0ZC
b29sZWFuVHJ1ZSB9OwotICAgIENGRGljdGlvbmFyeVJlZiBzZXNzaW9uUHJvcGVydGllcyA9IENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uUHJvcGVydHlLZXlz
LCBzZXNzaW9uUHJvcGVydHlWYWx1ZXMsIHNpemVvZihzZXNzaW9uUHJvcGVydHlLZXlzKSAvIHNp
emVvZigqc2Vzc2lvblByb3BlcnR5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBpZGVudGlmaWVyLCBzZXNzaW9uUHJvcGVydGllcyk7CisgICAgYXV0
byBzZXNzaW9uUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHNlc3Npb25Qcm9wZXJ0eUtleXMsIHNlc3Npb25Qcm9wZXJ0eVZhbHVlcywg
c2l6ZW9mKHNlc3Npb25Qcm9wZXJ0eUtleXMpIC8gc2l6ZW9mKCpzZXNzaW9uUHJvcGVydHlLZXlz
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOworICAgIGF1dG8gc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkZW50aWZpZXIsIHNlc3Np
b25Qcm9wZXJ0aWVzLmdldCgpKSk7CiAgICAgCiAgICAgLy8gVGhlIHByaXZhdGUgc3RvcmFnZSBz
ZXNzaW9uIHNob3VsZCBoYXZlIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIGRlZmF1bHQgc3Rv
cmFnZSBzZXNzaW9uLAogICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGl0IHNob3VsZCBi
ZSBpbi1tZW1vcnkgb25seSBzdG9yYWdlLgotICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVS
TFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNz
aW9uKSk7CisgICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5
Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBD
RlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNhY2hlLmdldCgpLCAwKTsKICAgICBhdXRvIGRlZmF1
bHRDYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBD
RlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlD
YXBhY2l0eShkZWZhdWx0Q2FjaGUuZ2V0KCkpKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBp
ZGVudGlmaWVyLCBPcHRpbwogICAgICAgICBjZkNvb2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENv
b2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UpOwog
ICAgIH0KIAotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNl
c3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bikpOworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Np
b25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5n
ZXQoKSkpOwogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29v
a2llU3RvcmFnZS5nZXQoKSwgY2ZDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIAogICAgIHJldHVy
biBzdG9yYWdlU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKaW5kZXggY2IwOGI5MzczNTA5
YTUwMDc5Mjc0NjhjMDc2Y2Y4MmU2NWQ1YjA3ZS4uODczN2M0YzcxNGY2NWRlNGMwNDZkNTkxNzA2
MjFhOWFhNWU3MDZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIFByb3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVk
ZW50aWFsU2VjdXJlbHkoKSBjb25zdAogewotICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZj4gY2ZTcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoKnRoaXMpKTsKKyAgICBhdXRvIGNm
U3BhY2UgPSBjcmVhdGVDRigqdGhpcyk7CiAgICAgcmV0dXJuIGNmU3BhY2UgJiYgQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseShjZlNwYWNlLmdldCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMmQ0ZWZmNTA1Y2M0MTNhMGNkNjUyM2NiMDljMDQ0
YzRiNDllODU1ZC4uNmJmM2NjMjA0MDQwYjhhZmU5MjRjN2Y5ZjU1MTNkN2E1YzJiMTczMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0zODksNyArMzg5LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2gKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywg
cG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAg
ICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlh
bFN0b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNm
Q3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAg
ICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAgICAg
ICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCks
IGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTQzNiwxMSAr
NDM2LDExIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCku
Y2FjaGVQYXJ0aXRpb24oKSwgd2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9w
dENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpKTsKKyAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50
aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCk7CiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgp
LCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVu
dGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7Cisg
ICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAg
IENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNy
ZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAg
fQogCkBAIC01NTksOCArNTU5LDggQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXgKIAogICAgICAg
ICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZS
dW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgogICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VS
ZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAg
ICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2lnbmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0
cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggMWZlNjkwMjRiY2Jm
YjhkNzdiYWI5OGE5MWEzY2E4MTU5ZmJhNGUwMy4uM2M4MmJjM2I0YzY4NTliOGJhOTRhMzJiZTlh
NDI2YTgzOTk2ZWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0x
MTAsOCArMTEwLDggQEAgc3RhdGljIENGUnVuTG9vcFJlZiBnZXRSdW5Mb29wKCkKIAogICAgICAg
ICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZS
dW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgogICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VS
ZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAg
ICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2lnbmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0
cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCBmNmUxYjliNWQzYTViYTdhZTM1YTc3OTIz
ZDU2ZDUzZWFlMzI3MTk5Li5iN2VmNWI4NzU4NGZmYmI2NmFmN2Q5YTExM2Y0MzA2ZDkxNWExNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMTY3LDUxICsxNjcsNTEgQEAgc3RhdGljIENG
VVJMUmVmIHNpdGVGb3JDb29raWVzKFJlc291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3NpdGlv
biBkaXNwb3NpdGlvbiwKICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3Np
dGlvbjo6U2FtZVNpdGU6CiAgICAgICAgIHJldHVybiB1cmw7CiAgICAgY2FzZSBSZXNvdXJjZVJl
cXVlc3Q6OlNhbWVTaXRlRGlzcG9zaXRpb246OkNyb3NzU2l0ZToKLSAgICAgICAgc3RhdGljIENG
VVJMUmVmIGVtcHR5VVJMID0gQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKG51bGxwdHIsIENGU1RSKCIi
KSwgbnVsbHB0cik7Ci0gICAgICAgIHJldHVybiBlbXB0eVVSTDsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlVSTFJlZj4+IGVtcHR5VVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgQ0ZTVFIoIiIpLCBudWxscHRyKSk7CisgICAgICAg
IHJldHVybiBlbXB0eVVSTC5nZXQoKS5nZXQoKTsKICAgICB9CiB9CiAjZW5kaWYKIAogdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIHsKLSAgICBDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZj4gY2ZSZXF1ZXN0OwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBSZXNv
dXJjZVJlcXVlc3Q6OnVybCgpLmNyZWF0ZUNGVVJMKCk7CiAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiBmaXJzdFBhcnR5Rm9yQ29va2llcyA9IFJlc291cmNlUmVxdWVzdDo6Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKS5jcmVhdGVDRlVSTCgpOwogICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwgPSBSZXNv
dXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA/IFJlc291cmNlUmVxdWVzdEJhc2U6
OnRpbWVvdXRJbnRlcnZhbCgpIDogUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVmYXVsdFRpbWVvdXRJ
bnRlcnZhbCgpOwogICAgIGlmIChtX2NmUmVxdWVzdCkgewotICAgICAgICBjZlJlcXVlc3QgPSBD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7Ci0gICAg
ICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QsIHVybC5nZXQoKSk7Ci0gICAgICAgIENG
VVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChjZlJlcXVlc3QsIGZpcnN0UGFydHlGb3JDb29r
aWVzLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0
LCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpKTsKLSAgICAgICAg
Q0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVydmFsKGNmUmVxdWVzdCwgdGltZW91dEludGVydmFs
KTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwo
Y2ZSZXF1ZXN0LmdldCgpLCB1cmwuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWlu
RG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7
CisgICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVzdC5nZXQoKSwgdG9Q
bGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7CisgICAgICAgIENGVVJM
UmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QuZ2V0KCksIHRpbWVvdXRJbnRlcnZh
bCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11
dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9s
aWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAg
ICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVy
bC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSwgdGlt
ZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSkpOwogCi0gICAgQ0ZVUkxS
ZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LCBodHRwTWV0aG9kKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2Qo
Y2ZSZXF1ZXN0LmdldCgpLCBodHRwTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAK
ICAgICBpZiAoaHR0cFBpcGVsaW5pbmdFbmFibGVkKCkpCi0gICAgICAgIENGVVJMUmVxdWVzdFNl
dFNob3VsZFBpcGVsaW5lSFRUUChjZlJlcXVlc3QsIHRydWUsIHRydWUpOworICAgICAgICBDRlVS
TFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhUVFAoY2ZSZXF1ZXN0LmdldCgpLCB0cnVlLCB0cnVl
KTsKIAogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpIHsKLSAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RQ
cmlvcml0eShwcmlvcml0eSgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlv
cml0eShjZlJlcXVlc3QuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHko
KSkpOwogCiAgICAgICAgIC8vIFVzZWQgYnkgUExUIHRvIGlnbm9yZSB2ZXJ5IGxvdyBwcmlvcml0
eSBiZWFjb24gYW5kIHBpbmcgbG9hZHMuCiAgICAgICAgIGlmIChwcmlvcml0eSgpID09IFJlc291
cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93KQotICAgICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFBy
b3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBDRlNUUigiV0tWZXJ5TG93TG9hZFByaW9yaXR5Iiks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFBy
b3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIldLVmVyeUxvd0xvYWRQcmlvcml0eSIpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQogCi0gICAgc2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwg
aHR0cEhlYWRlckZpZWxkcygpKTsKKyAgICBzZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LmdldCgp
LCBodHRwSGVhZGVyRmllbGRzKCkpOwogCi0gICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxl
SFRUUENvb2tpZXMoY2ZSZXF1ZXN0LCBhbGxvd0Nvb2tpZXMoKSk7CisgICAgQ0ZVUkxSZXF1ZXN0
U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMoY2ZSZXF1ZXN0LmdldCgpLCBhbGxvd0Nvb2tpZXMo
KSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90
b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgQ0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVy
dHlTaXRlRm9yQ29va2llcyIpLCBzaXRlRm9yQ29va2llcyhtX3NhbWVTaXRlRGlzcG9zaXRpb24s
IHVybC5nZXQoKSkpOworICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVx
dWVzdC5nZXQoKSwgQ0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29v
a2llcyIpLCBzaXRlRm9yQ29va2llcyhtX3NhbWVTaXRlRGlzcG9zaXRpb24sIHVybC5nZXQoKSkp
OwogCiAgICAgaW50IGlzVG9wU2l0ZSA9IG1faXNUb3BTaXRlOwogICAgIFJldGFpblB0cjxDRk51
bWJlclJlZj4gaXNUb3BTaXRlQ0YgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtD
Rk51bWJlckludFR5cGUsICZpc1RvcFNpdGUpKTsKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9j
b2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5
aXNUb3BTaXRlIiksIGlzVG9wU2l0ZUNGLmdldCgpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGlj
eVByb3BlcnR5aXNUb3BTaXRlIiksIGlzVG9wU2l0ZUNGLmdldCgpKTsKICNlbmRpZgogCiAgICAg
dW5zaWduZWQgZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwpAQCAtMjIyLDUxICsyMjIsNTEgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgaWYgKGVuY29k
aW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tzLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPihlbmNvZGluZykpOwogICAgIH0KLSAgICBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkoY2ZSZXF1ZXN0LCBlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSk7Cisg
ICAgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNmUmVxdWVzdC5n
ZXQoKSwgZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKICAgICBTdHJpbmcgcGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBp
ZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAhcGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAg
ICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwYXJ0aXRpb24udXRmOCgpOwogICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZhbHVlID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRmOFN0cmluZy5kYXRh
KCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7
Ci0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgX2tD
RlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7CisgICAgICAgIF9D
RlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgX2tDRlVSTENh
Y2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAK
LSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9
IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1IVFRQQm9keSgpCiB7Ci0gICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVl
c3Q7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVh
dGVDRlVSTCgpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMg
PSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0UGFydHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsK
ICAgICBkb3VibGUgdGltZW91dEludGVydmFsID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91
dEludGVydmFsKCkgPyBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJl
c291cmNlUmVxdWVzdEJhc2U6OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9j
ZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwo
Y2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1l
bnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENG
VVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNo
ZVBvbGljeShjYWNoZVBvbGljeSgpKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJ
bnRlcnZhbChjZlJlcXVlc3QsIHRpbWVvdXRJbnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9
IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0
KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdl
dCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5n
ZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRDYWNoZVBvbGljeShjZlJlcXVlc3QuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xp
Y3koY2FjaGVQb2xpY3koKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2
YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1lb3V0SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAg
ICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9Q
bGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFs
LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0
Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1
ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0
eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAogICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5
KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKQotICAgICAgICBX
ZWJDb3JlOjpzZXRIVFRQQm9keShjZlJlcXVlc3QsIGZvcm1EYXRhKTsKKyAgICAgICAgV2ViQ29y
ZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LmdldCgpLCBmb3JtRGF0YSk7CiAKLSAgICBpZiAoUmV0
YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0
Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShjZlJlcXVlc3QpKSkgeworICAgIGlmIChSZXRhaW5Q
dHI8Q0ZSZWFkU3RyZWFtUmVmPiBib2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5
SFRUUFJlcXVlc3RCb2R5U3RyZWFtKGNmUmVxdWVzdC5nZXQoKSkpKSB7CiAgICAgICAgIC8vIEZv
ciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVudC1MZW5ndGggdG8gYXZvaWQgdXNpbmcgY2h1bmtl
ZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1cmF0ZSB0b3RhbCBsZW5ndGggaW4gY2FsbGJhY2tz
LgogICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsZW5ndGhTdHJpbmcgPSBhZG9w
dENGKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoYm9k
eVN0cmVhbS5nZXQoKSwgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKSkpKSkgewot
ICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0
LCBDRlNUUigiQ29udGVudC1MZW5ndGgiKSwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKKyAgICAgICAg
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKGNmUmVxdWVzdC5nZXQoKSwg
Q0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxlbmd0aFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAg
ICAvLyBTaW5jZSByZXNvdXJjZSByZXF1ZXN0IGlzIGFscmVhZHkgbWFya2VkIHVwZGF0ZWQsIHdl
IG5lZWQgdG8ga2VlcCBpdCB1cCB0byBkYXRlIHRvby4KICAgICAgICAgICAgIEFTU0VSVChtX3Jl
c291cmNlUmVxdWVzdFVwZGF0ZWQpOwogICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNl
dChIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOwor
ICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQpAQCAtMzU1LDEwICszNTUsMTAgQEAg
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc3RvcmFnZVNlc3Npb24pCiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7CiAK
LSAgICBhdXRvIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1f
Y2ZSZXF1ZXN0LmdldCgpKTsKKyAgICBhdXRvIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1
ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKICAgICBpZiAoc3Rv
cmFnZVNlc3Npb24pCi0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJl
cXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKLSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1
ZXN0KTsKKyAgICAgICAgX0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdC5n
ZXQoKSwgc3RvcmFnZVNlc3Npb24pOworICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVl
c3QpOwogfQogCiAjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDgwYmQ2NmQ3OGQ0MWE3NTBhMjYwZWViYzlmNjdm
NGJjYjZmYmUyMTEuLjg2NGJiOTk3MzEwODljMjM2NWViMTVkOTNhMjljZmUzMWY4NDgwOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMTczLDcgKzE3Myw3IEBA
IENvb2tpZVN0b3JhZ2VPYnNlcnZlciYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9y
YWdlT2JzZXJ2ZXIoKSBjb25zdAogICAgIHJldHVybiAqbV9jb29raWVTdG9yYWdlT2JzZXJ2ZXI7
CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+
IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBj
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9u
YWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gY29va2llQWNjZXB0UG9saWN5KQogewogICAgIGNv
bnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eUtleXNbXSA9IHsgX2tDRlVSTFN0b3JhZ2VTZXNzaW9u
SXNQcml2YXRlIH07CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5VmFsdWVzW10gPSB7
IGtDRkJvb2xlYW5UcnVlIH07CkBAIC0yMTAsNyArMjEwLDcgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwg
T3B0aW8KICAgICAvLyBGSVhNRTogVXNlIF9DRkhUVFBDb29raWVTdG9yYWdlR2V0RGVmYXVsdCB3
aGVuIFVTRShDRk5FVFdPUkspIGlzIGRlZmluZWQgaW4gV2ViS2l0IGZvciBjb25zaXN0ZW5jeS4K
ICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3Jh
Z2UuZ2V0KCksIG5zQ29va2llQWNjZXB0UG9saWN5KTsKIAotICAgIHJldHVybiBzdG9yYWdlU2Vz
c2lvbi5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQogCiBSZXRhaW5Q
dHI8TlNBcnJheT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBDb29r
aWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0K
aW5kZXggNDU1YTdhNjJjYzEyNDE2MGNkOGJlOTJkNzQ5MzEyM2JhNjg2ZTRmZi4uMzU3NzQwZjIy
NTZmOTg5MGJhNzFhMzYzOGVmNTcwN2U3MWE5ZDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bQpAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyA8cmRhcjovL3By
b2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5tanMgZmlsZXMgYXMgd2hhdGV2ZXIgVVRJIGluZGlj
YXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRv
TUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4
dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewogICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKICAg
ICAgICAgQ0ZTVFIoIm1qcyIpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlS
ZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCiAgICAgfTsKIAogICAgIEFTU0VSVChz
aXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVlcykpOwotICAgIHJldHVybiBDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZv
aWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yo
a2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkKQpAQCAtNjYsMTEgKzY2LDExIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJ
Zk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3Vy
Y2VMCiAgICAgICAgIGlmIChbKF9fYnJpZGdlIE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKICAg
ICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVS
TENvcHlQYXRoRXh0ZW5zaW9uKHVybCkpOwogICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewot
ICAgICAgICAgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9uTWFwID0gY3Jl
YXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOwotICAgICAgICAgICAgICAgIENGTXV0YWJsZVN0
cmluZ1JlZiBtdXRhYmxlRXh0ZW5zaW9uID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpOwotICAgICAgICAgICAgICAgIENG
U3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24sIE5VTEwpOwotICAgICAgICAgICAgICAg
IGV4dGVuc2lvbiA9IGFkb3B0Q0YobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAg
aWYgKGF1dG8gbmV3TUlNRVR5cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0KCkpKQorICAgICAgICAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gZXh0ZW5zaW9uTWFwID0g
Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOworICAgICAgICAgICAgICAgIGF1dG8gbXV0
YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBDRlN0
cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLmdldCgpLCBOVUxMKTsKKyAgICAgICAgICAg
ICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11dGFibGVFeHRlbnNpb24pOworICAgICAgICAgICAg
ICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKSkKICAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlZE1JTUVUeXBlID0gbmV3TUlNRVR5cGU7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCBiYjExNmE5ZGZmM2U4MDI0OWUzYzFm
ZjEwZWU5MTI5YzcwNTZmZDE1Li40ZmE1MGU0NmIwOTQ5NmNkZWUwNzM5NjQ1Yzg0ZjFkN2E0Njlm
ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIFdoZW4gd2UgZGlzYWJsZWQgY29udGVudCBzbmlmZmluZyBmb3IgZmlsZSBVUkxz
IHdlIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRoZXNlIDEwMCsgZXh0ZW5zaW9ucyB0aGF0IENvcmVU
eXBlcwogLy8gZG9lc24ndCBrbm93IGFib3V0LgogLy8gSWYgQ29yZVR5cGVzIGlzIGV2ZXIgYnJv
dWdodCB1cCB0byBzcGVlZCB3ZSBjYW4gcmVtb3ZlIHRoaXMgdGFibGUgYW5kIGFzc29jaWF0ZWQg
Y29kZS4KLXN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1h
cCgpCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9N
SU1FVHlwZU1hcCgpCiB7CiAgICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewogICAgICAgICBDRlNU
UigiYWkiKSwKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0
ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogICAgIH07CiAKICAgICBBU1NFUlQoc2l6ZW9mKGtl
eXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZh
bHVlcywgc2l6ZW9mKGtleXMpL3NpemVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIHJl
dHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNp
emVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIH0KIAogdm9pZCBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJj
ZUxvYWQpCkBAIC0zMDQsMTEgKzMwNCwxMSBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nh
cnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAg
ICAgICAgICAgaWYgKGV4dGVuc2lvbikgewogICAgICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS83MDA3Mzg5PiBDb3JlVHlwZXMgVVRJIG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRl
bnNpb25zIHRoYXQgR2F0ZUtlZXBlciBrbmV3IGFib3V0CiAgICAgICAgICAgICAgICAgLy8gV2hl
biB0aGlzIHJhZGFyIGlzIHJlc29sdmVkLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgZmlsZTovLyB1cmwg
c3BlY2lmaWMgY29kZS4KLSAgICAgICAgICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGV4
dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAg
ICAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRl
TXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKLSAg
ICAgICAgICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsK
LSAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShleHRlbnNpb25NYXAsIGV4dGVuc2lvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAg
PSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7CisgICAgICAgICAgICAgICAgYXV0byBt
dXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSkpOworICAgICAgICAgICAgICAgIENG
U3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOworICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbiA9IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lv
bk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0
aGUgR2F0ZWtlZXBlci1iYXNlZCBtYXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0
cnkgdG8gZmlndXJlIG91dCB3aGF0IGl0IHNob3VsZCBiZSBieQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQppbmRleCA1ZjM2ZDA4MzE0
ODZjOWQ5ZTRmYzkzYjliZGYxZDYxNzdjMjBlNjQwLi5hNTYxOGZlMGNkNjlmODYxODVkNzhiMGU2
MzlkZDlhMjhhZmQyM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAtNzEsMjMgKzcxLDIzIEBAIHN0YXRpYyBib29sIGlz
QW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBD
RlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXJGb3JTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQog
ewotICAgIHN0YXRpYyBDRkxvY2FsZVJlZiBsb2NhbGUgPSBudWxscHRyOwotICAgIGlmICghbG9j
YWxlKSB7CisgICAgc3RhdGljIGF1dG8gbG9jYWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
ICAgICAgICAgY29uc3QgY2hhciogdGVtcCA9IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRlbXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0Vu
Y29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgICAgIGxvY2FsZSA9
IENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQo
KSk7Ci0gICAgICAgIGlmICghbG9jYWxlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQorICAgICAgICBhdXRvIGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KHRlbXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUks
IGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENGTG9j
YWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSkpOwor
ICAgIH0oKSk7CisKKyAgICBpZiAoIWxvY2FsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBDRlJhbmdlIGVudGlyZVJhbmdlID0gQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdH
ZXRMZW5ndGgoc3RyKSk7ICAgIAogCi0gICAgc3RhdGljIENGU3RyaW5nVG9rZW5pemVyUmVmIHRv
a2VuaXplciA9IG51bGxwdHI7Ci0gICAgaWYgKCF0b2tlbml6ZXIpCi0gICAgICAgIHRva2VuaXpl
ciA9IENGU3RyaW5nVG9rZW5pemVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0ciwgZW50
aXJlUmFuZ2UsIGtDRlN0cmluZ1Rva2VuaXplclVuaXRXb3JkQm91bmRhcnksIGxvY2FsZSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1Rva2VuaXplclJlZj4+
IHRva2VuaXplcjsKKyAgICBpZiAoIXRva2VuaXplci5nZXQoKSkKKyAgICAgICAgdG9rZW5pemVy
LmdldCgpID0gYWRvcHRDRihDRlN0cmluZ1Rva2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZTdHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5
LCBsb2NhbGUuZ2V0KCkuZ2V0KCkpKTsKICAgICBlbHNlCi0gICAgICAgIENGU3RyaW5nVG9rZW5p
emVyU2V0U3RyaW5nKHRva2VuaXplciwgc3RyLCBlbnRpcmVSYW5nZSk7Ci0gICAgcmV0dXJuIHRv
a2VuaXplcjsKKyAgICAgICAgQ0ZTdHJpbmdUb2tlbml6ZXJTZXRTdHJpbmcodG9rZW5pemVyLmdl
dCgpLmdldCgpLCBzdHIsIGVudGlyZVJhbmdlKTsKKyAgICByZXR1cm4gdG9rZW5pemVyLmdldCgp
LmdldCgpOwogfQogCiAvLyBTaW1wbGUgY2FzZTogQSB3b3JkIGlzIGEgc3RyZWFtIG9mIGNoYXJh
Y3RlcnMgZGVsaW1pdGVkIGJ5IGEgc3BlY2lhbCBzZXQgb2Ygd29yZC1kZWxpbWl0aW5nIGNoYXJh
Y3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNw
cAppbmRleCA0ZDhjNWM2MDZkNWM1NTg3ZjJjOTVhZjJkYTZiZmRiZjAyNjlkYzk0Li4zMDRiMWZk
MmFkZThhNzQ3MjZlMmY1OGM4MjI1MTExNWU0YjA1MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTU3LDEzICs1NywxMSBAQCBHRElP
YmplY3Q8SEJJVE1BUD4gYWxsb2NJbWFnZShIREMgZGMsIEludFNpemUgc2l6ZSwgQ0dDb250ZXh0
UmVmICp0YXJnZXRSZWYpCiAgICAgaWYgKCF0YXJnZXRSZWYgfHwgIWhibXApCiAgICAgICAgIHJl
dHVybiBoYm1wOwogCi0gICAgQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlI
ZWFkZXIuYmlIZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCAqIDQsIHNSR0JDb2xv
clNwYWNlUmVmKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBGaXJzdCk7CisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlI
ZWFkZXIuYmlIZWlnaHQsIDgsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggKiA0LCBzUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFO
b25lU2tpcEZpcnN0KSk7CiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAgICAgICByZXR1cm4g
R0RJT2JqZWN0PEhCSVRNQVA+KCk7CiAKLSAgICAqdGFyZ2V0UmVmID0gYml0bWFwQ29udGV4dDsK
KyAgICAqdGFyZ2V0UmVmID0gYml0bWFwQ29udGV4dC5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGhi
bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRl
eCA3NWQ4MTE3ZjM4ZGMxZWMwNDE1MWYxODM3ZDM3ZGExYWVlZTU2ZjkwLi5hZGU2MTkyOTgwNTcw
NGU2OTlmOWI5NTIxNmJiNTk5YjZhNDMyYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNTIsMzYgKzE1MiwyNSBAQCBzdGF0aWMgdm9pZCBpbnRl
cnBvbGF0ZUV4cG9uZW50aWFsR3JhZGllbnQodm9pZCAqaW5mbywgY29uc3QgQ0dGbG9hdCAqaW5E
YXRhLCBDRwogCiBzdGF0aWMgQ0dGdW5jdGlvblJlZiBnZXRTaGFyZWRGdW5jdGlvblJlZihJT1NH
cmFkaWVudFJlZiBncmFkaWVudCwgSW50ZXJwb2xhdGlvbiBpbnRlcnBvbGF0aW9uKQogewotICAg
IENHRnVuY3Rpb25SZWYgZnVuY3Rpb24gPSBudWxscHRyOwotCi0gICAgc3RhdGljIEhhc2hNYXA8
SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+KiBsaW5lYXJGdW5jdGlvblJlZnM7Ci0gICAg
c3RhdGljIEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+KiBleHBvbmVudGlh
bEZ1bmN0aW9uUmVmczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFk
aWVudFJlZiwgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+Pj4gbGluZWFyRnVuY3Rpb25SZWZzOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBSZXRhaW5Q
dHI8Q0dGdW5jdGlvblJlZj4+PiBleHBvbmVudGlhbEZ1bmN0aW9uUmVmczsKIAogICAgIGlmIChp
bnRlcnBvbGF0aW9uID09IExpbmVhckludGVycG9sYXRpb24pIHsKLSAgICAgICAgaWYgKCFsaW5l
YXJGdW5jdGlvblJlZnMpCi0gICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJlZnMgPSBuZXcgSGFz
aE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5jdGlvblJlZj47Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGZ1bmN0aW9uID0gbGluZWFyRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwotICAg
IAorICAgICAgICBhdXRvIGZ1bmN0aW9uID0gbGluZWFyRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGll
bnQpOwogICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBzdGF0aWMgc3RydWN0
IENHRnVuY3Rpb25DYWxsYmFja3MgbGluZWFyRnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBpbnRl
cnBvbGF0ZUxpbmVhckdyYWRpZW50LCAwIH07Ci0gICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJl
ZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAx
LCBudWxscHRyLCA0LCBudWxscHRyLCAmbGluZWFyRnVuY3Rpb25DYWxsYmFja3MpKTsKKyAgICAg
ICAgICAgIGxpbmVhckZ1bmN0aW9uUmVmcy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFkb3B0
Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwgJmxp
bmVhckZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uOworICAgICAgICByZXR1cm4gZnVuY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaWYg
KCFleHBvbmVudGlhbEZ1bmN0aW9uUmVmcykKLSAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJl
ZnMgPSBuZXcgSGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5jdGlvblJlZj47Ci0gICAgZWxz
ZQotICAgICAgICBmdW5jdGlvbiA9IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGll
bnQpOwotCisgICAgYXV0byBmdW5jdGlvbiA9IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQo
Z3JhZGllbnQpOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgc3RhdGljIHN0cnVjdCBD
R0Z1bmN0aW9uQ2FsbGJhY2tzIGV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBp
bnRlcnBvbGF0ZUV4cG9uZW50aWFsR3JhZGllbnQsIDAgfTsKLSAgICAgICAgZXhwb25lbnRpYWxG
dW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBDR0Z1bmN0aW9uQ3JlYXRlKGdy
YWRpZW50LCAxLCAwLCA0LCAwLCAmZXhwb25lbnRpYWxGdW5jdGlvbkNhbGxiYWNrcykpOworICAg
ICAgICBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFk
b3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgMCwgNCwgMCwgJmV4cG9uZW50aWFs
RnVuY3Rpb25DYWxsYmFja3MpKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOworICAg
IHJldHVybiBmdW5jdGlvbi5nZXQoKTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd0F4aWFsR3JhZGll
bnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBjb25zdCBG
bG9hdFBvaW50JiBzdGFydFBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBzdG9wUG9pbnQsIEludGVy
cG9sYXRpb24gaW50ZXJwb2xhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggYmU2NjA3OGE4M2QwY2E0OWI3
MWExZmI1M2MyM2E4YzZiODFkNzY3ZS4uNWE5YmJjNzE1YzllNWM4NDNhYWYyYjkxNWRkODhmNzJl
ZmExOWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNo
aXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJB
cmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQgewogCi1zdGF0aWMgQ0ZVUkxS
ZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYg
cmVzcG9uc2VEYXRhKQorc3RhdGljIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBjcmVhdGVD
RlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQogewog
ICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTooX19i
cmlkZ2UgTlNEYXRhICopcmVzcG9uc2VEYXRhIGVycm9yOm51bGxwdHJdKTsKQEAgLTUzLDcgKzUz
LDcgQEAgc3RhdGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNw
b25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGEKICAgICB9CiAKICAgICBpZiAoIVtyZXNwb25z
ZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dKQotICAgICAgICByZXR1
cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZV
UkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5
cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUsIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOwor
ICAgICAgICByZXR1cm4gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilyZXNwb25zZS5NSU1FVHlwZSwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSwga0NGVVJMQ2Fj
aGVTdG9yYWdlQWxsb3dlZCkpOwogCiAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25z
ZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwogCkBAIC02NCw3ICs2NCw3IEBAIHN0
YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRh
KENGRGF0YVJlZiByZXNwb25zZURhCiAgICAgZm9yIChOU1N0cmluZyAqaGVhZGVyRmllbGQgaW4g
W2hlYWRlckZpZWxkcyBrZXlFbnVtZXJhdG9yXSkKICAgICAgICAgQ0ZIVFRQTWVzc2FnZVNldEhl
YWRlckZpZWxkVmFsdWUoaHR0cE1lc3NhZ2UuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZilo
ZWFkZXJGaWVsZCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9y
S2V5OmhlYWRlckZpZWxkXSk7CiAKLSAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhI
VFRQUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3Bv
bnNlLlVSTCwgaHR0cE1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOwor
ICAgIHJldHVybiBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBN
ZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGNvbnZlcnRNSU1FVHlwZShDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUpCkBAIC0xNTYs
NyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rp
b25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9wZXIKICAgICBpZiAoQ0ZHZXRUeXBlSUQo
cmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlc3BvbnNlID0gYWRvcHRDRihjcmVhdGVD
RlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpKTsKKyAgICBhdXRvIHJl
c3BvbnNlID0gY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRh
KTsKICAgICBpZiAoIXJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMWE5ZjcxOWQ2NTFm
YThhZWQxOWY2ZWZmMDUxNTdmMDk1MmRiZWUxMS4uYzUzN2VhMjhkOTFjNTA1YTI1OGI5YzgwNmU3
ZTgzY2UyY2Y0MGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Np
bwogICAgIC8vIFNlc3Npb24gbmFtZSBzaG91bGQgYmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQg
bWVtb3J5IHJlZ2lvbiBuYW1lIHRvIGJlIHVuZGVyIHRoZSBsaW1pdCwgb3RoZXJ3aXNlIHNhbmRi
b3ggcnVsZXMgd29uJ3Qgd29yayAoc2VlIDxyZGFyOi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgogICAg
IFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJl
bnRQcm9jZXNzSUQoKSk7CiAKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNy
ZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKSk7CisgICAgYXV0byBzZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CkBA
IC00ODUsNyArNDg1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBib29sIHNob3VsZFUKICAgICBSZXRhaW5QdHI8
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3RvcmFnZVNlc3Npb247CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlBy
aXZhdGVCcm93c2luZy4iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBzdG9yYWdl
U2Vzc2lvbiA9IGFkb3B0Q0YoY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmll
ci5nZXQoKSkpOworICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IGNyZWF0ZVByaXZhdGVTdG9yYWdl
U2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOwogICAgIGVsc2UgaWYgKHNlc3Npb25JRCAhPSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICBzdG9yYWdlU2Vzc2lv
biA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lv
bkZvcklkZW50aWZpZXIoY2ZJZGVudGlmaWVyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZhNDIzMzRlYzBjYTFhZDA1MDIz
ZWNiZjc4ZDEzMWQwMWIzZWYzNmYuLjA3OTkxNWUyYjRjMzlhODFjMjQ4OGViOWFjYTQ4OGZiMTE0
M2RjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTU3LDcgKzU1OCw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gRklYTUU6IFdlJ2QgbGlrZSB0byBiZSBhYmxlIHRvIGRvIHRoaXMgd2l0
aG91dCB0aGUgI2lmZGVmLCBidXQgV29ya1F1ZXVlICsgQmluYXJ5U2VtYXBob3JlIGlzbid0IGdv
b2QgZW5vdWdoIHNpbmNlCiAgICAgLy8gbXVsdGlwbGUgcmVxdWVzdHMgdG8gY2xlYXIgdGhlIGNh
Y2hlIGNhbiBjb21lIGluIGJlZm9yZSBwcmV2aW91cyByZXF1ZXN0cyBjb21wbGV0ZSwgYW5kIHdl
IG5lZWQgdG8gd2FpdCBmb3IgYWxsIG9mIHRoZW0uCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB1c2lu
ZyBXb3JrUXVldWUgYW5kIGEgY291bnRpbmcgc2VtYXBob3JlIHdvdWxkIHdvcmssIGFzIHdvdWxk
IFdvcmtRdWV1ZSBzdXBwb3J0aW5nIHRoZSBsaWJkaXNwYXRjaCBjb25jZXB0IG9mICJ3b3JrIGdy
b3VwcyIuCi0gICAgZGlzcGF0Y2hfZ3JvdXBfdCBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwIHsg
bnVsbHB0ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1fY2xlYXJDYWNo
ZURpc3BhdGNoR3JvdXA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNjBhZjkzZGRmNTFkZTc5MDMyNjQ1NDZjNmIwMzRiYTFi
NWJhNTcyZS4uNWZiZTgxZDY4NmI5Yzc0ZDdkZWI5Njg1NjQwMzgxM2ZlNjdlZGYyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQpAQCAtMTkxLDkgKzE5MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgbW9kaWZpZWRT
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKQotICAgICAgICBtX2NsZWFyQ2FjaGVE
aXNwYXRjaEdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7CisgICAgICAgIG1fY2xlYXJD
YWNoZURpc3BhdGNoR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgp
KTsKIAotICAgIGF1dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwOworICAgIGF1
dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwLmdldCgpOwogICAgIGRpc3BhdGNo
X2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQ
dHIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRTaW5jZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFttb2RpZmllZFNpbmNlLCAmYWdncmVnYXRvcl0oTmV0d29ya1Nlc3Npb24mIHNlc3Npb24p
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1By
b2Nlc3NNYWMubW0KaW5kZXggYjVlMGQxYTNkNTEyNTNhNTAwM2RlNjVlNTg2OTc5ZTRkOGMyZDA4
MC4uYjBmOWE1OWJiMmMwODM3ODVjODU5Y2I3MDE1OTE4YTNhNjQxMTYxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0K
QEAgLTk3LDkgKzk3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3go
Y29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW0KIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKICAgICBpZiAobV9jbGVhckNhY2hlRGlzcGF0
Y2hHcm91cCkgewotICAgICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURpc3Bh
dGNoR3JvdXAsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVh
c2UobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCk7Ci0gICAgICAgIG1fY2xlYXJDYWNoZURpc3Bh
dGNoR3JvdXAgPSAwOworICAgICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURp
c3BhdGNoR3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CisgICAgICAgIG1fY2xl
YXJDYWNoZURpc3BhdGNoR3JvdXAgPSBudWxscHRyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDRmNmIxODRmZjQwZDk5Mjg4ZWI2MDYwYTdj
NTg4NmIzNzM2YzRiODMuLmQ5YjUzMDMzNThkNjQ3ODY2YzlhYjZhNTdjYzE3YmRlYTk0MmY4ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQ1OCwxMCArNDU4
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxSZWNlaXZlU291cmNlKCk7CiAKICAgICBt
YWNoX3BvcnRfdCBtX3NlbmRQb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsKLSAgICBkaXNwYXRjaF9z
b3VyY2VfdCBtX3NlbmRTb3VyY2UgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0
Y2hfc291cmNlX3Q+IG1fc2VuZFNvdXJjZTsKIAogICAgIG1hY2hfcG9ydF90IG1fcmVjZWl2ZVBv
cnQgeyBNQUNIX1BPUlRfTlVMTCB9OwotICAgIGRpc3BhdGNoX3NvdXJjZV90IG1fcmVjZWl2ZVNv
dXJjZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9zb3VyY2VfdD4gbV9y
ZWNlaXZlU291cmNlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBtX3BlbmRp
bmdPdXRnb2luZ01hY2hNZXNzYWdlOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZ1NlbmRTb3Vy
Y2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDhkOWNkZTA4ZjQ2NzE0MWE5MGQ4ZWFmOWRkNzg1Yjc5
MDM4ZDU4ZWUuLjkwYmRmMjQ4NzYyNDljZWYxNzFiYzkyZDc2NmU3NGUwMmQ0MTg0NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2Eu
bW0KQEAgLTE0Nyw4ICsxNDcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCiAgICAgQVNTRVJUKG1fcmVjZWl2ZVBvcnQpOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXIg
cG9ydHMuCi0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3NlbmRTb3VyY2UpOwotICAgIGRp
c3BhdGNoX3JlbGVhc2UobV9zZW5kU291cmNlKTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2Vs
KG1fc2VuZFNvdXJjZS5nZXQoKSk7CiAgICAgbV9zZW5kU291cmNlID0gbnVsbHB0cjsKICAgICBt
X3NlbmRQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiAKQEAgLTE1Nyw4ICsxNTYsNyBAQCB2b2lkIENv
bm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6Y2FuY2Vs
UmVjZWl2ZVNvdXJjZSgpCiB7Ci0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3JlY2VpdmVT
b3VyY2UpOwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9yZWNlaXZlU291cmNlKTsKKyAgICBkaXNw
YXRjaF9zb3VyY2VfY2FuY2VsKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSk7CiAgICAgbV9yZWNlaXZl
U291cmNlID0gbnVsbHB0cjsKICAgICBtX3JlY2VpdmVQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiB9
CkBAIC0yMzAsMTEgKzIyOCwxMSBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgIC8vIENo
YW5nZSB0aGUgbWVzc2FnZSBxdWV1ZSBsZW5ndGggZm9yIHRoZSByZWNlaXZlIHBvcnQuCiAgICAg
c2V0TWFjaFBvcnRRdWV1ZUxlbmd0aChtX3JlY2VpdmVQb3J0LCBNQUNIX1BPUlRfUUxJTUlUX0xB
UkdFKTsKIAotICAgIG1fcmVjZWl2ZVNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElT
UEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rp
b25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50
X2hhbmRsZXIobV9yZWNlaXZlU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyldIHsKKyAgICBtX3JlY2VpdmVTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNo
X3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQ
b3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKSk7CisgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIHJlY2VpdmVTb3Vy
Y2VFdmVudEhhbmRsZXIoKTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNl
bF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vf
c2V0X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKICNpZiAh
UExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAgbWFjaF9wb3J0X3VuZ3VhcmQobWFjaF90YXNrX3Nl
bGYoKSwgcmVjZWl2ZVBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9wb3J0X2NvbnRleHRfdD4o
cHJvdGVjdGVkVGhpcy5nZXQoKSkpOwogI2VuZGlmCkBAIC0yNDMsMTAgKzI0MSwxMCBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogCiAgICAgcmVmKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9j
b25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSwgXnsKLSAgICAgICAgZGlzcGF0Y2hfcmVz
dW1lKG1fcmVjZWl2ZVNvdXJjZSk7CisgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3JlY2VpdmVT
b3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGlmIChtX3NlbmRTb3VyY2UpCi0gICAgICAgICAgICBk
aXNwYXRjaF9yZXN1bWUobV9zZW5kU291cmNlKTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3Vt
ZShtX3NlbmRTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGRlcmVmKCk7CiAgICAgfSk7CkBAIC0z
NzEsMjAgKzM2OSwyMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5p
cXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXpl
U2VuZFNvdXJjZSgpCiB7Ci0gICAgbV9zZW5kU291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0
ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1NFTkQsIG1fc2VuZFBvcnQsIERJU1BBVENIX01B
Q0hfU0VORF9ERUFEIHwgRElTUEFUQ0hfTUFDSF9TRU5EX1BPU1NJQkxFLCBtX2Nvbm5lY3Rpb25R
dWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKKyAgICBtX3NlbmRTb3VyY2UgPSBhZG9wdE9TT2JqZWN0
KGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9TRU5ELCBt
X3NlbmRQb3J0LCBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCB8IERJU1BBVENIX01BQ0hfU0VORF9Q
T1NTSUJMRSwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSkpOwogICAgIG1faXNJ
bml0aWFsaXppbmdTZW5kU291cmNlID0gdHJ1ZTsKIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRf
cmVnaXN0cmF0aW9uX2hhbmRsZXIobV9zZW5kU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyldIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lzdHJhdGlv
bl9oYW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSA9IGZhbHNlOwogICAg
ICAgICByZXN1bWVTZW5kU291cmNlKCk7CiAgICAgfSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3Nl
dF9ldmVudF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1f
c2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
XSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtX3Nl
bmRTb3VyY2UpOworICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSBkaXNwYXRjaF9zb3VyY2Vf
Z2V0X2RhdGEobV9zZW5kU291cmNlLmdldCgpKTsKIAogICAgICAgICBpZiAoZGF0YSAmIERJU1BB
VENIX01BQ0hfU0VORF9ERUFEKSB7CiAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsK
QEAgLTQwMCw3ICszOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNl
KCkKIAogICAgIGlmIChNQUNIX1BPUlRfVkFMSUQobV9zZW5kUG9ydCkpIHsKICAgICAgICAgbWFj
aF9wb3J0X3Qgc2VuZFBvcnQgPSBtX3NlbmRQb3J0OwotICAgICAgICBkaXNwYXRjaF9zb3VyY2Vf
c2V0X2NhbmNlbF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfc291
cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIF57CiAgICAgICAgICAg
ICAvLyBSZWxlYXNlIG91ciBzZW5kIHJpZ2h0LgogICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRS
aWdodFNhZmVseShzZW5kUG9ydCk7CiAgICAgICAgIH0pOwpAQCAtNTgwLDcgKzU3OCw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgICAgICAg
ICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNhZmVseShwcmV2aW91c05vdGlmaWNhdGlvblBvcnQpOwog
CiAgICAgICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwotICAgICAgICAgICAgZGlzcGF0
Y2hfcmVzdW1lKG1fc2VuZFNvdXJjZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9z
ZW5kU291cmNlLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJy
b3dzZXJDaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJv
d3NlckNoZWNrcy5tbQppbmRleCA1YjY4ODRiZmYyOWY4ZjRmOGRkYWMzNWVlZmNlZTgyZTg1ZDVj
MjkzLi41ODc2MDkwNjA4ZDlhZmM4OGUzNDFjNWRmZjczZjViMzEwZWZhODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5t
bQpAQCAtMzEsNiArMzEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3Rm
L0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CkBAIC0xMTks
NyArMTIxLDExIEBAIHN0YXRpYyBib29sIGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBh
cHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0ICE9
IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAKLXN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90
IGdfaXRwUXVldWU7CitzdGF0aWMgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mIGl0cFF1
ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4+IGl0cFF1ZXVlOworICAgIHJldHVybiBpdHBRdWV1ZTsKK30KIAogdm9pZCBkZXRl
cm1pbmVJVFBTdGF0ZSgpCiB7CkBAIC0xMzAsMTQgKzEzNiwxMyBAQCB2b2lkIGRldGVybWluZUlU
UFN0YXRlKCkKICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IElUUFN0YXRlOjpJbml0aWFsaXppbmc7
CiAgICAgYm9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIgPSBsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29y
ZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoU2Vzc2lvbkNsZWFudXBCeURlZmF1bHQpOwogCi0gICAg
Z19pdHBRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBD
aGVja1F1ZXVlIiwgTlVMTCk7CisgICAgaXRwUXVldWUoKSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0cENoZWNrUXVldWUiLCBOVUxMKSk7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnX2l0cFF1ZXVlLCBbYXBwV2FzTGlua2VkT25PckFmdGVy
LCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhpdHBRdWV1ZSgpLmdldCgp
LCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgZ19j
dXJyZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9u
T3JBZnRlciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRl
OjpEaXNhYmxlZDsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAg
ICAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShnX2l0cFF1ZXVlKTsKLSAgICAgICAgICAgIGdfaXRw
UXVldWUgPSBudWxscHRyOworICAgICAgICAgICAgaXRwUXVldWUoKSA9IG51bGxwdHI7CiAgICAg
ICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTQ5LDEwICsxNTQsMTAgQEAgYm9vbCBkb2VzQXBwSGF2
ZUlUUEVuYWJsZWQoKQogICAgIGlmIChnX2N1cnJlbnRJVFBTdGF0ZSA+IElUUFN0YXRlOjpJbml0
aWFsaXppbmcpCiAgICAgICAgIHJldHVybiBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6
RW5hYmxlZDsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGdfaXRwUXVldWUpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGl0cFF1ZXVlKCkpOwogCiAgICAgX19ibG9jayBib29sIGlzSVRQRW5hYmxlZDsKLSAg
ICBkaXNwYXRjaF9zeW5jKGdfaXRwUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhpdHBRdWV1
ZSgpLmdldCgpLCBeewogICAgICAgICBpc0lUUEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0ZSA9
PSBJVFBTdGF0ZTo6RW5hYmxlZDsKICAgICB9KTsKICAgICByZXR1cm4gaXNJVFBFbmFibGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCmluZGV4
IGFiMDYzNGYxYWM2NTUzNzczNDgxODUwMmE5MTQzZDFhZGQxMTQ4MzguLjc4ZWFmZjQ1MjA0ODdj
YzNkY2UzMDVlMDU0NDFiMTZjNzc4MTc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQg
c2V0QXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlKCkKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2
ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiB7Ci0gICAgc3RhdGljIHhwY19vYmpl
Y3RfdCBwcmlvcml0eUJvb3N0TWVzc2FnZSA9IG51bGxwdHI7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4+IHByaW9yaXR5Qm9vc3RNZXNzYWdlOwog
CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRf
Z2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKICAgICB4
cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVu
dCkgewpAQCAtMTE4LDE5ICsxMTgsMTggQEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFu
ZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgICAgIGR1cDIoZmQs
IFNUREVSUl9GSUxFTk8pOwogCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1
bmN0aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVzc2FnZSk7CisgICAgICAgICAg
ICAgICAgICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9v
c3RNZXNzYWdlLmdldCgpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxh
bmd1YWdlc1ByZWZlcmVuY2UoKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
ICAgIGlmIChwcmlvcml0eUJvb3N0TWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgeHBjX3Jl
bGVhc2UocHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHByaW9yaXR5Qm9v
c3RNZXNzYWdlLmdldCgpID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gTGVhayBhIGJvb3N0IG9udG8gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgICAgICAgICAgaWYg
KCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIp
LCAicHJlLWJvb3RzdHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJv
b3N0TWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UgPSB4cGNf
cmV0YWluKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIXByaW9yaXR5Qm9vc3RNZXNz
YWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSA9
IGV2ZW50OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBoYW5kbGVYUENFbmRwb2ludE1l
c3NhZ2VzKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cAppbmRleCAyNTgzYzkzNTFiOTc4NGM0MzliOTk4MDk2Yzc3MzFlNDM1ZDQyMjMyLi42Y2VmODdm
M2M0NjQxNzlkZjc2NjJmZGMzOTkyM2EwNjEzZTIxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHNo
YXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCiAgICAgc3Rh
dGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQg
YnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCiB9CiAgICAg
Ci1zdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRv
cihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2Nh
dG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291
cmNlKiByZXNvdXJjZSkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwK
ICAgICAgICAgcmVzb3VyY2UsCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBDRkFsbG9jYXRvclJl
ZiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiBy
ZXNvCiAgICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKICAgICB9OwogCi0gICAgcmV0dXJu
IENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29u
dGV4dCkpOwogfQogI2VuZGlmCiAKQEAgLTg1LDggKzg1LDggQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiAgICAgcmVmKCk7IC8v
IEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgogCiAj
aWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gZGVhbGxvY2F0b3IgPSBh
ZG9wdENGKGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcykpOwotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVz
Tm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihkYXRhKCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQo
KSkpOworICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxs
b2NhdG9yKHRoaXMpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRo
Qnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KGRhdGEoKSksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9y
LmdldCgpKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7
CiAjZWxpZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
Z19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0Yu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXgg
ZDAyNDI5MDhkNGM5ZjRmZmQxODViZDhlMWE1MzA1ODlkZjhhZWUwMy4uMzM3YzkzNjQ3MzI4NTdk
MjcxMTRmOTQwMDRjY2QyYzUxOTk2ODI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTU0MSw4ICs1NDEsNyBAQCBib29sIGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgQ0ZO
dW1iZXJSZWYgbnVtYmVyID0gQ0ZOdW1iZXJDcmVhdGUoMCwgbnVtYmVyVHlwZSwgZGF0YVJlZmVy
ZW5jZS5kYXRhKCkpOwotICAgIHJlc3VsdCA9IGFkb3B0Q0YobnVtYmVyKTsKKyAgICByZXN1bHQg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0
YSgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU4MSwxMSArNTgwLDExIEBAIGJvb2wg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRl
cygwLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5n
LCBmYWxzZSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5
dGVzKDAsIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgZW5jb2Rp
bmcsIGZhbHNlKSk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJlc3VsdCA9IGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXN1bHQgPSBXVEZNb3ZlKHN0cmlu
Zyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggNjNlM2FmNDFk
YTA1NTc5YmI1NDJhMmU2Njc4ODk4MzEwZTU1ZDliOC4uYTM5NDA2NDlmZGJmMmRlZDQ4NGE0ZTI2
MTAyYjkyMWNjMjgwNzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBz
dGF0aWMgTWFsbG9jUHRyPHVpbnQ4X3QsIEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyTWFsbG9jPiBl
bmNvZGVTZXNzaW9uSGlzdG9yeUVudAogCiBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gZW5j
b2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkK
IHsKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0RlYWxsb2NhdG9yOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+PiBmYXN0TWFs
bG9jRGVhbGxvY2F0b3I7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTQwMSwxMyArNDAxLDEzIEBAIHN0
YXRpYyBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShj
b25zdCBGcmFtZVN0YXRlJiBmcmFtCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgbnVsbHB0
ciwgLy8gcHJlZmVycmVkU2l6ZQogICAgICAgICB9OwotICAgICAgICBmYXN0TWFsbG9jRGVhbGxv
Y2F0b3IgPSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7
CisgICAgICAgIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKSA9IGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKICAgICB9KTsKIAogICAg
IHNpemVfdCBidWZmZXJTaXplOwogICAgIGF1dG8gYnVmZmVyID0gZW5jb2RlU2Vzc2lvbkhpc3Rv
cnlFbnRyeURhdGEoZnJhbWVTdGF0ZSwgYnVmZmVyU2l6ZSk7CiAKLSAgICByZXR1cm4gYWRvcHRD
RihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVy
LmxlYWtQdHIoKSwgYnVmZmVyU2l6ZSwgZmFzdE1hbGxvY0RlYWxsb2NhdG9yKSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIGJ1ZmZlci5sZWFrUHRyKCksIGJ1ZmZlclNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5n
ZXQoKS5nZXQoKSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3Jl
YXRlRGljdGlvbmFyeShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENGU3RyaW5nUmVm
LCBDRlR5cGVSZWY+PiBrZXlWYWx1ZVBhaXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KaW5k
ZXggMmRmMjMzNWQ5YzVhZGZhYjVhNmJlOTJjOWM3N2MyMDU3YjY5OWUyYS4uYmRkYmIwODlkZWVi
NWVmZWYyY2U3MmVmMjNlYTNjOTYwMTA0MDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1t
CkBAIC0zOSw3ICszOSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6
OmluTWVtb3J5U3RvcmFnZVNlc3Npb24oKQogICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNz
aW9uKSB7CiAgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdElu
UHJvY2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKICAgICAgICAgYXV0byBj
b29raWVBY2NlcHRQb2xpY3kgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb29raWVBY2NlcHRQb2xpY3koKTsKLSAgICAgICAgYXV0byBz
dG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGlj
eSkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0
ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tp
ZUFjY2VwdFBvbGljeSk7CiAgICAgICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NG
VVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24g
PSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc2Vzc2lvbklEKCksIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0
b3JhZ2UpLCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVz
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5oCmluZGV4IDA2MWYyNjY5OGQ4ZmFjY2ExMzcxNzA0NGVkYTI2MDg2MWM2ODhhZGYu
LmQ0ODJiNDJlMGMyNTQxMjc3Yzk0YTQ1ZGZjZmI1YjAxOTQ1MTExNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTcs
NyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3
YXAgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZVdoaWxlV2Fp
dGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9OwogCi0gICAgZGlzcGF0Y2hfcXVldWVf
dCBtX2NvbW1pdFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fY29t
bWl0UXVldWU7CiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IG1fcGVuZGluZ0JhY2tp
bmdTdG9yZUZsdXNoZXI7CiAKICAgICBIYXNoU2V0PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcio+IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA5OTkyODcxYjFj
MDBlODIxMGNiNjZkZWJkMjhlZTZiMDhkYjEyNGQ1Li5hMzg4MTMzNWE0ZWY3ZGEwYTI4ZmI3NjAy
YjhhMjk3YTgwNjg1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC02NSw3ICs2NSw3IEBAIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBj
b25zdCBXCiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9z
aXRpbmdNb2RlKHRydWUpOwogICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJkcmF3aW5nIGFyZWEg
cm9vdCIpOwogCi0gICAgbV9jb21taXRRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLkNvbW1p
dFF1ZXVlIiwgbnVsbHB0cik7CisgICAgbV9jb21taXRRdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuQ29tbWl0UXVldWUiLCBudWxscHRyKSk7CiAKICAgICAvLyBJbiBv
cmRlciB0byBlbnN1cmUgdGhhdCB3ZSBnZXQgYSB1bmlxdWUgRGlzcGxheVJlZnJlc2hNb25pdG9y
IHBlci1EcmF3aW5nQXJlYSAobmVjZXNzYXJ5IGJlY2F1c2UgRGlzcGxheVJlZnJlc2hNb25pdG9y
CiAgICAgLy8gaXMgZHJpdmVuIGJ5IHRoaXMgY2xhc3MpLCBnaXZlIGVhY2ggcGFnZSBhIHVuaXF1
ZSBEaXNwbGF5SUQgZGVyaXZlZCBmcm9tIFdlYlBhZ2UncyB1bmlxdWUgSUQuCkBAIC03OCwxMCAr
NzgsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgICAgICBzZXRWaWV3RXhwb3NlZFJl
Y3Qodmlld0V4cG9zZWRSZWN0KTsKIH0KIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCi17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Nv
bW1pdFF1ZXVlKTsKLX0KK1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7CkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBtX3BlbmRpbmdC
YWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIGF1dG8gcGFn
ZUlEID0gbV93ZWJQYWdlLmlkZW50aWZpZXIoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1p
dFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hl
ciksIHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUuZ2V0KCksIFti
YWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlE
XSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9u
b3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwLmNwcAppbmRleCBhODY3MWZmMTk2MTBiNjFiZDY5ZGZmMjRkNTY2YjZiYzI1
MGQ5ZTNlLi45NWVmMjI5NGE5NzZmODQ0ZWMzYTQ5NWViYmJlM2IzZmQ5NmE3NGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAvLyBTZXNz
aW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24g
bmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90ZWhyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0
IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lv
bk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkp
OwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1
dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9u
TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewpAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6
OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwogCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNl
c3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihj
ZklkZW50aWZpZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggY2JkNTBiNmZjYTg1NTcxNWMyYzdjYzNkNjAxMmFi
ZDE4MmU0MDI4MC4uOTdjMzc5Y2VlNjZiNDkwODY5MWFmMGRmMWVjYjY2OWJlM2I2NWQyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpA
QCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYk5TVmlld0V4dHJhcy5o
PgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTksMTEg
KzYwLDExIEBAIHN0YXRpYyBpbnQgY29tcGFyZVBhZ2VSZWN0cyhjb25zdCB2b2lkICprZXksIGNv
bnN0IHZvaWQgKmFycmF5KTsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX1dJRFRIX0lOU0VUICAg
ICA9IDQuMCAqIDIuMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX0hFSUdIVF9JTlNFVCAgICA9
IDQuMCAqIDIuMDsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VX
aGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQorc3RhdGljIFJldGFpblB0cjxDR0Nv
bG9yUmVmPiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxv
YXQgYWxwaGEpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBncmF5U3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+PiBncmF5U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZUdyYXkoKSk7CiAgICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10gPSB7
IHdoaXRlLCBhbHBoYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGdyYXlTcGFjZSwgY29t
cG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UuZ2V0
KCkuZ2V0KCksIGNvbXBvbmVudHMpKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIFdlYlBERlZpZXcg
ewpAQCAtODMsMTQgKzg0LDE0IEBAICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIAog
KyAoQ0dDb2xvclJlZilzaGFkb3dDb2xvcgogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNoYWRv
d0NvbG9yID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKLSAgICBy
ZXR1cm4gc2hhZG93Q29sb3I7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxD
R0NvbG9yUmVmPj4gc2hhZG93Q29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDAs
IDIuMCAvIDMpOworICAgIHJldHVybiBzaGFkb3dDb2xvci5nZXQoKS5nZXQoKTsKIH0KIAogKyAo
Q0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBiYWNr
Z3JvdW5kQ29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDIwNC4wIC8gMjU1LCAx
KTsKLSAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJhY2tncm91bmRDb2xvciA9IGNyZWF0ZUNHQ29sb3JX
aXRoRGV2aWNlV2hpdGUoMjA0LjAgLyAyNTUsIDEpOworICAgIHJldHVybiBiYWNrZ3JvdW5kQ29s
b3IuZ2V0KCkuZ2V0KCk7CiB9CiAKIC8vIFRoaXMgaXMgYSBzZWNyZXQgcHJvdG9jb2wgZm9yIFdl
YkRhdGFTb3VyY2UgYW5kIFdlYkZyYW1lVmlldyB0byBvZmZlciB1cyB0aGUgb3Bwb3J0dW5pdHkg
dG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCmluZGV4IDFmYjUxOGY4NzRiODNlNjRh
ZmU1ZmY0OThkMWVmNTFjZTMxODVmYzguLmFlYjRkOGYxNmZkZGIwMjU1MTA4YjJhMDBlYjlmNjcy
MTVmMTc2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxl
bWVudERpY3Rpb25hcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJF
bGVtZW50RGljdGlvbmFyeS5tbQpAQCAtNTAsMTEgKzUwLDE1IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBsb29rdXBUYWJsZSA9
IE5VTEw7CitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBsb29rdXBU
YWJsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVE
aWN0aW9uYXJ5UmVmPj4gbG9va3VwVGFibGU7CisgICAgcmV0dXJuIGxvb2t1cFRhYmxlOworfQog
CiBzdGF0aWMgdm9pZCBhZGRMb29rdXBLZXkoTlNTdHJpbmcgKmtleSwgU0VMIHNlbGVjdG9yKQog
ewotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGxvb2t1cFRhYmxlLCAoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpa2V5LCBzZWxlY3Rvcik7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobG9va3VwVGFi
bGUoKS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgc2VsZWN0b3IpOwogfQogCiBz
dGF0aWMgdm9pZCBjYWNoZVZhbHVlRm9yS2V5KGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAq
dmFsdWUsIHZvaWQgKnNlbGYpCkBAIC03NiwxMCArODAsMTAgQEAgKyAodm9pZClpbml0aWFsaXpl
CiAKICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRhYmxlCiB7Ci0gICAgaWYgKGxvb2t1cFRhYmxl
KQorICAgIGlmIChsb29rdXBUYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb29rdXBU
YWJsZSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKKyAgICBsb29rdXBU
YWJsZSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCkpOwog
CiAgICAgYWRkTG9va3VwS2V5KFdlYkVsZW1lbnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5v
ZGUpKTsKICAgICBhZGRMb29rdXBLZXkoV2ViRWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dl
YkZyYW1lKSk7CkBAIC0xMjUsNyArMTI5LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQp
X2ZpbGxDYWNoZQogewotICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24obG9va3VwVGFibGUs
IGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilzZWxmKTsKKyAgICBDRkRpY3Rpb25h
cnlBcHBseUZ1bmN0aW9uKGxvb2t1cFRhYmxlKCkuZ2V0KCksIGNhY2hlVmFsdWVGb3JLZXksIChf
X2JyaWRnZSB2b2lkKilzZWxmKTsKICAgICBfY2FjaGVDb21wbGV0ZSA9IFlFUzsKIH0KIApAQCAt
MTQ5LDEyICsxNTMsMTIgQEAgLSAoaWQpb2JqZWN0Rm9yS2V5OihpZClrZXkKICAgICBpZiAodmFs
dWUgfHwgX2NhY2hlQ29tcGxldGUgfHwgW19uaWxWYWx1ZXMgY29udGFpbnNPYmplY3Q6a2V5XSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8
U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSwg
KF9fYnJpZGdlIENGVHlwZVJlZilrZXkpKSk7CisgICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nh
c3Q8U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJs
ZSgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWtleSkpKTsKICAgICBpZiAoIXNlbGVjdG9y
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHZhbHVlID0gW3NlbGYgcGVyZm9ybVNlbGVjdG9y
OnNlbGVjdG9yXTsKIAotICAgIE5TVUludGVnZXIgbG9va3VwVGFibGVDb3VudCA9IENGRGljdGlv
bmFyeUdldENvdW50KGxvb2t1cFRhYmxlKTsKKyAgICBOU1VJbnRlZ2VyIGxvb2t1cFRhYmxlQ291
bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChsb29rdXBUYWJsZSgpLmdldCgpKTsKICAgICBpZiAo
dmFsdWUpIHsKICAgICAgICAgaWYgKCFfY2FjaGUpCiAgICAgICAgICAgICBfY2FjaGUgPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bG9va3VwVGFibGVDb3Vu
dF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDAw
OGZiYmEyOGYyMTk4ZjhiMDkxYmIzYzNhMmVlN2M4MzIwMzU1Yi4uNWIwZWU4YTNhYzhjMzMzYjZl
ZTM0NGNkZDljM2I1NTc2NWMyNmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtMTI2MywyOCArMTI2MywzMiBAQCBzdGF0aWMgQ0ZTZXRDYWxsQmFj
a3MgTm9uUmV0YWluaW5nU2V0Q2FsbGJhY2tzID0gewogICAgIENGSGFzaAogfTsKIAotc3RhdGlj
IENGTXV0YWJsZVNldFJlZiBhbGxXZWJWaWV3c1NldDsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRh
YmxlU2V0UmVmPiYgYWxsV2ViVmlld3NTZXQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPj4gYWxsV2ViVmlld3NTZXQ7CisgICAgcmV0dXJu
IGFsbFdlYlZpZXdzU2V0OworfQogCiArICh2b2lkKV9tYWtlQWxsV2ViVmlld3NQZXJmb3JtU2Vs
ZWN0b3I6KFNFTClzZWxlY3RvcgogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCisgICAgaWYg
KCFhbGxXZWJWaWV3c1NldCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBbKF9fYnJpZGdlIE5T
TXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOnNl
bGVjdG9yXTsKKyAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0KCku
Z2V0KCkgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdOwogfQogCiAtICh2b2lk
KV9yZW1vdmVGcm9tQWxsV2ViVmlld3NTZXQKIHsKLSAgICBpZiAoYWxsV2ViVmlld3NTZXQpCi0g
ICAgICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVS
ZWYpc2VsZik7CisgICAgaWYgKGFsbFdlYlZpZXdzU2V0KCkpCisgICAgICAgIENGU2V0UmVtb3Zl
VmFsdWUoYWxsV2ViVmlld3NTZXQoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsK
IH0KIAogLSAodm9pZClfYWRkVG9BbGxXZWJWaWV3c1NldAogewotICAgIGlmICghYWxsV2ViVmll
d3NTZXQpCi0gICAgICAgIGFsbFdlYlZpZXdzU2V0ID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEws
IDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpOworICAgIGlmICghYWxsV2ViVmlld3NTZXQo
KSkKKyAgICAgICAgYWxsV2ViVmlld3NTZXQoKSA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxl
KE5VTEwsIDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpKTsKIAotICAgIENGU2V0U2V0VmFs
dWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgQ0ZTZXRT
ZXRWYWx1ZShhbGxXZWJWaWV3c1NldCgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYp
OwogfQogCiBAZW5kCkBAIC0yMjMwLDcgKzIyMzQsNyBAQCArICh2b2lkKWNsb3NlQWxsV2ViVmll
d3MKICAgICBXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50
cygpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNsb3NlIHRoZSBXZWJWaWV3cyBpbiBhIHJhbmRvbSBv
cmRlci4gQ2hhbmdlIHRoaXMgaWYgY2xvc2Ugb3JkZXIgaXMgaW1wb3J0YW50LgotICAgIGZvciAo
V2ViVmlldyAqd2ViVmlldyBpbiBbKF9fYnJpZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQgYWxs
T2JqZWN0c10pCisgICAgZm9yIChXZWJWaWV3ICp3ZWJWaWV3IGluIFsoX19icmlkZ2UgTlNTZXQg
KilhbGxXZWJWaWV3c1NldCgpLmdldCgpIGFsbE9iamVjdHNdKQogICAgICAgICBbd2ViVmlldyBj
bG9zZV07CiB9CiAKQEAgLTY5MTEsNyArNjkxNSw3IEBAICsgKEJPT0wpX2RpZFNldENhY2hlTW9k
ZWwKICsgKFdlYkNhY2hlTW9kZWwpX21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlCiB7CiAgICAg
V2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwot
ICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2ViVmll
d3NTZXQgb2JqZWN0RW51bWVyYXRvcl07CisgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0g
WyhOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIG9iamVjdEVudW1lcmF0b3Jd
OwogICAgIHdoaWxlIChXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW2VudW1lcmF0b3Ig
bmV4dE9iamVjdF0gcHJlZmVyZW5jZXNdKQogICAgICAgICBjYWNoZU1vZGVsID0gc3RkOjptYXgo
Y2FjaGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdKTsKICAgICByZXR1cm4gY2FjaGVN
b2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9u
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAKaW5kZXggNTExYTkyYjcyZDFjYTBkMjMzZDQ5MWMzMDAxOTYzNDMxY2M2NGQyYS4uOGYyNzE2
MmJiYWYxOGVlMWMxMThiOTUxMWY1MWI0N2U0NDg1Nzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTE5Nyw5ICsxOTcsNyBAQCBI
UkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFn
Kiogb3JpZ2lucykKICAgICBmb3IgKGF1dG8mIGNvcmVPcmlnaW4gOiBjb3JlT3JpZ2lucykKICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5SXRlbS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGNvcmVPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKS5wdHIoKSkpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0KKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGF1dG8ga2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lu
cyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0
KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKaW5kZXggZWEwYjY3NTFjNTU0ZTgyN2RjOTgyNTVjZDRhNzE1N2YxZDVh
ZDJiMi4uMWQyNzAyYWRiMDgyNzdjNDQ1MDhkM2RmYmRjNDI3OTg2ZGNmYzIyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMzNCw3ICszMzQs
NyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxD
cmVkZW50aWFsKiBjcmVkZW50aWFsLCBfSW5fbwogICAgIGlmICghd2ViQ3JlZGVudGlhbCkKICAg
ICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNy
ZWRlbnRpYWwoKSkpOworICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVu
dGlhbC0+Y3JlZGVudGlhbCgpKTsKIAogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVS
TERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0
KCksIHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSk7CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGUK
ICAgICBpZiAoIUNGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxs
ZW5nZSkpIHsKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdl
dChlbXB0eVN0cmluZygpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFj
ZShjaGFsbGVuZ2UpKSk7CiAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFk
b3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRp
YWwgPSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VD
cmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHAKaW5kZXggZDViZWVmODJlOTkwODkxYTcyZTZiNGZjNGJlMzc4ODMwYWI2
YWM5MC4uZmYzNGFkMDczN2EyNmQyYTE3M2VjZGJiOWI5NjdiNTllMTZiZTYyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0zNzAsMTQgKzM3MCwxMiBAQCBzdGF0
aWMgYm9vbCBwcmVwYXJlRGV2aWNlKElEaXJlY3QzRERldmljZTkqIGRldmljZSwgY29uc3QgQ0dS
ZWN0JiBib3VuZHMsIElEaXJlYwogCiBzdGF0aWMgQ0dSZWN0IHVwZGF0ZUJvdW5kcyhDQVJlbmRl
clVwZGF0ZSogdXBkYXRlKQogewotICAgIENHU1JlZ2lvbk9iaiByZ24gPSBDQVJlbmRlclVwZGF0
ZUNvcHlSZWdpb24odXBkYXRlKTsKKyAgICBhdXRvIHJnbiA9IGFkb3B0Q0YoQ0FSZW5kZXJVcGRh
dGVDb3B5UmVnaW9uKHVwZGF0ZSkpOwogICAgIGlmICghcmduKQogICAgICAgICByZXR1cm4gQ0dS
ZWN0WmVybzsKIAogICAgIENHUmVjdCByZXN1bHQ7Ci0gICAgQ0dFcnJvciBlcnJvciA9IENHU0dl
dFJlZ2lvbkJvdW5kcyhyZ24sICZyZXN1bHQpOwotICAgIENHU1JlbGVhc2VSZWdpb24ocmduKTsK
LQorICAgIENHRXJyb3IgZXJyb3IgPSBDR1NHZXRSZWdpb25Cb3VuZHMocmduLmdldCgpLCAmcmVz
dWx0KTsKICAgICByZXR1cm4gZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzID8gcmVzdWx0IDogQ0dS
ZWN0WmVybzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9j
YWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXph
YmxlU3RyaW5ncy5jcHAKaW5kZXggYjQxNjhiZjg0MTkxZThhMTE0MzlkOTAwMzJmZTg5ZWE0ZDI2
ZjcwNC4uYmM5ZTIwMzY5MGU3MDNmZjQ2OGU0MTE0ZTY5ZWNhZWQ1NDM3ZmI5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC02
NywxNyArNjcsMTcgQEAgc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCBmcmFtZXdvcmtMb2NTdHJp
bmdzKCkKIGNsYXNzIExvY2FsaXplZFN0cmluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TG9jYWxpemVkU3RyaW5nKTsKIHB1YmxpYzoKLSAgICBMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdS
ZWYgc3RyaW5nKQotICAgICAgICA6IG1fY2ZTdHJpbmcoc3RyaW5nKQorICAgIExvY2FsaXplZFN0
cmluZyhSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiYgc3RyaW5nKQorICAgICAgICA6IG1fY2ZTdHJp
bmcoV1RGTW92ZShzdHJpbmcpKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyhzdHJpbmcsIHN0
cmluZyk7CisgICAgICAgIEFTU0VSVChtX2NmU3RyaW5nKTsKICAgICB9CiAKICAgICBvcGVyYXRv
ciBMUENUU1RSKCkgY29uc3Q7Ci0gICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2NmU3RyaW5nOyB9CisgICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2NmU3RyaW5nLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0ZTdHJpbmdSZWYgbV9j
ZlN0cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fY2ZTdHJpbmc7CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9zdHJpbmc7CiB9OwogCkBAIC04Niw3ICs4Niw3IEBAIExvY2FsaXplZFN0
cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBtX3N0cmluZy53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKIAot
ICAgIG1fc3RyaW5nID0gbV9jZlN0cmluZzsKKyAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmcuZ2V0
KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IG1fc3RyaW5nLmxlbmd0aCgp
OyBpKyspCiAgICAgICAgIGlmIChtX3N0cmluZ1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAx
XSA9PSAnJScgfHwgKGkgPiAyICYmIG1fc3RyaW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdb
aSAtIDJdID49ICcxJyAmJiBtX3N0cmluZ1tpIC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAz
XSA9PSAnJScpKSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5k
bGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5ncwog
ICAgIHJldHVybiBzdHJpbmdzQnVuZGxlLT5idW5kbGU7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1Jl
ZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5k
bGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQorc3RhdGljIFJldGFuUHRyPENG
U3RyaW5nUmVmPiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0
cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBm
b3VuZCIpOwogCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2Nh
bGl6ZWRTdHJpbmdGcm9tQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAg
ICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgQ0ZTdHJpbmdS
ZWYgcmVzdWx0ID0gQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CisgICAgYXV0byBy
ZXN1bHQgPSBhZG9wdENGKENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApKTsKIAogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQg
bG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleS51dGY4KCkuZGF0YSgpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDBhZmZiNDVhMTdmYmJjOThjNzBhZWU4MmI1ZWI5ZWVhNTJjNjhmMDcuLjViYmRl
Y2FhZTUzOTYyMTUzMzhiOTE0MGIyY2I2YjBmMDRjZGIzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTExNyw3ICsxMTcsMTEgQEAgc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGUHJv
cGVydHlMaXN0UmVmIHYKIAogLy8gV2ViUHJlZmVyZW5jZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgQ0ZE
aWN0aW9uYXJ5UmVmIGRlZmF1bHRTZXR0aW5nczsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiYgZGVmYXVsdFNldHRpbmdzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGRlZmF1bHRTZXR0aW5nczsKKyAgICByZXR1cm4g
ZGVmYXVsdFNldHRpbmdzOworfQogCiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFdlYlByZWZlcmVu
Y2VzOjptX2FwcGxpY2F0aW9uSWQgPSBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsK
ICNlbmRpZgpAQCAtMjE0LDE1NyArMjE4LDE1NyBAQCBDRlN0cmluZ1JlZiBXZWJQcmVmZXJlbmNl
czo6YXBwbGljYXRpb25JZCgpCiB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVs
dFNldHRpbmdzKCkKIHsKICNpZiBVU0UoQ0YpCi0gICAgaWYgKGRlZmF1bHRTZXR0aW5ncykKKyAg
ICBpZiAoZGVmYXVsdFNldHRpbmdzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgZGVmYXVsdHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOworICAgIGF1dG8gZGVmYXVsdHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgSU5JVElBTElaRV9ERUZBVUxUX1BSRUZF
UkVOQ0VTX0RJQ1RJT05BUllfRlJPTV9HRU5FUkFURURfUFJFRkVSRU5DRVM7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVy
ZW5jZUtleSksIENGU1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNU
UigiQ291cmllciBOZXciKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFu
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTYW5z
U2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21p
YyBTYW5zIE1TIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRQaWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9s
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5p
bXVtRm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIjkiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYi
KSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1
bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJl
ZmVyZW5jZUtleSksIENGU1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiQ291cmllciBOZXciKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigi
VGltZXMgTmV3IFJvbWFuIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlh
bCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZhbnRh
c3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQaWN0b2dyYXBoRm9u
dFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQ
cmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNl
S2V5KSwgQ0ZTVFIoIjkiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYi
KSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAg
IFN0cmluZyBkZWZhdWx0RGVmYXVsdEVuY29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEi
LCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nIG9uIFdpbmRvd3MiKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkUHJpbnRC
YWNrZ3JvdW5kc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50
aW1lRmxhZ3NQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5B
Y2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENT
U1JlZ2lvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRl
ZEltYWdlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2FkU2l0
ZUljb25zS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtl
eSksIENGU1RSKCIxODAwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFByaXZhdGVCcm93
c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVL
ZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93c1VSTHNJblRvb2xUaXBz
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RS
KCIxIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQ
REZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgZGVm
YXVsdERlZmF1bHRFbmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVl
dEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvblByZWZlcmVuY2VLZXkpLCBDRlNUUigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRKYXZhRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNj
cmlwdFJ1bnRpbWVGbGFnc1ByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TG9jYWxT
dG9yYWdlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEV4cGVyaW1lbnRhbE5v
dGlmaWNhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFpvb21zVGV4
dE9ubHlQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZ1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERpc3BsYXlJbWFnZXNLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dExvYWRTaXRlSWNvbnNLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJh
dGlvbkludGVydmFsS2V5KSwgQ0ZTVFIoIjE4MDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRSZXNwZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0U2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0UERGRGlzcGxheU1vZGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjEiKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBE
RlNjYWxlRmFjdG9yUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0
bGVzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9u
c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCiAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBsaW5rQmVoYXZpb3JTdHJpbmdSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEZvcm1hdCgwLCAwLCBDRlNUUigiJWQiKSwgV2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2
aW9yKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEVk
aXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5n
ZXQoKSk7Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
SGlzdG9yeUl0ZW1MaW1pdEtleSksIENGU1RSKCIxMDAwIikpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpLCBD
RlNUUigiNyIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkpLCBDRlNUUigiIikpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZv
bnRTbW9vdGhpbmdDb250cmFzdFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2Vw
dFBvbGljeVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoQWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVz
ZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGhQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNl
S2V5KSwgbGlua0JlaGF2aW9yU3RyaW5nUmVmLmdldCgpKTsKKworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5SXRlbUxpbWl0S2V5KSwg
Q0ZTVFIoIjEwMDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdEhpc3RvcnlBZ2VJbkRheXNMaW1pdEtleSksIENGU1RSKCI3IikpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJY29uRGF0
YWJhc2VMb2NhdGlvbktleSksIENGU1RSKCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBDRlNU
UigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0Rm9udFNtb290aGluZ0NvbnRyYXN0UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViR3JhbW1hckNoZWNr
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihBbGxvd0NvbnRpbnVvdXNTcGVsbENo
ZWNraW5nUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiIikpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZU1vZGVs
UmVmID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiks
IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9k
ZWxSZWYuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYuZ2V0KCkp
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQ
YWludE5hdGl2ZUNvbnRyb2xzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGFpbnROYXRp
dmVDb250cm9sc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1l
cnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRTaG93RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwog
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEROU1ByZWZl
dGNoaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGlu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRB
bGxvd0Rpc3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRBbGxvd0Rpc3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEN1c3RvbUVsZW1lbnRzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRDdXN0b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRXZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxl
VGltZWxpbmVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0N1c3RvbVByb3Bl
cnRpZXNBbmRWYWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU0N1
c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
TGlua1ByZWxvYWRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExpbmtQcmVs
b2FkRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQcmVsb2FkaW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRWaXN1YWxWaWV3cG9ydEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0VmlzdWFsVmlld3BvcnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRDU1NPTVZpZXdTY3JvbGxpbmdBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0UmVzaXplT2JzZXJ2ZXJFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJl
c2l6ZU9ic2VydmVyRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Nt
b290aFNjcm9sbGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01W
aWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvcmVN
YXRoTUxFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViU1FMRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdENTU0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdENTU0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdE92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0T3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwogCi0gICAgZGVmYXVsdFNldHRpbmdzID0gZGVmYXVsdHM7CisgICAg
ZGVmYXVsdFNldHRpbmdzKCkgPSBXVEZNb3ZlKGRlZmF1bHRzKTsKICNlbmRpZgogfQogCkBAIC0z
NzksNyArMzgzLDcgQEAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNl
czo6dmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQogICAgIGlmICh2YWx1ZSkKICAgICAgICAg
cmV0dXJuIHZhbHVlOwogCi0gICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRT
ZXR0aW5ncywga2V5KTsKKyAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVmYXVsdFNl
dHRpbmdzKCkuZ2V0KCksIGtleSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFZhbHVl
Rm9yS2V5KENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUpCkBAIC02MjAs
NyArNjI0LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9D
RlByZWZlcmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0KQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKG9taXREZWZhdWx0cykgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIGRl
ZmF1bHRWYWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncywga2V5c1tp
XSk7CisgICAgICAgICAgICBDRlR5cGVSZWYgZGVmYXVsdFZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGVmYXVsdFNldHRpbmdzKCkuZ2V0KCksIGtleXNbaV0pOwogICAgICAgICAgICAgaWYg
KGRlZmF1bHRWYWx1ZSAmJiBDRkVxdWFsKGRlZmF1bHRWYWx1ZSwgdmFsdWVzW2ldKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY2NDk5MjUxMzE5YjEyNGFmOWJlYzY0MzI5MjUx
ODc4MDBhNzZkNzkuLjAwMGQ2OTQ2ZDVjN2ExYWQ0MjQ2NjRiZDJlMjIzNDk1Y2FiM2I4MTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcDoKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENv
bnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5o
OgorICAgICAgICAoQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRl
eHQpOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6Qml0bWFwQ29udGV4dCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoV2ViVGhyZWFk
TG9ja0FmdGVyRGVsZWdhdGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHA6CisgICAgICAgIChjcmVhdGVC
aXRtYXBDb250ZXh0RnJvbVdlYlZpZXcpOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBJbWFnZURpZmYvY2cvUGxhdGZv
cm1JbWFnZUNHLmNwcDoKKyAgICAgICAgKEltYWdlRGlmZjo6UGxhdGZvcm1JbWFnZTo6cGl4ZWxz
IGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cu
Y3BwOgorICAgICAgICAoV1RSOjpjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZSk6CisgICAgICAg
IChXVFI6OmNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6CisKIDIwMjEtMDMtMTAg
IE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW1dQ
RV1bR1RLXSBJbnRyb2R1Y2UgTmVlZHNVbmJyYW5kZWRVc2VyQWdlbnQgcXVpcmsgYW5kIHVzZSBp
dCBmb3IgYWNjb3VudHMuZ29vZ2xlLmNvbSwgZG9jcy5nb29nbGUuY29tLCBhbmQgZHJpdmUuZ29v
Z2xlLmNvbQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3Vw
cG9ydENHLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5j
cHAKaW5kZXggNWJjMDQwM2I4MTFiYzY1NWRkMjBmYTJkNDA5MjI5OWYwZTQwN2Q4NS4uOGU2ZGQ1
ZmVkN2QyYzJlYjM5YmNlZWJiMWQ0NjhjY2VkNTkyOGNkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgUmVm
UHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHQoc2l6ZV90IHBpeGVsc1dpZGUs
IHNpemVfdCBwaXhlbHNIaWdoLAogICAgIAogICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFwIGlu
IHRoZSBkZXZpY2UgY29sb3Igc3BhY2UgcHJldmVudHMgYW55IGNvbG9yIGNvbnZlcnNpb24gd2hl
biB0aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCiAgICAgUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNv
bG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMs
IGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCJEdW1wUmVuZGVyVHJlZTogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKCVwLCAlenUs
ICV6dSwgOCwgJXp1LCAlcCwgMHgleCkgZmFpbGVkXG4iLCBidWZmZXIsIHBpeGVsc0hpZ2gsIHBp
eGVsc1dpZGUsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKICAgICAgICAgZnJlZShi
dWZmZXIpOwpAQCAtMTM0LDYgKzEzNCw2IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVC
aXRtYXBDb250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6OmNy
ZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZlciwgY29udGV4dCk7CisgICAgcmV0
dXJuIEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZl
ciwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKaW5kZXggNDEyNGIwY2FlZGNlNzM4ZjQ2NDZjZGMzOGE3
YjUxNmExYTc2MWMwOC4uYjc5NGIyMTk4ZWQ4YTBhYTE0NzJkMzBiOTNhM2FiZmFjYzcwMjdhNiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKQEAgLTQ3
LDkgKzQ3LDkgQEAgdHlwZWRlZiBIQklUTUFQIFBsYXRmb3JtQml0bWFwQnVmZmVyOwogCiBjbGFz
cyBCaXRtYXBDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Qml0bWFwQ29udGV4dD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwQ29udGV4dD4gY3JlYXRlQnlBZG9wdGluZ0JpdG1h
cEFuZENvbnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRSZWYgY29u
dGV4dCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRt
YXBBbmRDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4mJiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Qml0bWFwQ29udGV4dChidWZmZXIsIGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQml0bWFwQ29udGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpKTsKICAgICB9CiAK
ICAgICB+Qml0bWFwQ29udGV4dCgpCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKIAotICAgIEJpdG1hcENvbnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0Nv
bnRleHRSZWYgY29udGV4dCkKKyAgICBCaXRtYXBDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVy
IGJ1ZmZlciwgUmV0YWluUHRyPENHQ29udGV4dFJlZj4mJiBjb250ZXh0KQogICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlcikKLSAgICAgICAgLCBtX2NvbnRleHQoYWRvcHRDRihjb250ZXh0KSkKKyAg
ICAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICB7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2RjZTVhYzVjMzI5
MWEzNjJlNDdlYjQyMGU3NzcyMWU4MmI1YjRjNC4uYjUxZTFhZWZlMmRmZjZhY2VlYjc2NDNiM2I0
MzJmMjFlNDA3OWJhZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lt
cG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVn
ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5o
PgpAQCAtMTgxMCwyMCArMTgxMSwxOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogLy8gbG9j
ayB0byBwcmV2ZW50IHBvdGVudGlhbGx5IHJlLWVudGVyaW5nIFdlYkNvcmUuCiBzdGF0aWMgdm9p
ZCBXZWJUaHJlYWRMb2NrQWZ0ZXJEZWxlZ2F0ZUNhbGxiYWNrc0hhdmVDb21wbGV0ZWQoKQogewot
ICAgIGRpc3BhdGNoX3NlbWFwaG9yZV90IGRlbGVnYXRlU2VtYXBob3JlID0gZGlzcGF0Y2hfc2Vt
YXBob3JlX2NyZWF0ZSgwKTsKKyAgICBhdXRvIGRlbGVnYXRlU2VtYXBob3JlID0gYWRvcHRPU09i
amVjdChkaXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRlKDApKTsKICAgICBXZWJUaHJlYWRSdW4oXnsK
LSAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChkZWxlZ2F0ZVNlbWFwaG9yZSk7Cisg
ICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCkp
OwogICAgIH0pOwogCi0gICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRl
U2VtYXBob3JlLCBESVNQQVRDSF9USU1FX05PVykpIHsKKyAgICB3aGlsZSAoZGlzcGF0Y2hfc2Vt
YXBob3JlX3dhaXQoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCksIERJU1BBVENIX1RJTUVfTk9XKSkg
ewogICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIFtbTlNSdW5Mb29wIGN1
cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05T
RGF0ZSBkaXN0YW50UGFzdF1dOwogICAgICAgICB9CiAgICAgfQogCiAgICAgV2ViVGhyZWFkTG9j
aygpOwotCi0gICAgZGlzcGF0Y2hfcmVsZWFzZShkZWxlZ2F0ZVNlbWFwaG9yZSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBv
cnRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4u
Y3BwCmluZGV4IGE5YmE2OTE4MzExOGJiODMyM2M4ZDQ5YjFmZDMzOWE1MWY1MzliNjAuLjM5NWQz
MDI3YjlkODdlYTg5NTZlNmIwMDA4N2M2MjE0OGEyNjdkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAg
UmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29s
IG9uc2NyZWVuLCBib29sIGluY3JlbWUKIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZp
Y2VSR0IoKSk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVh
dGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVz
LCBjb2xvclNwYWNlLmdldCgpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QgfCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0
LCA4LCBpbmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0ZU9y
ZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogI2VsaWYgVVNF
KENBSVJPKSAKICAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNoYXIqKWluZm8uYm1CaXRzLCBDQUlST19GT1JN
QVRfQVJHQjMyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgaW5mby5ibVdpZHRoQnl0ZXMp
OyAKQEAgLTExMiw1ICsxMTEsNSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFw
Q29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIGF1dG8g
Y29udGV4dCA9IHJlbmRlclRhcmdldC5nZXQoKTsKICNlbmRpZiAKIAotICAgIHJldHVybiBCaXRt
YXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIGNvbnRl
eHQpOworICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5k
Q29udGV4dChiaXRtYXAsIFdURk1vdmUoY29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKaW5kZXggMDFjNTMxYTliNmFjZThlODE2
OTQ4ZjY3NmNlNjMxZjUyNzk0YjZjNC4uNGVjOWMyMGU5ODBmNWUwN2VmZjMzMzY4YWY5ODFmNWI4
YjQ5N2IxZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2Nh
dGlvbkNHLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9u
Q0cuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBl
UE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyBD
R0NvbnRleHRSZWYgY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkK
K3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFn
ZShDR0ltYWdlUmVmIGltYWdlKQogewogICAgIHNpemVfdCBwaXhlbHNXaWRlID0gQ0dJbWFnZUdl
dFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgcGl4ZWxzSGlnaCA9IENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpOwpAQCAtNTMsMTUgKzUzLDE1IEBAIHN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dD
b250ZXh0RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIAogICAgIC8vIENyZWF0aW5nIHRo
aXMgYml0bWFwIGluIHRoZSBkZXZpY2UgY29sb3Igc3BhY2Ugc2hvdWxkIHByZXZlbnQgYW55IGNv
bG9yIGNvbnZlcnNpb24gd2hlbiB0aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGlu
dG8gaXQuCiAgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVE
ZXZpY2VSR0IoKSk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRD
cmVhdGUoMCwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2Uu
Z2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdl
dCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0KSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIHBpeGVsc1dp
ZGUsIHBpeGVsc0hpZ2gpLCBpbWFnZSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCksIGltYWdlKTsK
ICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotc3RhdGljIENHQ29udGV4dFJlZiBjcmVhdGVDR0Nv
bnRleHRGcm9tSW1hZ2UoV0tJbWFnZVJlZiB3a0ltYWdlKQorc3RhdGljIFJldGFpblB0cjxDR0Nv
bnRleHRSZWY+IGNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZShXS0ltYWdlUmVmIHdrSW1hZ2UpCiB7
CiAgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoV0tJbWFnZUNyZWF0ZUNHSW1hZ2Uod2tJbWFnZSkp
OwogICAgIHJldHVybiBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQoKSk7CkBA
IC0xNTgsNyArMTU4LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBh
cmVXaXRoRXhwZWN0ZWQoU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG8KICAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdlIGlzIG51
bGxcbiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQg
PSBhZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZyb21JbWFnZSh3a0ltYWdlKSk7CisgICAgICAgIGNv
bnRleHQgPSBjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2tJbWFnZSk7CiAgICAgICAgIGltYWdl
U2l6ZSA9IFdLSW1hZ2VHZXRTaXplKHdrSW1hZ2UpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFNuYXBzaG90UmVzdWx0VHlwZTo6V2ViVmlldzoKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChTbmFwc2hvdFJl
c3VsdFR5cGUgc25hcHNobwogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJkdW1wUGl4ZWxzQW5k
Q29tcGFyZVdpdGhFeHBlY3RlZDogaW1hZ2UgaXMgbnVsbFxuIik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dCA9IGFkb3B0Q0YoY3JlYXRlQ0dDb250ZXh0
RnJvbUNHSW1hZ2UoaW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZUNHQ29u
dGV4dEZyb21DR0ltYWdlKGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2VTaXplID0gV0tTaXpl
TWFrZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
</data>
<flag name="commit-queue"
          id="442055"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422851</attachid>
            <date>2021-03-10 11:34:10 -0800</date>
            <delta_ts>2021-03-10 12:39:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310113409.patch</filename>
            <type>text/plain</type>
            <size>217864</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uMjAyNjc5NGExMDkzZGYzOWZkYmI0ZGQyMDIyZWFhNjA0NTc0NDMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTM1NDEsOSArMzU0Miw4IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBhdXRvJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNp
bmdsZXRvbigpOwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElT
UEFUQ0hfUVVFVUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERp
c3BhdGNoUXVldWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAg
ICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJq
c2Mgc2hlbGwgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
KTsKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92
ZShxdWV1ZSkpOwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGlj
YWxTdGF0ZSA9IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxT
eW5jaHJvbm91cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9u
b3VzPjo6Y3JlYXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRi
NzdiLi4zN2I3MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0
RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4m
JiBxdWV1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3Bh
dGNoX3JldGFpbihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1
ZXVlOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYw
N2NkNjMxZDJlY2Y1ODgzYzU0N2M0N2M0Mi4uMzU2ODc3ZTlmMGQwYzY0M2NiZWFjZDYxMzdjZmVl
MzJlOTk0ZjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTM4
LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBvbGljeSA6IHVp
bnQ4X3QgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3Bh
dGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RGlzcGF0Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRp
ZgogCiAgICAgY2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMTAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1
ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2
OTRiZDhjM2Y1YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNGEzYjdkYWZhZTc4ZjFhNmQ5
YzQ2M2IyY2M2YTAzZGE5NGE0MTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjZWxzZQogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAjZW5kaWYKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMs
IFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmKTsKIAogI2lmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQorICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKTsgfQogI2Vsc2UKICAg
ICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlm
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+
IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbHNlCiAgICAgUnVuTG9vcCogbV9ydW5Mb29wOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tCmluZGV4IDA4OGIxOWNjMTBhNjVlZmZlNWQ0ZTlmYzI3YTA4MWMyNTZiYTM3NmYuLjVjMGY1
YjI1NDRmN2JhNWVlNGQ3MjUwNjA3ZjdmZDZmYmQwNDQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC02OCwxMyArNjgs
MTMgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogICAgIGlmIChtX2lu
c3RhbGxlZCB8fCB0aW1lckV2ZW50U291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBeewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1
dG8gbWVtb3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9OT1JNQUwgfCBE
SVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfQ1JJ
VElDQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX1dBUk4gfCBESVNQQVRD
SF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX0NSSVRJQ0FMOwogI2Vsc2UgLy8gUExBVEZPUk0o
TUFDKQogICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJF
U1NVUkVfQ1JJVElDQUw7CiAjZW5kaWYKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJj
ZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJF
U1NVUkUsIDAsIG1lbW9yeVN0YXR1c0ZsYWdzLCBtX2Rpc3BhdGNoUXVldWUpOworICAgICAgICBt
ZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRD
SF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgbWVtb3J5U3RhdHVzRmxhZ3MsIG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSk7CiAKICAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9o
YW5kbGVyKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UsIF57CiAgICAgICAgICAgICBhdXRvIHN0
YXR1cyA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNl
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAgICAgfSk7CiAKICAgICAvLyBBbGxvdyBzaW11bGF0aW9uIG9mIG1lbW9yeSBwcmVzc3Vy
ZSB3aXRoICJub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5IgotICAgIG5vdGlmeV9y
ZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBd
LCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNo
KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIsICZub3RpZnlUb2tlbnNbMF0sIG1fZGlzcGF0Y2hRdWV1
ZS5nZXQoKSwgXihpbnQpIHsKICNpZiBFTkFCTEUoRk1XX0ZPT1RQUklOVF9DT01QQVJJU09OKQog
ICAgICAgICBhdXRvIGZvb3RwcmludEJlZm9yZSA9IHBhZ2VzUGVyVk1UYWcoKTsKICNlbmRpZgpA
QCAtMTI0LDE1ICsxMjQsMTUgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwo
KQogICAgICAgICBsb2dGb290cHJpbnRDb21wYXJpc29uKGZvb3RwcmludEJlZm9yZSwgZm9vdHBy
aW50QWZ0ZXIpOwogI2VuZGlmCiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57
CiAgICAgICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIAotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7
CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeS5iZWdp
biIsICZub3RpZnlUb2tlbnNbMV0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAg
ICAgICAgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIH0pOwotICAgIG5vdGlm
eV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRv
a2Vuc1syXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9k
aXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRva2Vuc1syXSwgbV9k
aXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQ
cmVzc3VyZSgpOwogICAgIH0pOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAgICAgaWYgKCFtX2luc3RhbGxlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgaWYgKG1lbW9y
eVByZXNzdXJlRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5j
ZWwobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSk7CiAgICAgICAgICAgICBtZW1vcnlQcmVzc3Vy
ZUV2ZW50U291cmNlID0gbnVsbHB0cjsKQEAgLTE2NCw4ICsxNjQsOCBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OmhvbGRPZmYoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0
Y2hRdWV1ZSwgXnsKLSAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9j
cmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZSk7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgICAgICB0
aW1lckV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9USU1FUiwgMCwgMCwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKICAgICAgICAgaWYgKHRp
bWVyRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KHRpbWVy
RXZlbnRTb3VyY2UsIHRoaXMpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmaW5hbCBhcmd1
bWVudCBgc19taW5pbXVtSG9sZE9mZlRpbWUuc2Vjb25kcygpYCBzZWVtcyB3cm9uZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCAzNzczYzc5ODUyZWJiMjFiZDA2
ZDU2N2IwMTdjZjdjOTMyMjUzZGU2Li40OWNkYmI1ODgwYmIxNjZiNWY3NWU1NmRkYzc5YzFjZmEx
YTU0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCkBAIC0zMywx
NCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICB9KS5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNl
Y29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5v
c2Vjb25kc0FzPGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24p
XSB7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
ZHVyYXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgp
KTsKIH0KQEAgLTQ5LDEzICs0OSwxMiBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICBkaXNwYXRj
aF9xdWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENI
X1FVRVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CiAgICAgYXR0ciA9IGRp
c3BhdGNoX3F1ZXVlX2F0dHJfbWFrZV93aXRoX3Fvc19jbGFzcyhhdHRyLCBUaHJlYWQ6OmRpc3Bh
dGNoUU9TQ2xhc3MocW9zKSwgMCk7Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKG5hbWUsIGF0dHIpOwotICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KG1fZGlzcGF0
Y2hRdWV1ZSwgdGhpcyk7CisgICAgbV9kaXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cikpOworICAgIGRpc3BhdGNoX3NldF9jb250ZXh0
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OmNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9u
cywgV1RGOjpGdW5jdGlvbjx2b2lkKHNpemVfdCBpbmRleCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzY3Y2MzYTk2M2E1MGVjMjFhZWI4
NjcyNTA5Y2Q2YjI5MTUzZGM4Yi4uMzBlZjM2MDU3MTQ0Y2IyYTFiZjU2MGI1NGVjNmE2OGI2YWEw
NTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTExLDE2
ICsxMTEsMTMgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAgICAgICAg
IHJldHVybiBzaXplOwogICAgIH0KIAotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGUo
KQotICAgIHsKLSAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxw
dHIsIHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0
ZSwgZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwotICAgICAgICByZXR1cm4gQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpOwotICAgIH0KLQogICAgIHN0YXRpYyBDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IoKQogICAgIHsKLSAgICAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciA9IGNyZWF0ZSgpOwotICAgICAgICByZXR1cm4gYWxsb2NhdG9yOworICAgICAg
ICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxwdHIsIHJldGFpbiwg
cmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0ZSwgZGVhbGxvY2F0
ZSwgcHJlZmVycmVkU2l6ZSB9OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKKyAgICAgICAgfSgpKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci5nZXQoKS5nZXQoKTsKICAgICB9CiAKIH0KQEAgLTEzOCwxNSArMTM1LDE1
IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQog
ICAgIEFTU0VSVCghU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nKTsKICAg
ICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSB0aGlzOwogCi0gICAg
Q0ZTdHJpbmdSZWYgc3RyaW5nOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwog
ICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFj
dGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZh
bHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgZWxzZQotICAgICAgICBzdHJpbmcgPSBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9y
TnVsbCk7CisgICAgICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNo
YXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAvLyBDb3Jl
Rm91bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIg
Y3VycmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAg
IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOworICAgIHJldHVybiBzdHJpbmc7CiB9CiAKIC8vIE9u
IFN0cmluZ0ltcGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0
aGUgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggZmZlNjNhNmMzOWI4NDZjMWU1OTc2MTVkYmM0NzJmZDczZTIwMDY2
OC4uNGIwMWVjMzc5ZWJhOWZjZTFkOGE0ODY5MWM1OGE4MDViODM4NDZhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0
ICJXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIgogI2ltcG9ydCAib2JqY19pbnN0YW5jZS5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CisjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewpAQCAtMzksMjIgKzQxLDI2IEBAIE9i
amNDbGFzczo6T2JqY0NsYXNzKENsYXNzU3RydWN0UHRyIGFDbGFzcykKIHsKIH0KIAotc3RhdGlj
IENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2xhc3Nlc0J5SXNBID0gMDsKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGNsYXNzZXNCeUlzQSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gY2xhc3Nl
c0J5SXNBOworICAgIHJldHVybiBjbGFzc2VzQnlJc0E7Cit9CiAKIHN0YXRpYyB2b2lkIF9jcmVh
dGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCFjbGFzc2VzQnlJc0EpCi0g
ICAgICAgIGNsYXNzZXNCeUlzQSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwg
TlVMTCwgTlVMTCk7CisgICAgaWYgKCFjbGFzc2VzQnlJc0EoKSkKKyAgICAgICAgY2xhc3Nlc0J5
SXNBKCkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwg
TlVMTCkpOwogfQogCiBPYmpjQ2xhc3MqIE9iamNDbGFzczo6Y2xhc3NGb3JJc0EoQ2xhc3NTdHJ1
Y3RQdHIgaXNhKQogewogICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpOwogCi0g
ICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFzcyo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilpc2EpKSk7CisgICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFz
cyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSgp
LmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSkpKTsKICAgICBpZiAoIWFDbGFzcykgewog
ICAgICAgICBhQ2xhc3MgPSBuZXcgT2JqY0NsYXNzKGlzYSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7
CisgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGNsYXNzZXNCeUlzQSgpLmdldCgpLCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKWlzYSwgYUNsYXNzKTsKICAgICB9CiAKICAgICByZXR1cm4gYUNsYXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAppbmRleCA4NWU5YmM0
YWE0ZWRkZmI0NDUzOTRiMGU4ZDM5NjA3ZjQyZDEyNGVmLi43ZDkyMDhhM2ZjZWQwMjY2MzgyNTIw
MDM2ZDFkNjgyMmFmYTFkOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nt
YXJ0UmVwbGFjZUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZUNGLmNwcApAQCAtMzEsMzggKzMxLDM3IEBACiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RkNoYXJhY3RlclNldC5oPgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRS
ZWYgZ2V0U21hcnRTZXQoYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBD
Rk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcHJlU21hcnRTZXQ7Ci0gICAgc3RhdGljIENGTXV0YWJs
ZUNoYXJhY3RlclNldFJlZiBwb3N0U21hcnRTZXQ7Ci0gICAgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0
UmVmIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0IDogcG9zdFNt
YXJ0U2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hh
cmFjdGVyU2V0UmVmPj4gcHJlU21hcnRTZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+PiBwb3N0U21hcnRTZXQ7CisgICAgUmV0
YWluUHRyPENGTXV0YWJsZUNoYXJhY3RlclNldFJlZj4mIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0No
YXJhY3RlciA/IHByZVNtYXJ0U2V0LmdldCgpIDogcG9zdFNtYXJ0U2V0LmdldCgpOwogICAgIGlm
ICghc21hcnRTZXQpIHsKLSAgICAgICAgc21hcnRTZXQgPSBDRkNoYXJhY3RlclNldENyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hh
cmFjdGVyc0luU3RyaW5nKHNtYXJ0U2V0LCBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gQ0ZTVFIoIihb
XCJcJyMkLy1geyIpIDogQ0ZTVFIoIildLiw7Oj9cJyFcIiUqLS99IikpOwotICAgICAgICBDRkNo
YXJhY3RlclNldFVuaW9uKHNtYXJ0U2V0LCBDRkNoYXJhY3RlclNldEdldFByZWRlZmluZWQoa0NG
Q2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFuZE5ld2xpbmUpKTsgICAgICAgIAorICAgICAgICBzbWFy
dFNldCA9IGFkb3B0Q0YoQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQpKTsKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21h
cnRTZXQuZ2V0KCksIGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7Iikg
OiBDRlNUUigiKV0uLDs6P1wnIVwiJSotL30iKSk7CisgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5p
b24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0
ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGluZSkpOworCiAgICAgICAgIC8vIEFkZGluZyBDSksgcmFu
Z2VzCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQs
IENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDEx
RkYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQs
IENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgy
RTgwIC0gMHgyRkRGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdl
KHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3Jp
cHRpb25zLCBDSksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3Vs
IENvbXBhdGliaWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgz
MUJGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0
LCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9n
cmFwaHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYpCi0g
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFu
Z2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4
RjkwMCAtIDB4RkE1RikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5n
ZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0
eSBGcm9tICgweEZFMzAgLSAweEZFNEYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFj
dGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYv
RnVsbCBXaWR0aCBGb3JtICgweEZGMDAgLSAweEZGRUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0
QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZE
NykpOyAvLyBDSksgSWRlb2dyYXBoIEV4bnRlbnNpb24gQgotICAgICAgICBDRkNoYXJhY3RlclNl
dEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAy
MUUpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAw
eDExRkYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRp
Y2FscyAoMHgyRTgwIC0gMHgyRkRGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3Rl
cnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJ
ZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBDSksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBC
b3BvbW9mbywgSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4
dCAoMHgyRkYwIC0gMHgzMUJGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJ
blJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVu
Y2xvc2VkIENKSywgQ0pLIElkZW9ncmFwaHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIw
MCAtIDB4QTRDRikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShz
bWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3ls
bGFibGVzICgweEFDMDAgLSAweEQ3QUYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFj
dGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKKyAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5n
ZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAw
eEZFNEYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBG
b3JtICgweEZGMDAgLSAweEZGRUYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVy
c0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAv
LyBDSksgSWRlb2dyYXBoIEV4bnRlbnNpb24gQgorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENo
YXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAy
MUUpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQp
CiAKLSAgICAgICAgaWYgKGlzUHJldmlvdXNDaGFyYWN0ZXIpCi0gICAgICAgICAgICBwcmVTbWFy
dFNldCA9IHNtYXJ0U2V0OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIENGQ2hhcmFjdGVy
U2V0VW5pb24oc21hcnRTZXQsIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0
ZXJTZXRQdW5jdHVhdGlvbikpOyAgICAgICAKLSAgICAgICAgICAgIHBvc3RTbWFydFNldCA9IHNt
YXJ0U2V0OwotICAgICAgICB9CisgICAgICAgIGlmICghaXNQcmV2aW91c0NoYXJhY3RlcikKKyAg
ICAgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVy
U2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRQdW5jdHVhdGlvbikpOwogICAgIH0KLSAg
ICByZXR1cm4gc21hcnRTZXQ7CisgICAgcmV0dXJuIHNtYXJ0U2V0LmdldCgpOwogfQogCiBib29s
IGlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0KFVDaGFyMzIgYywgYm9vbCBpc1ByZXZpb3Vz
Q2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDFjZDVkOWZkYjhhMTQxOWQzNjdjMDg2ZTBjNmNh
NjNkZmVkNjMzMjUuLjUwOWYyM2JhY2UxZWU1ZmE2MTdkODVjYmRhMTU2OGQ5OTM4Yjg1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW0KQEAgLTExOSwxMCArMTE5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9jdXJyZW50IHsgMCB9OwogfTsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxv
YXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsK
ICAgICBDR0Zsb2F0IGNvbXBvbmVudHNbNF0gPSB7IHIsIGcsIGIsIGEgfTsKLSAgICByZXR1cm4g
Q0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25lbnRzKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMp
KTsKIH0KIAogc3RydWN0IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQog
CiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFtt
X2xheWVyLmdldCgpIHNldENvbnRlbnRzU2NhbGU6Mi4wXTsKLSAgICBbbV9sYXllci5nZXQoKSBz
ZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihjcmVhdGVDb2xvcigwLCAwLCAwLCAwLjgpKS5nZXQo
KV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0QmFja2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAs
IDAsIDAsIDAuOCkuZ2V0KCldOwogICAgIFttX2xheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RN
YWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQpXTsKIAogICAgIG92ZXJsYXkoKS5s
YXllcigpLnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKG1fbGF5ZXIuZ2V0KCksIEdyYXBoaWNz
TGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lKTsKQEAgLTI4MCwxNyArMjgwLDE3IEBA
IHN0YXRpYyB2b2lkIHNob3dUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBjCiAKIHN0YXRpYyB2b2lkIGRyYXdHcmFwaExhYmVsKENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBjb25zdCBTdHJpbmcmIHRleHQp
CiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAx
KTsKLSAgICBzaG93VGV4dChjb250ZXh0LCB4ICsgNSwgeSAtIDMsIGJsYWNrLCB0ZXh0KTsKLSAg
ICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZSA9IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOwotICAg
IHNob3dUZXh0KGNvbnRleHQsIHggKyA0LCB5IC0gNCwgd2hpdGUsIHRleHQpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJsYWNrID0gY3JlYXRlQ29s
b3IoMCwgMCwgMCwgMSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgeCArIDUsIHkgLSAzLCBibGFj
ay5nZXQoKS5nZXQoKSwgdGV4dCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yUmVmPj4gd2hpdGUgPSBjcmVhdGVDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBzaG93
VGV4dChjb250ZXh0LCB4ICsgNCwgeSAtIDQsIHdoaXRlLmdldCgpLmdldCgpLCB0ZXh0KTsKIH0K
IAogc3RhdGljIHZvaWQgZHJhd0NwdUhpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpbmdCdWZmZXI8ZmxvYXQ+JiBoaXN0b3J5KQogewot
ICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNwdUNvbG9yID0gY3JlYXRlQ29sb3IoMCwgMSwgMCwgMSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY3B1Q29s
b3IgPSBjcmVhdGVDb2xvcigwLCAxLCAwLCAxKTsKIAotICAgIENHQ29udGV4dFNldFN0cm9rZUNv
bG9yV2l0aENvbG9yKGNvbnRleHQsIGNwdUNvbG9yKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VD
b2xvcldpdGhDb2xvcihjb250ZXh0LCBjcHVDb2xvci5nZXQoKS5nZXQoKSk7CiAgICAgQ0dDb250
ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIDEpOwogCiAgICAgaW50IGkgPSAwOwpAQCAtMzIxLDgg
KzMyMSw4IEBAIHN0YXRpYyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpCiAKICAgICBDR0NvbnRleHRTZXRMaW5l
V2lkdGgoY29udGV4dCwgMSk7CiAKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBjYXBhY2l0eUNvbG9y
ID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4zLCAxKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xv
cldpdGhDb2xvcihjb250ZXh0LCBjYXBhY2l0eUNvbG9yKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3Io
MSwgMCwgMC4zLCAxKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYXBhY2l0eUNvbG9yLmdldCgpLmdldCgpKTsKIAogICAgIHNpemVfdCBpID0gMDsKIApA
QCAtMzM1LDggKzMzNSw4IEBAIHN0YXRpYyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpCiAgICAgICAgIGkrKzsK
ICAgICB9KTsKIAotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNpemVDb2xvciA9IGNyZWF0ZUNvbG9y
KDAuNiwgMC41LCAwLjksIDEpOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9y
KGNvbnRleHQsIHNpemVDb2xvcik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yUmVmPj4gc2l6ZUNvbG9yID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7
CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9y
LmdldCgpLmdldCgpKTsKIAogICAgIGkgPSAwOwogCkBAIC00NTYsMTAgKzQ1NiwxMCBAQCB2b2lk
IFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQp
CiAgICAgQ0dSZWN0IHZpZXdCb3VuZHMgPSBtX292ZXJsYXktPmJvdW5kcygpOwogICAgIENHQ29u
dGV4dENsZWFyUmVjdChjb250ZXh0LCB2aWV3Qm91bmRzKTsKIAotICAgIHN0YXRpYyBDR0NvbG9y
UmVmIGNvbG9yRm9yTGFiZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7Ci0gICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscywgbWFrZVN0cmluZygiICAg
ICAgICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFz
dCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwg
MzAsIGNvbG9yRm9yTGFiZWxzLCAiICBGb290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1l
bW9yeUZvb3RwcmludCgpKSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZv
ckxhYmVscywgIiAgIEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0
ZXJuYWxTaXplLmxhc3QoKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
Q0dDb2xvclJlZj4+IGNvbG9yRm9yTGFiZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwg
MSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5n
ZXQoKSwgbWFrZVN0cmluZygiICAgICAgICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24oZGF0YS5jcHUubGFzdCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKKyAgICBz
aG93VGV4dChjb250ZXh0LCAxMCwgMzAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICBG
b290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7CisgICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAg
IEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxh
c3QoKSkpOwogCiAgICAgZmxvYXQgeSA9IDU1OwogICAgIGZvciAoYXV0byYgY2F0ZWdvcnkgOiBk
YXRhLmNhdGVnb3JpZXMpIHsKQEAgLTQ4MCw4ICs0ODAsOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VP
dmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgeSAtPSA1Owog
CiAgICAgTW9ub3RvbmljVGltZSBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBzaG93
VGV4dChjb250ZXh0LCAxMCwgeSArIDEwLCBjb2xvckZvckxhYmVscywgIiAgICBFZGVuIEdDOiAi
ICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiwgbm93KSk7Ci0g
ICAgc2hvd1RleHQoY29udGV4dCwgMTAsIHkgKyAyMCwgY29sb3JGb3JMYWJlbHMsICIgICAgRnVs
bCBHQzogIiArIGdjVGltZXJTdHJpbmcoZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5v
dykpOworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9yTGFiZWxzLmdl
dCgpLmdldCgpLCAiICAgIEVkZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4
dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIw
LCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0
cmluZyhkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiwgbm93KSk7CiAKICAgICBkcmF3Q3B1
SGlzdG9yeShjb250ZXh0LCB2aWV3Qm91bmRzLnNpemUud2lkdGggLSA3MCwgMCwgdmlld0JvdW5k
cy5zaXplLmhlaWdodCwgZGF0YS5jcHUpOwogICAgIGRyYXdHQ0hpc3RvcnkoY29udGV4dCwgdmll
d0JvdW5kcy5zaXplLndpZHRoIC0gMTQwLCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRh
LmdjSGVhcFNpemUsIGRhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXS5kaXJ0
eVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRp
ZmljYXRlQ0ZXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmlj
YXRlQ0ZXaW4uY3BwCmluZGV4IDgyMDNjMDM2YTM2MTI1N2U1MmU4MDVkMWZmOTU4ODRjNmI0ODFh
NjQuLjMwZDVlMDU1NTE5YmNhMDAzZDI0NTQ1ZjQzZGQyMTM3MGNmMDJkMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNlcnRpZmlj
YXRlQ0ZXaW4uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNCwxOSArMzUsMTkgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NlcnRD
b250ZXh0KHZvaWQqIHB0ciwgdm9pZCogaW5mbykKICAgICAgICAgQ2VydEZyZWVDZXJ0aWZpY2F0
ZUNvbnRleHQoc3RhdGljX2Nhc3Q8UENDRVJUX0NPTlRFWFQ+KHB0cikpOwogfQogCi1zdGF0aWMg
Q0ZBbGxvY2F0b3JSZWYgY3JlYXRlQ2VydENvbnRleHREZWFsbG9jYXRvcigpCitzdGF0aWMgUmV0
YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKIHsK
ICAgICBDRkFsbG9jYXRvckNvbnRleHQgYWxsb2NDb250ZXh0ID0gewogICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCBkZWFsbG9jQ2VydENvbnRleHQsIDAKICAgICB9OwotICAgIHJldHVybiBD
RkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAm
YWxsb2NDb250ZXh0KSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IGNvcHlDZXJ0aWZpY2F0
ZVRvRGF0YShQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxv
Y2F0b3JSZWYgY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4+IGNlcnRE
ZWFsbG9jID0gY3JlYXRlQ2VydENvbnRleHREZWFsbG9jYXRvcigpOwogICAgIFBDQ0VSVF9DT05U
RVhUIGNlcnRpZmljYXRlQ29weSA9IENlcnREdXBsaWNhdGVDZXJ0aWZpY2F0ZUNvbnRleHQoY2Vy
dGlmaWNhdGUpOwotICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29w
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2Vy
dGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOwor
ICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5
KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYy5nZXQoKS5nZXQoKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMDU3MzI1YzA2MmRiY2U1ZDgx
MmZiNDhmODQ3MzI1OTg2MmFlZDc0OS4uMzA1OGVlODE3ZmNkZjk1ODRjYmIzNjE3MWY0YzZmYzg0
NzEyN2Q4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxh
dGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNP
YmxpcXVlLCBGb250T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZv
bnRXaWR0aFZhcmlhbnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5k
ZXJpbmdNb2RlID0gVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlv
bkRhdGEqID0gbnVsbHB0cik7CiAKICNpZiBVU0UoQ09SRV9URVhUKQotICAgIFdFQkNPUkVfRVhQ
T1JUIEZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQgPSBmYWxzZSwgYm9vbCBzeW50aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRh
dGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZv
bnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVu
ZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBGb250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+
JiYsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRp
Y09ibGlxdWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jp
em9udGFsLCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRo
LCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmlu
ZywgQ3JlYXRpb25EYXRhKiA9IG51bGxwdHIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggYWEzMTMy
YmFiZjcwMjNjZmE1ZjM4MDhjMjM4ZTlhZmQzZGZiZmI4NC4uZDAyYTQ2YjNhM2FmOGNkNzJkODgw
OTJiOTM4ZTlmMjI3MTBlYzI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1
Y3QgQ0dQYXR0ZXJuKiBDR1BhdHRlcm5SZWY7Ci10eXBlZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9y
bVBhdHRlcm5QdHI7Cit0eXBlZGVmIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBsYXRmb3JtUGF0
dGVyblB0cjsKICNlbGlmIFVTRShESVJFQ1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNo
OwogdHlwZWRlZiBJRDJEMUJpdG1hcEJydXNoKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcAppbmRleCBhODIxNWNjMDVmZjIyZDEyOTBmMTcwODAxOTA1NDIxYTAxOTcwOTVhLi43
NjdhOTZiYTFlYjdlYjFiZTQwMjdiZjMxODBiNzUwZmFkZTUzYmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKQEAgLTY5LDEwICs2OSwxMSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
IAogLy8gU29mdC1saW5raW5nIGhlYWRlcnMgbXVzdCBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIHRo
ZXkgI2RlZmluZSBmdW5jdGlvbnMsIGNvbnN0YW50cywgZXRjLgogI2luY2x1ZGUgIkFWRm91bmRh
dGlvbkNGU29mdExpbmtpbmcuaCIKQEAgLTE1Nyw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgaW5s
aW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3Qg
eyByZXR1cm4gbV9sZWdpYmxlT3V0cHV0LmdldCgpOyB9CiAgICAgQVZDRk1lZGlhU2VsZWN0aW9u
R3JvdXBSZWYgc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsK
ICNlbmRpZgotICAgIGlubGluZSBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25z
dCB7IHJldHVybiBtX25vdGlmaWNhdGlvblF1ZXVlOyB9CisgICAgaW5saW5lIGRpc3BhdGNoX3F1
ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWUu
Z2V0KCk7IH0KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSZWY+IHRha2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYp
OwpAQCAtMTk1LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNl
bGVjdGlvbkdyb3VwUmVmPiBtX3NlbGVjdGlvbkdyb3VwOwogI2VuZGlmCiAKLSAgICBkaXNwYXRj
aF9xdWV1ZV90IG1fbm90aWZpY2F0aW9uUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gbV9ub3RpZmljYXRpb25RdWV1ZTsKIAogICAgIG11dGFibGUgUmV0YWluUHRyPENB
Q0ZMYXllclJlZj4gbV9jYVZpZGVvTGF5ZXI7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
bV92aWRlb0xheWVyV3JhcHBlcjsKQEAgLTI0NCw3ICsyNDUsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogYm9vbFN0cmluZyhib29sIHZhbCkKIH0KICNlbmRpZgogCi1zdGF0aWMgQ0ZBcnJheVJlZiBj
cmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY3Jl
YXRlTWV0YWRhdGFLZXlOYW1lcygpCiB7CiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtl
eU5hbWVzW10gPSB7CiAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5RHVyYXRpb24sCkBAIC0yNTgs
MTMgKzI1OSwxMyBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkK
ICNlbmRpZgogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0
IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSks
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVh
dGUoMCwgKGNvbnN0IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihr
ZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAogc3RhdGljIENGQXJy
YXlSZWYgbWV0YWRhdGFLZXlOYW1lcygpCiB7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYga2V5cyA9
IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKTsKLSAgICByZXR1cm4ga2V5czsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQXJyYXlSZWY+PiBrZXlzID0gY3JlYXRlTWV0YWRh
dGFLZXlOYW1lcygpOworICAgIHJldHVybiBrZXlzLmdldCgpLmdldCgpOwogfQogCiAvLyBGSVhN
RTogSXQgd291bGQgYmUgYmV0dGVyIGlmIEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRl
ZCB0aGlzIGtleS4KQEAgLTEzNzUsNyArMTM3Niw3IEBAIEFWRldyYXBwZXI6OkFWRldyYXBwZXIo
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIG93bmVyKQogICAgIEFTU0VSVChkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwog
ICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAKLSAg
ICBtX25vdGlmaWNhdGlvblF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5ub3RpZmljYXRpb25RdWV1ZSIsIDApOworICAgIG1fbm90
aWZpY2F0aW9uUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yubm90aWZpY2F0aW9uUXVldWUiLCAwKSk7CiAK
ICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAgICAgbV9yZXNvdXJjZUxv
YWRlckNhbGxiYWNrcy52ZXJzaW9uID0ga0FWQ0ZBc3NldFJlc291cmNlTG9hZGVyX0NhbGxiYWNr
c1ZlcnNpb25fMTsKQEAgLTEzOTUsOSArMTM5Niw2IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVy
KCkKICAgICBkZXN0cm95VmlkZW9MYXllcigpOwogICAgIGRlc3Ryb3lJbWFnZUdlbmVyYXRvcigp
OwogCi0gICAgaWYgKG1fbm90aWZpY2F0aW9uUXVldWUpCi0gICAgICAgIGRpc3BhdGNoX3JlbGVh
c2UobV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0KICAgICBpZiAoYXZBc3NldCgpKSB7CiAgICAgICAg
IEFWQ0ZBc3NldENhbmNlbExvYWRpbmcoYXZBc3NldCgpKTsKICAgICAgICAgbV9hdkFzc2V0ID0g
MDsKQEAgLTE1MzAsNyArMTUyOCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JV
UkwoY29uc3QgVVJMJiB1cmwsIGJvb2wgaW5oZXJpdFVSSSkKIAogICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCksIEFWQ0ZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9u
c0tleSwgY2ZSZXN0cmljdGlvbnMuZ2V0KCkpOwogCi0gICAgbV9hdkFzc2V0ID0gYWRvcHRDRihB
VkNGVVJMQXNzZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmxSZWYuZ2V0KCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKKyAg
ICBtX2F2QXNzZXQgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25z
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZS5nZXQoKSkpOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVS
X0RFTEVHQVRFKQogICAgIEFTU0VSVChjYWxsYmFja0NvbnRleHQoKSk7CkBAIC0xNTY3LDI0ICsx
NTY1LDI0IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkq
IGQzZERldmljZSkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gY3Jl
YXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBhbiBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3Byb2Js
ZW0vOTg3NzczMD4uCi0gICAgQVZDRlBsYXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVyQ3Jl
YXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVy
SXRlbSgpLCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2
UGxheWVyID0gYWRvcHRDRihwbGF5ZXJSZWYpOworICAgIGF1dG8gcGxheWVyUmVmID0gYWRvcHRD
RihBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1
ZXVlLmdldCgpKSk7CisgICAgbV9hdlBsYXllciA9IHBsYXllclJlZjsKICNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQpCi0gICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5
RW5hYmxlZChwbGF5ZXJSZWYsIEZBTFNFKTsKKyAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlv
bkRpc3BsYXlFbmFibGVkKHBsYXllclJlZi5nZXQoKSwgRkFMU0UpOwogI2VuZGlmCiAKICAgICBp
ZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkpCi0gICAg
ICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKHBsYXllclJlZiwgbV9kM2REZXZp
Y2UuZ2V0KCkpOworICAgICAgICBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5
ZXJSZWYuZ2V0KCksIG1fZDNkRGV2aWNlLmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAg
ICBBU1NFUlQoY2VudGVyKTsKIAotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
Y2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5
ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJSZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKIAog
ICAgIC8vIEFkZCBhIHRpbWUgb2JzZXJ2ZXIsIGFzayB0byBiZSBjYWxsZWQgaW5mcmVxdWVudGx5
IGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5IHdhbnQgcGVyaW9kaWMgY2FsbGJhY2tzIGJ1dAogICAg
IC8vIG91ciBvYnNlcnZlciB3aWxsIGFsc28gYmUgY2FsbGVkIHdoZW5ldmVyIGEgc2VlayBoYXBw
ZW5zLgogICAgIGNvbnN0IGRvdWJsZSB2ZXJ5TG9uZ0ludGVydmFsID0gNjAqNjAqNjAqMjQqMzA7
Ci0gICAgbV90aW1lT2JzZXJ2ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1Rp
bWVPYnNlcnZlckZvckludGVydmFsKHBsYXllclJlZiwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVy
dmFsLCAxMCksIG1fbm90aWZpY2F0aW9uUXVldWUsICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxi
YWNrLCBjYWxsYmFja0NvbnRleHQoKSkpOworICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihB
VkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYu
Z2V0KCksIENNVGltZU1ha2UodmVyeUxvbmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlvblF1
ZXVlLmdldCgpLCAmcGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0
KCkpKTsKIH0KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkg
JiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKQEAgLTE2MDcsMjIg
KzE2MDUsMjIgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBiZWdpbiBsb2Fk
aW5nIG1lZGlhIGRhdGEuCi0gICAgQVZDRlBsYXllckl0ZW1SZWYgaXRlbVJlZiA9IEFWQ0ZQbGF5
ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSk7Ci0gICAgbV9hdlBsYXllckl0ZW0gPSBhZG9wdENGKGl0ZW1SZWYp
OworICAgIGF1dG8gaXRlbVJlZiA9IGFkb3B0RihBVkNGUGxheWVySXRlbUNyZWF0ZVdpdGhBc3Nl
dChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdkFzc2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0
KCkpKTsKKyAgICBtX2F2UGxheWVySXRlbSA9IGl0ZW1SZWY7CiAKICAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiBjZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7
CiAgICAgQVNTRVJUKGNlbnRlcik7CiAKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZp
Y2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlm
aWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlm
aWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24s
IGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYs
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXND
aGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhh
dmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNl
cnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZD
RlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRv
S2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVy
QWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJh
Y2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlv
biwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxs
YmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5
YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlv
blN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRp
b25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRp
b25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0
ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5
KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tD
b250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0Vu
ZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3Rp
ZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
RGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVy
KGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxh
eWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0
KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
KyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5n
ZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwg
aXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVt
cHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2Fs
bGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0
aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50
ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0
ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKICAgICAvLyBGSVhNRTog
QXJlIHRoZXJlIG90aGVyIGxlZ2libGUgb3V0cHV0IHRoaW5ncyB3ZSBuZWVkIHRvIHJlZ2lzdGVy
IGZvcj8gYXNzZXQgYW5kIGhhc0VuYWJsZWRBdWRpbyBhcmUgbm90IGV4cG9zZWQgYnkgQVZDRgog
CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZp
Y2F0aW9uKCksIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVk
aWF0ZWx5KTsKQEAgLTE3NTQsMTUgKzE3NTIsMTQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1Bs
YXlhYmlsaXR5KCkKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmls
aXR5KCVwKSIsIHRoaXMpOwogCi0gICAgc3RhdGljIENGQXJyYXlSZWYgcHJvcGVydHlLZXlOYW1l
OwotICAgIGlmICghcHJvcGVydHlLZXlOYW1lKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDRlN0
cmluZ1JlZiBrZXlOYW1lc1tdID0geyAKKyAgICBzdGF0aWMgYXV0byBwcm9wZXJ0eUtleU5hbWUg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYga2V5TmFtZXNbXSA9IHsKICAgICAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUK
ICAgICAgICAgfTsKLSAgICAgICAgcHJvcGVydHlLZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAo
Y29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXplb2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVz
WzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlO
YW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Cisg
ICAgfSgpKTsKIAotICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3Bl
cnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25D
YWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3lu
Y2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCku
Z2V0KCksIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkp
OwogfQogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhB
VkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0yMDAzLDcgKzIwMDAsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKCkuCi0gICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZD
RlBsYXllckxheWVyQ3JlYXRlV2l0aEFWQ0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQ
bGF5ZXIoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBh
ZG9wdENGKEFWQ0ZQbGF5ZXJMYXllckNyZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGF2UGxheWVyKCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpjcmVhdGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcg
JXAiLCB0aGlzLCB2aWRlb0xheWVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1
MjA5OGE5ZGNiNjU1ZTEzNjkuLmM2NzQ5ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUz
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBD
b2xvciYpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+
IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29s
b3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29s
b3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQog
ewotICAgIHJldHVybiBhZG9wdENGKFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKQEAgLTg5LDcgKzg5LDcgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9w
dGlvblNldDxGbGFncz4gZmxhZ3MpCiB7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3Jl
YXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwg
Y29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgs
NyArMTE4LDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNn
RmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JD
cmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAK
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYg
KzEyNiwxNiBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGlmIChhdXRvIHNyZ2IgPSBjb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAg
ICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBj
YXNlIFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTog
ewotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVh
a0NHQ29sb3IoY29sb3IpOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsK
KyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+
IHRyYW5zcGFyZW50Q0dDb2xvciA9IGNyZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAg
cmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAg
ICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9y
KTsKLSAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVh
dGVDR0NvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCku
Z2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9y
Ojp3aGl0ZSB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNH
Q29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0Nv
bG9yOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9y
UmVmPj4gd2hpdGVDR0NvbG9yID0gY3JlYXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICBy
ZXR1cm4gd2hpdGVDR0NvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmNwcAppbmRleCBhM2ZiODlkNTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVh
Li4yMGUxY2NhYmNkOGZlNzAzOWQ0NWNmOTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAg
LTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENG
U3RyaW5nUmVmJiBjb2xvclNwYWNlTmFtZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIG5hbWVkQ29sb3JTcGFjZSgpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPj4gY29sb3JTcGFjZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQp
OwotICAgICAgICBBU1NFUlQoY29sb3JTcGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkg
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFs
Q29uc3RhbnQpKTsKKyAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwot
ICAgIHJldHVybiBjb2xvclNwYWNlOworICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgp
OwogfQogCiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCmluZGV4IDFiYTllYmVjMmRkMmMwZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1
ZWNhNjc0NmExOWE4MTZiZGNjOGExMTZjOWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
QEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0
ZXJuKCkKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNl
clRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBs
YXRmb3JtUGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0g
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNU
TSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgw
LDcgKzU4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNU
TShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0
dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KHVzZXJUb0Jhc2VDVE0pKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmls
bFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAo
IXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAppbmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRi
OTgwMTEwN2RmMjkyLi4yNzE1OTI0ZDE0YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQx
LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAg
IDogbV9jZ0NvbnRleHQoY2dDb250ZXh0KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZShSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
Q0dGbGFncyBmbGFncyA9IDApCisgICAgICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRl
eHQpKQogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1f
c2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1
NTdlMTcxZjlhMTgzMzBkMjQuLmExOWEyMTFhODcxNzk4NWQ2ZDRjOWY5NDEzODhhYzFiMTQ2MDA4
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNw
cApAQCAtNDUsMjMgKzQ1LDIzIEBAIHN0YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQq
LCBjb25zdCB2b2lkKiwgc2l6ZV90IGNvdW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3Rh
dGljIENHQ29udGV4dFJlZiBjcmVhdGVTY3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gY3JlYXRlU2NyYXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1
bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0
YWluUHRyPENHRGF0YUNvbnN1bWVyUmVmPiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3Vt
ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcykpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQ
REZDb250ZXh0Q3JlYXRlKGNvbnN1bWVyLmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0
byBjb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAs
IDApKTsKIAogICAgIENHRmxvYXQgYmxhY2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3IoY29udGV4dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9r
ZUNvbG9yKGNvbnRleHQsIGJsYWNrKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4
dC5nZXQoKSwgYmxhY2spOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0
KCksIGJsYWNrKTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENH
Q29udGV4dFJlZiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gY3JlYXRlU2NyYXRjaENvbnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQg
PSBjcmVhdGVTY3JhdGNoQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgp
OwogfQogCiBQYXRoIFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8Rmxv
YXRQb2ludD4mIHBvaW50cykKQEAgLTIxMCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlD
bG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxl
bWVudCoKICAgICB9CiB9CiAKLXN0YXRpYyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9z
aW5nU3VicGF0aHMoQ0dQYXRoUmVmIG9yaWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dN
dXRhYmxlUGF0aFJlZj4gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2lu
YWxQYXRoKQogewotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFi
bGUoKTsKLSAgICBDR1BhdGhBcHBseShvcmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3Vi
cGF0aHNBcHBsaWVyRnVuY3Rpb24pOwotICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAg
ICBhdXRvIHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRo
QXBwbHkob3JpZ2luYWxQYXRoLCBwYXRoLmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGll
ckZ1bmN0aW9uKTsKKyAgICBDR1BhdGhDbG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0
dXJuIHBhdGg7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNv
bnN0IEZsb2F0UG9pbnQgJnBvaW50LCBXaW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBDR1BhdGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9y
IG5vbi1jbG9zZWQgcGF0aHMsIGFzIGEgd29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRo
ZSBwYXRoIGZpcnN0LiAgUmFkYXIgNDc1ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8g
dXNlCi0gICAgYXV0byBwYXRoID0gYWRvcHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBs
YXRmb3JtUGF0aCgpKSk7CisgICAgYXV0byBwYXRoID0gY29weUNHUGF0aENsb3NpbmdTdWJwYXRo
cyhwbGF0Zm9ybVBhdGgoKSk7CiAgICAgYm9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBh
dGguZ2V0KCksIDAsIHBvaW50LCBydWxlID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZh
bHNlKTsKICAgICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4
M2ZkZWIxZGNjOTNjZjljMy4uNzZlYTlhZjRkNDIzMjQ5NDFhODk3ZmFhM2U1ZGZkYWIyM2RmODEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJu
Q0cuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJh
Y2sodm9pZCogaW5mbykKICAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3Rh
dGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbykpXSB7IH0pOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNw
YWNlVHJhbnNmb3JtKSBjb25zdAorUmV0YWluUHRyPENHUGF0dGVyblJlZj4gUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNm
b3JtKSBjb25zdAogewogICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uo
KS5zaXplKCkgfTsKIApAQCAtNjgsNyArNjgsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgog
ICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2Ug
aW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMs
IGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVhdFgoKSAm
JiByZXBlYXRZKCkpCi0gICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBs
YXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25z
dGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28g
YmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZy
YWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyBy
ZW5kZXJlZC4KQEAgLTgyLDcgKzgyLDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBD
R0ltYWdlUmVmIGltYWdlID0gcGxhdGZvcm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShp
bWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVy
blRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJl
dHVybiBhZG9wdENGKENHUGF0dGVybkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJV
RSwgJnBhdHRlcm5DYWxsYmFja3MpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNmYzMjJjMzVhOWY5OTE1NmY5MTU2OTliNjJhNmU2NTA1
Y2VhMWVjMi4uZjc3ZjExYjM4N2YwMzI2ZTRlYmU5ZjhkNzNlNDczODNmNGFjNTkxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0zNSwxOCArMzUsMTgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKENURm9udFJlZiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBGb250V2lk
dGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRlcmluZ01v
ZGUsIENyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKQorRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBs
YXRmb3JtRGF0YShSZXRhaW5QdHI8Q1RGb250UmVmPiYmIGZvbnQsIGZsb2F0IHNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24gb3Jp
ZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBUZXh0UmVuZGVyaW5nTW9k
ZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEpCiAgICAgOiBG
b250UGxhdGZvcm1EYXRhKHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIG9y
aWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIHRleHRSZW5kZXJpbmdNb2RlLCBjcmVhdGlvbkRhdGEp
CiB7CiAgICAgQVNTRVJUX0FSRyhmb250LCBmb250KTsKICNpZiBQTEFURk9STShXSU4pCi0gICAg
bV9jdEZvbnQgPSBmb250OworICAgIG1fY3RGb250ID0gV1RGTW92ZShmb250OykKICNlbHNlCi0g
ICAgbV9mb250ID0gZm9udDsKKyAgICBtX2ZvbnQgPSBXVEZNb3ZlKGZvbnQpOwogI2VuZGlmCi0g
ICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IENURm9udEdldFN5bWJvbGljVHJhaXRzKGZvbnQpICYg
a0NURm9udENvbG9yR2x5cGhzVHJhaXQ7Ci0gICAgbV9pc1N5c3RlbUZvbnQgPSBXZWJDb3JlOjpp
c1N5c3RlbUZvbnQoZm9udCk7Ci0gICAgYXV0byB2YXJpYXRpb25zID0gYWRvcHRDRihzdGF0aWNf
Y2FzdDxDRkRpY3Rpb25hcnlSZWY+KENURm9udENvcHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFZh
cmlhdGlvbkF0dHJpYnV0ZSkpKTsKKyAgICBtX2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0
U3ltYm9saWNUcmFpdHMoZm9udC5nZXQoKSkgJiBrQ1RGb250Q29sb3JHbHlwaHNUcmFpdDsKKyAg
ICBtX2lzU3lzdGVtRm9udCA9IFdlYkNvcmU6OmlzU3lzdGVtRm9udChmb250LmdldCgpKTsKKyAg
ICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q1RGb250Q29weUF0dHJpYnV0ZShmb250LmdldCgpLCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRl
KSkpOwogICAgIG1faGFzVmFyaWF0aW9ucyA9IHZhcmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0
Q291bnQodmFyaWF0aW9ucy5nZXQoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQubW0KaW5kZXggNzdlMWMzZjE2MmYwNjYzZmI4NTNmYTIyNWFjMjQ4
YjQ1NmU0MWFmNC4uZTNmMDkyNzAzNDhlN2E1YWVmNzI2NmViNDcyZGRiYWU3M2JjMzQwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC0yMTEsMTQgKzIxMSwxMyBAQCBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZm
ZXIoQ0dJbWFnZVJlZgogICAgIENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVy
LCAwKTsKICAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzKHJnYkJ1
ZmZlcik7CiAgICAgYXV0byByZXRhaW5lZFJHQkJ1ZmZlciA9IGFkb3B0Q0YocmdiQnVmZmVyKTsK
LSAgICBhdXRvIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVy
Um93KHJnYkJ1ZmZlciksIHNSR0JDb2xvclNwYWNlUmVmKCksIChDR0JpdG1hcEluZm8pIGtDR0lt
YWdlQWxwaGFOb25lU2tpcEZpcnN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShkYXRhLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsK
ICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcjogQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
IHJldHVybmVkIG51bGxwdHIiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgYXV0byByZXRhaW5lZENvbnRleHQgPSBhZG9wdENGKGNvbnRleHQpOwotICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCkpLCBpbWFnZSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5o
ZWlnaHQoKSksIGltYWdlKTsKICAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3Mocmdi
QnVmZmVyLCAwKTsKIAogICAgIHJldHVybiBjb252ZXJ0UGl4ZWxCdWZmZXIocmdiQnVmZmVyLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQppbmRleCA0NTEx
MDdiYmI0NjViZGUzOTU0NDlkYzA3OGQ4MDVhOGUxNjRmOGE0Li4wMzIwOTY5ODhmY2RlMjE3MTc1
OTMzNTAwMTM5MGViM2ZiYjk5YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNv
cmVUZXh0Lm1tCkBAIC0xNDIsMTMgKzE0MiwxMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxl
cjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAog
ICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogb3B0aW9uS2V5c1tdID0geyBrQ1RUeXBlc2V0dGVy
T3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2ZWwgfTsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQq
IGx0ck9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZsdHJGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9Owog
ICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogcnRsT3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNob3J0VHlwZSwgJnJ0bEZvcmNl
ZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07Ci0gICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYg
bHRyVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlv
bktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBy
dGxUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBvcHRpb25LZXlzLCBydGxPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9u
S2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGx0clR5cGVzZXR0ZXJPcHRpb25zID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0
aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0Rp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
Pj4gcnRsVHlwZXNldHRlck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9M
RU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgICAgICBQcm92aWRlcklu
Zm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwgc3RyaW5nQXR0cmlidXRlcy5nZXQoKSB9OwogICAgICAg
ICAvLyBGSVhNRTogU29tZSBTREtzIGNvbXBsYWluIHRoYXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIg
YmVsb3cgY2Fubm90IGJlIG51bGwuCiAgICAgICAgIElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdT
X0JFR0lOCi0gICAgICAgIFJldGFpblB0cjxDVFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBh
ZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZw
cm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywgMCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlw
ZXNldHRlck9wdGlvbnMgOiBydGxUeXBlc2V0dGVyT3B0aW9ucykpOworICAgICAgICBSZXRhaW5Q
dHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVyID0gYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVh
dGVXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0
ZXMsIDAsICZpbmZvLCBtX3J1bi5sdHIoKSA/IGx0clR5cGVzZXR0ZXJPcHRpb25zLmdldCgpLmdl
dCgpIDogcnRsVHlwZXNldHRlck9wdGlvbnMuZ2V0KCkuZ2V0KCkpKTsKICAgICAgICAgSUdOT1JF
X05VTExfQ0hFQ0tfV0FSTklOR1NfRU5ECiAKICAgICAgICAgaWYgKCF0eXBlc2V0dGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Np
bXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4IDc0OGVkYjk0MDA5ZmQyOGE4OTI1ZmRhZjI0
ZjNiMGUyNTliYTZkMTguLmZhYWI2ZTE0ZjAyN2E0NDRiZDZkZTI3MTJlNjY5NTRhNzY1NWRkMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVG
b250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gRm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5h
YmxlS2VybmluZywgRm9udE8KIAogICAgIGlmICghZW5hYmxlS2VybmluZykgewogICAgICAgICBj
b25zdCBmbG9hdCB6ZXJvID0gMDsKLSAgICAgICAgc3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJu
aW5nVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJG
bG9hdFR5cGUsICZ6ZXJvKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDRk51bWJlclJlZj4+IHplcm9LZXJuaW5nVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJnplcm8pKTsKICAgICAg
ICAga2V5c1tjb3VudF0gPSBrQ1RLZXJuQXR0cmlidXRlTmFtZTsKLSAgICAgICAgdmFsdWVzW2Nv
dW50XSA9IHplcm9LZXJuaW5nVmFsdWU7CisgICAgICAgIHZhbHVlc1tjb3VudF0gPSB6ZXJvS2Vy
bmluZ1ZhbHVlLmdldCgpLmdldCgpOwogICAgICAgICArK2NvdW50OwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAKaW5kZXggY2VkYjAyZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2Nm
ZmY4NjllOC4uYjYyMDE1ODM4MWI0YzBhYjQ3MjcyYmE0MTc2MWM1NTdkMWViMDY1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIENHQ29udGV4dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJv
b2wgaGFzQWxwaGEpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gQ0dDb250ZXh0V2l0
aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQogewogICAgIEhCSVRNQVAgYml0bWFwID0gc3Rh
dGljX2Nhc3Q8SEJJVE1BUD4oR2V0Q3VycmVudE9iamVjdChoZGMsIE9CSl9CSVRNQVApKTsKIApA
QCAtNTUsMTIgKzU1LDExIEBAIHN0YXRpYyBDR0NvbnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhI
REMgaGRjLCBib29sIGhhc0FscGhhKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIENHQml0bWFw
SW5mbyBiaXRtYXBJbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCAoaGFzQWxwaGEg
PyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lw
Rmlyc3QpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEu
c2l6ZSgpLmhlaWdodCgpLCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBpeGVsRGF0YS5ieXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigp
LCBiaXRtYXBJbmZvKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZShwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4
ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwgOCwgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JD
b2xvclNwYWNlUmVmKCksIGJpdG1hcEluZm8pKTsKIAogICAgIC8vIEZsaXAgY29vcmRzCi0gICAg
Q0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0
KCkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0oY29udGV4dC5nZXQoKSwgMCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQo
KSk7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dC5nZXQoKSwgMSwgLTEpOwogICAgIAog
ICAgIC8vIFB1dCB0aGUgSERDIEluIGFkdmFuY2VkIG1vZGUgc28gaXQgd2lsbCBob25vciBhZmZp
bmUgdHJhbnNmb3Jtcy4KICAgICBTZXRHcmFwaGljc01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCmluZGV4IDZhMTYwM2QyMWI2OGVjNWJl
MjhmZDA2OTU5N2NkZDIyY2FmMjNkNmMuLjhlNWIzZTQyMjE0NzdlOTIxZDc4MjI1MTk0NTI2MmY5
ZTBhOGU4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCkBAIC01OCwx
MiArNTgsMTIgQEAgTUdEZXZpY2VDbGFzcyBkZXZpY2VDbGFzcygpCiBTdHJpbmcgZGV2aWNlTmFt
ZSgpCiB7CiAjaWYgVEFSR0VUX09TX0lPUwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZXZpY2VO
YW1lOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBk
ZXZpY2VOYW1lOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSAgICAgICAgZGV2aWNlTmFtZSA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihNR0NvcHlBbnN3ZXIoa01HUURldmljZU5hbWUsIG51bGxwdHIpKTsKKyAg
ICAgICAgZGV2aWNlTmFtZS5nZXQoKSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KE1HQ29weUFuc3dlcihrTUdRRGV2aWNlTmFtZSwgbnVsbHB0cikpKTsKICAgICB9KTsKLSAgICBy
ZXR1cm4gZGV2aWNlTmFtZTsKKyAgICByZXR1cm4gZGV2aWNlTmFtZS5nZXQoKS5nZXQoKTsKICNl
bHNlCiAgICAgcmV0dXJuICJpUGhvbmUiX3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IGM2NGE0YmNhMWFkOGU3YjcyYWYyMjYwM2Zi
MWNjMDFmOTc2OWY2MjAuLjczNTkzM2YxNzIwODViOWU2NjkzYWQ0NGIyYWYxNjBiMzQwYzRmOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZikKIHN0YXRpYyBG
b250Q2FzY2FkZSBjYXNjYWRlRm9yU3lzdGVtRm9udChDR0Zsb2F0IHNpemUpCiB7CiAgICAgVUlG
b250ICpmb250ID0gW1BBTDo6Z2V0VUlGb250Q2xhc3MoKSBzeXN0ZW1Gb250T2ZTaXplOnNpemVd
OwotICAgIHJldHVybiBGb250Q2FzY2FkZShGb250UGxhdGZvcm1EYXRhKENURm9udENyZWF0ZVdp
dGhOYW1lKChDRlN0cmluZ1JlZilmb250LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSwg
Zm9udC5wb2ludFNpemUpKTsKKyAgICByZXR1cm4gRm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0
YShhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKChDRlN0cmluZ1JlZilmb250LmZvbnROYW1l
LCBmb250LnBvaW50U2l6ZSwgbmlsKSksIGZvbnQucG9pbnRTaXplKSk7CiB9CiAKIERyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVsZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgVGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEs
IEZvbnRSZW5kZXJpbmdNb2RlLCBmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCA5MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJl
YzQyMWEzNDJkMzZiZjQxLi5hNjA4OGY3ZjZlODBkYWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
Lm1tCkBAIC0xMjQsMTggKzEyNCwzOCBAQCB0eXBlZGVmIGVudW0gewogICAgIElnbm9yZUF1dG9y
ZWxlYXNlUG9vbAogfSBBdXRvcmVsZWFzZVBvb2xPcGVyYXRpb247CiAKLXN0YXRpYyBDRlJ1bkxv
b3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKLXN0YXRpYyBDRk11dGFibGVBcnJh
eVJlZiBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXk7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9v
cFNvdXJjZVJlZj4mIHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPj4gd2ViVGhyZWFkUmVsZWFz
ZVNvdXJjZTsKKyAgICByZXR1cm4gd2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKK30KKworc3RhdGlj
IFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4mIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVBcnJheVJl
Zj4+IHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKKyAgICByZXR1cm4gd2ViVGhyZWFkUmVsZWFz
ZU9iakFycmF5OworfQogCiBzdGF0aWMgTG9jayBkZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGlj
Q29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBk
ZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291
cmNlUmVmPiYgZGVsZWdhdGVTb3VyY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPj4gZGVsZWdhdGVTb3VyY2U7CisgICAgcmV0dXJu
IGRlbGVnYXRlU291cmNlOworfQorCiBzdGF0aWMgQk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYg
TE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRpYyBCT09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3Nh
Z2U7CiAjZW5kaWYKIAotc3RhdGljIENGUnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyOworc3RhdGljIFJldGFpblB0cjxDRlJ1bkxvb3BPYnNlcnZlclJlZj4m
IG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9vcE9ic2VydmVyUmVmPj4gbWFpblJ1bkxvb3BBdXRvVW5s
b2NrT2JzZXJ2ZXI7CisgICAgcmV0dXJuIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOwor
fQorCiBzdGF0aWMgQk9PTCBtYWluVGhyZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2s7CiAKIHN0YXRp
YyBMb2NrIHN0YXJ0dXBMb2NrOwpAQCAtMjM0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIFNlbmRE
ZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGRlbGVnYXRlU291cmNlKTsKKyAgICBB
U1NFUlQoZGVsZWdhdGVTb3VyY2UoKSk7CiAgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAogICAg
IGRlbGVnYXRlSW52b2NhdGlvbigpID0gV1RGTW92ZShpbnZvY2F0aW9uKTsKQEAgLTI1NSw3ICsy
NzUsNyBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9j
YXRpb24+JiYgaW52b2NhdGlvbikKICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0oKSk7CiAgICAgICAgIF9XZWJUaHJlYWRVbmxv
Y2soKTsKIAotICAgICAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwoZGVsZWdhdGVTb3VyY2UpOwor
ICAgICAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwoZGVsZWdhdGVTb3VyY2UoKS5nZXQoKSk7CiAg
ICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdo
aWxlICghZGVsZWdhdGVIYW5kbGVkKSB7CkBAIC0yOTYsNyArMzE2LDcgQEAgdm9pZCBXZWJUaHJl
YWRSdW5Pbk1haW5UaHJlYWQodm9pZCheZGVsZWdhdGVCbG9jaykoKSkKIHZvaWQgV2ViVGhyZWFk
QWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKIHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVu
dCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk7CisgICAgQVNTRVJUKHdl
YlRocmVhZFJlbGVhc2VTb3VyY2UoKSk7CiAKICNpZiBMT0dfUkVMRUFTRVMKICAgICBOU0xvZyhA
IlJlbGVhc2Ugc2VuZCBbbWFpbiB0aHJlYWRdOiAlQCIsIG9iaik7CkBAIC0zMDQsMTAgKzMyNCwx
MCBAQCB2b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopCiAKICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHdlYlRocmVhZFJlbGVhc2VMb2NrKTsKIAotICAgIGlmIChXZWJUaHJl
YWRSZWxlYXNlT2JqQXJyYXkgPT0gbmlsKQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBu
dWxscHRyKTsKLSAgICBDRkFycmF5QXBwZW5kVmFsdWUoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5
LCBvYmopOwotICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChXZWJUaHJlYWRSZWxlYXNlU291cmNl
KTsKKyAgICBpZiAod2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkgPT0gbmlsKQorICAgICAgICB3
ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cikpOworICAgIENGQXJyYXlBcHBl
bmRWYWx1ZSh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSwgb2JqKTsKKyAgICBDRlJ1
bkxvb3BTb3VyY2VTaWduYWwod2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpKTsKICAgICBD
RlJ1bkxvb3BXYWtlVXAod2ViVGhyZWFkUnVuTG9vcCk7CiB9CiAKQEAgLTQwNCw5ICs0MjQsOSBA
QCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKHZvaWQqKQogICAgIFJl
dGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gb2JqZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAgICAgICBpZiAoQ0ZB
cnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9i
amVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJU
aHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsKLSAgICAgICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1
ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKKyAgICAgICAgaWYgKENGQXJyYXlHZXRDb3Vu
dCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpIHsKKyAgICAgICAgICAgIG9iamVj
dHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCB3ZWJUaHJl
YWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpOworICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFs
bFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTQ3Myw3ICs0OTMsNyBAQCBzdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9Vbmxv
Y2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKgogICAgICAg
ICByZXR1cm47CiAKICAgICBtYWluVGhyZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2sgPSBOTzsKLSAg
ICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5M
b29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVu
TG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRv
VW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIAogICAgIF9X
ZWJUaHJlYWRVbmxvY2soKTsKIH0KQEAgLTQ4NCw3ICs1MDQsNyBAQCBzdGF0aWMgdm9pZCBfV2Vi
VGhyZWFkQXV0b0xvY2sodm9pZCkKIAogICAgIGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewog
ICAgICAgICBtYWluVGhyZWFkSGFzUGVuZGluZ0F1dG9VbmxvY2sgPSBZRVM7Ci0gICAgICAgIENG
UnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRv
VW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7ICAgIAorICAgICAgICBDRlJ1
bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1Vu
bG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgICAgIF9X
ZWJUaHJlYWRMb2NrKCk7CiAgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWlu
KCkpOwogICAgIH0KQEAgLTU1NiwxMiArNTc2LDEyIEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29w
VW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2
CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5Mb29wRW5hYmxlTmVzdGVkRnJvbU1haW5UaHJlYWQoKQog
ewotICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFp
blJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAg
Q0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9v
cEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQog
CiBzdGF0aWMgdm9pZCBfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7
Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVu
TG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsgCisgICAgQ0ZS
dW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9V
bmxvY2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lk
IFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQoKQpAQCAtNjQyLDggKzY2Miw4IEBAIHN0YXRpYyB2b2lk
KiBSdW5XZWJUaHJlYWQodm9pZCopCiAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFk
UnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpOwogCiAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29u
dGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsK
LSAgICBXZWJUaHJlYWRSZWxlYXNlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxw
dHIsIC0xLCAmUmVsZWFzZVNvdXJjZUNvbnRleHQpOwotICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3
ZWJUaHJlYWRSdW5Mb29wLCBXZWJUaHJlYWRSZWxlYXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOworICAgIHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29w
U291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNvdXJjZUNvbnRleHQpKTsKKyAgICBD
RlJ1bkxvb3BBZGRTb3VyY2Uod2ViVGhyZWFkUnVuTG9vcCwgd2ViVGhyZWFkUmVsZWFzZVNvdXJj
ZSgpLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgcGVyQ2FsbG91dEF1dG9y
ZWxlYXNlcG9vbEVuYWJsZWQgPSBfQ0ZSdW5Mb29wU2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9v
bEVuYWJsZWQoWUVTKTsKIApAQCAtNjc5LDE2ICs2OTksMTYgQEAgc3RhdGljIHZvaWQgU3RhcnRX
ZWJUaHJlYWQoKQogCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJy
ZW50KCk7CiAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQg
PSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlRGVsZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRl
U291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJj
ZUNvbnRleHQpOworICAgIGRlbGVnYXRlU291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJj
ZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVTb3VyY2VDb250ZXh0KSk7CiAKICAgICAvLyBX
ZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRlIGNhbGxiYWNrcyB3aGlsZSBzY3JvbGxpbmcsIGJ1dCB0
aGVyZSBtaWdodCBiZQogICAgIC8vIG9uZSBvdXRzdGFuZGluZyB3aGVuIHdlIHN0YXJ0LiAgQWRk
IHRoZSBzb3VyY2UgZm9yIGFsbCBjb21tb24gcnVuIGxvb3AKICAgICAvLyBtb2RlcyBzbyB3ZSBk
b24ndCBibG9jayB0aGUgd2ViIHRocmVhZCB3aGlsZSBzY3JvbGxpbmcuCi0gICAgQ0ZSdW5Mb29w
QWRkU291cmNlKHJ1bkxvb3AsIGRlbGVnYXRlU291cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OworICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBkZWxlZ2F0ZVNvdXJjZSgpLmdldCgp
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgc0FzeW5jRGVsZWdhdGVzKCkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAotICAgIG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVu
TG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVu
TG9vcEF1dG9VbmxvY2ssIG51bGxwdHIpOworICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2Vy
dmVyKCkgPSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxv
b3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxv
b3BBdXRvVW5sb2NrLCBudWxscHRyKSk7CiAKICAgICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAg
ICBwdGhyZWFkX2F0dHJfaW5pdCgmdGF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKaW5kZXggZWZhODQ2NDViYTM5OGE0
YmUxYmNkZTJkZWMzZDAxMDhhNDM5NzU1My4uY2E5OGE4ZmNiNDk3NjI1MWEyY2MxOWJkY2YyNzFm
N2Y2NDk2ZTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkUnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWRSdW4uY3BwCkBAIC0xMTIsMTQgKzExMiwxOSBAQCBleHRlcm4gIkMiIHsK
IHR5cGVkZWYgV1RGOjpWZWN0b3I8V2ViVGhyZWFkQmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwog
CiBzdGF0aWMgTG9jayBydW5RdWV1ZU11dGV4Owotc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBy
dW5Tb3VyY2U7CiBzdGF0aWMgV2ViVGhyZWFkUnVuUXVldWUqIHJ1blF1ZXVlOwogCitzdGF0aWMg
UmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4mIHJ1blNvdXJjZSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBydW5Tb3VyY2U7
CisgICAgcmV0dXJuIHJ1blNvdXJjZTsKK30KKwogc3RhdGljIHZvaWQgSGFuZGxlUnVuU291cmNl
KHZvaWQgKmluZm8pCiB7CiAgICAgVU5VU0VEX1BBUkFNKGluZm8pOwogICAgIEFTU0VSVChXZWJU
aHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgQVNTRVJUKHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1
blNvdXJjZSgpKTsKICAgICBBU1NFUlQocnVuUXVldWUpOwogCiAgICAgV2ViVGhyZWFkUnVuUXVl
dWUgcXVldWVDb3B5OwpAQCAtMTQwLDcgKzE0NSw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRS
dW4odm9pZCAoXmJsb2NrKSh2b2lkKSwgYm9vbCBzeW5jaHJvbm91cykKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEFTU0VSVChydW5Tb3VyY2UpOworICAgIEFTU0VSVChydW5Tb3VyY2Uo
KSk7CiAgICAgQVNTRVJUKHJ1blF1ZXVlKTsKIAogICAgIFdlYlRocmVhZEJsb2NrU3RhdGUqIHN0
YXRlID0gMDsKQEAgLTE1Miw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZv
aWQgKF5ibG9jaykodm9pZCksIGJvb2wgc3luY2hyb25vdXMpCiAgICAgICAgIHJ1blF1ZXVlLT5h
cHBlbmQoV2ViVGhyZWFkQmxvY2soYmxvY2ssIHN0YXRlKSk7CiAgICAgfQogCi0gICAgQ0ZSdW5M
b29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSk7CisgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1
blNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxvb3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgp
KTsKIAogICAgIGlmIChzeW5jaHJvbm91cykgewpAQCAtMTY5LDE1ICsxNzQsMTUgQEAgdm9pZCBX
ZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSkKIHZvaWQgV2ViVGhyZWFkSW5pdFJ1blF1
ZXVlKCkKIHsKICAgICBBU1NFUlQoIXJ1blF1ZXVlKTsKLSAgICBBU1NFUlQoIXJ1blNvdXJjZSk7
CisgICAgQVNTRVJUKCFydW5Tb3VyY2UoKSk7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25jZSgmcHJlZCwgXnsKICAgICAgICAgcnVuUXVldWUgPSBu
ZXcgV2ViVGhyZWFkUnVuUXVldWU7CiAKLSAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBy
dW5Tb3VyY2VDb250ZXh0ID0gezAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws
IE5VTEwsIE5VTEwsIEhhbmRsZVJ1blNvdXJjZX07Ci0gICAgICAgIHJ1blNvdXJjZSA9IENGUnVu
TG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAtMSwgJnJ1blNvdXJjZUNvbnRleHQpOwotICAgICAgICBD
RlJ1bkxvb3BBZGRTb3VyY2UoV2ViVGhyZWFkUnVuTG9vcCgpLCBydW5Tb3VyY2UsIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7CisgICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuU291cmNl
Q29udGV4dCA9IHsgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlUnVuU291cmNlIH07CisgICAgICAg
IHJ1blNvdXJjZSgpID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEs
ICZydW5Tb3VyY2VDb250ZXh0KSk7CisgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJl
YWRSdW5Mb29wKCksIHJ1blNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93
ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNl
cnZlck1hYy5jcHAKaW5kZXggOGYzN2RkNzFmMDc3NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0NjZi
YS4uYTQ3ZTM0M2Y0ZGNhMDM2ZmVhZWZkM2MxMGQ1ZjI0MGUzNGI5ZjBkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNwcApAQCAtMzUsNyAr
MzUsNyBAQCBQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIHBvd2VyT25IYW5kZXIpCiAgICAgLCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9u
b3RpZmljYXRpb25Qb3J0KG51bGxwdHIpCiAgICAgLCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCi0g
ICAgLCBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2Vi
S2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkKKyAgICAsIG1fZGlzcGF0Y2hRdWV1ZShhZG9wdE9TT2Jq
ZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5Qb3dlck9ic2VydmVy
IiwgMCkpKQogewogICAgIG1fcG93ZXJDb25uZWN0aW9uID0gSU9SZWdpc3RlckZvclN5c3RlbVBv
d2VyKHRoaXMsICZtX25vdGlmaWNhdGlvblBvcnQsIFtdKHZvaWQqIGNvbnRleHQsIGlvX3NlcnZp
Y2VfdCBzZXJ2aWNlLCB1aW50MzJfdCBtZXNzYWdlVHlwZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50
KSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFBvd2VyT2JzZXJ2ZXIqPihjb250ZXh0KS0+ZGlkUmVj
ZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0aW9uKHNlcnZpY2UsIG1lc3NhZ2VUeXBlLCBtZXNzYWdl
QXJndW1lbnQpOwpAQCAtNDMsNyArNDMsNyBAQCBQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVy
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCiAgICAgaWYgKCFtX3Bvd2Vy
Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0
RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAg
SU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1f
ZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiB9CiAKIFBvd2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVy
KCkKQEAgLTUxLDggKzUxLDYgQEAgUG93ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQogICAg
IGlmICghbV9wb3dlckNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNo
X3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKLQogICAgIElPRGVyZWdpc3RlckZvclN5c3RlbVBv
d2VyKCZtX25vdGlmaWVyUmVmZXJlbmNlKTsKICAgICBJT1NlcnZpY2VDbG9zZShtX3Bvd2VyQ29u
bmVjdGlvbik7CiAgICAgSU9Ob3RpZmljYXRpb25Qb3J0RGVzdHJveShtX25vdGlmaWNhdGlvblBv
cnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2
ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgK
aW5kZXggMTU4NmQ3YmI3YWYyNTkzMTE2NmQyNmVjNWRmYzQ2OTNhOGY2Mjg5YS4uYTgwYjYyMDc1
YzAxZGMxNDlmODMxMWM3NDk0YzgxMzI5YWM2MDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0
IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2lt
cG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgaW9f
Y29ubmVjdF90IG1fcG93ZXJDb25uZWN0aW9uOwogICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBt
X25vdGlmaWNhdGlvblBvcnQ7CiAgICAgaW9fb2JqZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsK
LSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxk
aXNwYXRjaF9xdWV1ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApp
bmRleCAwYjc3MGNmYjEzM2YzYThhNGU3ZGI2ZGI4YzgwZmY2MjVjMjM5MjQ5Li5kM2YxYWM3Mjli
NWI1Y2RlNjNkYjQ0YzAwNTI3YzA5ODYzYzgyYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW1wb3J0IDxDb3JlTWVkaWEv
Q29yZU1lZGlhLmg+CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1
Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlvQ29udmVydGVyUmVmOwpAQCAtNjMsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVy
VGltZShDTVRpbWUpOwogICAgIE9TU3RhdHVzIHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFj
a2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0
aW9uKiopOwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7Cisg
ICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwog
ICAgIENNVGltZSBtX2xvd1dhdGVyVGltZSB7IGtDTVRpbWVJbnZhbGlkIH07CiAKICAgICBSZXRh
aW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggYzc5YTQ3OTYyNDAy
YmIxMzI5MzNjODdiZmU5OGQyMzdmNTZlZTA2OS4uY2NjOGRkM2E5ZDRmMGZkYTg4OTMzZjBmZDFl
MjgxZGUzYWRlOTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0KQEAgLTUyLDE0ICs1MiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQog
fQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpCi0gICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVV
RV9TRVJJQUwpIH0KKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3Qo
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkgfQogICAgICwgbV9sb3dXYXRlclRpbWUgeyBD
TVRpbWVNYWtlV2l0aFNlY29uZHMoTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQog
ewogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVl
KTsKICAgICBpZiAobV9jb252ZXJ0ZXIpIHsKICAgICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3Nl
KG1fY29udmVydGVyKTsKICAgICAgICAgbV9jb252ZXJ0ZXIgPSBudWxscHRyOwpAQCAtODksNyAr
ODgsNyBAQCBib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1
ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYQogCiB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQo
KSwgXnsKICAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01U
aW1lSW52YWxpZCk7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9m
RGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENN
QnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCAlZCIsIGVycm9yKTsKQEAgLTUxMCw3ICs1
MDksNyBAQCB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1
ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewot
ICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNo
X3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAgICAgICBpZiAobV9pc0Vu
Y29kaW5nKQogICAgICAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXgg
YzA1ODM3NDcwYjFjODI3MmRlN2M4OWM0MTRiYTE4YTBmMGU5ZTljZC4uMzc2YTVjZmJlYWIxYTE0
NmYyOTBiMmNiMjQzYzVjMTMzMmRkNzRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxDb3Jl
TWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+Cisj
aW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29t
cHJlc3Npb25TZXNzaW9uICpWVENvbXByZXNzaW9uU2Vzc2lvblJlZjsKQEAgLTU4LDcgKzU5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2
b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxl
QnVmZmVyUmVmKTsKIAotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVl
OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZTsKICAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlIHsga0NNVmlkZW9Db2Rl
Y1R5cGVfSDI2NCB9OwogCiAgICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0
QnVmZmVyUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tCmluZGV4IGUwM2U3NzBmMGNhYTliZGM2YjE2ZDVhYzc0YmIzNzg2ZGY4ZjRhZDcuLjE3
Njc5OTc0MWJkNGZiYjk5MDk5YWQ4NDM0ZWY2YzJmNDZiOGFiNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC00OCwxNCArNDgsMTMgQEAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpjcmVhdGUKIH0KIAogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2Rl
Y1R5cGUpCi0gICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVV
RV9TRVJJQUwpIH0KKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3Qo
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkgfQogICAgICwgbV9vdXRwdXRDb2RlY1R5cGUg
eyBvdXRwdXRDb2RlY1R5cGUgfQogewogfQogCiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBpZiAobV92dFNlc3Npb24pIHsKICAgICAgICAg
VlRDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlKG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICAg
ICAgbV92dFNlc3Npb24gPSBudWxscHRyOwpAQCAtODMsNyArODIsNyBAQCB2b2lkIFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0Qml0c1BlclNlY29uZCh1bnNpZ25lZCBiaXRSYXRlKQog
CiB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBkaXNw
YXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKG1f
c2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgYXV0byBlcnJvciA9IFZUQ29t
cHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJ
bnZhbGlkKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxl
dGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAKQEAgLTE2NSw3ICsxNjQsNyBAQCB2
b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNh
bXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAgICAgICBpZiAoIW1faXNFbmNvZGluZykK
ICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggM2NiZThjZWE2ODVhNTQ1ODgyMGRmMjg4YmRmNmNh
NmRlYWIyM2I5Yi4uZjg2MTlmNmExOTE4YWYwNjBlMmEwNWUwNjMxODJmNTRlODZhMjBmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9T
ZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9T
ZXNzaW9uOwpAQCAtNzcsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJBVkF1
ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0c0xpc3RlbmVyPiBtX2xpc3RlbmVyOwogICAgIFJldGFp
blB0cjxBVkF1ZGlvU2Vzc2lvbj4gbV9hdWRpb1Nlc3Npb247CiAgICAgR2VuZXJpY1Rhc2tRdWV1
ZTxUaW1lcj4gbV91cGRhdGVEZXZpY2VTdGF0ZVF1ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
bV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1
ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsKICAgICBMb2NrIG1fbG9jazsKICAgICBBdWRpb1Nlc3Np
b25TdGF0ZSBtX2F1ZGlvU2Vzc2lvblN0YXRlIHsgQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRl
ZCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIubW0KaW5kZXggYjFiNDdhZjI5YzRhNDQ1MmZjODEwMDNiYTM1ODZkOTAyZTg2YWU5Zi4u
ZWY5YmUxMDZiYmQ0ZWExNjg0NGVlNzA5YzYwYTI1OGNjNjJjZWIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTg3LDkgKzg3
LDkgQEAgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciYgQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG8KIH0KIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcigpCi0gICAg
OiBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0
LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpKQorICAgIDogbV9kaXNwYXRjaFF1ZXVlKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVf
Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSkKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rp
c3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpcywgbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2Nr
UHRyKFt0aGlzLCBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spXSB7CiAgICAgICAgIGNyZWF0ZUF1
ZGlvU2Vzc2lvbigpOwogICAgIH0pLmdldCgpKTsKIH0KQEAgLTExMyw3ICsxMTMsNiBAQCB2b2lk
IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZUF1ZGlvU2Vzc2lvbigp
CiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hR
dWV1ZSk7CiAgICAgW21fbGlzdGVuZXIgaW52YWxpZGF0ZV07CiAgICAgbV9saXN0ZW5lciA9IG51
bGxwdHI7CiB9CkBAIC0xNTcsMTMgKzE1NiwxMyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBpZiAobV9h
dWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAg
ICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAg
ICAgICAgZGlzcGF0Y2hfc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10g
eworICAgICAgICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2Nr
UHRyKFt0aGlzXSB7CiAgICAgICAgICAgICBhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgICAg
ICB9KS5nZXQoKSk7CiAgICAgfQogCiAgICAgVmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZT4gbmV3QXVkaW9EZXZpY2VzOwotICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVl
LCBtYWtlQmxvY2tQdHIoWyZdIHsKKyAgICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5n
ZXQoKSwgbWFrZUJsb2NrUHRyKFsmXSB7CiAgICAgICAgIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJp
ZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZXMoKTsKICAgICB9KS5nZXQoKSk7CiAgICAgc2V0
QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwpAQCAtMTc0LDEy
ICsxNzMsMTIgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRD
YXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICBpZiAobV9hdWRpb1Nlc3Np
b25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRp
b1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3Ro
aXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdl
dCgpKTsKICAgICB9CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VC
bG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFi
bGUgeworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2Nr
UHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIGF1dG8gbmV3QXVkaW9EZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlcygpOwogICAgICAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1h
aW5UaHJlYWQobWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uKSwgbmV3QXVkaW9EZXZpY2VzID0gV1RGTW92ZShuZXdBdWRpb0RldmljZXMpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIHNldEF1ZGlvQ2FwdHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRp
b0RldmljZXMpKTsKQEAgLTI1NCw3ICsyNTMsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmRpc2FibGVBbGxEZXZpY2VzUXVlcnkoKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0
aXZlKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2Nr
UHRyKFt0aGlzXSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQo
KSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAgICAgICAgICBpZiAobV9hdWRpb1Nlc3Npb25T
dGF0ZSAhPSBBdWRpb1Nlc3Npb25TdGF0ZTo6Tm90TmVlZGVkKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5k
ZXggOGIxOGZmMTI5MjU3ODkzNzkxNWVhYTZhNDk5ODM3OTE3MDUxODMwOC4uNzhlYzA2Yjc0ZTQ3
MmJkNjM4YTlmNWU5MzcwYmYyZjZiOGY5YjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0zMDEsNyAr
MzAxLDcgQEAgcHJpdmF0ZToKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJM
Q09OTkVDVElPTikKLVdFQkNPUkVfRVhQT1JUIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhU
VFBDb29raWVBY2NlcHRQb2xpY3k+ID0gV1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Np
b24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGlj
eT4gPSBXVEY6Om51bGxvcHQpOwogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IGEzNzg1
MGQ3NmViZGU4ODRiMjJkODkwMGRlZTM2Zjg0Yzg0NTE2YWIuLmNlZTVkN2VhY2JjYjYyMTBiMjI5
ZGNlYWM4N2I0NmY0ZmJkOGVjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcApAQCAtNzIsMTcgKzcyLDE2IEBA
IGJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3Jl
Q2hhbGxlbmdlKQorUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklY
TUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/
IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0aGF0LgogCi0gICAgUmV0YWluUHRyPENGVVJM
Q3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5n
ZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkpOwotICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpKSk7Ci0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9
IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRl
bnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNo
YWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2Uu
ZXJyb3IoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVh
dGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKKyAgICBhdXRvIHByb3Rl
Y3Rpb25TcGFjZSA9IGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwor
ICAgIHJldHVybiBhZG9wdENGKENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9u
U3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWls
dXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNl
KCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSkpOwogfQogCi1DRlVSTENyZWRlbnRpYWxSZWYgY3Jl
YXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCitSZXRhaW5QdHI8Q0ZVUkxD
cmVkZW50aWFsUmVmPiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkK
IHsKICAgICBDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSA9IGtDRlVSTENy
ZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7CiAgICAgc3dpdGNoIChjb3JlQ3JlZGVudGlhbC5wZXJz
aXN0ZW5jZSgpKSB7CkBAIC05OCwxMCArOTcsMTAgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0
ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0
ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNy
ZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5j
ZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVk
ZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNz
d29yZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKSk7CiB9CiAKLUNG
VVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29y
ZVNwYWNlKQorUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBjcmVhdGVDRihjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKIHsKICAgICBDRlVSTFByb3RlY3Rpb25TcGFj
ZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IGtDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7
CiAgICAgc3dpdGNoIChjb3JlU3BhY2Uuc2VydmVyVHlwZSgpKSB7CkBAIC0xNjUsNyArMTY0LDcg
QEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNl
JiBjb3JlU3BhY2UpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAg
IHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVT
cGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHNjaGVtZSk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VDcmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3Jl
U3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBzY2hlbWUpKTsKIH0KIAogQ3Jl
ZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCmlu
ZGV4IDg5YTkzNTI4OWFkNzlkNDBiMzdkZDIwM2E4MGU5ZThkZjcxMWIyNmUuLjcwZjUwMjA1ZWIy
YmRhMDgxNmJiZDA4OGM0NmNkYWFiOWM0NTMyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVS
TENyZWRlbnRpYWxQcml2Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogdHlwZWRl
ZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsK
QEAgLTM4LDkgKzM5LDkgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBD
cmVkZW50aWFsOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCi1DRlVSTEF1dGhDaGFsbGVuZ2VS
ZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLUNGVVJMQ3JlZGVu
dGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7Ci1DRlVSTFByb3RlY3Rpb25TcGFj
ZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKK1JldGFpblB0cjxDRlVSTEF1
dGhDaGFsbGVuZ2VSZWY+IGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7
CitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFs
Jik7CitSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYpOwogQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJlZik7CiBQ
cm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJ
bmZvQ0ZOZXQuY3BwCmluZGV4IDZlYTMwMTIzOTU2ZWRiZDMwOWQ2Y2UwZWFmZmU3ODNkNzM4ZTZk
ZmMuLjFmYTg5YmFlMWRlMWNiMDc2M2UwN2M2MWE0MThhMzFjY2VmNTViNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJ
bmZvQ0ZOZXQuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAgYm9vbCBjZXJ0aWZpY2F0ZXNNYXRjaChT
ZWNUcnVzdFJlZiB0cnVzdDEsIFNlY1RydXN0UmVmIHRydXN0MikKIFJldGFpblB0cjxDRkFycmF5
UmVmPiBDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRlQ2hhaW5Gcm9tU2VjVHJ1c3QoU2VjVHJ1
c3RSZWYgdHJ1c3QpCiB7CiAgICAgYXV0byBjb3VudCA9IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVD
b3VudCh0cnVzdCk7Ci0gICAgYXV0byBjZXJ0aWZpY2F0ZUNoYWluID0gQ0ZBcnJheUNyZWF0ZU11
dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgIGF1dG8gY2VydGlm
aWNhdGVDaGFpbiA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2VydGlmaWNhdGVDaGFpbiwgU2VjVHJ1
c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgodHJ1c3QsIGkpKTsKLSAgICByZXR1cm4gYWRvcHRDRigo
Q0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVl
KGNlcnRpZmljYXRlQ2hhaW4uZ2V0KCksIFNlY1RydXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRy
dXN0LCBpKSk7CisgICAgcmV0dXJuIGNlcnRpZmljYXRlQ2hhaW47CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggMDc1MmNhMTA1NTJmZGIxYTdjMzU3NTkzMmEyMzJh
YWViZWRjNWQ2MC4uMGEwMzM4NmQ5M2M1YzEyZTY2MDE2NmZlMjkwNmI4MTE0YjVkZTRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Ny
ZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCkBAIC0zNiwxNiArMzYsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAotc3RhdGljIGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNy
ZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3Rl
Y3Rpb25TcGFjZSkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4g
Y29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
IHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBhdXRvIHN0b3JhZ2UgPSBhZG9wdENGKENGVVJMQ3Jl
ZGVudGlhbFN0b3JhZ2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIHJldHVybiBD
RlVSTENyZWRlbnRpYWxTdG9yYWdlQ29weURlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNw
YWNlKHN0b3JhZ2UuZ2V0KCksIHByb3RlY3Rpb25TcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNvcHlEZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25T
cGFjZShzdG9yYWdlLmdldCgpLCBwcm90ZWN0aW9uU3BhY2UpKTsKIH0KIAogQ3JlZGVudGlhbCBD
cmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0Yg
PSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwotICAgIGF1dG8gY3JlZGVudGlh
bENGID0gYWRvcHRDRihjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlv
blNwYWNlQ0YuZ2V0KCkpKTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZUNGID0gY3JlYXRlQ0Yo
cHJvdGVjdGlvblNwYWNlKTsKKyAgICBhdXRvIGNyZWRlbnRpYWxDRiA9IGNvcHlDcmVkZW50aWFs
RnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSk7CiAgICAgcmV0dXJu
IGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4IDVlYTQ0OGZj
ZTc3M2UwMzk0ZDc0ZmQ3YjFmOWMzNzYzNjljZDlmODMuLmJiODNkZmY0YTI5YmZkOTdmYjUwNWE0
OTNiODk0YjE4ZTExNmY1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKQEAgLTYzLDggKzYzLDggQEAgQ0ZSdW5M
b29wUmVmIGxvYWRlclJ1bkxvb3AoKQogCiAgICAgICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBz
b3VyY2UgdG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0
aW5nLgogICAgICAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAo
dm9pZCopMSAvKm11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQ
ZXJmb3JtfTsKLSAgICAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2Ug
PSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgICAgIENG
UnVuTG9vcEFkZFNvdXJjZShsb2FkZXJSdW5Mb29wT2JqZWN0LCBib2d1c1NvdXJjZSwga0NGUnVu
TG9vcERlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRv
cHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgICAg
ICBDRlJ1bkxvb3BBZGRTb3VyY2UobG9hZGVyUnVuTG9vcE9iamVjdCwgYm9ndXNTb3VyY2UuZ2V0
KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAKICAgICAgICAgICAgICAgICBsb2FkZXJSdW5M
b29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5T25lKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCmluZGV4IDVkN2Q3OTYxNDQ2NWZjYWI1YmQ2
YjY0MThlMDYwZjY4ZWIwOTRhNGEuLmE1MWJkYjhlMzI1YjMzNzZkMTRjNmY0ZjVlODA3ZDM4MWRi
YjhkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCkBAIC03OSwx
NiArNzksMTYgQEAgc3RhdGljIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgdG9DRkhU
VFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KEhUVFBDb28KICAgICByZXR1cm4gQ0ZIVFRQQ29v
a2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0
aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gY29va2llQWNjZXB0UG9saWN5KQorUmV0YWlu
UHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihD
RlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBj
b29raWVBY2NlcHRQb2xpY3kpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5
c1tdID0geyBfa0NGVVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lk
KiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgc2Vzc2lvblByb3BlcnRpZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc2Vzc2lvblByb3BlcnR5S2V5cywgc2Vzc2lvblByb3BlcnR5VmFsdWVz
LCBzaXplb2Yoc2Vzc2lvblByb3BlcnR5S2V5cykgLyBzaXplb2YoKnNlc3Npb25Qcm9wZXJ0eUtl
eXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKTsKLSAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9u
ID0gX0NGVVJMU3RvcmFnZVNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRp
Zmllciwgc2Vzc2lvblByb3BlcnRpZXMpOworICAgIGF1dG8gc2Vzc2lvblByb3BlcnRpZXMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uUHJv
cGVydHlLZXlzLCBzZXNzaW9uUHJvcGVydHlWYWx1ZXMsIHNpemVvZihzZXNzaW9uUHJvcGVydHlL
ZXlzKSAvIHNpemVvZigqc2Vzc2lvblByb3BlcnR5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRv
IHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBpZGVudGlmaWVyLCBzZXNzaW9uUHJvcGVydGllcy5nZXQoKSkpOwog
ICAgIAogICAgIC8vIFRoZSBwcml2YXRlIHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2ZSB0aGUg
c2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBkZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAgICAvLyB3
aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkgc3RvcmFn
ZS4KLSAgICBhdXRvIGNhY2hlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNo
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbikpOworICAgIGF1dG8gY2FjaGUg
PSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0
eShjYWNoZS5nZXQoKSwgMCk7CiAgICAgYXV0byBkZWZhdWx0Q2FjaGUgPSBhZG9wdENGKENGVVJM
Q2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFj
aXR5KGNhY2hlLmdldCgpLCBDRlVSTENhY2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlLmdl
dCgpKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQ
cml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAg
ICAgY2ZDb29raWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNj
ZXB0UG9saWN5KGRlZmF1bHRDb29raWVTdG9yYWdlKTsKICAgICB9CiAKLSAgICBhdXRvIGNvb2tp
ZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBhdXRvIGNvb2tpZVN0
b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNmQ29v
a2llQWNjZXB0UG9saWN5KTsKICAgICAKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFj
ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlv
blNwYWNlQ0ZOZXQuY3BwCmluZGV4IGNiMDhiOTM3MzUwOWE1MDA3OTI3NDY4YzA3NmNmODJlNjVk
NWIwN2UuLjg3MzdjNGM3MTRmNjVkZTRjMDQ2ZDU5MTcwNjIxYTlhYTVlNzA2Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlv
blNwYWNlQ0ZOZXQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ym9vbCBQcm90ZWN0aW9uU3BhY2U6OnJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3QK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IGNmU3BhY2UgPSBhZG9w
dENGKGNyZWF0ZUNGKCp0aGlzKSk7CisgICAgYXV0byBjZlNwYWNlID0gY3JlYXRlQ0YoKnRoaXMp
OwogICAgIHJldHVybiBjZlNwYWNlICYmIENGVVJMUHJvdGVjdGlvblNwYWNlUmVjZWl2ZXNDcmVk
ZW50aWFsU2VjdXJlbHkoY2ZTcGFjZS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmlu
ZGV4IDJkNGVmZjUwNWNjNDEzYTBjZDY1MjNjYjA5YzA0NGM0YjQ5ZTg1NWQuLjZiZjNjYzIwNDA0
MGI4YWZlOTI0YzdmOWY1NTEzZDdhNWMyYjE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAt
Mzg5LDcgKzM4OSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoCiAgICAgICAgICAgICAgICAg
ICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBh
IGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2Nv
bnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlv
biwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFp
bHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNy
ZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9
IGNyZWF0ZUNGKGNyZWRlbnRpYWwpOwogICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVz
ZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNo
YWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CkBAIC00MzYsMTEgKzQzNiwxMSBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGNoYWxsZW5nZQogICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIHdlYkNy
ZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAg
ICAgICAgaWYgKGQtPm1fY29ubmVjdGlvbikgewotICAgICAgICAgICAgUmV0YWluUHRyPENGVVJM
Q3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50
aWFsKSk7CisgICAgICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKHdlYkNyZWRl
bnRpYWwpOwogICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZC0+bV9jb25uZWN0aW9u
KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9
IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICBhdXRvIGNmQ3JlZGVudGlh
bCA9IGNyZWF0ZUNGKGNyZWRlbnRpYWwpOwogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVk
ZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVu
Z2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgIH0KIApAQCAtNTU5LDggKzU1OSw4IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291
cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGlu
Zy4KICAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQq
KTEgLyptdXN0IGJlIG5vbi1udWxsKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9y
bSB9OwotICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5M
b29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNv
dXJjZShydW5Mb29wLCBib2d1c1NvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAg
ICAgICAgIGF1dG8gYm9ndXNTb3VyY2UgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgw
LCAwLCAmY3R4dCkpOworICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJv
Z3VzU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2Vt
LnNpZ25hbCgpOwogCiAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwCmluZGV4IDFmZTY5MDI0YmNiZmI4ZDc3YmFiOThhOTFhM2NhODE1OWZi
YTRlMDMuLjNjODJiYzNiNGM2ODU5YjhiYTk0YTMyYmU5YTQyNmE4Mzk5NmVjNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBD
RlJ1bkxvb3BSZWYgZ2V0UnVuTG9vcCgpCiAKICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291
cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGlu
Zy4KICAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHsgMCwgKHZvaWQq
KTEgLyptdXN0IGJlIG5vbi1udWxsKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9y
bSB9OwotICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5M
b29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KTsKLSAgICAgICAgICAgIENGUnVuTG9vcEFkZFNv
dXJjZShydW5Mb29wLCBib2d1c1NvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAg
ICAgICAgIGF1dG8gYm9ndXNTb3VyY2UgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgw
LCAwLCAmY3R4dCkpOworICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGJv
Z3VzU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgICAgICAgICAgc2Vt
LnNpZ25hbCgpOwogCiAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKaW5kZXggZjZlMWI5YjVkM2E1YmE3YWUzNWE3NzkyM2Q1NmQ1M2VhZTMyNzE5OS4uYjdlZjVi
ODc1ODRmZmJiNjZhZjdkOWExMTNmNDMwNmQ5MTVhMTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKQEAgLTE2Nyw1MSArMTY3LDUxIEBAIHN0YXRpYyBDRlVSTFJlZiBzaXRlRm9yQ29va2llcyhS
ZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sCiAgICAgY2Fz
ZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRlRGlzcG9zaXRpb246OlNhbWVTaXRlOgogICAgICAg
ICByZXR1cm4gdXJsOwogICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0
aW9uOjpDcm9zc1NpdGU6Ci0gICAgICAgIHN0YXRpYyBDRlVSTFJlZiBlbXB0eVVSTCA9IENGVVJM
Q3JlYXRlV2l0aFN0cmluZyhudWxscHRyLCBDRlNUUigiIiksIG51bGxwdHIpOwotICAgICAgICBy
ZXR1cm4gZW1wdHlVUkw7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
Q0ZVUkxSZWY+PiBlbXB0eVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKG51bGxw
dHIsIENGU1RSKCIiKSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm4gZW1wdHlVUkwuZ2V0KCku
Z2V0KCk7CiAgICAgfQogfQogI2VuZGlmCiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmVxdWVzdCgpCiB7Ci0gICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVl
c3Q7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVh
dGVDRlVSTCgpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMg
PSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0UGFydHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsK
ICAgICBkb3VibGUgdGltZW91dEludGVydmFsID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91
dEludGVydmFsKCkgPyBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJl
c291cmNlUmVxdWVzdEJhc2U6OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9j
ZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwo
Y2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1l
bnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENG
VVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNo
ZVBvbGljeShjYWNoZVBvbGljeSgpKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJ
bnRlcnZhbChjZlJlcXVlc3QsIHRpbWVvdXRJbnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9
IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0
KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdl
dCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5n
ZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRDYWNoZVBvbGljeShjZlJlcXVlc3QuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xp
Y3koY2FjaGVQb2xpY3koKSkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2
YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1lb3V0SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAg
ICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9Q
bGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFs
LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0
Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1
ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0
eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAotICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0
aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAg
IENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdC5nZXQoKSwgaHR0cE1l
dGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5n
RW5hYmxlZCgpKQotICAgICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhUVFAoY2ZS
ZXF1ZXN0LCB0cnVlLCB0cnVlKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkUGlwZWxp
bmVIVFRQKGNmUmVxdWVzdC5nZXQoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBpZiAocmVzb3VyY2VQ
cmlvcml0aWVzRW5hYmxlZCgpKSB7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlv
cml0eShjZlJlcXVlc3QsIHRvUGxhdGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOwor
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRSZXF1ZXN0UHJpb3JpdHkoY2ZSZXF1ZXN0LmdldCgpLCB0
b1BsYXRmb3JtUmVxdWVzdFByaW9yaXR5KHByaW9yaXR5KCkpKTsKIAogICAgICAgICAvLyBVc2Vk
IGJ5IFBMVCB0byBpZ25vcmUgdmVyeSBsb3cgcHJpb3JpdHkgYmVhY29uIGFuZCBwaW5nIGxvYWRz
LgogICAgICAgICBpZiAocHJpb3JpdHkoKSA9PSBSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUxv
dykKLSAgICAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVz
dCwgQ0ZTVFIoIldLVmVyeUxvd0xvYWRQcmlvcml0eSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
ICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCks
IENGU1RSKCJXS1ZlcnlMb3dMb2FkUHJpb3JpdHkiKSwga0NGQm9vbGVhblRydWUpOwogICAgIH0K
IAotICAgIHNldEhlYWRlckZpZWxkcyhjZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7Cisg
ICAgc2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdC5nZXQoKSwgaHR0cEhlYWRlckZpZWxkcygpKTsK
IAotICAgIENGVVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwg
YWxsb3dDb29raWVzKCkpOworICAgIENGVVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29r
aWVzKGNmUmVxdWVzdC5nZXQoKSwgYWxsb3dDb29raWVzKCkpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3Qs
IENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiKSwgc2l0
ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCB1cmwuZ2V0KCkpKTsKKyAgICBfQ0ZV
UkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJfa0NG
SFRUUENvb2tpZVBvbGljeVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiKSwgc2l0ZUZvckNvb2tpZXMo
bV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCB1cmwuZ2V0KCkpKTsKIAogICAgIGludCBpc1RvcFNpdGUg
PSBtX2lzVG9wU2l0ZTsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGlzVG9wU2l0ZUNGID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRyLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaXNUb3BT
aXRlKSk7Ci0gICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBD
RlNUUigiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBpc1RvcFNpdGVD
Ri5nZXQoKSk7CisgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0
LmdldCgpLCBDRlNUUigiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eWlzVG9wU2l0ZSIpLCBp
c1RvcFNpdGVDRi5nZXQoKSk7CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQg
PSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUo
KTsKQEAgLTIyMiw1MSArMjIyLDUxIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCgpCiAgICAgICAgIGlmIChlbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGlu
Z0ludmFsaWRJZCkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShlbmNvZGluZ0ZhbGxi
YWNrcy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oZW5jb2RpbmcpKTsKICAg
ICB9Ci0gICAgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNmUmVx
dWVzdCwgZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCkpOworICAgIHNldENvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheShjZlJlcXVlc3QuZ2V0KCksIGVuY29kaW5nRmFsbGJhY2tz
LmdldCgpKTsKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgU3RyaW5nIHBh
cnRpdGlvbiA9IGNhY2hlUGFydGl0aW9uKCk7CiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkg
JiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0g
cGFydGl0aW9uLnV0ZjgoKTsKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRp
b25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgo
KSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0
U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwg
cGFydGl0aW9uVmFsdWUuZ2V0KCkpOworICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQ
cm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0
aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV9jZlJlcXVlc3QgPSBhZG9w
dENGKGNmUmVxdWVzdCk7CisgICAgbV9jZlJlcXVlc3QgPSBXVEZNb3ZlKGNmUmVxdWVzdCk7CiB9
CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogewot
ICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0OworICAgIFJldGFpblB0cjxDRk11
dGFibGVVUkxSZXF1ZXN0UmVmPiBjZlJlcXVlc3Q7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybCA9IFJlc291cmNlUmVxdWVzdDo6dXJsKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVzID0gUmVzb3VyY2VSZXF1ZXN0OjpmaXJz
dFBhcnR5Rm9yQ29va2llcygpLmNyZWF0ZUNGVVJMKCk7CiAgICAgZG91YmxlIHRpbWVvdXRJbnRl
cnZhbCA9IFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpID8gUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgOiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWZh
dWx0VGltZW91dEludGVydmFsKCk7CiAgICAgaWYgKG1fY2ZSZXF1ZXN0KSB7Ci0gICAgICAgIGNm
UmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0Lmdl
dCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdCwgdXJsLmdldCgpKTsK
LSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGlj
eShjZlJlcXVlc3QsIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkp
OwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0aW1l
b3V0SW50ZXJ2YWwpOworICAgICAgICBjZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENy
ZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIENGVVJMUmVx
dWVzdFNldFVSTChjZlJlcXVlc3QuZ2V0KCksIHVybC5nZXQoKSk7CisgICAgICAgIENGVVJMUmVx
dWVzdFNldE1haW5Eb2N1bWVudFVSTChjZlJlcXVlc3QuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29r
aWVzLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0
LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpKTsKKyAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVydmFsKGNmUmVxdWVzdC5nZXQoKSwgdGlt
ZW91dEludGVydmFsKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1
ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xp
Y3koY2FjaGVQb2xpY3koKSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMu
Z2V0KCkpOworICAgICAgICBjZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11
dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9s
aWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKSk7CiAK
ICAgICBGb3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0YSAm
JiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZS
ZXF1ZXN0LCBmb3JtRGF0YSk7CisgICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNmUmVxdWVz
dC5nZXQoKSwgZm9ybURhdGEpOwogCi0gICAgaWYgKFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+
IGJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJl
YW0oY2ZSZXF1ZXN0KSkpIHsKKyAgICBpZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9k
eVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShj
ZlJlcXVlc3QuZ2V0KCkpKSkgewogICAgICAgICAvLyBGb3Igc3RyZWFtcywgcHJvdmlkZSBhIENv
bnRlbnQtTGVuZ3RoIHRvIGF2b2lkIHVzaW5nIGNodW5rZWQgZW5jb2RpbmcsIGFuZCB0byBnZXQg
YWNjdXJhdGUgdG90YWwgbGVuZ3RoIGluIGNhbGxiYWNrcy4KICAgICAgICAgaWYgKFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gbGVuZ3RoU3RyaW5nID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZSZWFkU3RyZWFtQ29weVByb3BlcnR5KGJvZHlTdHJlYW0uZ2V0KCksIGZvcm1EYXRh
U3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCkpKSkpIHsKLSAgICAgICAgICAgIENGVVJMUmVxdWVz
dFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKGNmUmVxdWVzdCwgQ0ZTVFIoIkNvbnRlbnQtTGVuZ3Ro
IiksIGxlbmd0aFN0cmluZy5nZXQoKSk7CisgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQ
SGVhZGVyRmllbGRWYWx1ZShjZlJlcXVlc3QuZ2V0KCksIENGU1RSKCJDb250ZW50LUxlbmd0aCIp
LCBsZW5ndGhTdHJpbmcuZ2V0KCkpOwogICAgICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2UgcmVx
dWVzdCBpcyBhbHJlYWR5IG1hcmtlZCB1cGRhdGVkLCB3ZSBuZWVkIHRvIGtlZXAgaXQgdXAgdG8g
ZGF0ZSB0b28uCiAgICAgICAgICAgICBBU1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsK
ICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRMZW5ndGgsIGxlbmd0aFN0cmluZy5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBt
X2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1v
dmUoY2ZSZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkKQEAgLTM1NSwxMCArMzU1LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpz
ZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQog
ewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwogCi0gICAgYXV0byBjZlJlcXVlc3QgPSBD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7CisgICAg
YXV0byBjZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAs
IG1fY2ZSZXF1ZXN0LmdldCgpKSk7CiAgICAgaWYgKHN0b3JhZ2VTZXNzaW9uKQotICAgICAgICBf
Q0ZVUkxSZXF1ZXN0U2V0U3RvcmFnZVNlc3Npb24oY2ZSZXF1ZXN0LCBzdG9yYWdlU2Vzc2lvbik7
Ci0gICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7CisgICAgICAgIF9DRlVSTFJl
cXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJlcXVlc3QuZ2V0KCksIHN0b3JhZ2VTZXNzaW9uKTsK
KyAgICBtX2NmUmVxdWVzdCA9IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAogI2VuZGlmIC8vIFVT
RShDRlVSTENPTk5FQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpp
bmRleCA4MGJkNjZkNzhkNDFhNzUwYTI2MGVlYmM5ZjY3ZjRiY2I2ZmJlMjExLi44NjRiYjk5NzMx
MDg5YzIzNjVlYjE1ZDkzYTI5Y2ZlMzFmODQ4MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBDb29raWVTdG9yYWdlT2JzZXJ2ZXIm
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZU9ic2VydmVyKCkgY29uc3QKICAg
ICByZXR1cm4gKm1fY29va2llU3RvcmFnZU9ic2VydmVyOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVy
LCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCitS
ZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKIHsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVy
dHlLZXlzW10gPSB7IF9rQ0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJpdmF0ZSB9OwogICAgIGNvbnN0
IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eVZhbHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwpAQCAt
MjEwLDcgKzIxMCw3IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvCiAgICAgLy8gRklYTUU6IFVz
ZSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQgd2hlbiBVU0UoQ0ZORVRXT1JLKSBpcyBk
ZWZpbmVkIGluIFdlYktpdCBmb3IgY29uc2lzdGVuY3kuCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBuc0Nvb2tpZUFjY2Vw
dFBvbGljeSk7CiAKLSAgICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOworICAgIHJl
dHVybiBzdG9yYWdlU2Vzc2lvbjsKIH0KIAogUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9y
YWdlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCmluZGV4IDQ1NWE3YTYyY2MxMjQxNjBj
ZDhiZTkyZDc0OTMxMjNiYTY4NmU0ZmYuLjM1Nzc0MGYyMjU2Zjk4OTBiYTcxYTM2MzhlZjU3MDdl
NzFhOWQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KQEAgLTM5LDcgKzM5LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gPHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBSZWdpc3Rl
ciAubWpzIGZpbGVzIGFzIHdoYXRldmVyIFVUSSBpbmRpY2F0ZXMgSmF2YVNjcmlwdAotc3RhdGlj
IENGRGljdGlvbmFyeVJlZiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKK3N0YXRpYyBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkK
IHsKICAgICBDRlN0cmluZ1JlZiBrZXlzW10gPSB7CiAgICAgICAgIENGU1RSKCJtanMiKQpAQCAt
NTAsNyArNTAsNyBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlN
RVR5cGVNYXAoKQogICAgIH07CiAKICAgICBBU1NFUlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2
YWx1ZXMpKTsKLSAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtl
eXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtl
eXMsIChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5n
UmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOwogfQogCiB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKQEAgLTY2
LDExICs2NiwxMSBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAgICAgICBpZiAoWyhfX2Jy
aWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwp
KTsKICAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMg
Q0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVN
YXAoKTsKLSAgICAgICAgICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0YWJsZUV4dGVuc2lv
biA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0
ZW5zaW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxl
RXh0ZW5zaW9uLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBhZG9wdENGKG11
dGFibGVFeHRlbnNpb24pOwotICAgICAgICAgICAgICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0g
KENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5zaW9u
LmdldCgpKSkKKyAgICAgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4+IGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5
cGVNYXAoKTsKKyAgICAgICAgICAgICAgICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5z
aW9uLmdldCgpKSk7CisgICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4
dGVuc2lvbi5nZXQoKSwgTlVMTCk7CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RGTW92
ZShtdXRhYmxlRXh0ZW5zaW9uKTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlw
ZSA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAuZ2V0KCku
Z2V0KCksIGV4dGVuc2lvbi5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRNSU1F
VHlwZSA9IG5ld01JTUVUeXBlOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UubW0KaW5kZXggYmIxMTZhOWRmZjNlODAyNDllM2MxZmYxMGVlOTEyOWM3MDU2ZmQxNS4uNGZh
NTBlNDZiMDk0OTZjZGVlMDczOTY0NWM4NGYxZDdhNDY5ZmZjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bQpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBXaGVuIHdlIGRpc2Fi
bGVkIGNvbnRlbnQgc25pZmZpbmcgZm9yIGZpbGUgVVJMcyB3ZSBjYXVzZWQgcHJvYmxlbXMgd2l0
aCB0aGVzZSAxMDArIGV4dGVuc2lvbnMgdGhhdCBDb3JlVHlwZXMKIC8vIGRvZXNuJ3Qga25vdyBh
Ym91dC4KIC8vIElmIENvcmVUeXBlcyBpcyBldmVyIGJyb3VnaHQgdXAgdG8gc3BlZWQgd2UgY2Fu
IHJlbW92ZSB0aGlzIHRhYmxlIGFuZCBhc3NvY2lhdGVkIGNvZGUuCi1zdGF0aWMgQ0ZEaWN0aW9u
YXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewogICAgIENG
U3RyaW5nUmVmIGtleXNbXSA9IHsKICAgICAgICAgQ0ZTVFIoImFpIiksCkBAIC0yODgsNyArMjg4
LDcgQEAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFw
KCkKICAgICB9OwogCiAgICAgQVNTRVJUKHNpemVvZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7
Ci0gICAgcmV0dXJuIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKS9zaXpl
b2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0
IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNl
UmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKQpAQCAtMzA0LDExICszMDQs
MTEgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZS
ZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUwKICAgICAgICAgICAgIGlmIChleHRlbnNpb24p
IHsKICAgICAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVz
IFVUSSBtYXAgaXMgbWlzc2luZyAxMDArIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIg
a25ldyBhYm91dAogICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhpcyByYWRhciBpcyByZXNvbHZl
ZCwgd2UgY2FuIHJlbW92ZSB0aGlzIGZpbGU6Ly8gdXJsIHNwZWNpZmljIGNvZGUuCi0gICAgICAg
ICAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRl
bnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0gICAgICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVm
IG11dGFibGVFeHRlbnNpb24gPSBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdM
b3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbiwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5z
aW9uID0gYWRvcHRDRihtdXRhYmxlRXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICByZXN1bHQg
PSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNp
b24uZ2V0KCkpOworICAgICAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gZXh0ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1F
VHlwZU1hcCgpOworICAgICAgICAgICAgICAgIGF1dG8gbXV0YWJsZUV4dGVuc2lvbiA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRl
bnNpb24uZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxl
RXh0ZW5zaW9uLmdldCgpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBXVEZN
b3ZlKG11dGFibGVFeHRlbnNpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDRlN0cmlu
Z1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVu
c2lvbi5nZXQoKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIEdhdGVrZWVwZXItYmFzZWQgbWFw
IGRvZXNuJ3QgaGF2ZSBhIE1JTUUgdHlwZSwgd2UnbGwgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCBp
dCBzaG91bGQgYmUgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0KaW5kZXggNWYzNmQwODMxNDg2YzlkOWU0ZmM5M2I5YmRmMWQ2MTc3
YzIwZTY0MC4uYTU2MThmZTBjZDY5Zjg2MTg1ZDc4YjBlNjM5ZGQ5YTI4YWZkMjNiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0K
QEAgLTcxLDIzICs3MSwyMyBAQCBzdGF0aWMgYm9vbCBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFj
dGVyKFVDaGFyMzIgY2hhcmFjdGVyKQogCiBzdGF0aWMgQ0ZTdHJpbmdUb2tlbml6ZXJSZWYgdG9r
ZW5pemVyRm9yU3RyaW5nKENGU3RyaW5nUmVmIHN0cikKIHsKLSAgICBzdGF0aWMgQ0ZMb2NhbGVS
ZWYgbG9jYWxlID0gbnVsbHB0cjsKLSAgICBpZiAoIWxvY2FsZSkgeworICAgIHN0YXRpYyBhdXRv
IGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHRl
bXAgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjdXJyZW50TG9jYWxlSUQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVz
Tm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
Pih0ZW1wKSwgc3RybGVuKHRlbXApLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NG
QWxsb2NhdG9yTnVsbCkpOwotICAgICAgICBsb2NhbGUgPSBDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQuZ2V0KCkpOwotICAgICAgICBpZiAoIWxvY2Fs
ZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICAgICAgYXV0byBjdXJy
ZW50TG9jYWxlSUQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZW1wKSwgc3Ry
bGVuKHRlbXApLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVs
bCkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQuZ2V0KCkpKTsKKyAgICB9KCkpOworCisgICAgaWYgKCFs
b2NhbGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ0ZSYW5nZSBlbnRp
cmVSYW5nZSA9IENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKHN0cikpOyAgICAKIAot
ICAgIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXIgPSBudWxscHRyOwotICAg
IGlmICghdG9rZW5pemVyKQotICAgICAgICB0b2tlbml6ZXIgPSBDRlN0cmluZ1Rva2VuaXplckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZTdHJpbmdUb2tl
bml6ZXJVbml0V29yZEJvdW5kYXJ5LCBsb2NhbGUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZTdHJpbmdUb2tlbml6ZXJSZWY+PiB0b2tlbml6ZXI7CisgICAgaWYgKCF0
b2tlbml6ZXIuZ2V0KCkpCisgICAgICAgIHRva2VuaXplci5nZXQoKSA9IGFkb3B0Q0YoQ0ZTdHJp
bmdUb2tlbml6ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyLCBlbnRpcmVSYW5nZSwg
a0NGU3RyaW5nVG9rZW5pemVyVW5pdFdvcmRCb3VuZGFyeSwgbG9jYWxlLmdldCgpLmdldCgpKSk7
CiAgICAgZWxzZQotICAgICAgICBDRlN0cmluZ1Rva2VuaXplclNldFN0cmluZyh0b2tlbml6ZXIs
IHN0ciwgZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiB0b2tlbml6ZXI7CisgICAgICAgIENGU3Ry
aW5nVG9rZW5pemVyU2V0U3RyaW5nKHRva2VuaXplci5nZXQoKS5nZXQoKSwgc3RyLCBlbnRpcmVS
YW5nZSk7CisgICAgcmV0dXJuIHRva2VuaXplci5nZXQoKS5nZXQoKTsKIH0KIAogLy8gU2ltcGxl
IGNhc2U6IEEgd29yZCBpcyBhIHN0cmVhbSBvZiBjaGFyYWN0ZXJzIGRlbGltaXRlZCBieSBhIHNw
ZWNpYWwgc2V0IG9mIHdvcmQtZGVsaW1pdGluZyBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggNGQ4YzVjNjA2ZDVjNTU4
N2YyYzk1YWYyZGE2YmZkYmYwMjY5ZGM5NC4uMzA0YjFmZDJhZGU4YTc0NzI2ZTJmNThjODIyNTEx
MTVlNGIwNTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCkBAIC01NywxMyArNTcsMTEgQEAgR0RJT2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1h
Z2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENHQ29udGV4dFJlZiAqdGFyZ2V0UmVmKQogICAgIGlm
ICghdGFyZ2V0UmVmIHx8ICFoYm1wKQogICAgICAgICByZXR1cm4gaGJtcDsKIAotICAgIENHQ29u
dGV4dFJlZiBiaXRtYXBDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcElu
Zm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJtcEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtcElu
Zm8uYm1pSGVhZGVyLmJpV2lkdGggKiA0LCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8g
Yml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcElu
Zm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJtcEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LCBibXBJ
bmZvLmJtaUhlYWRlci5iaVdpZHRoICogNCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAgIGlm
ICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuIEdESU9iamVjdDxIQklUTUFQPigpOwog
Ci0gICAgKnRhcmdldFJlZiA9IGJpdG1hcENvbnRleHQ7CisgICAgKnRhcmdldFJlZiA9IGJpdG1h
cENvbnRleHQubGVha1JlZigpOwogICAgIHJldHVybiBoYm1wOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNzVkODExN2YzOGRjMWVjMDQxNTFm
MTgzN2QzN2RhMWFlZWU1NmY5MC4uYWRlNjE5Mjk4MDU3MDRlNjk5ZjliOTUyMTZiYjU5OWI2YTQz
MmI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAt
MTUyLDM2ICsxNTIsMjUgQEAgc3RhdGljIHZvaWQgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdyYWRp
ZW50KHZvaWQgKmluZm8sIGNvbnN0IENHRmxvYXQgKmluRGF0YSwgQ0cKIAogc3RhdGljIENHRnVu
Y3Rpb25SZWYgZ2V0U2hhcmVkRnVuY3Rpb25SZWYoSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIElu
dGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBDR0Z1bmN0aW9uUmVmIGZ1bmN0aW9u
ID0gbnVsbHB0cjsKLQotICAgIHN0YXRpYyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0
aW9uUmVmPiogbGluZWFyRnVuY3Rpb25SZWZzOwotICAgIHN0YXRpYyBIYXNoTWFwPElPU0dyYWRp
ZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiogZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIFJldGFpblB0cjxDR0Z1
bmN0aW9uUmVmPj4+IGxpbmVhckZ1bmN0aW9uUmVmczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+Pj4gZXhw
b25lbnRpYWxGdW5jdGlvblJlZnM7CiAKICAgICBpZiAoaW50ZXJwb2xhdGlvbiA9PSBMaW5lYXJJ
bnRlcnBvbGF0aW9uKSB7Ci0gICAgICAgIGlmICghbGluZWFyRnVuY3Rpb25SZWZzKQotICAgICAg
ICAgICAgbGluZWFyRnVuY3Rpb25SZWZzID0gbmV3IEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENH
RnVuY3Rpb25SZWY+OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdW5jdGlvbiA9IGxpbmVh
ckZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKLSAgICAKKyAgICAgICAgYXV0byBmdW5jdGlv
biA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKICAgICAgICAgaWYgKCFmdW5j
dGlvbikgewogICAgICAgICAgICAgc3RhdGljIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGxp
bmVhckZ1bmN0aW9uQ2FsbGJhY2tzID0gIHsgMCwgaW50ZXJwb2xhdGVMaW5lYXJHcmFkaWVudCwg
MCB9OwotICAgICAgICAgICAgbGluZWFyRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0
aW9uID0gQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwg
JmxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJl
ZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoZ3Jh
ZGllbnQsIDEsIG51bGxwdHIsIDQsIG51bGxwdHIsICZsaW5lYXJGdW5jdGlvbkNhbGxiYWNrcykp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uLmdldCgpOwogICAgIH0KIAotICAgIGlmICghZXhwb25lbnRpYWxGdW5jdGlvblJl
ZnMpCi0gICAgICAgIGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzID0gbmV3IEhhc2hNYXA8SU9TR3Jh
ZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+OwotICAgIGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBl
eHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKLQorICAgIGF1dG8gZnVuY3Rp
b24gPSBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKICAgICBpZiAoIWZ1
bmN0aW9uKSB7CiAgICAgICAgIHN0YXRpYyBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBleHBv
bmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tzID0gIHsgMCwgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdy
YWRpZW50LCAwIH07Ci0gICAgICAgIGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGll
bnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgMCwgNCwgMCwgJmV4
cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFja3MpKTsKKyAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlv
blJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUo
Z3JhZGllbnQsIDEsIDAsIDQsIDAsICZleHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwog
ICAgIH0KLQotICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICByZXR1cm4gZnVuY3Rpb24uZ2V0KCk7
CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdBeGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0
LCBJT1NHcmFkaWVudFJlZiBncmFkaWVudCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwg
Y29uc3QgRmxvYXRQb2ludCYgc3RvcFBvaW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1w
U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0Lm1tCmluZGV4IGJlNjYwNzhhODNkMGNhNDliNzFhMWZiNTNjMjNhOGM2YjgxZDc2N2Uu
LjVhOWJiYzcxNWM5ZTVjODQzYWFmMmI5MTVkZDg4ZjcyZWZhMTllZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBA
IC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZVRlc3RTdXBwb3J0IHsKIAotc3RhdGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxS
ZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKK3N0YXRpYyBS
ZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25z
ZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKIHsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXJlc3BvbnNl
RGF0YSBlcnJvcjpudWxscHRyXSk7CkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBDRlVSTFJlc3Bv
bnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNw
b25zZURhCiAgICAgfQogCiAgICAgaWYgKCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQ
VVJMUmVzcG9uc2UgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3BvbnNlLlVSTCwgKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLk1JTUVUeXBlLCByZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXNwb25zZS50ZXh0RW5jb2RpbmdO
YW1lLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxS
ZWYpcmVzcG9uc2UuVVJMLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5cGUs
IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUsIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKIAog
ICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2Ug
KilyZXNwb25zZTsKIApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBj
cmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYQog
ICAgIGZvciAoTlNTdHJpbmcgKmhlYWRlckZpZWxkIGluIFtoZWFkZXJGaWVsZHMga2V5RW51bWVy
YXRvcl0pCiAgICAgICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKGh0dHBNZXNz
YWdlLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpaGVhZGVyRmllbGQsIChfX2JyaWRnZSBD
RlN0cmluZ1JlZilbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpoZWFkZXJGaWVsZF0pOwogCi0g
ICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdl
dCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVS
TFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJMQ2Fj
aGVTdG9yYWdlQWxsb3dlZCkpOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0TUlNRVR5cGUoQ0ZN
dXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBlKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lk
IGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcHJvcGVyCiAgICAgaWYgKENGR2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRh
R2V0VHlwZUlEKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlc3Bv
bnNlUmVmPiByZXNwb25zZSA9IGFkb3B0Q0YoY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25z
ZURhdGEocmVzcG9uc2VEYXRhKSk7CisgICAgYXV0byByZXNwb25zZSA9IGNyZWF0ZUNGVVJMUmVz
cG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJlc3BvbnNlRGF0YSk7CiAgICAgaWYgKCFyZXNwb25zZSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFhOWY3MTlkNjUxZmE4YWVkMTlmNmVmZjA1MTU3ZjA5NTJk
YmVlMTEuLmM1MzdlYTI4ZDkxYzUwNWEyNThiOWM4MDZlN2U4M2NlMmNmNDBlNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00NTEs
NyArNDUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4gTmV0d29ya1Byb2Nlc3M6Om5ld1Rlc3RpbmdTZXNzaW8KICAgICAvLyBTZXNzaW9uIG5hbWUg
c2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBi
ZSB1bmRlciB0aGUgbGltaXQsIG90aGVyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNl
ZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBt
YWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0gICAg
YXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Np
b24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vzc2lv
biA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Np
b25JRCwgYm9vbCBzaG91bGRVCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+
IHN0b3JhZ2VTZXNzaW9uOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVy
ID0gbWFrZVN0cmluZyhpZGVudGlmaWVyQmFzZSwgIi5Qcml2YXRlQnJvd3NpbmcuIiwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpKS5jcmVhdGVDRlN0cmluZygpOwogICAgIGlmIChzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKGNyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3Rv
cmFnZVNlc3Npb24gPSBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdl
dCgpKTsKICAgICBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKGNmSWRlbnRp
Zmllci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCBmYTQyMzM0ZWMwY2ExYWQwNTAyM2VjYmY3OGQxMzFkMDFiM2VmMzZmLi4w
Nzk5MTVlMmI0YzM5YTgxYzI0ODhlYjlhY2E0ODhmYjExNDNkYzI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC01NSw2ICs1NSw3IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL09T
T2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKQEAgLTU1Nyw3ICs1NTgsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBX
ZSdkIGxpa2UgdG8gYmUgYWJsZSB0byBkbyB0aGlzIHdpdGhvdXQgdGhlICNpZmRlZiwgYnV0IFdv
cmtRdWV1ZSArIEJpbmFyeVNlbWFwaG9yZSBpc24ndCBnb29kIGVub3VnaCBzaW5jZQogICAgIC8v
IG11bHRpcGxlIHJlcXVlc3RzIHRvIGNsZWFyIHRoZSBjYWNoZSBjYW4gY29tZSBpbiBiZWZvcmUg
cHJldmlvdXMgcmVxdWVzdHMgY29tcGxldGUsIGFuZCB3ZSBuZWVkIHRvIHdhaXQgZm9yIGFsbCBv
ZiB0aGVtLgogICAgIC8vIEluIHRoZSBmdXR1cmUgdXNpbmcgV29ya1F1ZXVlIGFuZCBhIGNvdW50
aW5nIHNlbWFwaG9yZSB3b3VsZCB3b3JrLCBhcyB3b3VsZCBXb3JrUXVldWUgc3VwcG9ydGluZyB0
aGUgbGliZGlzcGF0Y2ggY29uY2VwdCBvZiAid29yayBncm91cHMiLgotICAgIGRpc3BhdGNoX2dy
b3VwX3QgbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCB7IG51bGxwdHIgfTsKKyAgICBPU09iamVj
dFB0cjxkaXNwYXRjaF9ncm91cF90PiBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4
IDYwYWY5M2RkZjUxZGU3OTAzMjY0NTQ2YzZiMDM0YmExYjViYTU3MmUuLjVmYmU4MWQ2ODZiOWM3
NGQ3ZGViOTY4NTY0MDM4MTNmZTY3ZWRmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTE5MSw5
ICsxOTEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIG1vZGlmaWVkUwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jbGVhckNhY2hlRGlz
cGF0Y2hHcm91cCkKLSAgICAgICAgbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCA9IGRpc3BhdGNo
X2dyb3VwX2NyZWF0ZSgpOworICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gYWRv
cHRPU09iamVjdChkaXNwYXRjaF9ncm91cF9jcmVhdGUoKSk7CiAKLSAgICBhdXRvIGdyb3VwID0g
bV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cDsKKyAgICBhdXRvIGdyb3VwID0gbV9jbGVhckNhY2hl
RGlzcGF0Y2hHcm91cC5nZXQoKTsKICAgICBkaXNwYXRjaF9ncm91cF9hc3luYyhncm91cCwgZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWVkU2luY2UsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBhdXRvIGFnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbbW9kaWZpZWRTaW5jZSwgJmFn
Z3JlZ2F0b3JdKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IGI1ZTBk
MWEzZDUxMjUzYTUwMDNkZTY1ZTU4Njk3OWU0ZDhjMmQwODAuLmIwZjlhNTliYjJjMDgzNzg1Yzg1
OWNiNzAxNTkxOGEzYTY0MTE2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCkBAIC05Nyw5ICs5Nyw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVRlcm1pbmF0
ZSgpCiB7CiAgICAgaWYgKG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXApIHsKLSAgICAgICAgZGlz
cGF0Y2hfZ3JvdXBfd2FpdChtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwLCBESVNQQVRDSF9USU1F
X0ZPUkVWRVIpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fY2xlYXJDYWNoZURpc3BhdGNo
R3JvdXApOwotICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gMDsKKyAgICAgICAg
ZGlzcGF0Y2hfZ3JvdXBfd2FpdChtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwLmdldCgpLCBESVNQ
QVRDSF9USU1FX0ZPUkVWRVIpOworICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0g
bnVsbHB0cjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAppbmRleCA0ZjZiMTg0ZmY0MGQ5OTI4OGViNjA2MGE3YzU4ODZiMzczNmM0YjgzLi5kOWI1MzAz
MzU4ZDY0Nzg2NmM5YWI2YTU3Y2MxN2JkZWE5NDJmOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oCkBAIC00NTgsMTAgKzQ1OCwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2FuY2VsUmVjZWl2ZVNvdXJjZSgpOwogCiAgICAgbWFjaF9wb3J0X3QgbV9zZW5kUG9ydCB7
IE1BQ0hfUE9SVF9OVUxMIH07Ci0gICAgZGlzcGF0Y2hfc291cmNlX3QgbV9zZW5kU291cmNlIHsg
bnVsbHB0ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3NvdXJjZV90PiBtX3NlbmRTb3Vy
Y2U7CiAKICAgICBtYWNoX3BvcnRfdCBtX3JlY2VpdmVQb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsK
LSAgICBkaXNwYXRjaF9zb3VyY2VfdCBtX3JlY2VpdmVTb3VyY2UgeyBudWxscHRyIH07CisgICAg
T1NPYmplY3RQdHI8ZGlzcGF0Y2hfc291cmNlX3Q+IG1fcmVjZWl2ZVNvdXJjZTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gbV9wZW5kaW5nT3V0Z29pbmdNYWNoTWVzc2FnZTsK
ICAgICBib29sIG1faXNJbml0aWFsaXppbmdTZW5kU291cmNlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRl
eCA4ZDljZGUwOGY0NjcxNDFhOTBkOGVhZjlkZDc4NWI3OTAzOGQ1OGVlLi45MGJkZjI0ODc2MjQ5
Y2VmMTcxYmM5MmQ3NjZlNzRlMDJkNDE4NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0xNDcsOCArMTQ3LDcgQEAg
dm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIEFTU0VSVChtX3JlY2Vp
dmVQb3J0KTsKIAogICAgIC8vIFVucmVnaXN0ZXIgb3VyIHBvcnRzLgotICAgIGRpc3BhdGNoX3Nv
dXJjZV9jYW5jZWwobV9zZW5kU291cmNlKTsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VuZFNv
dXJjZSk7CisgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3NlbmRTb3VyY2UuZ2V0KCkpOwog
ICAgIG1fc2VuZFNvdXJjZSA9IG51bGxwdHI7CiAgICAgbV9zZW5kUG9ydCA9IE1BQ0hfUE9SVF9O
VUxMOwogCkBAIC0xNTcsOCArMTU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFs
aWRhdGUoKQogCiB2b2lkIENvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UoKQogewotICAg
IGRpc3BhdGNoX3NvdXJjZV9jYW5jZWwobV9yZWNlaXZlU291cmNlKTsKLSAgICBkaXNwYXRjaF9y
ZWxlYXNlKG1fcmVjZWl2ZVNvdXJjZSk7CisgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3Jl
Y2VpdmVTb3VyY2UuZ2V0KCkpOwogICAgIG1fcmVjZWl2ZVNvdXJjZSA9IG51bGxwdHI7CiAgICAg
bV9yZWNlaXZlUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogfQpAQCAtMjMwLDExICsyMjgsMTEgQEAg
Ym9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAvLyBDaGFuZ2UgdGhlIG1lc3NhZ2UgcXVldWUg
bGVuZ3RoIGZvciB0aGUgcmVjZWl2ZSBwb3J0LgogICAgIHNldE1hY2hQb3J0UXVldWVMZW5ndGgo
bV9yZWNlaXZlUG9ydCwgTUFDSF9QT1JUX1FMSU1JVF9MQVJHRSk7CiAKLSAgICBtX3JlY2VpdmVT
b3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01BQ0hf
UkVDViwgbV9yZWNlaXZlUG9ydCwgMCwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUo
KSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJj
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CisgICAgbV9yZWNl
aXZlU291cmNlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENI
X1NPVVJDRV9UWVBFX01BQ0hfUkVDViwgbV9yZWNlaXZlUG9ydCwgMCwgbV9jb25uZWN0aW9uUXVl
dWUtPmRpc3BhdGNoUXVldWUoKSkpOworICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFu
ZGxlcihtX3JlY2VpdmVTb3VyY2UuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKV0gewogICAgICAgICByZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCk7CiAgICAg
fSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3JlY2VpdmVTb3Vy
Y2UsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgcmVjZWl2ZVBvcnQgPSBtX3Jl
Y2VpdmVQb3J0XSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3Jl
Y2VpdmVTb3VyY2UuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgcmVj
ZWl2ZVBvcnQgPSBtX3JlY2VpdmVQb3J0XSB7CiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAg
ICAgIG1hY2hfcG9ydF91bmd1YXJkKG1hY2hfdGFza19zZWxmKCksIHJlY2VpdmVQb3J0LCByZWlu
dGVycHJldF9jYXN0PG1hY2hfcG9ydF9jb250ZXh0X3Q+KHByb3RlY3RlZFRoaXMuZ2V0KCkpKTsK
ICNlbmRpZgpAQCAtMjQzLDEwICsyNDEsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKIAog
ICAgIHJlZigpOwogICAgIGRpc3BhdGNoX2FzeW5jKG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRj
aFF1ZXVlKCksIF57Ci0gICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3JlY2VpdmVTb3VyY2UpOwor
ICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9yZWNlaXZlU291cmNlLmdldCgpKTsKIAogICAgICAg
ICBpZiAobV9zZW5kU291cmNlKQotICAgICAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2VuZFNv
dXJjZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5kU291cmNlLmdldCgpKTsK
IAogICAgICAgICBkZXJlZigpOwogICAgIH0pOwpAQCAtMzcxLDIwICszNjksMjAgQEAgYm9vbCBD
b25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29k
ZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRTb3VyY2UoKQogewotICAgIG1f
c2VuZFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVf
TUFDSF9TRU5ELCBtX3NlbmRQb3J0LCBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCB8IERJU1BBVENI
X01BQ0hfU0VORF9QT1NTSUJMRSwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSk7
CisgICAgbV9zZW5kU291cmNlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9zb3VyY2VfY3JlYXRl
KERJU1BBVENIX1NPVVJDRV9UWVBFX01BQ0hfU0VORCwgbV9zZW5kUG9ydCwgRElTUEFUQ0hfTUFD
SF9TRU5EX0RFQUQgfCBESVNQQVRDSF9NQUNIX1NFTkRfUE9TU0lCTEUsIG1fY29ubmVjdGlvblF1
ZXVlLT5kaXNwYXRjaFF1ZXVlKCkpKTsKICAgICBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSA9
IHRydWU7CiAKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lzdHJhdGlvbl9oYW5kbGVyKG1f
c2VuZFNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7Cisg
ICAgZGlzcGF0Y2hfc291cmNlX3NldF9yZWdpc3RyYXRpb25faGFuZGxlcihtX3NlbmRTb3VyY2Uu
Z2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0gewogICAgICAg
ICBpZiAoIW1fc2VuZFNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pc0lu
aXRpYWxpemluZ1NlbmRTb3VyY2UgPSBmYWxzZTsKICAgICAgICAgcmVzdW1lU2VuZFNvdXJjZSgp
OwogICAgIH0pOwotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihtX3NlbmRT
b3VyY2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0geworICAgIGRp
c3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0gewogICAgICAgICBpZiAoIW1fc2Vu
ZFNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB1bnNpZ25lZCBsb25nIGRh
dGEgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEobV9zZW5kU291cmNlKTsKKyAgICAgICAgdW5z
aWduZWQgbG9uZyBkYXRhID0gZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKG1fc2VuZFNvdXJjZS5n
ZXQoKSk7CiAKICAgICAgICAgaWYgKGRhdGEgJiBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCkgewog
ICAgICAgICAgICAgY29ubmVjdGlvbkRpZENsb3NlKCk7CkBAIC00MDAsNyArMzk4LDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNvdXJjZSgpCiAKICAgICBpZiAoTUFDSF9QT1JU
X1ZBTElEKG1fc2VuZFBvcnQpKSB7CiAgICAgICAgIG1hY2hfcG9ydF90IHNlbmRQb3J0ID0gbV9z
ZW5kUG9ydDsKLSAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3Nl
bmRTb3VyY2UsIF57CisgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfY2FuY2VsX2hhbmRsZXIo
bV9zZW5kU291cmNlLmdldCgpLCBeewogICAgICAgICAgICAgLy8gUmVsZWFzZSBvdXIgc2VuZCBy
aWdodC4KICAgICAgICAgICAgIGRlYWxsb2NhdGVTZW5kUmlnaHRTYWZlbHkoc2VuZFBvcnQpOwog
ICAgICAgICB9KTsKQEAgLTU4MCw3ICs1NzgsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVT
b3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICAgICAgICAgIGRlYWxsb2NhdGVTZW5kUmlnaHRT
YWZlbHkocHJldmlvdXNOb3RpZmljYXRpb25Qb3J0KTsKIAogICAgICAgICAgICAgaW5pdGlhbGl6
ZVNlbmRTb3VyY2UoKTsKLSAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3NlbmRTb3VyY2Up
OworICAgICAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2VuZFNvdXJjZS5nZXQoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KaW5kZXggNWI2
ODg0YmZmMjlmOGY0ZjhkZGFjMzVlZWZjZWU4MmU4NWQ1YzI5My4uNTg3NjA5MDYwOGQ5YWZjODhl
MzQxYzVkZmY3M2Y1YjMxMGVmYTg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KQEAgLTMxLDYgKzMxLDggQEAKICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1ZlcnNpb25DaGVja3MuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8
d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgpAQCAtMTE5LDcgKzEyMSwxMSBAQCBzdGF0aWMgYm9v
bCBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGJvb2wgYXBwV2FzTGlua2VkT25PckFmdGVyLCBj
b25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdCAhPSBrVENDQWNjZXNzUHJlZmxpZ2h0RGVu
aWVkOwogfQogCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnX2l0cFF1ZXVlOworc3RhdGljIE9T
T2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+JiBpdHBRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+PiBpdHBRdWV1ZTsKKyAg
ICByZXR1cm4gaXRwUXVldWU7Cit9CiAKIHZvaWQgZGV0ZXJtaW5lSVRQU3RhdGUoKQogewpAQCAt
MTMwLDE0ICsxMzYsMTMgQEAgdm9pZCBkZXRlcm1pbmVJVFBTdGF0ZSgpCiAgICAgZ19jdXJyZW50
SVRQU3RhdGUgPSBJVFBTdGF0ZTo6SW5pdGlhbGl6aW5nOwogICAgIGJvb2wgYXBwV2FzTGlua2Vk
T25PckFmdGVyID0gbGlua2VkT25PckFmdGVyKFdlYkNvcmU6OlNES1ZlcnNpb246OkZpcnN0V2l0
aFNlc3Npb25DbGVhbnVwQnlEZWZhdWx0KTsKIAotICAgIGdfaXRwUXVldWUgPSBkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuaXRwQ2hlY2tRdWV1ZSIsIE5VTEwpOworICAg
IGl0cFF1ZXVlKCkgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFw
cGxlLldlYktpdC5pdHBDaGVja1F1ZXVlIiwgTlVMTCkpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMo
Z19pdHBRdWV1ZSwgW2FwcFdhc0xpbmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllciA9IFdl
YkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgZGlzcGF0Y2hfYXN5bmMoaXRwUXVldWUoKS5nZXQoKSwgW2FwcFdhc0xpbmtlZE9uT3JBZnRl
ciwgYnVuZGxlSWRlbnRpZmllciA9IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigpLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGdfY3VycmVudElUUFN0YXRlID0gZGV0ZXJt
aW5lSVRQU3RhdGVJbnRlcm5hbChhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZp
ZXIpID8gSVRQU3RhdGU6OkVuYWJsZWQgOiBJVFBTdGF0ZTo6RGlzYWJsZWQ7CiAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX3JlbGVh
c2UoZ19pdHBRdWV1ZSk7Ci0gICAgICAgICAgICBnX2l0cFF1ZXVlID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGl0cFF1ZXVlKCkgPSBudWxscHRyOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAg
LTE0OSwxMCArMTU0LDEwIEBAIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFibGVkKCkKICAgICBpZiAo
Z19jdXJyZW50SVRQU3RhdGUgPiBJVFBTdGF0ZTo6SW5pdGlhbGl6aW5nKQogICAgICAgICByZXR1
cm4gZ19jdXJyZW50SVRQU3RhdGUgPT0gSVRQU3RhdGU6OkVuYWJsZWQ7CiAKLSAgICBSRUxFQVNF
X0FTU0VSVChnX2l0cFF1ZXVlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpdHBRdWV1ZSgpKTsKIAog
ICAgIF9fYmxvY2sgYm9vbCBpc0lUUEVuYWJsZWQ7Ci0gICAgZGlzcGF0Y2hfc3luYyhnX2l0cFF1
ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMoaXRwUXVldWUoKS5nZXQoKSwgXnsKICAgICAgICAg
aXNJVFBFbmFibGVkID0gZ19jdXJyZW50SVRQU3RhdGUgPT0gSVRQU3RhdGU6OkVuYWJsZWQ7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIGlzSVRQRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNl
TWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2Ev
WFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQppbmRleCBhYjA2MzRmMWFjNjU1Mzc3MzQ4MTg1
MDJhOTE0M2QxYWRkMTE0ODM4Li43OGVhZmY0NTIwNDg3Y2MzZGNlMzA1ZTA1NDQxYjE2Yzc3ODE3
NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWlu
Lm1tCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyB2b2lkIHNldEFwcGxlTGFuZ3VhZ2VzUHJlZmVy
ZW5jZSgpCiAKIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rp
b25fdCBwZWVyKQogewotICAgIHN0YXRpYyB4cGNfb2JqZWN0X3QgcHJpb3JpdHlCb29zdE1lc3Nh
Z2UgPSBudWxscHRyOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPU09iamVjdFB0cjx4cGNf
b2JqZWN0X3Q+PiBwcmlvcml0eUJvb3N0TWVzc2FnZTsKIAogICAgIHhwY19jb25uZWN0aW9uX3Nl
dF90YXJnZXRfcXVldWUocGVlciwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9R
VUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50
X2hhbmRsZXIocGVlciwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKQEAgLTExOCwxOSArMTE4LDE4
IEBAIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rpb25fdCBw
ZWVyKQogICAgICAgICAgICAgICAgICAgICBkdXAyKGZkLCBTVERFUlJfRklMRU5PKTsKIAogICAg
ICAgICAgICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
LSAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXJGdW5jdGlvblB0cihwZWVyLCBldmVudCwg
cHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1
bmN0aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKS5nZXQoKSk7
CiAKICAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlKCk7CiAg
ICAgICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgICAgICBpZiAocHJpb3JpdHlCb29zdE1l
c3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgIHhwY19yZWxlYXNlKHByaW9yaXR5Qm9vc3RNZXNz
YWdlKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSA9IG51bGxw
dHI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIExlYWsgYSBib29zdCBvbnRvIHRo
ZSBOZXR3b3JrUHJvY2Vzcy4KICAgICAgICAgICAgIGlmICghc3RyY21wKHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcoZXZlbnQsICJtZXNzYWdlLW5hbWUiKSwgInByZS1ib290c3RyYXAiKSkgewot
ICAgICAgICAgICAgICAgIGFzc2VydCghcHJpb3JpdHlCb29zdE1lc3NhZ2UpOwotICAgICAgICAg
ICAgICAgIHByaW9yaXR5Qm9vc3RNZXNzYWdlID0geHBjX3JldGFpbihldmVudCk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UuZ2V0KCkgPSBldmVudDsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcyhldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMjU4M2M5MzUxYjk3ODRj
NDM5Yjk5ODA5NmM3NzMxZTQzNWQ0MjIzMi4uNmNlZjg3ZjNjNDY0MTc5ZGY3NjYyZmRjMzk5MjNh
MDYxM2UyMWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2Nh
dGUodm9pZCAqcHRyLCB2b2lkICppbmZvKQogICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291
cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIGNyZWF0ZVNoYXJl
YWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQogfQogICAgIAotc3RhdGljIENGQWxsb2NhdG9yUmVm
IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJl
c291cmNlKQorc3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxl
UmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAg
Q0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsCiAgICAgICAgIHJlc291cmNlLApAQCAt
NzYsNyArNzYsNyBAQCBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlU2hhcmVhYmxlUmVzb3Vy
Y2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzbwogICAgICAgICBOVUxMLCAvLyBw
cmVmZXJyZWRTaXplCiAgICAgfTsKIAotICAgIHJldHVybiBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKIH0KICNlbmRpZgogCkBA
IC04NSw4ICs4NSw4IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIoKQogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiB3aGVu
IFNoYXJlZEJ1ZmZlciBpcyBkZWFsbG9jYXRlZC4KIAogI2lmIFVTRShDRikKLSAgICBSZXRhaW5Q
dHI8Q0ZBbGxvY2F0b3JSZWY+IGRlYWxsb2NhdG9yID0gYWRvcHRDRihjcmVhdGVTaGFyZWFibGVS
ZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpKTsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSgpKSwgc3RhdGljX2Nhc3Q8
Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKKyAgICBhdXRvIGRlYWxsb2Nh
dG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKTsKKyAgICBhdXRv
IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKCkpLCBzdGF0aWNf
Y2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwogICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCiAgICAg
R1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9m
dW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IGQwMjQyOTA4ZDRjOWY0ZmZkMTg1YmQ4
ZTFhNTMwNTg5ZGY4YWVlMDMuLjMzN2M5MzY0NzMyODU3ZDI3MTE0Zjk0MDA0Y2NkMmM1MTk5Njgy
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBA
IC01NDEsOCArNTQxLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PENGTnVtYmVyUmVmPiYgcmVzdWx0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NF
UlQoZGF0YVJlZmVyZW5jZS5kYXRhKCkpOwotICAgIENGTnVtYmVyUmVmIG51bWJlciA9IENGTnVt
YmVyQ3JlYXRlKDAsIG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0YSgpKTsKLSAgICByZXN1
bHQgPSBhZG9wdENGKG51bWJlcik7CisgICAgcmVzdWx0ID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZSgwLCBudW1iZXJUeXBlLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSkpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC01ODEsMTEgKzU4MCwxMSBAQCBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiByZXN1bHQpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhUmVmZXJlbmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ0ZTdHJpbmdS
ZWYgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgZGF0YVJlZmVyZW5jZS5kYXRh
KCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpLCBlbmNvZGluZywgZmFsc2UpOworICAgIGF1dG8gc3Ry
aW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCBkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5nLCBmYWxzZSkpOwogICAgIGlmICgh
c3RyaW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBhZG9wdENGKHN0
cmluZyk7CisgICAgcmVzdWx0ID0gV1RGTW92ZShzdHJpbmcpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lv
blN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDYzZTNhZjQxZGEwNTU3OWJiNTQyYTJlNjY3ODg5ODMx
MGU1NWQ5YjguLmEzOTQwNjQ5ZmRiZjJkZWQ0ODRhNGUyNjEwMmI5MjFjYzI4MDc4ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmcuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIE1hbGxvY1B0cjx1aW50OF90
LCBIaXN0b3J5RW50cnlEYXRhRW5jb2Rlck1hbGxvYz4gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnQK
IAogc3RhdGljIFJldGFpblB0cjxDRkRhdGFSZWY+IGVuY29kZVNlc3Npb25IaXN0b3J5RW50cnlE
YXRhKGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUpCiB7Ci0gICAgc3RhdGljIENGQWxsb2Nh
dG9yUmVmIGZhc3RNYWxsb2NEZWFsbG9jYXRvcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPj4gZmFzdE1hbGxvY0RlYWxsb2NhdG9yOwogCiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CkBAIC00MDEsMTMgKzQwMSwxMyBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJl
Zj4gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbQog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgIG51bGxwdHIsIC8vIHByZWZlcnJlZFNpemUKICAg
ICAgICAgfTsKLSAgICAgICAgZmFzdE1hbGxvY0RlYWxsb2NhdG9yID0gQ0ZBbGxvY2F0b3JDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpOworICAgICAgICBmYXN0TWFsbG9jRGVh
bGxvY2F0b3IuZ2V0KCkgPSBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsICZjb250ZXh0KSk7CiAgICAgfSk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZTsKICAg
ICBhdXRvIGJ1ZmZlciA9IGVuY29kZVNlc3Npb25IaXN0b3J5RW50cnlEYXRhKGZyYW1lU3RhdGUs
IGJ1ZmZlclNpemUpOwogCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVz
Tm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5sZWFrUHRyKCksIGJ1ZmZlclNpemUs
IGZhc3RNYWxsb2NEZWFsbG9jYXRvcikpOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0
ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIubGVha1B0cigpLCBi
dWZmZXJTaXplLCBmYXN0TWFsbG9jRGVhbGxvY2F0b3IuZ2V0KCkuZ2V0KCkpKTsKIH0KIAogc3Rh
dGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZURpY3Rpb25hcnkoc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxDRlN0cmluZ1JlZiwgQ0ZUeXBlUmVmPj4ga2V5VmFsdWVQ
YWlycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCmluZGV4IDJkZjIzMzVkOWM1YWRmYWI1YTZi
ZTkyYzljNzdjMjA1N2I2OTllMmEuLmJkZGJiMDg5ZGVlYjVlZmVmMmNlNzJlZjIzZWEzYzk2MDEw
NDAwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpAQCAtMzksNyArMzksNyBAQCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KCkKICAgICBpZiAoIW1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbikgewogICAgICAgICBTdHJpbmcg
c2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXRJblByb2Nlc3NTdG9yYWdlLSIsIGdldEN1
cnJlbnRQcm9jZXNzSUQoKSk7CiAgICAgICAgIGF1dG8gY29va2llQWNjZXB0UG9saWN5ID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29v
a2llQWNjZXB0UG9saWN5KCk7Ci0gICAgICAgIGF1dG8gc3RvcmFnZVNlc3Npb24gPSBhZG9wdENG
KFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBjb29raWVBY2NlcHRQb2xpY3kpKTsKKyAgICAgICAgYXV0byBzdG9y
YWdlU2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9u
TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb29raWVBY2NlcHRQb2xpY3kpOwogICAgICAg
ICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNv
b2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsK
ICAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpLCBXVEZNb3Zl
KHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6Olllcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCAwNjFmMjY2
OThkOGZhY2NhMTM3MTcwNDRlZGEyNjA4NjFjNjg4YWRmLi5kNDgyYjQyZTBjMjU0MTI3N2M5NGE0
NWRmY2ZiNWIwMTk0NTExMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPGF0b21p
Yz4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTU3LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JCYWNraW5nU3RvcmVTd2FwIHsgZmFsc2UgfTsKICAgICBib29s
IG1fZGVmZXJyZWRSZW5kZXJpbmdVcGRhdGVXaGlsZVdhaXRpbmdGb3JCYWNraW5nU3RvcmVTd2Fw
IHsgZmFsc2UgfTsKIAotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9jb21taXRRdWV1ZTsKKyAgICBP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2NvbW1pdFF1ZXVlOwogICAgIFJlZlB0cjxC
YWNraW5nU3RvcmVGbHVzaGVyPiBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyOwogCiAgICAg
SGFzaFNldDxSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IqPiBtX2Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KaW5kZXggOTk5Mjg3MWIxYzAwZTgyMTBjYjY2ZGViZDI4ZWU2YjA4
ZGIxMjRkNS4uYTM4ODEzMzVhNGVmN2RhMGEyOGZiNzYwMmI4YTI5N2E4MDY4NTMzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpA
QCAtNjUsNyArNjUsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgIHdlYlBhZ2UuY29y
ZVBhZ2UoKS0+c2V0dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKICAgICBt
X3Jvb3RMYXllci0+c2V0TmFtZSgiZHJhd2luZyBhcmVhIHJvb3QiKTsKIAotICAgIG1fY29tbWl0
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5Db21taXRRdWV1ZSIsIG51bGxwdHIpOworICAg
IG1fY29tbWl0UXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLkNvbW1p
dFF1ZXVlIiwgbnVsbHB0cikpOwogCiAgICAgLy8gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgd2Ug
Z2V0IGEgdW5pcXVlIERpc3BsYXlSZWZyZXNoTW9uaXRvciBwZXItRHJhd2luZ0FyZWEgKG5lY2Vz
c2FyeSBiZWNhdXNlIERpc3BsYXlSZWZyZXNoTW9uaXRvcgogICAgIC8vIGlzIGRyaXZlbiBieSB0
aGlzIGNsYXNzKSwgZ2l2ZSBlYWNoIHBhZ2UgYSB1bmlxdWUgRGlzcGxheUlEIGRlcml2ZWQgZnJv
bSBXZWJQYWdlJ3MgdW5pcXVlIElELgpAQCAtNzgsMTAgKzc4LDcgQEAgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2Us
IGNvbnN0IFcKICAgICAgICAgc2V0Vmlld0V4cG9zZWRSZWN0KHZpZXdFeHBvc2VkUmVjdCk7CiB9
CiAKLVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEoKQotewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9jb21taXRRdWV1ZSk7Ci19CitSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKCkgPSBkZWZh
dWx0OwogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXROZWVkc0Rpc3BsYXko
KQogewpAQCAtNDEyLDcgKzQwOSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlciA9IGJh
Y2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZS5pZGVudGlm
aWVyKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZs
dXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKKyAgICBkaXNw
YXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLmdldCgpLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdU
Rk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0gewogICAgICAgICBiYWNraW5nU3Rv
cmVGbHVzaGVyLT5mbHVzaCgpOwogCiAgICAgICAgIE1vbm90b25pY1RpbWUgdGltZXN0YW1wID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXgg
YTg2NzFmZjE5NjEwYjYxYmQ2OWRmZjI0ZDU2NmI2YmMyNTBkOWUzZS4uOTVlZjIyOTRhOTc2Zjg0
NGVjM2E0OTVlYmJiZTNiM2ZkOTZhNzRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNw
cApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNo
VG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgLy8gU2Vzc2lvbiBuYW1lIHNob3VsZCBiZSBzaG9y
dCBlbm91Z2ggZm9yIHNoYXJlZCBtZW1vcnkgcmVnaW9uIG5hbWUgdG8gYmUgdW5kZXIgdGhlIGxp
bWl0LCBvdGVocndpc2Ugc2FuZGJveCBydWxlcyB3b24ndCB3b3JrIChzZWUgPHJkYXI6Ly9wcm9i
bGVtLzEzNjQyODUyPikuCiAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2Vi
S2l0IFRlc3QtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKIAotICAgIGF1dG8gc2Vzc2lvbiA9
IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBXZWJDb3JlOjpj
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3Rv
cmFnZTsKICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5
VXNlQ29va2llQVBJKCkpIHsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwg
Y28KIAogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBzdG9yYWdlU2Vzc2lv
bjsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHN0b3JhZ2VTZXNz
aW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVu
dGlmaWVyLmdldCgpKSk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CiAgICAgZWxzZQogICAg
ICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3Jl
YXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoY2ZJZGVudGlmaWVyLmdldCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9T
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmlu
ZGV4IGNiZDUwYjZmY2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJlNDAyODAuLjk3YzM3OWNlZTY2
YjQ5MDg2OTFhZjBkZjFlY2I2NjliZTNiNjVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBv
cnQgPFdlYktpdExlZ2FjeS9XZWJOU1ZpZXdFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2Fj
eS9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU5LDExICs2MCwxMSBAQCBzdGF0aWMgaW50IGNv
bXBhcmVQYWdlUmVjdHMoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICphcnJheSk7CiBzdGF0
aWMgY29uc3QgZmxvYXQgUEFHRV9XSURUSF9JTlNFVCAgICAgPSA0LjAgKiAyLjA7CiBzdGF0aWMg
Y29uc3QgZmxvYXQgUEFHRV9IRUlHSFRfSU5TRVQgICAgPSA0LjAgKiAyLjA7CiAKLXN0YXRpYyBD
R0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUoQ0dGbG9hdCB3aGl0ZSwgQ0dG
bG9hdCBhbHBoYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcldp
dGhEZXZpY2VXaGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQogewotICAgIHN0YXRp
YyBDR0NvbG9yU3BhY2VSZWYgZ3JheVNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3Jh
eSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
Pj4gZ3JheVNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCkpOwog
ICAgIGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1tdID0geyB3aGl0ZSwgYWxwaGEgfTsKLSAgICBy
ZXR1cm4gQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UsIGNvbXBvbmVudHMpOworICAgIHJldHVybiBh
ZG9wdENGKENHQ29sb3JDcmVhdGUoZ3JheVNwYWNlLmdldCgpLmdldCgpLCBjb21wb25lbnRzKSk7
CiB9CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJQREZWaWV3IHsKQEAgLTgzLDE0ICs4NCwxNCBAQCAr
IChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKENHQ29sb3JSZWYpc2hhZG93Q29s
b3IKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBzaGFkb3dDb2xvciA9IGNyZWF0ZUNHQ29sb3JX
aXRoRGV2aWNlV2hpdGUoMCwgMi4wIC8gMyk7Ci0gICAgcmV0dXJuIHNoYWRvd0NvbG9yOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IHNoYWRvd0NvbG9y
ID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKKyAgICByZXR1cm4g
c2hhZG93Q29sb3IuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKENHQ29sb3JSZWYpYmFja2dyb3VuZENv
bG9yCiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgYmFja2dyb3VuZENvbG9yID0gY3JlYXRlQ0dD
b2xvcldpdGhEZXZpY2VXaGl0ZSgyMDQuMCAvIDI1NSwgMSk7Ci0gICAgcmV0dXJuIGJhY2tncm91
bmRDb2xvcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+
PiBiYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDIwNC4wIC8g
MjU1LCAxKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yLmdldCgpLmdldCgpOwogfQogCiAv
LyBUaGlzIGlzIGEgc2VjcmV0IHByb3RvY29sIGZvciBXZWJEYXRhU291cmNlIGFuZCBXZWJGcmFt
ZVZpZXcgdG8gb2ZmZXIgdXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyBkaWZmZXJl
bnQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1lbnRE
aWN0aW9uYXJ5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVtZW50RGlj
dGlvbmFyeS5tbQppbmRleCAxZmI1MThmODc0YjgzZTY0YWZlNWZmNDk4ZDFlZjUxY2UzMTg1ZmM4
Li5hZWI0ZDhmMTZmZGRiMDI1NTEwOGIyYTAwZWI5ZjY3MjE1ZjE3NjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0KQEAg
LTUwLDExICs1MCwxNSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIENG
TXV0YWJsZURpY3Rpb25hcnlSZWYgbG9va3VwVGFibGUgPSBOVUxMOworc3RhdGljIFJldGFpblB0
cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiYgbG9va3VwVGFibGUoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4+IGxvb2t1cFRh
YmxlOworICAgIHJldHVybiBsb29rdXBUYWJsZTsKK30KIAogc3RhdGljIHZvaWQgYWRkTG9va3Vw
S2V5KE5TU3RyaW5nICprZXksIFNFTCBzZWxlY3RvcikKIHsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShsb29rdXBUYWJsZSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgc2VsZWN0b3IpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGxvb2t1cFRhYmxlKCkuZ2V0KCksIChfX2JyaWRnZSBD
RlN0cmluZ1JlZilrZXksIHNlbGVjdG9yKTsKIH0KIAogc3RhdGljIHZvaWQgY2FjaGVWYWx1ZUZv
cktleShjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnZhbHVlLCB2b2lkICpzZWxmKQpAQCAt
NzYsMTAgKzgwLDEwIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogCiArICh2b2lkKWluaXRpYWxpemVM
b29rdXBUYWJsZQogewotICAgIGlmIChsb29rdXBUYWJsZSkKKyAgICBpZiAobG9va3VwVGFibGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbG9va3VwVGFibGUgPSBDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgTlVMTCk7CisgICAgbG9va3VwVGFibGUoKSA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGQ29weVN0cmlu
Z0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsIE5VTEwpKTsKIAogICAgIGFkZExvb2t1cEtleShXZWJF
bGVtZW50RE9NTm9kZUtleSwgQHNlbGVjdG9yKF9kb21Ob2RlKSk7CiAgICAgYWRkTG9va3VwS2V5
KFdlYkVsZW1lbnRGcmFtZUtleSwgQHNlbGVjdG9yKF93ZWJGcmFtZSkpOwpAQCAtMTI1LDcgKzEy
OSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtICh2b2lkKV9maWxsQ2FjaGUKIHsKLSAgICBDRkRp
Y3Rpb25hcnlBcHBseUZ1bmN0aW9uKGxvb2t1cFRhYmxlLCBjYWNoZVZhbHVlRm9yS2V5LCAoX19i
cmlkZ2Ugdm9pZCopc2VsZik7CisgICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlvbihsb29rdXBU
YWJsZSgpLmdldCgpLCBjYWNoZVZhbHVlRm9yS2V5LCAoX19icmlkZ2Ugdm9pZCopc2VsZik7CiAg
ICAgX2NhY2hlQ29tcGxldGUgPSBZRVM7CiB9CiAKQEAgLTE0OSwxMiArMTUzLDEyIEBAIC0gKGlk
KW9iamVjdEZvcktleTooaWQpa2V5CiAgICAgaWYgKHZhbHVlIHx8IF9jYWNoZUNvbXBsZXRlIHx8
IFtfbmlsVmFsdWVzIGNvbnRhaW5zT2JqZWN0OmtleV0pCiAgICAgICAgIHJldHVybiB2YWx1ZTsK
IAotICAgIFNFTCBzZWxlY3RvciA9IHN0YXRpY19jYXN0PFNFTD4oY29uc3RfY2FzdDx2b2lkKj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUobG9va3VwVGFibGUsIChfX2JyaWRnZSBDRlR5cGVSZWYpa2V5
KSkpOworICAgIFNFTCBzZWxlY3RvciA9IHN0YXRpY19jYXN0PFNFTD4oY29uc3RfY2FzdDx2b2lk
Kj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobG9va3VwVGFibGUoKS5nZXQoKSwgKF9fYnJpZGdlIENG
VHlwZVJlZilrZXkpKSk7CiAgICAgaWYgKCFzZWxlY3RvcikKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICB2YWx1ZSA9IFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpzZWxlY3Rvcl07CiAKLSAgICBOU1VJ
bnRlZ2VyIGxvb2t1cFRhYmxlQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChsb29rdXBUYWJs
ZSk7CisgICAgTlNVSW50ZWdlciBsb29rdXBUYWJsZUNvdW50ID0gQ0ZEaWN0aW9uYXJ5R2V0Q291
bnQobG9va3VwVGFibGUoKS5nZXQoKSk7CiAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgIGlmICgh
X2NhY2hlKQogICAgICAgICAgICAgX2NhY2hlID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Omxvb2t1cFRhYmxlQ291bnRdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQwMDhmYmJhMjhmMjE5OGY4YjA5MWJiM2Mz
YTJlZTdjODMyMDM1NWIuLjViMGVlOGEzYWM4YzMzM2I2ZWUzNDRjZGQ5YzNiNTU3NjVjMjZmZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEyNjMs
MjggKzEyNjMsMzIgQEAgc3RhdGljIENGU2V0Q2FsbEJhY2tzIE5vblJldGFpbmluZ1NldENhbGxi
YWNrcyA9IHsKICAgICBDRkhhc2gKIH07CiAKLXN0YXRpYyBDRk11dGFibGVTZXRSZWYgYWxsV2Vi
Vmlld3NTZXQ7CitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZVNldFJlZj4mIGFsbFdlYlZpZXdz
U2V0KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZVNl
dFJlZj4+IGFsbFdlYlZpZXdzU2V0OworICAgIHJldHVybiBhbGxXZWJWaWV3c1NldDsKK30KIAog
KyAodm9pZClfbWFrZUFsbFdlYlZpZXdzUGVyZm9ybVNlbGVjdG9yOihTRUwpc2VsZWN0b3IKIHsK
LSAgICBpZiAoIWFsbFdlYlZpZXdzU2V0KQorICAgIGlmICghYWxsV2ViVmlld3NTZXQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgWyhfX2JyaWRnZSBOU011dGFibGVTZXQgKilhbGxXZWJWaWV3
c1NldCBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpzZWxlY3Rvcl07CisgICAgWyhfX2JyaWRn
ZSBOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIG1ha2VPYmplY3RzUGVyZm9y
bVNlbGVjdG9yOnNlbGVjdG9yXTsKIH0KIAogLSAodm9pZClfcmVtb3ZlRnJvbUFsbFdlYlZpZXdz
U2V0CiB7Ci0gICAgaWYgKGFsbFdlYlZpZXdzU2V0KQotICAgICAgICBDRlNldFJlbW92ZVZhbHVl
KGFsbFdlYlZpZXdzU2V0LCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOworICAgIGlmIChhbGxX
ZWJWaWV3c1NldCgpKQorICAgICAgICBDRlNldFJlbW92ZVZhbHVlKGFsbFdlYlZpZXdzU2V0KCku
Z2V0KCksIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIC0gKHZvaWQpX2FkZFRvQWxs
V2ViVmlld3NTZXQKIHsKLSAgICBpZiAoIWFsbFdlYlZpZXdzU2V0KQotICAgICAgICBhbGxXZWJW
aWV3c1NldCA9IENGU2V0Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAmTm9uUmV0YWluaW5nU2V0Q2Fs
bGJhY2tzKTsKKyAgICBpZiAoIWFsbFdlYlZpZXdzU2V0KCkpCisgICAgICAgIGFsbFdlYlZpZXdz
U2V0KCkgPSBhZG9wdENGKENGU2V0Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAmTm9uUmV0YWluaW5n
U2V0Q2FsbGJhY2tzKSk7CiAKLSAgICBDRlNldFNldFZhbHVlKGFsbFdlYlZpZXdzU2V0LCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOworICAgIENGU2V0U2V0VmFsdWUoYWxsV2ViVmlld3NTZXQo
KS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogQGVuZApAQCAtMjIzMCw3
ICsyMjM0LDcgQEAgKyAodm9pZCljbG9zZUFsbFdlYlZpZXdzCiAgICAgV2ViQ29yZTo6RE9NV2lu
ZG93OjpkaXNwYXRjaEFsbFBlbmRpbmdVbmxvYWRFdmVudHMoKTsKIAogICAgIC8vIFRoaXMgd2ls
bCBjbG9zZSB0aGUgV2ViVmlld3MgaW4gYSByYW5kb20gb3JkZXIuIENoYW5nZSB0aGlzIGlmIGNs
b3NlIG9yZGVyIGlzIGltcG9ydGFudC4KLSAgICBmb3IgKFdlYlZpZXcgKndlYlZpZXcgaW4gWyhf
X2JyaWRnZSBOU1NldCAqKWFsbFdlYlZpZXdzU2V0IGFsbE9iamVjdHNdKQorICAgIGZvciAoV2Vi
VmlldyAqd2ViVmlldyBpbiBbKF9fYnJpZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQoKS5nZXQo
KSBhbGxPYmplY3RzXSkKICAgICAgICAgW3dlYlZpZXcgY2xvc2VdOwogfQogCkBAIC02OTExLDcg
KzY5MTUsNyBAQCArIChCT09MKV9kaWRTZXRDYWNoZU1vZGVsCiArIChXZWJDYWNoZU1vZGVsKV9t
YXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZQogewogICAgIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2Rl
bCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKLSAgICBOU0VudW1lcmF0b3IgKmVudW1l
cmF0b3IgPSBbKE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0IG9iamVjdEVudW1lcmF0b3Jd
OworICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2Vi
Vmlld3NTZXQoKS5nZXQoKSBvYmplY3RFbnVtZXJhdG9yXTsKICAgICB3aGlsZSAoV2ViUHJlZmVy
ZW5jZXMgKnByZWZlcmVuY2VzID0gW1tlbnVtZXJhdG9yIG5leHRPYmplY3RdIHByZWZlcmVuY2Vz
XSkKICAgICAgICAgY2FjaGVNb2RlbCA9IHN0ZDo6bWF4KGNhY2hlTW9kZWwsIFtwcmVmZXJlbmNl
cyBjYWNoZU1vZGVsXSk7CiAgICAgcmV0dXJuIGNhY2hlTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDUxMWE5MmI3MmQxY2Ew
ZDIzM2Q0OTFjMzAwMTk2MzQzMWNjNjRkMmEuLjhmMjcxNjJiYmFmMThlZTFjMTE4Yjk1MTFmNTFi
NDdlNDQ4NTc3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0
aW9uQ2FjaGUuY3BwCkBAIC0xOTcsOSArMTk3LDcgQEAgSFJFU1VMVCBXZWJBcHBsaWNhdGlvbkNh
Y2hlOjpvcmlnaW5zV2l0aENhY2hlKElQcm9wZXJ0eUJhZyoqIG9yaWdpbnMpCiAgICAgZm9yIChh
dXRvJiBjb3JlT3JpZ2luIDogY29yZU9yaWdpbnMpCiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShhcnJheUl0ZW0uZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFdlYlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVJbnN0YW5jZShjb3JlT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCkpKSk7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFk
b3B0Q0YoCi0gICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwotCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBhdXRvIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6
QlNUUlRvQ0ZTdHJpbmdSZWYoX2JzdHJfdChMIm9yaWdpbnMiKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwga2V5LmdldCgpLCBhcnJheUl0ZW0uZ2V0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IGVh
MGI2NzUxYzU1NGU4MjdkYzk4MjU1Y2Q0YTcxNTdmMWQ1YWQyYjIuLjFkMjcwMmFkYjA4Mjc3YzQ0
NTA4ZDNkZmJkYzQyNzk4NmRjZmMyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9h
ZDo6dXNlQ3JlZGVudGlhbChfSW5fb3B0XyBJV2ViVVJMQ3JlZGVudGlhbCogY3JlZGVudGlhbCwg
X0luX28KICAgICBpZiAoIXdlYkNyZWRlbnRpYWwpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJG
QUNFOwogCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0g
YWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCkpKTsKKyAgICBhdXRv
IGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSk7CiAK
ICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwo
bV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCB3ZWJDaGFsbGVuZ2UtPmF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwpAQCAtMzc2LDcg
KzM3Niw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlCiAgICAgaWYgKCFDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjaGFsbGVuZ2UpKSB7CiAgICAgICAgIENyZWRl
bnRpYWwgY3JlZGVudGlhbCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQoZW1wdHlTdHJpbmcoKSwgY29yZShD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSkpOwogICAgICAg
ICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRp
YWwpKTsKKyAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0YoY3JlZGVudGlh
bCk7CiAgICAgICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdl
dCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmluZGV4IGQ1
YmVlZjgyZTk5MDg5MWE3MmU2YjRmYzRiZTM3ODgzMGFiNmFjOTAuLmZmMzRhZDA3MzdhMjZkMmEx
NzNlY2RiYjliOTY3YjU5ZTE2YmU2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRl
cmVyLmNwcApAQCAtMzcwLDE0ICszNzAsMTIgQEAgc3RhdGljIGJvb2wgcHJlcGFyZURldmljZShJ
RGlyZWN0M0REZXZpY2U5KiBkZXZpY2UsIGNvbnN0IENHUmVjdCYgYm91bmRzLCBJRGlyZWMKIAog
c3RhdGljIENHUmVjdCB1cGRhdGVCb3VuZHMoQ0FSZW5kZXJVcGRhdGUqIHVwZGF0ZSkKIHsKLSAg
ICBDR1NSZWdpb25PYmogcmduID0gQ0FSZW5kZXJVcGRhdGVDb3B5UmVnaW9uKHVwZGF0ZSk7Cisg
ICAgYXV0byByZ24gPSBhZG9wdENGKENBUmVuZGVyVXBkYXRlQ29weVJlZ2lvbih1cGRhdGUpKTsK
ICAgICBpZiAoIXJnbikKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAKICAgICBDR1JlY3Qg
cmVzdWx0OwotICAgIENHRXJyb3IgZXJyb3IgPSBDR1NHZXRSZWdpb25Cb3VuZHMocmduLCAmcmVz
dWx0KTsKLSAgICBDR1NSZWxlYXNlUmVnaW9uKHJnbik7Ci0KKyAgICBDR0Vycm9yIGVycm9yID0g
Q0dTR2V0UmVnaW9uQm91bmRzKHJnbi5nZXQoKSwgJnJlc3VsdCk7CiAgICAgcmV0dXJuIGVycm9y
ID09IGtDR0Vycm9yU3VjY2VzcyA/IHJlc3VsdCA6IENHUmVjdFplcm87CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGI0
MTY4YmY4NDE5MWU4YTExNDM5ZDkwMDMyZmU4OWVhNGQyNmY3MDQuLmJjOWUyMDM2OTBlNzAzZmY0
NjhlNDExNGU2OWVjYWVkNTQzN2ZiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtNjcsMTcgKzY3LDE3IEBAIHN0YXRpYyBM
b2NhbGl6ZWRTdHJpbmdNYXAgZnJhbWV3b3JrTG9jU3RyaW5ncygpCiBjbGFzcyBMb2NhbGl6ZWRT
dHJpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsaXplZFN0cmluZyk7CiBwdWJs
aWM6Ci0gICAgTG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKLSAgICAgICAgOiBt
X2NmU3RyaW5nKHN0cmluZykKKyAgICBMb2NhbGl6ZWRTdHJpbmcoUmV0YWluUHRyPENGU3RyaW5n
UmVmPiYmIHN0cmluZykKKyAgICAgICAgOiBtX2NmU3RyaW5nKFdURk1vdmUoc3RyaW5nKSkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVF9BUkcoc3RyaW5nLCBzdHJpbmcpOworICAgICAgICBBU1NFUlQo
bV9jZlN0cmluZyk7CiAgICAgfQogCiAgICAgb3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0OwotICAg
IG9wZXJhdG9yIENGU3RyaW5nUmVmKCkgY29uc3QgeyByZXR1cm4gbV9jZlN0cmluZzsgfQorICAg
IG9wZXJhdG9yIENGU3RyaW5nUmVmKCkgY29uc3QgeyByZXR1cm4gbV9jZlN0cmluZy5nZXQoKTsg
fQogCiBwcml2YXRlOgotICAgIENGU3RyaW5nUmVmIG1fY2ZTdHJpbmc7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBtX2NmU3RyaW5nOwogICAgIG11dGFibGUgU3RyaW5nIG1fc3RyaW5nOwog
fTsKIApAQCAtODYsNyArODYsNyBAQCBMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIo
KSBjb25zdAogICAgIGlmICghbV9zdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9z
dHJpbmcud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCk7CiAKLSAgICBtX3N0cmluZyA9IG1fY2ZTdHJp
bmc7CisgICAgbV9zdHJpbmcgPSBtX2NmU3RyaW5nLmdldCgpOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDE7IGkgPCBtX3N0cmluZy5sZW5ndGgoKTsgaSsrKQogICAgICAgICBpZiAobV9z
dHJpbmdbaV0gPT0gJ0AnICYmIChtX3N0cmluZ1tpIC0gMV0gPT0gJyUnIHx8IChpID4gMiAmJiBt
X3N0cmluZ1tpIC0gMV0gPT0gJyQnICYmIG1fc3RyaW5nW2kgLSAyXSA+PSAnMScgJiYgbV9zdHJp
bmdbaSAtIDJdIDw9ICc5JyAmJiBtX3N0cmluZ1tpIC0gM10gPT0gJyUnKSkpCkBAIC0xNTIsNyAr
MTUyLDcgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNmQnVuZGxlRm9yU3RyaW5nc0J1bmRsZShXZWJM
b2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3MKICAgICByZXR1cm4gc3RyaW5nc0J1bmRs
ZS0+YnVuZGxlOwogfQogCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgY29weUxvY2FsaXplZFN0cmluZ0Zy
b21CdW5kbGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxlLCBjb25z
dCBTdHJpbmcmIGtleSkKK3N0YXRpYyBSZXRhblB0cjxDRlN0cmluZ1JlZj4gY29weUxvY2FsaXpl
ZFN0cmluZ0Zyb21CdW5kbGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVu
ZGxlLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90Rm91
bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKIApAQCAtMTYwLDcgKzE2
MCw3IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShX
ZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0CiAgICAgaWYgKCFidW5kbGUpCiAgICAgICAg
IHJldHVybiBub3RGb3VuZDsKIAotICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENGQ29weUxvY2Fs
aXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAs
IGJ1bmRsZSwgbm90Rm91bmQsIDApOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRkNvcHlM
b2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKSk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJl
c3VsdCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAlcyBp
biBidW5kbGUiLCBrZXkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwYWZmYjQ1YTE3ZmJi
Yzk4YzcwYWVlODJiNWViOWVlYTUyYzY4ZjA3Li41YmJkZWNhYWU1Mzk2MjE1MzM4YjkxNDBiMmNi
NmIwZjA0Y2RiMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
Y3BwCkBAIC0xMTcsNyArMTE3LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0
cmluZ1ZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRlByb3BlcnR5TGlzdFJlZiB2CiAKIC8vIFdl
YlByZWZlcmVuY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIENGRGljdGlvbmFyeVJlZiBkZWZhdWx0U2V0
dGluZ3M7CitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGRlZmF1bHRTZXR0aW5n
cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+PiBkZWZhdWx0U2V0dGluZ3M7CisgICAgcmV0dXJuIGRlZmF1bHRTZXR0aW5nczsKK30KIAog
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBXZWJQcmVmZXJlbmNlczo6bV9hcHBsaWNhdGlvbklkID0g
a0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb247CiAjZW5kaWYKQEAgLTIxNCwxNTcgKzIx
OCwxNTcgQEAgQ0ZTdHJpbmdSZWYgV2ViUHJlZmVyZW5jZXM6OmFwcGxpY2F0aW9uSWQoKQogdm9p
ZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiB7CiAjaWYgVVNF
KENGKQotICAgIGlmIChkZWZhdWx0U2V0dGluZ3MpCisgICAgaWYgKGRlZmF1bHRTZXR0aW5ncygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGRlZmF1bHRz
ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIGRl
ZmF1bHRzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKIAogICAgIElOSVRJQUxJWkVfREVGQVVMVF9QUkVGRVJFTkNFU19ESUNUSU9OQVJZX0ZST01f
R0VORVJBVEVEX1BSRUZFUkVOQ0VTOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMg
TmV3IFJvbWFuIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3IikpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTZXJpZkZvbnRQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIpKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZlcmVuY2VLZXkp
LCBDRlNUUigiQXJpYWwiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1T
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGYW50
YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ29taWMgU2FucyBNUyIpKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIlNlZ29lIFVJIFN5bWJvbCIpKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtl
eSksIENGU1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRNaW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5Iikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0
Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZlcmVu
Y2VLZXkpLCBDRlNUUigiMTMiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGlt
ZXMgTmV3IFJvbWFuIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3
IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIpKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2Fuc1Nl
cmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQXJpYWwiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5j
ZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBD
RlNUUigiQ29taWMgU2FucyBNUyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IlNlZ29lIFVJIFN5bWJvbCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIw
IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRNaW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5IikpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREZWZhdWx0
Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVBy
ZWZlcmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CiAKICAgICBTdHJpbmcgZGVmYXVsdERlZmF1bHRF
bmNvZGluZyhXRUJfVUlfU1RSSU5HKCJJU08tODg1OS0xIiwgIlRoZSBkZWZhdWx0LCBkZWZhdWx0
IGNoYXJhY3RlciBlbmNvZGluZyBvbiBXaW5kb3dzIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVu
Y2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwot
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHls
ZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0VGV4dEFyZWFzQXJlUmVzaXphYmxlUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dEphdmFFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5jZUtleSks
IENGU1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYkF1ZGlvRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVl
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2lu
c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NSZWdpb25zRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRM
b2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RXhwZXJpbWVudGFsTm90
aWZpY2F0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Wm9vbXNUZXh0T25seVBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
RGlzcGxheUltYWdlc0tleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TG9hZFNpdGVJY29uc0tleSksIGtDRkJvb2xlYW5G
YWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEJh
Y2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkpLCBDRlNUUigiMTgwMCIpKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VGFiVG9MaW5rc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZhbGVudHNQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0U2hvd3NVUkxzSW5Ub29sVGlwc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQ
REZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMSIpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UERGU2NhbGVGYWN0b3JQcmVmZXJlbmNl
S2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
U2hvdWxkRGlzcGxheUNhcHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3VsZERpc3Bs
YXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2
YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU1JlZ2lv
bnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMb2FkU2l0ZUljb25zS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSksIENGU1RS
KCIxODAwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFByaXZhdGVC
cm93c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5k
YXJkU3R5bGVLZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG93
c1VSTHNJblRvb2xUaXBzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNob3dzVG9vbFRp
cE92ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBERkRpc3Bs
YXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RSKCIxIikpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGlua0JlaGF2aW9yU3Ry
aW5nUmVmID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVk
IiksIFdlYktpdEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcikpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZl
cmVuY2VLZXkpLCBsaW5rQmVoYXZpb3JTdHJpbmdSZWYuZ2V0KCkpOwotCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEhpc3RvcnlJdGVtTGltaXRLZXkpLCBD
RlNUUigiMTAwMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0S2V5KSwgQ0ZTVFIoIjciKSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEljb25EYXRhYmFzZUxvY2F0aW9u
S2V5KSwgQ0ZTVFIoIiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0SWNvbkRhdGFiYXNlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZvbnRT
bW9vdGhpbmdUeXBlUHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGb250U21vb3RoaW5nQ29udHJhc3RQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKEFsbG93Q29udGludW91c1NwZWxs
Q2hlY2tpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSksIENGU1RS
KCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEVkaXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmlu
Z1JlZi5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSksIENGU1RSKCIxMDAwIikpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5QWdl
SW5EYXlzTGltaXRLZXkpLCBDRlNUUigiNyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkpLCBDRlNU
UigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Rm9u
dFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdDb250
cmFzdFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVBy
ZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoQWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRM
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKIAogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVNb2RlbFJlZiA9IGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlZCIpLCBXZWJDYWNoZU1vZGVsRG9jdW1lbnRW
aWV3ZXIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFBy
ZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKIAotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250cm9sc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBhaW50TmF0aXZlQ29udHJvbHNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvd0RlYnVn
Qm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZ1
bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZ1bGxTY3JlZW5F
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5QW5kUnVubmluZ09m
SW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5
QW5kUnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVl
KTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDdXN0
b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q3VzdG9tRWxl
bWVudHNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBv
c2l0ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYkFu
aW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVz
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdExpbmtQcmVsb2FkRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMaW5rUHJlbG9hZEVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRNZWRpYVByZWxvYWRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SW5zcGVj
dG9yQWRkaXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJbnNwZWN0
b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VmlzdWFsVmlld3Bv
cnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFZpc3VhbFZpZXdwb3J0
QVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Njcm9sbGluZ0FQ
SUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U2Nyb2xsaW5n
QVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXNpemVPYnNlcnZlckVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvbnRh
Y3RQaWNrZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvbnRhY3RQ
aWNrZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QXNwZWN0UmF0aW9PZklt
Z0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRXZWJTUUxFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdl
YlNRTEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NJbmRpdmlkdWFsVHJhbnNm
b3JtUHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NJbmRp
dmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRT
cGVlY2hSZWNvZ25pdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRPdmVyc2Ny
b2xsQmVoYXZpb3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE92ZXJzY3Jv
bGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAg
IGRlZmF1bHRTZXR0aW5ncyA9IGRlZmF1bHRzOworICAgIGRlZmF1bHRTZXR0aW5ncygpID0gV1RG
TW92ZShkZWZhdWx0cyk7CiAjZW5kaWYKIH0KIApAQCAtMzc5LDcgKzM4Myw3IEBAIFJldGFpblB0
cjxDRlByb3BlcnR5TGlzdFJlZj4gV2ViUHJlZmVyZW5jZXM6OnZhbHVlRm9yS2V5KENGU3RyaW5n
UmVmIGtleSkKICAgICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIHJl
dHVybiBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleSk7CisgICAgcmV0
dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncygpLmdldCgpLCBrZXkpOwog
fQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXks
IENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKQpAQCAtNjIwLDcgKzYyNCw3IEBAIHZvaWQgV2ViUHJl
ZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25h
cnlSZWYgZGljdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChvbWl0RGVm
YXVsdHMpIHsKLSAgICAgICAgICAgIENGVHlwZVJlZiBkZWZhdWx0VmFsdWUgPSBDRkRpY3Rpb25h
cnlHZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleXNbaV0pOworICAgICAgICAgICAgQ0ZUeXBl
UmVmIGRlZmF1bHRWYWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncygp
LmdldCgpLCBrZXlzW2ldKTsKICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWUgJiYgQ0ZFcXVh
bChkZWZhdWx0VmFsdWUsIHZhbHVlc1tpXSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmNjQ5OTI1MTMxOWIxMjRhZjliZWM2NDMyOTI1MTg3ODAwYTc2ZDc5Li4wMDBkNjk0NmQ1
YzdhMWFkNDI0NjY0YmQyZTIyMzQ5NWNhYjNiODE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMtMTAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4g
LyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBv
cnRDRy5jcHA6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaDoKKyAgICAgICAgKEJpdG1hcENvbnRl
eHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KToKKyAgICAgICAgKEJpdG1hcENv
bnRleHQ6OkJpdG1hcENvbnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbToKKyAgICAgICAgKFdlYlRocmVhZExvY2tBZnRlckRlbGVnYXRlQ2FsbGJh
Y2tzSGF2ZUNvbXBsZXRlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVt
cFN1cHBvcnRXaW4uY3BwOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3
KToKKyAgICAgICAgKiBJbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6CisgICAgICAg
IChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OnBpeGVscyBjb25zdCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6Y3Jl
YXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UpOgorICAgICAgICAoV1RSOjpjcmVhdGVDR0NvbnRleHRG
cm9tSW1hZ2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQpOgorCiAyMDIxLTAzLTEwICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtXUEVdW0dUS10gSW50cm9kdWNlIE5lZWRz
VW5icmFuZGVkVXNlckFnZW50IHF1aXJrIGFuZCB1c2UgaXQgZm9yIGFjY291bnRzLmdvb2dsZS5j
b20sIGRvY3MuZ29vZ2xlLmNvbSwgYW5kIGRyaXZlLmdvb2dsZS5jb20KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCmluZGV4IDViYzA0MDNiODExYmM2
NTVkZDIwZmEyZDQwOTIyOTlmMGU0MDdkODUuLjhlNmRkNWZlZDdkMmMyZWIzOWJjZWViYjFkNDY4
Y2NlZDU5MjhjZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVt
cFN1cHBvcnRDRy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3Vw
cG9ydENHLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVh
dGVCaXRtYXBDb250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAg
ICAKICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNl
IHByZXZlbnRzIGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIg
dmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNv
bG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBD
R0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIsIHBpeGVs
c1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIsIHBp
eGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7
CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJlbmRlclRy
ZWU6IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAsIDB4JXgp
IGZhaWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRlcywgY29s
b3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMySG9zdCk7CiAgICAgICAgIGZyZWUoYnVmZmVyKTsKQEAgLTEzNCw2ICsxMzQs
NiBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dChzaXplX3QgcGl4
ZWxzV2lkZSwgc2l6ZV90IHBpeGVsc0hpZ2gsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5k
Q29udGV4dChidWZmZXIsIGNvbnRleHQpOworICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVh
dGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBT
dXBwb3J0Q0cuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5o
CmluZGV4IDQxMjRiMGNhZWRjZTczOGY0NjQ2Y2RjMzhhN2I1MTZhMWE3NjFjMDguLmI3OTRiMjE5
OGVkOGEwYWExNDcyZDMwYjkzYTNhYmZhY2M3MDI3YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCkBAIC00Nyw5ICs0Nyw5IEBAIHR5cGVkZWYgSEJJ
VE1BUCBQbGF0Zm9ybUJpdG1hcEJ1ZmZlcjsKIAogY2xhc3MgQml0bWFwQ29udGV4dCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEJpdG1hcENvbnRleHQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJp
dG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KFBsYXRmb3JtQml0
bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxC
aXRtYXBDb250ZXh0PiBjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChQbGF0Zm9ybUJp
dG1hcEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0NvbnRleHRSZWY+JiYgY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRleHQoYnVmZmVyLCBj
b250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRleHQoYnVm
ZmVyLCBXVEZNb3ZlKGNvbnRleHQpKSk7CiAgICAgfQogCiAgICAgfkJpdG1hcENvbnRleHQoKQpA
QCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICBCaXRtYXBDb250ZXh0
KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAg
Qml0bWFwQ29udGV4dChQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0Nv
bnRleHRSZWY+JiYgY29udGV4dCkKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgICAg
ICwgbV9jb250ZXh0KGFkb3B0Q0YoY29udGV4dCkpCisgICAgICAgICwgbV9jb250ZXh0KFdURk1v
dmUoY29udGV4dCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCmluZGV4IDNkY2U1YWM1YzMyOTFhMzYyZTQ3ZWI0MjBlNzc3MjFlODJi
NWI0YzQuLmI1MWUxYWVmZTJkZmY2YWNlZWI3NjQzYjNiNDMyZjIxZTQwNzliYWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwMCw2ICsxMDAsNyBA
QAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0
ci5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTE4MTAsMjAgKzE4MTEsMTgg
QEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUoY29uc3QgV1RSOjpU
ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXQKIC8vIGxvY2sgdG8gcHJldmVudCBwb3RlbnRpYWxs
eSByZS1lbnRlcmluZyBXZWJDb3JlLgogc3RhdGljIHZvaWQgV2ViVGhyZWFkTG9ja0FmdGVyRGVs
ZWdhdGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKCkKIHsKLSAgICBkaXNwYXRjaF9zZW1hcGhvcmVf
dCBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCk7CisgICAg
YXV0byBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc2VtYXBob3Jl
X2NyZWF0ZSgwKSk7CiAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIGRpc3BhdGNoX3NlbWFw
aG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUpOworICAgICAgICBkaXNwYXRjaF9zZW1hcGhv
cmVfc2lnbmFsKGRlbGVnYXRlU2VtYXBob3JlLmdldCgpKTsKICAgICB9KTsKIAotICAgIHdoaWxl
IChkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChkZWxlZ2F0ZVNlbWFwaG9yZSwgRElTUEFUQ0hfVElN
RV9OT1cpKSB7CisgICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRlU2Vt
YXBob3JlLmdldCgpLCBESVNQQVRDSF9USU1FX05PVykpIHsKICAgICAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CiAgICAgICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpO
U0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIFdlYlRocmVhZExvY2soKTsKLQotICAgIGRpc3BhdGNoX3Jl
bGVhc2UoZGVsZWdhdGVTZW1hcGhvcmUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAppbmRleCBhOWJhNjkxODMxMThi
YjgzMjNjOGQ0OWIxZmQzMzlhNTFmNTM5YjYwLi4zOTVkMzAyN2I5ZDg3ZWE4OTU2ZTZiMDAwODdj
NjIxNDhhMjY3ZDhlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxE
dW1wU3VwcG9ydFdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVt
cFN1cHBvcnRXaW4uY3BwCkBAIC05MCw4ICs5MCw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBj
cmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1l
CiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4
dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBpbmZvLmJt
V2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7
CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5i
bUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwgaW5mby5ibVdpZHRoQnl0ZXMs
IGNvbG9yU3BhY2UuZ2V0KCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCB8IGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICNlbGlmIFVTRShDQUlSTykgCiAgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNp
Z25lZCBjaGFyKilpbmZvLmJtQml0cywgQ0FJUk9fRk9STUFUX0FSR0IzMiwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGgs
IGluZm8uYm1IZWlnaHQsIGluZm8uYm1XaWR0aEJ5dGVzKTsgCkBAIC0xMTIsNSArMTExLDUgQEAg
UmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29s
IG9uc2NyZWVuLCBib29sIGluY3JlbWUKICAgICBhdXRvIGNvbnRleHQgPSByZW5kZXJUYXJnZXQu
Z2V0KCk7CiAjZW5kaWYgCiAKLSAgICByZXR1cm4gQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9w
dGluZ0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gQml0bWFw
Q29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBXVEZNb3Zl
KGNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVz
dEludm9jYXRpb25DRy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0
aW9uQ0cuY3BwCmluZGV4IDAxYzUzMWE5YjZhY2U4ZTgxNjk0OGY2NzZjZTYzMWY1Mjc5NGI2YzQu
LjRlYzljMjBlOTgwZjVlMDdlZmYzMzM2OGFmOTgxZjViOGI0OTdiMWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcApAQCAtNDUsNyArNDUsNyBA
QCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5n
Iik7CiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29u
dGV4dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCitzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIHsK
ICAgICBzaXplX3QgcGl4ZWxzV2lkZSA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6
ZV90IHBpeGVsc0hpZ2ggPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKQEAgLTUzLDE1ICs1Mywx
NSBAQCBzdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1h
Z2VSZWYgaW1hZ2UpCiAKICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNl
IGNvbG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhl
IGltYWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIGF1dG8gY29sb3JT
cGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dpZGUsIHBp
eGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBwaXhlbHNXaWRlLCBwaXhl
bHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDR0NvbnRleHREcmF3SW1hZ2Uo
Y29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoKSwgaW1hZ2Up
OworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gpLCBpbWFnZSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9
CiAKLXN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKFdLSW1hZ2VS
ZWYgd2tJbWFnZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDR0NvbnRl
eHRGcm9tSW1hZ2UoV0tJbWFnZVJlZiB3a0ltYWdlKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dENGKFdLSW1hZ2VDcmVhdGVDR0ltYWdlKHdrSW1hZ2UpKTsKICAgICByZXR1cm4gY3JlYXRlQ0dD
b250ZXh0RnJvbUNHSW1hZ2UoaW1hZ2UuZ2V0KCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFNuYXBzaG90
UmVzdWx0VHlwZSBzbmFwc2hvCiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoImR1bXBQaXhlbHNB
bmRDb21wYXJlV2l0aEV4cGVjdGVkOiBpbWFnZSBpcyBudWxsXG4iKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRl
eHRGcm9tSW1hZ2Uod2tJbWFnZSkpOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlQ0dDb250ZXh0
RnJvbUltYWdlKHdrSW1hZ2UpOwogICAgICAgICBpbWFnZVNpemUgPSBXS0ltYWdlR2V0U2l6ZSh3
a0ltYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTbmFwc2hvdFJlc3VsdFR5cGU6Oldl
YlZpZXc6CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVs
c0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG8KICAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQ6IGlt
YWdlIGlzIG51bGxcbiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGNvbnRleHQgPSBhZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKGltYWdlLmdldCgp
KSk7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5n
ZXQoKSk7CiAgICAgICAgIGltYWdlU2l6ZSA9IFdLU2l6ZU1ha2UoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwogICAgICAgICBicmVh
azsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="442061"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422858</attachid>
            <date>2021-03-10 12:36:00 -0800</date>
            <delta_ts>2021-03-10 13:10:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310123559.patch</filename>
            <type>text/plain</type>
            <size>217861</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uMjAyNjc5NGExMDkzZGYzOWZkYmI0ZGQyMDIyZWFhNjA0NTc0NDMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTM1NDEsOSArMzU0Miw4IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBhdXRvJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNp
bmdsZXRvbigpOwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElT
UEFUQ0hfUVVFVUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERp
c3BhdGNoUXVldWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAg
ICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJq
c2Mgc2hlbGwgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
KTsKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92
ZShxdWV1ZSkpOwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGlj
YWxTdGF0ZSA9IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxT
eW5jaHJvbm91cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9u
b3VzPjo6Y3JlYXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRi
NzdiLi4zN2I3MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0
RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4m
JiBxdWV1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3Bh
dGNoX3JldGFpbihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1
ZXVlOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYw
N2NkNjMxZDJlY2Y1ODgzYzU0N2M0N2M0Mi4uMzU2ODc3ZTlmMGQwYzY0M2NiZWFjZDYxMzdjZmVl
MzJlOTk0ZjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTM4
LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBvbGljeSA6IHVp
bnQ4X3QgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3Bh
dGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RGlzcGF0Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRp
ZgogCiAgICAgY2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMTAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1
ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2
OTRiZDhjM2Y1YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNGEzYjdkYWZhZTc4ZjFhNmQ5
YzQ2M2IyY2M2YTAzZGE5NGE0MTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjZWxzZQogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAjZW5kaWYKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMs
IFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmKTsKIAogI2lmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQorICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKTsgfQogI2Vsc2UKICAg
ICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlm
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+
IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbHNlCiAgICAgUnVuTG9vcCogbV9ydW5Mb29wOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tCmluZGV4IDA4OGIxOWNjMTBhNjVlZmZlNWQ0ZTlmYzI3YTA4MWMyNTZiYTM3NmYuLjVjMGY1
YjI1NDRmN2JhNWVlNGQ3MjUwNjA3ZjdmZDZmYmQwNDQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC02OCwxMyArNjgs
MTMgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogICAgIGlmIChtX2lu
c3RhbGxlZCB8fCB0aW1lckV2ZW50U291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBeewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1
dG8gbWVtb3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9OT1JNQUwgfCBE
SVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfQ1JJ
VElDQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX1dBUk4gfCBESVNQQVRD
SF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX0NSSVRJQ0FMOwogI2Vsc2UgLy8gUExBVEZPUk0o
TUFDKQogICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJF
U1NVUkVfQ1JJVElDQUw7CiAjZW5kaWYKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJj
ZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJF
U1NVUkUsIDAsIG1lbW9yeVN0YXR1c0ZsYWdzLCBtX2Rpc3BhdGNoUXVldWUpOworICAgICAgICBt
ZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRD
SF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgbWVtb3J5U3RhdHVzRmxhZ3MsIG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSk7CiAKICAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9o
YW5kbGVyKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UsIF57CiAgICAgICAgICAgICBhdXRvIHN0
YXR1cyA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNl
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAgICAgfSk7CiAKICAgICAvLyBBbGxvdyBzaW11bGF0aW9uIG9mIG1lbW9yeSBwcmVzc3Vy
ZSB3aXRoICJub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5IgotICAgIG5vdGlmeV9y
ZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBd
LCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNo
KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIsICZub3RpZnlUb2tlbnNbMF0sIG1fZGlzcGF0Y2hRdWV1
ZS5nZXQoKSwgXihpbnQpIHsKICNpZiBFTkFCTEUoRk1XX0ZPT1RQUklOVF9DT01QQVJJU09OKQog
ICAgICAgICBhdXRvIGZvb3RwcmludEJlZm9yZSA9IHBhZ2VzUGVyVk1UYWcoKTsKICNlbmRpZgpA
QCAtMTI0LDE1ICsxMjQsMTUgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwo
KQogICAgICAgICBsb2dGb290cHJpbnRDb21wYXJpc29uKGZvb3RwcmludEJlZm9yZSwgZm9vdHBy
aW50QWZ0ZXIpOwogI2VuZGlmCiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57
CiAgICAgICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIAotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7
CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeS5iZWdp
biIsICZub3RpZnlUb2tlbnNbMV0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAg
ICAgICAgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIH0pOwotICAgIG5vdGlm
eV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRv
a2Vuc1syXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9k
aXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRva2Vuc1syXSwgbV9k
aXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQ
cmVzc3VyZSgpOwogICAgIH0pOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAgICAgaWYgKCFtX2luc3RhbGxlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgaWYgKG1lbW9y
eVByZXNzdXJlRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5j
ZWwobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSk7CiAgICAgICAgICAgICBtZW1vcnlQcmVzc3Vy
ZUV2ZW50U291cmNlID0gbnVsbHB0cjsKQEAgLTE2NCw4ICsxNjQsOCBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OmhvbGRPZmYoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0
Y2hRdWV1ZSwgXnsKLSAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9j
cmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZSk7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgICAgICB0
aW1lckV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9USU1FUiwgMCwgMCwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKICAgICAgICAgaWYgKHRp
bWVyRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KHRpbWVy
RXZlbnRTb3VyY2UsIHRoaXMpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmaW5hbCBhcmd1
bWVudCBgc19taW5pbXVtSG9sZE9mZlRpbWUuc2Vjb25kcygpYCBzZWVtcyB3cm9uZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCAzNzczYzc5ODUyZWJiMjFiZDA2
ZDU2N2IwMTdjZjdjOTMyMjUzZGU2Li40OWNkYmI1ODgwYmIxNjZiNWY3NWU1NmRkYzc5YzFjZmEx
YTU0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCkBAIC0zMywx
NCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICB9KS5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNl
Y29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5v
c2Vjb25kc0FzPGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24p
XSB7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
ZHVyYXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgp
KTsKIH0KQEAgLTQ5LDEzICs0OSwxMiBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICBkaXNwYXRj
aF9xdWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENI
X1FVRVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CiAgICAgYXR0ciA9IGRp
c3BhdGNoX3F1ZXVlX2F0dHJfbWFrZV93aXRoX3Fvc19jbGFzcyhhdHRyLCBUaHJlYWQ6OmRpc3Bh
dGNoUU9TQ2xhc3MocW9zKSwgMCk7Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKG5hbWUsIGF0dHIpOwotICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KG1fZGlzcGF0
Y2hRdWV1ZSwgdGhpcyk7CisgICAgbV9kaXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cikpOworICAgIGRpc3BhdGNoX3NldF9jb250ZXh0
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OmNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9u
cywgV1RGOjpGdW5jdGlvbjx2b2lkKHNpemVfdCBpbmRleCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzY3Y2MzYTk2M2E1MGVjMjFhZWI4
NjcyNTA5Y2Q2YjI5MTUzZGM4Yi4uMzBlZjM2MDU3MTQ0Y2IyYTFiZjU2MGI1NGVjNmE2OGI2YWEw
NTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTExLDE2
ICsxMTEsMTMgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAgICAgICAg
IHJldHVybiBzaXplOwogICAgIH0KIAotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGUo
KQotICAgIHsKLSAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxw
dHIsIHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0
ZSwgZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwotICAgICAgICByZXR1cm4gQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpOwotICAgIH0KLQogICAgIHN0YXRpYyBDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IoKQogICAgIHsKLSAgICAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciA9IGNyZWF0ZSgpOwotICAgICAgICByZXR1cm4gYWxsb2NhdG9yOworICAgICAg
ICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxwdHIsIHJldGFpbiwg
cmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0ZSwgZGVhbGxvY2F0
ZSwgcHJlZmVycmVkU2l6ZSB9OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKKyAgICAgICAgfSgpKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci5nZXQoKS5nZXQoKTsKICAgICB9CiAKIH0KQEAgLTEzOCwxNSArMTM1LDE1
IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQog
ICAgIEFTU0VSVCghU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nKTsKICAg
ICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSB0aGlzOwogCi0gICAg
Q0ZTdHJpbmdSZWYgc3RyaW5nOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwog
ICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFj
dGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZh
bHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgZWxzZQotICAgICAgICBzdHJpbmcgPSBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9y
TnVsbCk7CisgICAgICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNo
YXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAvLyBDb3Jl
Rm91bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIg
Y3VycmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAg
IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOworICAgIHJldHVybiBzdHJpbmc7CiB9CiAKIC8vIE9u
IFN0cmluZ0ltcGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0
aGUgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggZmZlNjNhNmMzOWI4NDZjMWU1OTc2MTVkYmM0NzJmZDczZTIwMDY2
OC4uNGIwMWVjMzc5ZWJhOWZjZTFkOGE0ODY5MWM1OGE4MDViODM4NDZhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0
ICJXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIgogI2ltcG9ydCAib2JqY19pbnN0YW5jZS5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CisjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewpAQCAtMzksMjIgKzQxLDI2IEBAIE9i
amNDbGFzczo6T2JqY0NsYXNzKENsYXNzU3RydWN0UHRyIGFDbGFzcykKIHsKIH0KIAotc3RhdGlj
IENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2xhc3Nlc0J5SXNBID0gMDsKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGNsYXNzZXNCeUlzQSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gY2xhc3Nl
c0J5SXNBOworICAgIHJldHVybiBjbGFzc2VzQnlJc0E7Cit9CiAKIHN0YXRpYyB2b2lkIF9jcmVh
dGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCFjbGFzc2VzQnlJc0EpCi0g
ICAgICAgIGNsYXNzZXNCeUlzQSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwg
TlVMTCwgTlVMTCk7CisgICAgaWYgKCFjbGFzc2VzQnlJc0EoKSkKKyAgICAgICAgY2xhc3Nlc0J5
SXNBKCkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwg
TlVMTCkpOwogfQogCiBPYmpjQ2xhc3MqIE9iamNDbGFzczo6Y2xhc3NGb3JJc0EoQ2xhc3NTdHJ1
Y3RQdHIgaXNhKQogewogICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpOwogCi0g
ICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFzcyo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilpc2EpKSk7CisgICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFz
cyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSgp
LmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSkpKTsKICAgICBpZiAoIWFDbGFzcykgewog
ICAgICAgICBhQ2xhc3MgPSBuZXcgT2JqY0NsYXNzKGlzYSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7
CisgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGNsYXNzZXNCeUlzQSgpLmdldCgpLCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKWlzYSwgYUNsYXNzKTsKICAgICB9CiAKICAgICByZXR1cm4gYUNsYXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAppbmRleCA4NWU5YmM0
YWE0ZWRkZmI0NDUzOTRiMGU4ZDM5NjA3ZjQyZDEyNGVmLi43ZDkyMDhhM2ZjZWQwMjY2MzgyNTIw
MDM2ZDFkNjgyMmFmYTFkOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nt
YXJ0UmVwbGFjZUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZUNGLmNwcApAQCAtMzEsMzggKzMxLDM3IEBACiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RkNoYXJhY3RlclNldC5oPgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRS
ZWYgZ2V0U21hcnRTZXQoYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBD
Rk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcHJlU21hcnRTZXQ7Ci0gICAgc3RhdGljIENGTXV0YWJs
ZUNoYXJhY3RlclNldFJlZiBwb3N0U21hcnRTZXQ7Ci0gICAgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0
UmVmIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0IDogcG9zdFNt
YXJ0U2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hh
cmFjdGVyU2V0UmVmPj4gcHJlU21hcnRTZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+PiBwb3N0U21hcnRTZXQ7CisgICAgUmV0
YWluUHRyPENGTXV0YWJsZUNoYXJhY3RlclNldFJlZj4mIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0No
YXJhY3RlciA/IHByZVNtYXJ0U2V0LmdldCgpIDogcG9zdFNtYXJ0U2V0LmdldCgpOwogICAgIGlm
ICghc21hcnRTZXQpIHsKLSAgICAgICAgc21hcnRTZXQgPSBDRkNoYXJhY3RlclNldENyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hh
cmFjdGVyc0luU3RyaW5nKHNtYXJ0U2V0LCBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gQ0ZTVFIoIihb
XCJcJyMkLy1geyIpIDogQ0ZTVFIoIildLiw7Oj9cJyFcIiUqLS99IikpOwotICAgICAgICBDRkNo
YXJhY3RlclNldFVuaW9uKHNtYXJ0U2V0LCBDRkNoYXJhY3RlclNldEdldFByZWRlZmluZWQoa0NG
Q2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFuZE5ld2xpbmUpKTsgICAgICAgIAorICAgICAgICBzbWFy
dFNldCA9IGFkb3B0Q0YoQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQpKTsKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21h
cnRTZXQuZ2V0KCksIGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7Iikg
OiBDRlNUUigiKV0uLDs6P1wnIVwiJSotL30iKSk7CisgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5p
b24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0
ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGluZSkpOworCiAgICAgICAgIC8vIEFkZGluZyBDSksgcmFu
Z2VzCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQs
IENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDEx
RkYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQs
IENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgy
RTgwIC0gMHgyRkRGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdl
KHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3Jp
cHRpb25zLCBDSksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3Vs
IENvbXBhdGliaWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgz
MUJGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0
LCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9n
cmFwaHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYpCi0g
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFu
Z2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4
RjkwMCAtIDB4RkE1RikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5n
ZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0
eSBGcm9tICgweEZFMzAgLSAweEZFNEYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFj
dGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYv
RnVsbCBXaWR0aCBGb3JtICgweEZGMDAgLSAweEZGRUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0
QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZE
NykpOyAvLyBDSksgSWRlb2dyYXBoIEV4bnRlbnNpb24gQgotICAgICAgICBDRkNoYXJhY3RlclNl
dEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAy
MUUpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAw
eDExRkYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRp
Y2FscyAoMHgyRTgwIC0gMHgyRkRGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3Rl
cnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJ
ZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBDSksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBC
b3BvbW9mbywgSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4
dCAoMHgyRkYwIC0gMHgzMUJGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJ
blJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVu
Y2xvc2VkIENKSywgQ0pLIElkZW9ncmFwaHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIw
MCAtIDB4QTRDRikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShz
bWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3ls
bGFibGVzICgweEFDMDAgLSAweEQ3QUYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFj
dGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKKyAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5n
ZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAw
eEZFNEYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBG
b3JtICgweEZGMDAgLSAweEZGRUYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVy
c0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAv
LyBDSksgSWRlb2dyYXBoIEV4bnRlbnNpb24gQgorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENo
YXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAy
MUUpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQp
CiAKLSAgICAgICAgaWYgKGlzUHJldmlvdXNDaGFyYWN0ZXIpCi0gICAgICAgICAgICBwcmVTbWFy
dFNldCA9IHNtYXJ0U2V0OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIENGQ2hhcmFjdGVy
U2V0VW5pb24oc21hcnRTZXQsIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0
ZXJTZXRQdW5jdHVhdGlvbikpOyAgICAgICAKLSAgICAgICAgICAgIHBvc3RTbWFydFNldCA9IHNt
YXJ0U2V0OwotICAgICAgICB9CisgICAgICAgIGlmICghaXNQcmV2aW91c0NoYXJhY3RlcikKKyAg
ICAgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVy
U2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRQdW5jdHVhdGlvbikpOwogICAgIH0KLSAg
ICByZXR1cm4gc21hcnRTZXQ7CisgICAgcmV0dXJuIHNtYXJ0U2V0LmdldCgpOwogfQogCiBib29s
IGlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0KFVDaGFyMzIgYywgYm9vbCBpc1ByZXZpb3Vz
Q2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDFjZDVkOWZkYjhhMTQxOWQzNjdjMDg2ZTBjNmNh
NjNkZmVkNjMzMjUuLjUwOWYyM2JhY2UxZWU1ZmE2MTdkODVjYmRhMTU2OGQ5OTM4Yjg1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW0KQEAgLTExOSwxMCArMTE5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9jdXJyZW50IHsgMCB9OwogfTsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxv
YXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsK
ICAgICBDR0Zsb2F0IGNvbXBvbmVudHNbNF0gPSB7IHIsIGcsIGIsIGEgfTsKLSAgICByZXR1cm4g
Q0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25lbnRzKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMp
KTsKIH0KIAogc3RydWN0IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQog
CiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFtt
X2xheWVyLmdldCgpIHNldENvbnRlbnRzU2NhbGU6Mi4wXTsKLSAgICBbbV9sYXllci5nZXQoKSBz
ZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihjcmVhdGVDb2xvcigwLCAwLCAwLCAwLjgpKS5nZXQo
KV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0QmFja2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAs
IDAsIDAsIDAuOCkuZ2V0KCldOwogICAgIFttX2xheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RN
YWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQpXTsKIAogICAgIG92ZXJsYXkoKS5s
YXllcigpLnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKG1fbGF5ZXIuZ2V0KCksIEdyYXBoaWNz
TGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lKTsKQEAgLTI4MCwxNyArMjgwLDE3IEBA
IHN0YXRpYyB2b2lkIHNob3dUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBjCiAKIHN0YXRpYyB2b2lkIGRyYXdHcmFwaExhYmVsKENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBjb25zdCBTdHJpbmcmIHRleHQp
CiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAx
KTsKLSAgICBzaG93VGV4dChjb250ZXh0LCB4ICsgNSwgeSAtIDMsIGJsYWNrLCB0ZXh0KTsKLSAg
ICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZSA9IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOwotICAg
IHNob3dUZXh0KGNvbnRleHQsIHggKyA0LCB5IC0gNCwgd2hpdGUsIHRleHQpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJsYWNrID0gY3JlYXRlQ29s
b3IoMCwgMCwgMCwgMSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgeCArIDUsIHkgLSAzLCBibGFj
ay5nZXQoKS5nZXQoKSwgdGV4dCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yUmVmPj4gd2hpdGUgPSBjcmVhdGVDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBzaG93
VGV4dChjb250ZXh0LCB4ICsgNCwgeSAtIDQsIHdoaXRlLmdldCgpLmdldCgpLCB0ZXh0KTsKIH0K
IAogc3RhdGljIHZvaWQgZHJhd0NwdUhpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpbmdCdWZmZXI8ZmxvYXQ+JiBoaXN0b3J5KQogewot
ICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNwdUNvbG9yID0gY3JlYXRlQ29sb3IoMCwgMSwgMCwgMSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY3B1Q29s
b3IgPSBjcmVhdGVDb2xvcigwLCAxLCAwLCAxKTsKIAotICAgIENHQ29udGV4dFNldFN0cm9rZUNv
bG9yV2l0aENvbG9yKGNvbnRleHQsIGNwdUNvbG9yKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VD
b2xvcldpdGhDb2xvcihjb250ZXh0LCBjcHVDb2xvci5nZXQoKS5nZXQoKSk7CiAgICAgQ0dDb250
ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIDEpOwogCiAgICAgaW50IGkgPSAwOwpAQCAtMzIxLDgg
KzMyMSw4IEBAIHN0YXRpYyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpCiAKICAgICBDR0NvbnRleHRTZXRMaW5l
V2lkdGgoY29udGV4dCwgMSk7CiAKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBjYXBhY2l0eUNvbG9y
ID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4zLCAxKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xv
cldpdGhDb2xvcihjb250ZXh0LCBjYXBhY2l0eUNvbG9yKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3Io
MSwgMCwgMC4zLCAxKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYXBhY2l0eUNvbG9yLmdldCgpLmdldCgpKTsKIAogICAgIHNpemVfdCBpID0gMDsKIApA
QCAtMzM1LDggKzMzNSw4IEBAIHN0YXRpYyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpCiAgICAgICAgIGkrKzsK
ICAgICB9KTsKIAotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNpemVDb2xvciA9IGNyZWF0ZUNvbG9y
KDAuNiwgMC41LCAwLjksIDEpOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9y
KGNvbnRleHQsIHNpemVDb2xvcik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yUmVmPj4gc2l6ZUNvbG9yID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7
CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9y
LmdldCgpLmdldCgpKTsKIAogICAgIGkgPSAwOwogCkBAIC00NTYsMTAgKzQ1NiwxMCBAQCB2b2lk
IFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQp
CiAgICAgQ0dSZWN0IHZpZXdCb3VuZHMgPSBtX292ZXJsYXktPmJvdW5kcygpOwogICAgIENHQ29u
dGV4dENsZWFyUmVjdChjb250ZXh0LCB2aWV3Qm91bmRzKTsKIAotICAgIHN0YXRpYyBDR0NvbG9y
UmVmIGNvbG9yRm9yTGFiZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7Ci0gICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscywgbWFrZVN0cmluZygiICAg
ICAgICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFz
dCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwg
MzAsIGNvbG9yRm9yTGFiZWxzLCAiICBGb290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1l
bW9yeUZvb3RwcmludCgpKSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZv
ckxhYmVscywgIiAgIEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0
ZXJuYWxTaXplLmxhc3QoKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
Q0dDb2xvclJlZj4+IGNvbG9yRm9yTGFiZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwg
MSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5n
ZXQoKSwgbWFrZVN0cmluZygiICAgICAgICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24oZGF0YS5jcHUubGFzdCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKKyAgICBz
aG93VGV4dChjb250ZXh0LCAxMCwgMzAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICBG
b290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7CisgICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAg
IEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxh
c3QoKSkpOwogCiAgICAgZmxvYXQgeSA9IDU1OwogICAgIGZvciAoYXV0byYgY2F0ZWdvcnkgOiBk
YXRhLmNhdGVnb3JpZXMpIHsKQEAgLTQ4MCw4ICs0ODAsOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VP
dmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgeSAtPSA1Owog
CiAgICAgTW9ub3RvbmljVGltZSBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBzaG93
VGV4dChjb250ZXh0LCAxMCwgeSArIDEwLCBjb2xvckZvckxhYmVscywgIiAgICBFZGVuIEdDOiAi
ICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiwgbm93KSk7Ci0g
ICAgc2hvd1RleHQoY29udGV4dCwgMTAsIHkgKyAyMCwgY29sb3JGb3JMYWJlbHMsICIgICAgRnVs
bCBHQzogIiArIGdjVGltZXJTdHJpbmcoZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5v
dykpOworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9yTGFiZWxzLmdl
dCgpLmdldCgpLCAiICAgIEVkZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4
dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIw
LCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0
cmluZyhkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiwgbm93KSk7CiAKICAgICBkcmF3Q3B1
SGlzdG9yeShjb250ZXh0LCB2aWV3Qm91bmRzLnNpemUud2lkdGggLSA3MCwgMCwgdmlld0JvdW5k
cy5zaXplLmhlaWdodCwgZGF0YS5jcHUpOwogICAgIGRyYXdHQ0hpc3RvcnkoY29udGV4dCwgdmll
d0JvdW5kcy5zaXplLndpZHRoIC0gMTQwLCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRh
LmdjSGVhcFNpemUsIGRhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXS5kaXJ0
eVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRp
ZmljYXRlQ0ZXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmlj
YXRlQ0ZXaW4uY3BwCmluZGV4IDgyMDNjMDM2YTM2MTI1N2U1MmU4MDVkMWZmOTU4ODRjNmI0ODFh
NjQuLjMwZDVlMDU1NTE5YmNhMDAzZDI0NTQ1ZjQzZGQyMTM3MGNmMDJkMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNlcnRpZmlj
YXRlQ0ZXaW4uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNCwxOSArMzUsMTkgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NlcnRD
b250ZXh0KHZvaWQqIHB0ciwgdm9pZCogaW5mbykKICAgICAgICAgQ2VydEZyZWVDZXJ0aWZpY2F0
ZUNvbnRleHQoc3RhdGljX2Nhc3Q8UENDRVJUX0NPTlRFWFQ+KHB0cikpOwogfQogCi1zdGF0aWMg
Q0ZBbGxvY2F0b3JSZWYgY3JlYXRlQ2VydENvbnRleHREZWFsbG9jYXRvcigpCitzdGF0aWMgUmV0
YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKIHsK
ICAgICBDRkFsbG9jYXRvckNvbnRleHQgYWxsb2NDb250ZXh0ID0gewogICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCBkZWFsbG9jQ2VydENvbnRleHQsIDAKICAgICB9OwotICAgIHJldHVybiBD
RkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAm
YWxsb2NDb250ZXh0KSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IGNvcHlDZXJ0aWZpY2F0
ZVRvRGF0YShQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxv
Y2F0b3JSZWYgY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4+IGNlcnRE
ZWFsbG9jID0gY3JlYXRlQ2VydENvbnRleHREZWFsbG9jYXRvcigpOwogICAgIFBDQ0VSVF9DT05U
RVhUIGNlcnRpZmljYXRlQ29weSA9IENlcnREdXBsaWNhdGVDZXJ0aWZpY2F0ZUNvbnRleHQoY2Vy
dGlmaWNhdGUpOwotICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29w
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2Vy
dGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOwor
ICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5
KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYy5nZXQoKS5nZXQoKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMDU3MzI1YzA2MmRiY2U1ZDgx
MmZiNDhmODQ3MzI1OTg2MmFlZDc0OS4uMzA1OGVlODE3ZmNkZjk1ODRjYmIzNjE3MWY0YzZmYzg0
NzEyN2Q4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxh
dGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNP
YmxpcXVlLCBGb250T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZv
bnRXaWR0aFZhcmlhbnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5k
ZXJpbmdNb2RlID0gVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlv
bkRhdGEqID0gbnVsbHB0cik7CiAKICNpZiBVU0UoQ09SRV9URVhUKQotICAgIFdFQkNPUkVfRVhQ
T1JUIEZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQgPSBmYWxzZSwgYm9vbCBzeW50aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRh
dGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZv
bnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVu
ZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBGb250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+
JiYsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRp
Y09ibGlxdWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jp
em9udGFsLCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRo
LCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmlu
ZywgQ3JlYXRpb25EYXRhKiA9IG51bGxwdHIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggYWEzMTMy
YmFiZjcwMjNjZmE1ZjM4MDhjMjM4ZTlhZmQzZGZiZmI4NC4uZDAyYTQ2YjNhM2FmOGNkNzJkODgw
OTJiOTM4ZTlmMjI3MTBlYzI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1
Y3QgQ0dQYXR0ZXJuKiBDR1BhdHRlcm5SZWY7Ci10eXBlZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9y
bVBhdHRlcm5QdHI7Cit0eXBlZGVmIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBsYXRmb3JtUGF0
dGVyblB0cjsKICNlbGlmIFVTRShESVJFQ1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNo
OwogdHlwZWRlZiBJRDJEMUJpdG1hcEJydXNoKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcAppbmRleCBhODIxNWNjMDVmZjIyZDEyOTBmMTcwODAxOTA1NDIxYTAxOTcwOTVhLi43
NjdhOTZiYTFlYjdlYjFiZTQwMjdiZjMxODBiNzUwZmFkZTUzYmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKQEAgLTY5LDEwICs2OSwxMSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
IAogLy8gU29mdC1saW5raW5nIGhlYWRlcnMgbXVzdCBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIHRo
ZXkgI2RlZmluZSBmdW5jdGlvbnMsIGNvbnN0YW50cywgZXRjLgogI2luY2x1ZGUgIkFWRm91bmRh
dGlvbkNGU29mdExpbmtpbmcuaCIKQEAgLTE1Nyw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgaW5s
aW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3Qg
eyByZXR1cm4gbV9sZWdpYmxlT3V0cHV0LmdldCgpOyB9CiAgICAgQVZDRk1lZGlhU2VsZWN0aW9u
R3JvdXBSZWYgc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsK
ICNlbmRpZgotICAgIGlubGluZSBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25z
dCB7IHJldHVybiBtX25vdGlmaWNhdGlvblF1ZXVlOyB9CisgICAgaW5saW5lIGRpc3BhdGNoX3F1
ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWUu
Z2V0KCk7IH0KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSZWY+IHRha2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYp
OwpAQCAtMTk1LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNl
bGVjdGlvbkdyb3VwUmVmPiBtX3NlbGVjdGlvbkdyb3VwOwogI2VuZGlmCiAKLSAgICBkaXNwYXRj
aF9xdWV1ZV90IG1fbm90aWZpY2F0aW9uUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gbV9ub3RpZmljYXRpb25RdWV1ZTsKIAogICAgIG11dGFibGUgUmV0YWluUHRyPENB
Q0ZMYXllclJlZj4gbV9jYVZpZGVvTGF5ZXI7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
bV92aWRlb0xheWVyV3JhcHBlcjsKQEAgLTI0NCw3ICsyNDUsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogYm9vbFN0cmluZyhib29sIHZhbCkKIH0KICNlbmRpZgogCi1zdGF0aWMgQ0ZBcnJheVJlZiBj
cmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY3Jl
YXRlTWV0YWRhdGFLZXlOYW1lcygpCiB7CiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtl
eU5hbWVzW10gPSB7CiAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5RHVyYXRpb24sCkBAIC0yNTgs
MTMgKzI1OSwxMyBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkK
ICNlbmRpZgogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0
IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSks
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVh
dGUoMCwgKGNvbnN0IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihr
ZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAogc3RhdGljIENGQXJy
YXlSZWYgbWV0YWRhdGFLZXlOYW1lcygpCiB7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYga2V5cyA9
IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKTsKLSAgICByZXR1cm4ga2V5czsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQXJyYXlSZWY+PiBrZXlzID0gY3JlYXRlTWV0YWRh
dGFLZXlOYW1lcygpOworICAgIHJldHVybiBrZXlzLmdldCgpLmdldCgpOwogfQogCiAvLyBGSVhN
RTogSXQgd291bGQgYmUgYmV0dGVyIGlmIEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRl
ZCB0aGlzIGtleS4KQEAgLTEzNzUsNyArMTM3Niw3IEBAIEFWRldyYXBwZXI6OkFWRldyYXBwZXIo
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIG93bmVyKQogICAgIEFTU0VSVChkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwog
ICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAKLSAg
ICBtX25vdGlmaWNhdGlvblF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5ub3RpZmljYXRpb25RdWV1ZSIsIDApOworICAgIG1fbm90
aWZpY2F0aW9uUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yubm90aWZpY2F0aW9uUXVldWUiLCAwKSk7CiAK
ICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAgICAgbV9yZXNvdXJjZUxv
YWRlckNhbGxiYWNrcy52ZXJzaW9uID0ga0FWQ0ZBc3NldFJlc291cmNlTG9hZGVyX0NhbGxiYWNr
c1ZlcnNpb25fMTsKQEAgLTEzOTUsOSArMTM5Niw2IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVy
KCkKICAgICBkZXN0cm95VmlkZW9MYXllcigpOwogICAgIGRlc3Ryb3lJbWFnZUdlbmVyYXRvcigp
OwogCi0gICAgaWYgKG1fbm90aWZpY2F0aW9uUXVldWUpCi0gICAgICAgIGRpc3BhdGNoX3JlbGVh
c2UobV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0KICAgICBpZiAoYXZBc3NldCgpKSB7CiAgICAgICAg
IEFWQ0ZBc3NldENhbmNlbExvYWRpbmcoYXZBc3NldCgpKTsKICAgICAgICAgbV9hdkFzc2V0ID0g
MDsKQEAgLTE1MzAsNyArMTUyOCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JV
UkwoY29uc3QgVVJMJiB1cmwsIGJvb2wgaW5oZXJpdFVSSSkKIAogICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCksIEFWQ0ZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9u
c0tleSwgY2ZSZXN0cmljdGlvbnMuZ2V0KCkpOwogCi0gICAgbV9hdkFzc2V0ID0gYWRvcHRDRihB
VkNGVVJMQXNzZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmxSZWYuZ2V0KCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKKyAg
ICBtX2F2QXNzZXQgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25z
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZS5nZXQoKSkpOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVS
X0RFTEVHQVRFKQogICAgIEFTU0VSVChjYWxsYmFja0NvbnRleHQoKSk7CkBAIC0xNTY3LDI0ICsx
NTY1LDI0IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkq
IGQzZERldmljZSkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gY3Jl
YXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBhbiBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3Byb2Js
ZW0vOTg3NzczMD4uCi0gICAgQVZDRlBsYXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVyQ3Jl
YXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVy
SXRlbSgpLCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2
UGxheWVyID0gYWRvcHRDRihwbGF5ZXJSZWYpOworICAgIGF1dG8gcGxheWVyUmVmID0gYWRvcHRD
RihBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1
ZXVlLmdldCgpKSk7CisgICAgbV9hdlBsYXllciA9IHBsYXllclJlZjsKICNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQpCi0gICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5
RW5hYmxlZChwbGF5ZXJSZWYsIEZBTFNFKTsKKyAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlv
bkRpc3BsYXlFbmFibGVkKHBsYXllclJlZi5nZXQoKSwgRkFMU0UpOwogI2VuZGlmCiAKICAgICBp
ZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkpCi0gICAg
ICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKHBsYXllclJlZiwgbV9kM2REZXZp
Y2UuZ2V0KCkpOworICAgICAgICBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5
ZXJSZWYuZ2V0KCksIG1fZDNkRGV2aWNlLmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAg
ICBBU1NFUlQoY2VudGVyKTsKIAotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
Y2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5
ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJSZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKIAog
ICAgIC8vIEFkZCBhIHRpbWUgb2JzZXJ2ZXIsIGFzayB0byBiZSBjYWxsZWQgaW5mcmVxdWVudGx5
IGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5IHdhbnQgcGVyaW9kaWMgY2FsbGJhY2tzIGJ1dAogICAg
IC8vIG91ciBvYnNlcnZlciB3aWxsIGFsc28gYmUgY2FsbGVkIHdoZW5ldmVyIGEgc2VlayBoYXBw
ZW5zLgogICAgIGNvbnN0IGRvdWJsZSB2ZXJ5TG9uZ0ludGVydmFsID0gNjAqNjAqNjAqMjQqMzA7
Ci0gICAgbV90aW1lT2JzZXJ2ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1Rp
bWVPYnNlcnZlckZvckludGVydmFsKHBsYXllclJlZiwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVy
dmFsLCAxMCksIG1fbm90aWZpY2F0aW9uUXVldWUsICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxi
YWNrLCBjYWxsYmFja0NvbnRleHQoKSkpOworICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihB
VkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYu
Z2V0KCksIENNVGltZU1ha2UodmVyeUxvbmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlvblF1
ZXVlLmdldCgpLCAmcGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0
KCkpKTsKIH0KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkg
JiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKQEAgLTE2MDcsMjIg
KzE2MDUsMjIgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBiZWdpbiBsb2Fk
aW5nIG1lZGlhIGRhdGEuCi0gICAgQVZDRlBsYXllckl0ZW1SZWYgaXRlbVJlZiA9IEFWQ0ZQbGF5
ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSk7Ci0gICAgbV9hdlBsYXllckl0ZW0gPSBhZG9wdENGKGl0ZW1SZWYp
OworICAgIGF1dG8gaXRlbVJlZiA9IGFkb3B0RihBVkNGUGxheWVySXRlbUNyZWF0ZVdpdGhBc3Nl
dChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdkFzc2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0
KCkpKTsKKyAgICBtX2F2UGxheWVySXRlbSA9IGl0ZW1SZWY7CiAKICAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiBjZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7
CiAgICAgQVNTRVJUKGNlbnRlcik7CiAKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZp
Y2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlm
aWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlm
aWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24s
IGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYs
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXND
aGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhh
dmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNl
cnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZD
RlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRv
S2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVy
QWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJh
Y2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlv
biwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxs
YmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5
YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlv
blN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRp
b25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRp
b25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0
ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5
KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tD
b250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0Vu
ZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3Rp
ZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
RGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVy
KGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxh
eWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0
KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
KyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5n
ZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwg
aXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVt
cHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2Fs
bGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0
aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50
ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0
ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKICAgICAvLyBGSVhNRTog
QXJlIHRoZXJlIG90aGVyIGxlZ2libGUgb3V0cHV0IHRoaW5ncyB3ZSBuZWVkIHRvIHJlZ2lzdGVy
IGZvcj8gYXNzZXQgYW5kIGhhc0VuYWJsZWRBdWRpbyBhcmUgbm90IGV4cG9zZWQgYnkgQVZDRgog
CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZp
Y2F0aW9uKCksIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVk
aWF0ZWx5KTsKQEAgLTE3NTQsMTUgKzE3NTIsMTQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1Bs
YXlhYmlsaXR5KCkKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmls
aXR5KCVwKSIsIHRoaXMpOwogCi0gICAgc3RhdGljIENGQXJyYXlSZWYgcHJvcGVydHlLZXlOYW1l
OwotICAgIGlmICghcHJvcGVydHlLZXlOYW1lKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDRlN0
cmluZ1JlZiBrZXlOYW1lc1tdID0geyAKKyAgICBzdGF0aWMgYXV0byBwcm9wZXJ0eUtleU5hbWUg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYga2V5TmFtZXNbXSA9IHsKICAgICAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUK
ICAgICAgICAgfTsKLSAgICAgICAgcHJvcGVydHlLZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAo
Y29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXplb2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVz
WzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlO
YW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Cisg
ICAgfSgpKTsKIAotICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3Bl
cnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25D
YWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3lu
Y2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCku
Z2V0KCksIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkp
OwogfQogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhB
VkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0yMDAzLDcgKzIwMDAsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKCkuCi0gICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZD
RlBsYXllckxheWVyQ3JlYXRlV2l0aEFWQ0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQ
bGF5ZXIoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBh
ZG9wdENGKEFWQ0ZQbGF5ZXJMYXllckNyZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGF2UGxheWVyKCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpjcmVhdGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcg
JXAiLCB0aGlzLCB2aWRlb0xheWVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1
MjA5OGE5ZGNiNjU1ZTEzNjkuLmM2NzQ5ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUz
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBD
b2xvciYpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+
IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29s
b3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29s
b3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQog
ewotICAgIHJldHVybiBhZG9wdENGKFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKQEAgLTg5LDcgKzg5LDcgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9w
dGlvblNldDxGbGFncz4gZmxhZ3MpCiB7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3Jl
YXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwg
Y29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgs
NyArMTE4LDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNn
RmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JD
cmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAK
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYg
KzEyNiwxNiBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGlmIChhdXRvIHNyZ2IgPSBjb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAg
ICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBj
YXNlIFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTog
ewotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVh
a0NHQ29sb3IoY29sb3IpOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsK
KyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+
IHRyYW5zcGFyZW50Q0dDb2xvciA9IGNyZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAg
cmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAg
ICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9y
KTsKLSAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVh
dGVDR0NvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCku
Z2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9y
Ojp3aGl0ZSB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNH
Q29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0Nv
bG9yOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9y
UmVmPj4gd2hpdGVDR0NvbG9yID0gY3JlYXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICBy
ZXR1cm4gd2hpdGVDR0NvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmNwcAppbmRleCBhM2ZiODlkNTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVh
Li4yMGUxY2NhYmNkOGZlNzAzOWQ0NWNmOTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAg
LTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENG
U3RyaW5nUmVmJiBjb2xvclNwYWNlTmFtZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIG5hbWVkQ29sb3JTcGFjZSgpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPj4gY29sb3JTcGFjZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQp
OwotICAgICAgICBBU1NFUlQoY29sb3JTcGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkg
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFs
Q29uc3RhbnQpKTsKKyAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwot
ICAgIHJldHVybiBjb2xvclNwYWNlOworICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgp
OwogfQogCiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCmluZGV4IDFiYTllYmVjMmRkMmMwZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1
ZWNhNjc0NmExOWE4MTZiZGNjOGExMTZjOWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
QEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0
ZXJuKCkKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNl
clRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBs
YXRmb3JtUGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0g
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNU
TSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgw
LDcgKzU4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNU
TShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0
dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KHVzZXJUb0Jhc2VDVE0pKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmls
bFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAo
IXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAppbmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRi
OTgwMTEwN2RmMjkyLi4yNzE1OTI0ZDE0YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQx
LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAg
IDogbV9jZ0NvbnRleHQoY2dDb250ZXh0KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZShSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
Q0dGbGFncyBmbGFncyA9IDApCisgICAgICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRl
eHQpKQogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1f
c2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1
NTdlMTcxZjlhMTgzMzBkMjQuLmExOWEyMTFhODcxNzk4NWQ2ZDRjOWY5NDEzODhhYzFiMTQ2MDA4
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNw
cApAQCAtNDUsMjMgKzQ1LDIzIEBAIHN0YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQq
LCBjb25zdCB2b2lkKiwgc2l6ZV90IGNvdW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3Rh
dGljIENHQ29udGV4dFJlZiBjcmVhdGVTY3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gY3JlYXRlU2NyYXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1
bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0
YWluUHRyPENHRGF0YUNvbnN1bWVyUmVmPiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3Vt
ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcykpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQ
REZDb250ZXh0Q3JlYXRlKGNvbnN1bWVyLmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0
byBjb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAs
IDApKTsKIAogICAgIENHRmxvYXQgYmxhY2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3IoY29udGV4dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9r
ZUNvbG9yKGNvbnRleHQsIGJsYWNrKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4
dC5nZXQoKSwgYmxhY2spOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0
KCksIGJsYWNrKTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENH
Q29udGV4dFJlZiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gY3JlYXRlU2NyYXRjaENvbnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQg
PSBjcmVhdGVTY3JhdGNoQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgp
OwogfQogCiBQYXRoIFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8Rmxv
YXRQb2ludD4mIHBvaW50cykKQEAgLTIxMCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlD
bG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxl
bWVudCoKICAgICB9CiB9CiAKLXN0YXRpYyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9z
aW5nU3VicGF0aHMoQ0dQYXRoUmVmIG9yaWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dN
dXRhYmxlUGF0aFJlZj4gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2lu
YWxQYXRoKQogewotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFi
bGUoKTsKLSAgICBDR1BhdGhBcHBseShvcmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3Vi
cGF0aHNBcHBsaWVyRnVuY3Rpb24pOwotICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAg
ICBhdXRvIHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRo
QXBwbHkob3JpZ2luYWxQYXRoLCBwYXRoLmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGll
ckZ1bmN0aW9uKTsKKyAgICBDR1BhdGhDbG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0
dXJuIHBhdGg7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNv
bnN0IEZsb2F0UG9pbnQgJnBvaW50LCBXaW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBDR1BhdGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9y
IG5vbi1jbG9zZWQgcGF0aHMsIGFzIGEgd29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRo
ZSBwYXRoIGZpcnN0LiAgUmFkYXIgNDc1ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8g
dXNlCi0gICAgYXV0byBwYXRoID0gYWRvcHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBs
YXRmb3JtUGF0aCgpKSk7CisgICAgYXV0byBwYXRoID0gY29weUNHUGF0aENsb3NpbmdTdWJwYXRo
cyhwbGF0Zm9ybVBhdGgoKSk7CiAgICAgYm9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBh
dGguZ2V0KCksIDAsIHBvaW50LCBydWxlID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZh
bHNlKTsKICAgICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4
M2ZkZWIxZGNjOTNjZjljMy4uNzZlYTlhZjRkNDIzMjQ5NDFhODk3ZmFhM2U1ZGZkYWIyM2RmODEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJu
Q0cuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJh
Y2sodm9pZCogaW5mbykKICAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3Rh
dGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbykpXSB7IH0pOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNw
YWNlVHJhbnNmb3JtKSBjb25zdAorUmV0YWluUHRyPENHUGF0dGVyblJlZj4gUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNm
b3JtKSBjb25zdAogewogICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uo
KS5zaXplKCkgfTsKIApAQCAtNjgsNyArNjgsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgog
ICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2Ug
aW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMs
IGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVhdFgoKSAm
JiByZXBlYXRZKCkpCi0gICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBs
YXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25z
dGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28g
YmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZy
YWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyBy
ZW5kZXJlZC4KQEAgLTgyLDcgKzgyLDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBD
R0ltYWdlUmVmIGltYWdlID0gcGxhdGZvcm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShp
bWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVy
blRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJl
dHVybiBhZG9wdENGKENHUGF0dGVybkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJV
RSwgJnBhdHRlcm5DYWxsYmFja3MpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNmYzMjJjMzVhOWY5OTE1NmY5MTU2OTliNjJhNmU2NTA1
Y2VhMWVjMi4uNjE0YzgwMmVkZDQ4YjVjZDlmYTQ3ZmEzZjhmZmRiOTgzMzczNjYwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3Jt
RGF0YShDVEZvbnRSZWYgZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRo
VmFyaWFudCB3aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2Rl
LCBDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSkKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0
Zm9ybURhdGEoUmV0YWluUHRyPENURm9udFJlZj4mJiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUg
dGV4dFJlbmRlcmluZ01vZGUsIENyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKQogICAgIDogRm9u
dFBsYXRmb3JtRGF0YShzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBvcmll
bnRhdGlvbiwgd2lkdGhWYXJpYW50LCB0ZXh0UmVuZGVyaW5nTW9kZSwgY3JlYXRpb25EYXRhKQog
ewogICAgIEFTU0VSVF9BUkcoZm9udCwgZm9udCk7CkBAIC00NCw5ICs0NCw5IEBAIEZvbnRQbGF0
Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmIGZvbnQsIGZsb2F0IHNpemUsIGJv
b2wgc3ludGhldGljQm9sCiAjZWxzZQogICAgIG1fZm9udCA9IGZvbnQ7CiAjZW5kaWYKLSAgICBt
X2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMoZm9udCkgJiBrQ1RG
b250Q29sb3JHbHlwaHNUcmFpdDsKLSAgICBtX2lzU3lzdGVtRm9udCA9IFdlYkNvcmU6OmlzU3lz
dGVtRm9udChmb250KTsKLSAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250LCBrQ1RGb250VmFyaWF0
aW9uQXR0cmlidXRlKSkpOworICAgIG1faXNDb2xvckJpdG1hcEZvbnQgPSBDVEZvbnRHZXRTeW1i
b2xpY1RyYWl0cyhmb250LmdldCgpKSAmIGtDVEZvbnRDb2xvckdseXBoc1RyYWl0OworICAgIG1f
aXNTeXN0ZW1Gb250ID0gV2ViQ29yZTo6aXNTeXN0ZW1Gb250KGZvbnQuZ2V0KCkpOworICAgIGF1
dG8gdmFyaWF0aW9ucyA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDVEZv
bnRDb3B5QXR0cmlidXRlKGZvbnQuZ2V0KCksIGtDVEZvbnRWYXJpYXRpb25BdHRyaWJ1dGUpKSk7
CiAgICAgbV9oYXNWYXJpYXRpb25zID0gdmFyaWF0aW9ucyAmJiBDRkRpY3Rpb25hcnlHZXRDb3Vu
dCh2YXJpYXRpb25zLmdldCgpKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbQppbmRleCA3N2UxYzNmMTYyZjA2NjNmYjg1M2ZhMjI1YWMyNDhiNDU2
ZTQxYWY0Li5lM2YwOTI3MDM0OGU3YTVhZWY3MjY2ZWI0NzJkZGJhZTczYmMzNDA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTIxMSwxNCArMjExLDEzIEBAIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcihD
R0ltYWdlUmVmCiAgICAgQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhyZ2JCdWZmZXIsIDAp
OwogICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MocmdiQnVmZmVy
KTsKICAgICBhdXRvIHJldGFpbmVkUkdCQnVmZmVyID0gYWRvcHRDRihyZ2JCdWZmZXIpOwotICAg
IGF1dG8gY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3co
cmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGRhdGEsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCks
IDgsIENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhyZ2JCdWZmZXIpLCBzUkdCQ29sb3JTcGFj
ZVJlZigpLCAoQ0dCaXRtYXBJbmZvKSBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAg
IGlmICghY29udGV4dCkgewogICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQ6OmNyZWF0ZVBpeGVsQnVmZmVyOiBDR0JpdG1hcENvbnRleHRDcmVhdGUgcmV0
dXJuZWQgbnVsbHB0ciIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBh
dXRvIHJldGFpbmVkQ29udGV4dCA9IGFkb3B0Q0YoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdl
U2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKSwgaW1hZ2UpOwogICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhyZ2JCdWZm
ZXIsIDApOwogCiAgICAgcmV0dXJuIGNvbnZlcnRQaXhlbEJ1ZmZlcihyZ2JCdWZmZXIsIHNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDQ1MTEwN2Ji
YjQ2NWJkZTM5NTQ0OWRjMDc4ZDgwNWE4ZTE2NGY4YTQuLjAzMjA5Njk4OGZjZGUyMTcxNzU5MzM1
MDAxMzkwZWIzZmJiOTlhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRl
eHQubW0KQEAgLTE0MiwxMyArMTQyLDEzIEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpj
b2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAg
ICAgIHN0YXRpYyBjb25zdCB2b2lkKiBvcHRpb25LZXlzW10gPSB7IGtDVFR5cGVzZXR0ZXJPcHRp
b25Gb3JjZWRFbWJlZGRpbmdMZXZlbCB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogbHRy
T3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNob3J0VHlwZSwgJmx0ckZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07CiAgICAg
ICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxPcHRpb25WYWx1ZXNbXSA9IHsgQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU2hvcnRUeXBlLCAmcnRsRm9yY2VkRW1i
ZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKLSAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBsdHJU
eXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5
cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOwotICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5
cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChvcHRpb25LZXlz
KSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gbHRyVHlwZXNldHRlck9wdGlvbnMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25W
YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBy
dGxUeXBlc2V0dGVyT3B0aW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdU
SChvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgICAgIFByb3ZpZGVySW5mbyBp
bmZvID0geyBjcCwgbGVuZ3RoLCBzdHJpbmdBdHRyaWJ1dGVzLmdldCgpIH07CiAgICAgICAgIC8v
IEZJWE1FOiBTb21lIFNES3MgY29tcGxhaW4gdGhhdCB0aGUgc2Vjb25kIHBhcmFtZXRlciBiZWxv
dyBjYW5ub3QgYmUgbnVsbC4KICAgICAgICAgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVH
SU4KLSAgICAgICAgUmV0YWluUHRyPENUVHlwZXNldHRlclJlZj4gdHlwZXNldHRlciA9IGFkb3B0
Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMoJnByb3Zp
ZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5mbywgbV9ydW4ubHRyKCkgPyBsdHJUeXBlc2V0
dGVyT3B0aW9ucyA6IHJ0bFR5cGVzZXR0ZXJPcHRpb25zKSk7CisgICAgICAgIFJldGFpblB0cjxD
VFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBhZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdp
dGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywg
MCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMuZ2V0KCkuZ2V0KCkg
OiBydGxUeXBlc2V0dGVyT3B0aW9ucy5nZXQoKS5nZXQoKSkpOwogICAgICAgICBJR05PUkVfTlVM
TF9DSEVDS19XQVJOSU5HU19FTkQKIAogICAgICAgICBpZiAoIXR5cGVzZXR0ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFD
b3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggNzQ4ZWRiOTQwMDlmZDI4YTg5MjVmZGFmMjRmM2Iw
ZTI1OWJhNmQxOC4uZmFhYjZlMTRmMDI3YTQ0NGJkNmRlMjcxMmU2Njk1NGE3NjU1ZGQxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAtNjMsOSArNjMsOSBAQCBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVL
ZXJuaW5nLCBGb250TwogCiAgICAgaWYgKCFlbmFibGVLZXJuaW5nKSB7CiAgICAgICAgIGNvbnN0
IGZsb2F0IHplcm8gPSAwOwotICAgICAgICBzdGF0aWMgQ0ZOdW1iZXJSZWYgemVyb0tlcm5pbmdW
YWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0
VHlwZSwgJnplcm8pOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENG
TnVtYmVyUmVmPj4gemVyb0tlcm5pbmdWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmemVybykpOwogICAgICAgICBr
ZXlzW2NvdW50XSA9IGtDVEtlcm5BdHRyaWJ1dGVOYW1lOwotICAgICAgICB2YWx1ZXNbY291bnRd
ID0gemVyb0tlcm5pbmdWYWx1ZTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5n
VmFsdWUuZ2V0KCkuZ2V0KCk7CiAgICAgICAgICsrY291bnQ7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENHV2luLmNwcAppbmRleCBjZWRiMDJlYjllMWY5NWJmOTAzMzExM2JhNjA1ZDljY2ZmZjg2
OWU4Li5iNjIwMTU4MzgxYjRjMGFiNDcyNzJiYTQxNzYxYzU1N2QxZWIwNjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIENHQ29udGV4dFdpdGhIREMoSERDIGhkYywgYm9vbCBo
YXNBbHBoYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBDR0NvbnRleHRXaXRoSERD
KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiB7CiAgICAgSEJJVE1BUCBiaXRtYXAgPSBzdGF0aWNf
Y2FzdDxIQklUTUFQPihHZXRDdXJyZW50T2JqZWN0KGhkYywgT0JKX0JJVE1BUCkpOwogCkBAIC01
NSwxMiArNTUsMTEgQEAgc3RhdGljIENHQ29udGV4dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBo
ZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQ0dCaXRtYXBJbmZv
IGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IChoYXNBbHBoYSA/IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJz
dCk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4
ZWxEYXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEuc2l6ZSgpLndpZHRoKCksIHBpeGVsRGF0YS5zaXpl
KCkuaGVpZ2h0KCksIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJp
dG1hcEluZm8pOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERh
dGEuc2l6ZSgpLmhlaWdodCgpLCA4LCBwaXhlbERhdGEuYnl0ZXNQZXJSb3coKSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgYml0bWFwSW5mbykpOwogCiAgICAgLy8gRmxpcCBjb29yZHMKLSAgICBDR0Nv
bnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7
Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOworICAgIENHQ29udGV4dFRy
YW5zbGF0ZUNUTShjb250ZXh0LmdldCgpLCAwLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpKTsK
KyAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LmdldCgpLCAxLCAtMSk7CiAgICAgCiAgICAg
Ly8gUHV0IHRoZSBIREMgSW4gYWR2YW5jZWQgbW9kZSBzbyBpdCB3aWxsIGhvbm9yIGFmZmluZSB0
cmFuc2Zvcm1zLgogICAgIFNldEdyYXBoaWNzTW9kZShoZGMsIEdNX0FEVkFOQ0VEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKaW5kZXggNmExNjAzZDIxYjY4ZWM1YmUyOGZk
MDY5NTk3Y2RkMjJjYWYyM2Q2Yy4uOGU1YjNlNDIyMTQ3N2U5MjFkNzgyMjUxOTQ1MjYyZjllMGE4
ZTgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKQEAgLTU4LDEyICs1
OCwxMiBAQCBNR0RldmljZUNsYXNzIGRldmljZUNsYXNzKCkKIFN0cmluZyBkZXZpY2VOYW1lKCkK
IHsKICNpZiBUQVJHRVRfT1NfSU9TCi0gICAgc3RhdGljIENGU3RyaW5nUmVmIGRldmljZU5hbWU7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGRldmlj
ZU5hbWU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10gewotICAgICAgICBkZXZpY2VOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNlTmFtZSwgbnVsbHB0cikpOworICAgICAg
ICBkZXZpY2VOYW1lLmdldCgpID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oTUdD
b3B5QW5zd2VyKGtNR1FEZXZpY2VOYW1lLCBudWxscHRyKSkpOwogICAgIH0pOwotICAgIHJldHVy
biBkZXZpY2VOYW1lOworICAgIHJldHVybiBkZXZpY2VOYW1lLmdldCgpLmdldCgpOwogI2Vsc2UK
ICAgICByZXR1cm4gImlQaG9uZSJfczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggYzY0YTRiY2ExYWQ4ZTdiNzJhZjIyNjAzZmIxY2Mw
MWY5NzY5ZjYyMC4uNzM1OTMzZjE3MjA4NWI5ZTY2OTNhZDQ0YjJhZjE2MGIzNDBjNGY5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKQogc3RhdGljIEZvbnRD
YXNjYWRlIGNhc2NhZGVGb3JTeXN0ZW1Gb250KENHRmxvYXQgc2l6ZSkKIHsKICAgICBVSUZvbnQg
KmZvbnQgPSBbUEFMOjpnZXRVSUZvbnRDbGFzcygpIHN5c3RlbUZvbnRPZlNpemU6c2l6ZV07Ci0g
ICAgcmV0dXJuIEZvbnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEoQ1RGb250Q3JlYXRlV2l0aE5h
bWUoKENGU3RyaW5nUmVmKWZvbnQuZm9udE5hbWUsIGZvbnQucG9pbnRTaXplLCBuaWwpLCBmb250
LnBvaW50U2l6ZSkpOworICAgIHJldHVybiBGb250Q2FzY2FkZShGb250UGxhdGZvcm1EYXRhKGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoKENGU3RyaW5nUmVmKWZvbnQuZm9udE5hbWUsIGZv
bnQucG9pbnRTaXplLCBuaWwpKSwgZm9udC5wb2ludFNpemUpKTsKIH0KIAogRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYgbGlua0VsZW1lbnQsIFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBUZXh0SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgRm9u
dFJlbmRlcmluZ01vZGUsIGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDkzMmM3ODJjNmJjYjNiMmQ2N2U5MzQwMmVjNDIx
YTM0MmQzNmJmNDEuLmE2MDg4ZjdmNmU4MGRhZjFlZjhhOTFlMTdhYjE5MWNiNGYwZjVkODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0K
QEAgLTEyNCwxOCArMTI0LDM4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgSWdub3JlQXV0b3JlbGVh
c2VQb29sCiB9IEF1dG9yZWxlYXNlUG9vbE9wZXJhdGlvbjsKIAotc3RhdGljIENGUnVuTG9vcFNv
dXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwotc3RhdGljIENGTXV0YWJsZUFycmF5UmVm
IFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291
cmNlUmVmPiYgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiB3ZWJUaHJlYWRSZWxlYXNlU291
cmNlOworICAgIHJldHVybiB3ZWJUaHJlYWRSZWxlYXNlU291cmNlOworfQorCitzdGF0aWMgUmV0
YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiYgd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPj4g
d2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworICAgIHJldHVybiB3ZWJUaHJlYWRSZWxlYXNlT2Jq
QXJyYXk7Cit9CiAKIHN0YXRpYyBMb2NrIGRlbGVnYXRlTG9jazsKIHN0YXRpYyBTdGF0aWNDb25k
aXRpb24gZGVsZWdhdGVDb25kaXRpb247Ci1zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIGRlbGVn
YXRlU291cmNlID0gbnVsbHB0cjsKKworc3RhdGljIFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VS
ZWY+JiBkZWxlZ2F0ZVNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBkZWxlZ2F0ZVNvdXJjZTsKKyAgICByZXR1cm4gZGVs
ZWdhdGVTb3VyY2U7Cit9CisKIHN0YXRpYyBCT09MIGRlbGVnYXRlSGFuZGxlZDsKICNpZiBMT0df
TUFJTl9USFJFQURfTE9DS0lORwogc3RhdGljIEJPT0wgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZTsK
ICNlbmRpZgogCi1zdGF0aWMgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFpblJ1bkxvb3BBdXRvVW5s
b2NrT2JzZXJ2ZXI7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcE9ic2VydmVyUmVmPiYgbWFp
blJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wT2JzZXJ2ZXJSZWY+PiBtYWluUnVuTG9vcEF1dG9VbmxvY2tP
YnNlcnZlcjsKKyAgICByZXR1cm4gbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7Cit9CisK
IHN0YXRpYyBCT09MIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1VubG9jazsKIAogc3RhdGljIExv
Y2sgc3RhcnR1cExvY2s7CkBAIC0yMzQsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVn
YXRlTWVzc2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYmIGludm9jYXRpb24pCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UpOworICAgIEFTU0VS
VChkZWxlZ2F0ZVNvdXJjZSgpKTsKICAgICBkZWxlZ2F0ZUxvY2subG9jaygpOwogCiAgICAgZGVs
ZWdhdGVJbnZvY2F0aW9uKCkgPSBXVEZNb3ZlKGludm9jYXRpb24pOwpAQCAtMjU1LDcgKzI3NSw3
IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5TSW52b2NhdGlv
bj4mJiBpbnZvY2F0aW9uKQogICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsKICAgICAgICAgX1dlYlRocmVhZFVubG9jaygp
OwogCi0gICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAg
ICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxlZ2F0ZVNvdXJjZSgpLmdldCgpKTsKICAgICAg
ICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7CiAKICAgICAgICAgd2hpbGUg
KCFkZWxlZ2F0ZUhhbmRsZWQpIHsKQEAgLTI5Niw3ICszMTYsNyBAQCB2b2lkIFdlYlRocmVhZFJ1
bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogdm9pZCBXZWJUaHJlYWRBZG9w
dEFuZFJlbGVhc2UoaWQgb2JqKQogewogICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwotICAgIEFTU0VSVChXZWJUaHJlYWRSZWxlYXNlU291cmNlKTsKKyAgICBBU1NFUlQod2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSgpKTsKIAogI2lmIExPR19SRUxFQVNFUwogICAgIE5TTG9nKEAiUmVs
ZWFzZSBzZW5kIFttYWluIHRocmVhZF06ICVAIiwgb2JqKTsKQEAgLTMwNCwxMCArMzI0LDEwIEBA
IHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKIAogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxvY2spOwogCi0gICAgaWYgKFdlYlRocmVhZFJl
bGVhc2VPYmpBcnJheSA9PSBuaWwpCi0gICAgICAgIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9
IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIDAsIG51bGxw
dHIpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXksIG9i
aik7Ci0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKFdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOwor
ICAgIGlmICh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9PSBuaWwpCisgICAgICAgIHdlYlRo
cmVhZFJlbGVhc2VPYmpBcnJheSgpID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKSk7CisgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpLCBvYmopOworICAgIENGUnVuTG9v
cFNvdXJjZVNpZ25hbCh3ZWJUaHJlYWRSZWxlYXNlU291cmNlKCkuZ2V0KCkpOwogICAgIENGUnVu
TG9vcFdha2VVcCh3ZWJUaHJlYWRSdW5Mb29wKTsKIH0KIApAQCAtNDA0LDkgKzQyNCw5IEBAIHN0
YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZUFycmF5UmVmPiBvYmplY3RzOwogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgICAgIGlmIChDRkFycmF5
R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KSkgewotICAgICAgICAgICAgb2JqZWN0
cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIFdlYlRocmVh
ZFJlbGVhc2VPYmpBcnJheSkpOwotICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhX
ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KHdl
YlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKSkgeworICAgICAgICAgICAgb2JqZWN0cyA9
IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIHdlYlRocmVhZFJl
bGVhc2VPYmpBcnJheSgpLmdldCgpKSk7CisgICAgICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFs
dWVzKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNDczLDcgKzQ5Myw3IEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29wQXV0b1VubG9jayhD
RlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHksIHZvaWQqCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1VubG9jayA9IE5POwotICAgIENG
UnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BB
dXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29w
UmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9Vbmxv
Y2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgX1dlYlRo
cmVhZFVubG9jaygpOwogfQpAQCAtNDg0LDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJl
YWRBdXRvTG9jayh2b2lkKQogCiAgICAgaWYgKCFtYWluVGhyZWFkTG9ja0NvdW50KSB7CiAgICAg
ICAgIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1VubG9jayA9IFlFUzsKLSAgICAgICAgQ0ZSdW5M
b29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9Vbmxv
Y2tPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsgICAgCisgICAgICAgIENGUnVuTG9v
cEFkZE9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2Nr
T2JzZXJ2ZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICAgICAgX1dlYlRo
cmVhZExvY2soKTsKICAgICAgICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7
CiAgICAgfQpAQCAtNTU2LDEyICs1NzYsMTIgQEAgc3RhdGljIHZvaWQgTWFpblJ1bkxvb3BVbmxv
Y2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXYKIAog
c3RhdGljIHZvaWQgX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0g
ICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVu
TG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1
bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHN0
YXRpYyB2b2lkIF9XZWJSdW5Mb29wRGlzYWJsZU5lc3RlZEZyb21NYWluVGhyZWFkKCkKIHsKLSAg
ICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29w
QXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOyAKKyAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9j
a09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2Vi
UnVuTG9vcEVuYWJsZU5lc3RlZCgpCkBAIC02NDIsOCArNjYyLDggQEAgc3RhdGljIHZvaWQqIFJ1
bldlYlRocmVhZCh2b2lkKikKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5M
b29wLCB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7CiAKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0
ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2V9OwotICAg
IFdlYlRocmVhZFJlbGVhc2VTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwg
LTEsICZSZWxlYXNlU291cmNlQ29udGV4dCk7Ci0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKHdlYlRo
cmVhZFJ1bkxvb3AsIFdlYlRocmVhZFJlbGVhc2VTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CisgICAgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpID0gYWRvcHRDRihDRlJ1bkxvb3BTb3Vy
Y2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNlU291cmNlQ29udGV4dCkpOworICAgIENGUnVu
TG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJUaHJlYWRSZWxlYXNlU291cmNlKCku
Z2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAKICAgICBwZXJDYWxsb3V0QXV0b3JlbGVh
c2Vwb29sRW5hYmxlZCA9IF9DRlJ1bkxvb3BTZXRQZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5h
YmxlZChZRVMpOwogCkBAIC02NzksMTYgKzY5OSwxNiBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRo
cmVhZCgpCiAKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQo
KTsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGRlbGVnYXRlU291cmNlQ29udGV4dCA9IHsw
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZX07Ci0gICAgZGVsZWdhdGVTb3Vy
Y2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgMCwgJmRlbGVnYXRlU291cmNlQ29u
dGV4dCk7CisgICAgZGVsZWdhdGVTb3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3Jl
YXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpKTsKIAogICAgIC8vIFdlIHNo
b3VsZG4ndCBnZXQgZGVsZWdhdGUgY2FsbGJhY2tzIHdoaWxlIHNjcm9sbGluZywgYnV0IHRoZXJl
IG1pZ2h0IGJlCiAgICAgLy8gb25lIG91dHN0YW5kaW5nIHdoZW4gd2Ugc3RhcnQuICBBZGQgdGhl
IHNvdXJjZSBmb3IgYWxsIGNvbW1vbiBydW4gbG9vcAogICAgIC8vIG1vZGVzIHNvIHdlIGRvbid0
IGJsb2NrIHRoZSB3ZWIgdGhyZWFkIHdoaWxlIHNjcm9sbGluZy4KLSAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UocnVuTG9vcCwgZGVsZWdhdGVTb3VyY2UsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cisg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVnYXRlU291cmNlKCkuZ2V0KCksIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAKICAgICBzQXN5bmNEZWxlZ2F0ZXMoKSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCi0gICAgbWFpblJ1bkxvb3BBdXRvVW5s
b2NrT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29w
QmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDMwMDAwMDEsIE1haW5SdW5Mb29w
QXV0b1VubG9jaywgbnVsbHB0cik7CisgICAgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIo
KSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJl
Zm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1
dG9VbmxvY2ssIG51bGxwdHIpKTsKIAogICAgIHB0aHJlYWRfYXR0cl90IHRhdHRyOwogICAgIHB0
aHJlYWRfYXR0cl9pbml0KCZ0YXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAppbmRleCBlZmE4NDY0NWJhMzk4YTRiZTFi
Y2RlMmRlYzNkMDEwOGE0Mzk3NTUzLi5jYTk4YThmY2I0OTc2MjUxYTJjYzE5YmRjZjI3MWY3ZjY0
OTZlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWRSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZFJ1bi5jcHAKQEAgLTExMiwxNCArMTEyLDE5IEBAIGV4dGVybiAiQyIgewogdHlw
ZWRlZiBXVEY6OlZlY3RvcjxXZWJUaHJlYWRCbG9jaz4gV2ViVGhyZWFkUnVuUXVldWU7CiAKIHN0
YXRpYyBMb2NrIHJ1blF1ZXVlTXV0ZXg7Ci1zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIHJ1blNv
dXJjZTsKIHN0YXRpYyBXZWJUaHJlYWRSdW5RdWV1ZSogcnVuUXVldWU7CiAKK3N0YXRpYyBSZXRh
aW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgcnVuU291cmNlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4+IHJ1blNvdXJjZTsKKyAg
ICByZXR1cm4gcnVuU291cmNlOworfQorCiBzdGF0aWMgdm9pZCBIYW5kbGVSdW5Tb3VyY2Uodm9p
ZCAqaW5mbykKIHsKICAgICBVTlVTRURfUEFSQU0oaW5mbyk7CiAgICAgQVNTRVJUKFdlYlRocmVh
ZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQocnVuU291cmNlKTsKKyAgICBBU1NFUlQocnVuU291
cmNlKCkpOwogICAgIEFTU0VSVChydW5RdWV1ZSk7CiAKICAgICBXZWJUaHJlYWRSdW5RdWV1ZSBx
dWV1ZUNvcHk7CkBAIC0xNDAsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgX1dlYlRocmVhZFJ1bih2
b2lkICheYmxvY2spKHZvaWQpLCBib29sIHN5bmNocm9ub3VzKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQVNTRVJUKHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsK
ICAgICBBU1NFUlQocnVuUXVldWUpOwogCiAgICAgV2ViVGhyZWFkQmxvY2tTdGF0ZSogc3RhdGUg
PSAwOwpAQCAtMTUyLDcgKzE1Nyw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAo
XmJsb2NrKSh2b2lkKSwgYm9vbCBzeW5jaHJvbm91cykKICAgICAgICAgcnVuUXVldWUtPmFwcGVu
ZChXZWJUaHJlYWRCbG9jayhibG9jaywgc3RhdGUpKTsKICAgICB9CiAKLSAgICBDRlJ1bkxvb3BT
b3VyY2VTaWduYWwocnVuU291cmNlKTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwocnVuU291
cmNlKCkuZ2V0KCkpOwogICAgIENGUnVuTG9vcFdha2VVcChXZWJUaHJlYWRSdW5Mb29wKCkpOwog
CiAgICAgaWYgKHN5bmNocm9ub3VzKSB7CkBAIC0xNjksMTUgKzE3NCwxNSBAQCB2b2lkIFdlYlRo
cmVhZFJ1bih2b2lkICheYmxvY2spKHZvaWQpKQogdm9pZCBXZWJUaHJlYWRJbml0UnVuUXVldWUo
KQogewogICAgIEFTU0VSVCghcnVuUXVldWUpOwotICAgIEFTU0VSVCghcnVuU291cmNlKTsKKyAg
ICBBU1NFUlQoIXJ1blNvdXJjZSgpKTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgcHJl
ZDsKICAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBeewogICAgICAgICBydW5RdWV1ZSA9IG5ldyBX
ZWJUaHJlYWRSdW5RdWV1ZTsKIAotICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1blNv
dXJjZUNvbnRleHQgPSB7MCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgTlVMTCwgSGFuZGxlUnVuU291cmNlfTsKLSAgICAgICAgcnVuU291cmNlID0gQ0ZSdW5Mb29w
U291cmNlQ3JlYXRlKE5VTEwsIC0xLCAmcnVuU291cmNlQ29udGV4dCk7Ci0gICAgICAgIENGUnVu
TG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29wKCksIHJ1blNvdXJjZSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKKyAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250
ZXh0ID0geyAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVSdW5Tb3VyY2UgfTsKKyAgICAgICAgcnVu
U291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAtMSwgJnJ1
blNvdXJjZUNvbnRleHQpKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKFdlYlRocmVhZFJ1
bkxvb3AoKSwgcnVuU291cmNlKCkuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVy
TWFjLmNwcAppbmRleCA4ZjM3ZGQ3MWYwNzc0ZTM4NWI2Njk2MjljYmQyZTBkNTg0YzQ2NmJhLi5h
NDdlMzQzZjRkY2EwMzZmZWFlZmQzYzEwZDVmMjQwZTM0YjlmMGRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCkBAIC0zNSw3ICszNSw3
IEBAIFBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
cG93ZXJPbkhhbmRlcikKICAgICAsIG1fcG93ZXJDb25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlm
aWNhdGlvblBvcnQobnVsbHB0cikKICAgICAsIG1fbm90aWZpZXJSZWZlcmVuY2UoMCkKLSAgICAs
IG1fZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQu
UG93ZXJPYnNlcnZlciIsIDApKQorICAgICwgbV9kaXNwYXRjaFF1ZXVlKGFkb3B0T1NPYmplY3Qo
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAw
KSkpCiB7CiAgICAgbV9wb3dlckNvbm5lY3Rpb24gPSBJT1JlZ2lzdGVyRm9yU3lzdGVtUG93ZXIo
dGhpcywgJm1fbm90aWZpY2F0aW9uUG9ydCwgW10odm9pZCogY29udGV4dCwgaW9fc2VydmljZV90
IHNlcnZpY2UsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpIHsK
ICAgICAgICAgc3RhdGljX2Nhc3Q8UG93ZXJPYnNlcnZlcio+KGNvbnRleHQpLT5kaWRSZWNlaXZl
U3lzdGVtUG93ZXJOb3RpZmljYXRpb24oc2VydmljZSwgbWVzc2FnZVR5cGUsIG1lc3NhZ2VBcmd1
bWVudCk7CkBAIC00Myw3ICs0Myw3IEBAIFBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcikKICAgICBpZiAoIW1fcG93ZXJDb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBJT05vdGlmaWNhdGlvblBvcnRTZXREaXNw
YXRjaFF1ZXVlKG1fbm90aWZpY2F0aW9uUG9ydCwgbV9kaXNwYXRjaFF1ZXVlKTsKKyAgICBJT05v
dGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVlKG1fbm90aWZpY2F0aW9uUG9ydCwgbV9kaXNw
YXRjaFF1ZXVlLmdldCgpKTsKIH0KIAogUG93ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQpA
QCAtNTEsOCArNTEsNiBAQCBQb3dlck9ic2VydmVyOjp+UG93ZXJPYnNlcnZlcigpCiAgICAgaWYg
KCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfcmVs
ZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotCiAgICAgSU9EZXJlZ2lzdGVyRm9yU3lzdGVtUG93ZXIo
Jm1fbm90aWZpZXJSZWZlcmVuY2UpOwogICAgIElPU2VydmljZUNsb3NlKG1fcG93ZXJDb25uZWN0
aW9uKTsKICAgICBJT05vdGlmaWNhdGlvblBvcnREZXN0cm95KG1fbm90aWZpY2F0aW9uUG9ydCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRl
eCAxNTg2ZDdiYjdhZjI1OTMxMTY2ZDI2ZWM1ZGZjNDY5M2E4ZjYyODlhLi5hODBiNjIwNzVjMDFk
YzE0OWY4MzExYzc0OTRjODEzMjlhYzYwNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPElP
S2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBpb19jb25u
ZWN0X3QgbV9wb3dlckNvbm5lY3Rpb247CiAgICAgSU9Ob3RpZmljYXRpb25Qb3J0UmVmIG1fbm90
aWZpY2F0aW9uUG9ydDsKICAgICBpb19vYmplY3RfdCBtX25vdGlmaWVyUmVmZXJlbmNlOwotICAg
IGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3Bh
dGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4
IDBiNzcwY2ZiMTMzZjNhOGE0ZTdkYjZkYjhjODBmZjYyNWMyMzkyNDkuLmQzZjFhYzcyOWI1YjVj
ZGU2M2RiNDRjMDA1MjdjMDk4NjNjODJhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNpbXBvcnQgPENvcmVNZWRpYS9Db3Jl
TWVkaWEuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CkBAIC02Myw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1l
KENNVGltZSk7CiAgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24q
Kik7CiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3NlcmlhbERpc3BhdGNoUXVldWU7CiAgICAg
Q01UaW1lIG1fbG93V2F0ZXJUaW1lIHsga0NNVGltZUludmFsaWQgfTsKIAogICAgIFJldGFpblB0
cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCBjNzlhNDc5NjI0MDJiYjEz
MjkzM2M4N2JmZTk4ZDIzN2Y1NmVlMDY5Li5jY2M4ZGQzYTlkNGYwZmRhODg5MzNmMGZkMWUyODFk
ZTNhZGU5N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtNTIsMTQgKzUyLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlCiB9CiAK
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
KCkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ii
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAgICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGlt
ZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkRTLCAxMDAwKSB9CiB7CiB9
CiAKIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpCiB7Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwog
ICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAgICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9j
b252ZXJ0ZXIpOwogICAgICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CkBAIC04OSw3ICs4OCw3
IEBAIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVy
UXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpmaW5pc2goKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1
ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBe
ewogICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJ
bnZhbGlkKTsKICAgICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOwogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZm
ZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOwpAQCAtNTEwLDcgKzUwOSw3
IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIAogdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiB7Ci0gICAg
ZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3lu
YyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAgICAgIGlmIChtX2lzRW5jb2Rp
bmcpCiAgICAgICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCBjMDU4
Mzc0NzBiMWM4MjcyZGU3Yzg5YzQxNGJhMThhMGYwZTllOWNkLi4zNzZhNWNmYmVhYjFhMTQ2ZjI5
MGIyY2IyNDNjNWMxMzMyZGQ3NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPENvcmVNZWRp
YS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVlRFcnJvcnMuaD4KKyNpbmNs
dWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVC
dWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVz
c2lvblNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNzaW9uUmVmOwpAQCAtNTgsNyArNTksNyBAQCBw
cml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQg
KnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZm
ZXJSZWYpOwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7Cisg
ICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwog
ICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRDb2RlY1R5cGUgeyBrQ01WaWRlb0NvZGVjVHlw
ZV9IMjY0IH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZm
ZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KaW5kZXggZTAzZTc3MGYwY2FhOWJkYzZiMTZkNWFjNzRiYjM3ODZkZjhmNGFkNy4uMTc2Nzk5
NzQxYmQ0ZmJiOTkwOTlhZDg0MzRlZjZjMmY0NmI4YWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTQ4LDE0ICs0OCwxMyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlw
ZSkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ii
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAgICAgLCBtX291dHB1dENvZGVjVHlwZSB7IG91
dHB1dENvZGVjVHlwZSB9CiB7CiB9CiAKIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCiB7Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX3Nl
cmlhbERpc3BhdGNoUXVldWUpOwogICAgIGlmIChtX3Z0U2Vzc2lvbikgewogICAgICAgICBWVENv
bXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUobV92dFNlc3Npb24uZ2V0KCkpOwogICAgICAgICBt
X3Z0U2Vzc2lvbiA9IG51bGxwdHI7CkBAIC04Myw3ICs4Miw3IEBAIHZvaWQgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkIGJpdFJhdGUpCiAKIHZv
aWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQogewotICAgIGRpc3BhdGNo
X3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJp
YWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVz
c2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFs
aWQpOwogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZy
YW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKIApAQCAtMTY1LDcgKzE2NCw3IEBAIHZvaWQg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxl
QnVmZmVyUmVmIGJ1ZmZlcikKIAogdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFk
ZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiB7Ci0gICAgZGlzcGF0Y2hf
c3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhtX3Nlcmlh
bERpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAgICAgIGlmICghbV9pc0VuY29kaW5nKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIuaAppbmRleCAzY2JlOGNlYTY4NWE1NDU4ODIwZGYyODhiZGY2Y2E2ZGVh
YjIzYjliLi5mODYxOWY2YTE5MThhZjA2MGUyYTA1ZTA2MzE4MmY1NGU4NmEyMGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBdWRpb1Nlc3Np
b247CkBAIC03Nyw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYkFWQXVkaW9T
ZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXI+IG1fbGlzdGVuZXI7CiAgICAgUmV0YWluUHRy
PEFWQXVkaW9TZXNzaW9uPiBtX2F1ZGlvU2Vzc2lvbjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRp
bWVyPiBtX3VwZGF0ZURldmljZVN0YXRlUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rp
c3BhdGNoUXVldWUgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4gbV9kaXNwYXRjaFF1ZXVlOwogICAgIExvY2sgbV9sb2NrOwogICAgIEF1ZGlvU2Vzc2lvblN0
YXRlIG1fYXVkaW9TZXNzaW9uU3RhdGUgeyBBdWRpb1Nlc3Npb25TdGF0ZTo6Tm90TmVlZGVkIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9z
L0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbQppbmRleCBiMWI0N2FmMjljNGE0NDUyZmM4MTAwM2JhMzU4NmQ5MDJlODZhZTlmLi5lZjli
ZTEwNmJiZDRlYTE2ODQ0ZWU3MDljNjBhMjU4Y2M2MmNlYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtODcsOSArODcsOSBA
QCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBBVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0bwogfQogCiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKLSAgICA6IG1f
ZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkp
CisgICAgOiBtX2Rpc3BhdGNoUXVldWUoYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoImNvbS5hcHBsZS5XZWJLaXQuQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciIs
IERJU1BBVENIX1FVRVVFX1NFUklBTCkpKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0
Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spXSB7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIo
W3RoaXMsIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayldIHsKICAgICAgICAgY3JlYXRlQXVkaW9T
ZXNzaW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQpAQCAtMTEzLDcgKzExMyw2IEBAIHZvaWQgQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlQXVkaW9TZXNzaW9uKCkKIAog
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKICAgICBbbV9saXN0ZW5lciBpbnZhbGlkYXRlXTsKICAgICBtX2xpc3RlbmVyID0gbnVsbHB0
cjsKIH0KQEAgLTE1NywxMyArMTU2LDEzIEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKQogICAgIGlmIChtX2F1ZGlv
U2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkgewogICAgICAgICBt
X2F1ZGlvU2Vzc2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6OkFjdGl2ZTsKIAotICAgICAg
ICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7Cisg
ICAgICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIo
W3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0p
LmdldCgpKTsKICAgICB9CiAKICAgICBWZWN0b3I8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
PiBuZXdBdWRpb0RldmljZXM7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1h
a2VCbG9ja1B0cihbJl0geworICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCBtYWtlQmxvY2tQdHIoWyZdIHsKICAgICAgICAgbmV3QXVkaW9EZXZpY2VzID0gcmV0cmlldmVB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgIH0pLmdldCgpKTsKICAgICBzZXRBdWRp
b0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSk7CkBAIC0xNzQsMTIgKzE3
MywxMiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldENhcHR1
cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0
YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkgewogICAgICAgICBtX2F1ZGlvU2Vz
c2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6OkFjdGl2ZTsKIAotICAgICAgICBkaXNwYXRj
aF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10geworICAgICAgICBk
aXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbdGhpc10g
ewogICAgICAgICAgICAgYWN0aXZhdGVBdWRpb1Nlc3Npb24oKTsKICAgICAgICAgfSkuZ2V0KCkp
OwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2Nr
UHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIo
W3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgYXV0byBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVE
ZXZpY2VzKCk7CiAgICAgICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRo
cmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24p
LCBuZXdBdWRpb0RldmljZXMgPSBXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2
aWNlcykpOwpAQCAtMjU0LDcgKzI1Myw3IEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6ZGlzYWJsZUFsbERldmljZXNRdWVyeSgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmUp
IHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIo
W3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBt
YWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRl
ICE9IEF1ZGlvU2Vzc2lvblN0YXRlOjpOb3ROZWVkZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA4
YjE4ZmYxMjkyNTc4OTM3OTE1ZWFhNmE0OTk4Mzc5MTcwNTE4MzA4Li43OGVjMDZiNzRlNDcyYmQ2
MzhhOWY1ZTkzNzBiZjJmNmI4ZjliMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTMwMSw3ICszMDEs
NyBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQotV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENv
b2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxvcHQpOworV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihD
RlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9
IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggYTM3ODUwZDc2
ZWJkZTg4NGIyMmQ4OTAwZGVlMzZmODRjODQ1MTZhYi4uY2VlNWQ3ZWFjYmNiNjIxMGIyMjlkY2Vh
Yzg3YjQ2ZjRmYmQ4ZWNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCkBAIC03MiwxNyArNzIsMTYgQEAgYm9v
bCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhLAogICAgIHJldHVybiB0cnVlOwogfQogCi1DRlVSTEF1dGhDaGFs
bGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFs
bGVuZ2UpCitSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjcmVhdGVDRihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTog
V2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgaW4gbV9jZkNoYWxsZW5nZT8gRm91
bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQuCiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVk
ZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnBy
b3Bvc2VkQ3JlZGVudGlhbCgpKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNl
UmVmPiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlKCkpKTsKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZV
UkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlh
bC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJv
cigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gY3JlZGVudGlhbCA9IGNyZWF0ZUNG
KGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpOworICAgIGF1dG8gcHJvdGVjdGlv
blNwYWNlID0gY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFj
ZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVD
b3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwg
Y29yZUNoYWxsZW5nZS5lcnJvcigpKSk7CiB9CiAKLUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVD
Rihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKK1JldGFpblB0cjxDRlVSTENyZWRl
bnRpYWxSZWY+IGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogewog
ICAgIENGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlID0ga0NGVVJMQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZTsKICAgICBzd2l0Y2ggKGNvcmVDcmVkZW50aWFsLnBlcnNpc3Rl
bmNlKCkpIHsKQEAgLTk4LDEwICs5NywxMCBAQCBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0Yo
Y29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAs
IGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVu
dGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsK
KyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoMCwgY29yZUNyZWRlbnRp
YWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVDcmVkZW50aWFsLnBhc3N3b3Jk
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgcGVyc2lzdGVuY2UpKTsKIH0KIAotQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3Bh
Y2UpCitSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQogewogICAgIENGVVJMUHJvdGVjdGlvblNwYWNlU2Vy
dmVyVHlwZSBzZXJ2ZXJUeXBlID0ga0NGVVJMUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUDsKICAg
ICBzd2l0Y2ggKGNvcmVTcGFjZS5zZXJ2ZXJUeXBlKCkpIHsKQEAgLTE2NSw3ICsxNjQsNyBAQCBD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNv
cmVTcGFjZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIENGVVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRlKDAsIGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlwZSwgY29yZVNwYWNl
LnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgc2NoZW1lKTsKKyAgICByZXR1cm4gYWRv
cHRDRihDRlVSTFByb3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFj
ZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHNjaGVtZSkpOwogfQogCiBDcmVkZW50
aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKaW5kZXgg
ODlhOTM1Mjg5YWQ3OWQ0MGIzN2RkMjAzYTgwZTllOGRmNzExYjI2ZS4uNzBmNTAyMDVlYjJiZGEw
ODE2YmJkMDg4YzQ2Y2RhYWI5YzQ1MzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3Jl
ZGVudGlhbFByaXYuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB0eXBlZGVmIHN0cnVj
dCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7CiB0eXBlZGVmIHN0
cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOwpAQCAt
MzgsOSArMzksOSBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRl
bnRpYWw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKLUNGVVJMQXV0aENoYWxsZW5nZVJlZiBj
cmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotQ0ZVUkxDcmVkZW50aWFs
UmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVm
IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworUmV0YWluUHRyPENGVVJMQXV0aENo
YWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKK1Jl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsK
K1JldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gY3JlYXRlQ0YoY29uc3QgUHJvdGVj
dGlvblNwYWNlJik7CiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKIFByb3Rl
Y3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHAKaW5kZXggNmVhMzAxMjM5NTZlZGJkMzA5ZDZjZTBlYWZmZTc4M2Q3MzhlNmRmYy4u
MWZhODliYWUxZGUxY2IwNzYzZTA3YzYxYTQxOGEzMWNjZWY1NWI1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBib29sIGNlcnRpZmljYXRlc01hdGNoKFNlY1Ry
dXN0UmVmIHRydXN0MSwgU2VjVHJ1c3RSZWYgdHJ1c3QyKQogUmV0YWluUHRyPENGQXJyYXlSZWY+
IENlcnRpZmljYXRlSW5mbzo6Y2VydGlmaWNhdGVDaGFpbkZyb21TZWNUcnVzdChTZWNUcnVzdFJl
ZiB0cnVzdCkKIHsKICAgICBhdXRvIGNvdW50ID0gU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUNvdW50
KHRydXN0KTsKLSAgICBhdXRvIGNlcnRpZmljYXRlQ2hhaW4gPSBDRkFycmF5Q3JlYXRlTXV0YWJs
ZSgwLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CisgICAgYXV0byBjZXJ0aWZpY2F0
ZUNoYWluID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBjb3VudCwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKysp
Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZXJ0aWZpY2F0ZUNoYWluLCBTZWNUcnVzdEdl
dENlcnRpZmljYXRlQXRJbmRleCh0cnVzdCwgaSkpOwotICAgIHJldHVybiBhZG9wdENGKChDRkFy
cmF5UmVmKWNlcnRpZmljYXRlQ2hhaW4pOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2Vy
dGlmaWNhdGVDaGFpbi5nZXQoKSwgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgodHJ1c3Qs
IGkpKTsKKyAgICByZXR1cm4gY2VydGlmaWNhdGVDaGFpbjsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdl
Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFs
U3RvcmFnZUNGTmV0LmNwcAppbmRleCAwNzUyY2ExMDU1MmZkYjFhN2MzNTc1OTMyYTIzMmFhZWJl
ZGM1ZDYwLi4wYTAzMzg2ZDkzYzVjMTJlNjYwMTY2ZmUyOTA2YjgxMTRiNWRlNGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdl
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCi1zdGF0aWMgaW5saW5lIENGVVJMQ3JlZGVudGlhbFJlZiBjb3B5Q3JlZGVu
dGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlv
blNwYWNlKQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjb3B5
Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJv
dGVjdGlvblNwYWNlKQogewogICAgIGF1dG8gc3RvcmFnZSA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgcmV0dXJuIENGVVJM
Q3JlZGVudGlhbFN0b3JhZ2VDb3B5RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uo
c3RvcmFnZS5nZXQoKSwgcHJvdGVjdGlvblNwYWNlKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENyZWRlbnRpYWxTdG9yYWdlQ29weURlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNl
KHN0b3JhZ2UuZ2V0KCksIHByb3RlY3Rpb25TcGFjZSkpOwogfQogCiBDcmVkZW50aWFsIENyZWRl
bnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgYXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9IGFk
b3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7Ci0gICAgYXV0byBjcmVkZW50aWFsQ0Yg
PSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3Bh
Y2VDRi5nZXQoKSkpOworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBjcmVhdGVDRihwcm90
ZWN0aW9uU3BhY2UpOworICAgIGF1dG8gY3JlZGVudGlhbENGID0gY29weUNyZWRlbnRpYWxGcm9t
UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKTsKICAgICByZXR1cm4gY29y
ZShjcmVkZW50aWFsQ0YuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKaW5kZXggNWVhNDQ4ZmNlNzcz
ZTAzOTRkNzRmZDdiMWY5YzM3NjM2OWNkOWY4My4uYmI4M2RmZjRhMjliZmQ5N2ZiNTA1YTQ5M2I4
OTRiMThlMTE2ZjVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcApAQCAtNjMsOCArNjMsOCBAQCBDRlJ1bkxvb3BS
ZWYgbG9hZGVyUnVuTG9vcCgpCiAKICAgICAgICAgICAgICAgICAvLyBNdXN0IGFkZCBhIHNvdXJj
ZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRpbmcu
CiAgICAgICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0gezAsICh2b2lk
KikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZv
cm19OwotICAgICAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENG
UnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCk7Ci0gICAgICAgICAgICAgICAgQ0ZSdW5M
b29wQWRkU291cmNlKGxvYWRlclJ1bkxvb3BPYmplY3QsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOworICAgICAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2UgPSBhZG9wdENG
KENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAgICAgICAgIENG
UnVuTG9vcEFkZFNvdXJjZShsb2FkZXJSdW5Mb29wT2JqZWN0LCBib2d1c1NvdXJjZS5nZXQoKSwg
a0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKIAogICAgICAgICAgICAgICAgIGxvYWRlclJ1bkxvb3BD
b25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNWQ3ZDc5NjE0NDY1ZmNhYjViZDZiNjQx
OGUwNjBmNjhlYjA5NGE0YS4uYTUxYmRiOGUzMjViMzM3NmQxNGM2ZjRmNWU4MDdkMzgxZGJiOGQ2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKQEAgLTc5LDE2ICs3
OSwxNiBAQCBzdGF0aWMgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSB0b0NGSFRUUENv
b2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koSFRUUENvbwogICAgIHJldHVybiBDRkhUVFBDb29raWVT
dG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNy
ZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25h
bDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCitSZXRhaW5QdHI8
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3Ry
aW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tp
ZUFjY2VwdFBvbGljeSkKIHsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10g
PSB7IF9rQ0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJpdmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNl
c3Npb25Qcm9wZXJ0eVZhbHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwotICAgIENGRGljdGlv
bmFyeVJlZiBzZXNzaW9uUHJvcGVydGllcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBzZXNzaW9uUHJvcGVydHlLZXlzLCBzZXNzaW9uUHJvcGVydHlWYWx1ZXMsIHNp
emVvZihzZXNzaW9uUHJvcGVydHlLZXlzKSAvIHNpemVvZigqc2Vzc2lvblByb3BlcnR5S2V5cyks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOwotICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBf
Q0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZGVudGlmaWVy
LCBzZXNzaW9uUHJvcGVydGllcyk7CisgICAgYXV0byBzZXNzaW9uUHJvcGVydGllcyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25Qcm9wZXJ0
eUtleXMsIHNlc3Npb25Qcm9wZXJ0eVZhbHVlcywgc2l6ZW9mKHNlc3Npb25Qcm9wZXJ0eUtleXMp
IC8gc2l6ZW9mKCpzZXNzaW9uUHJvcGVydHlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gc3Rv
cmFnZVNlc3Npb24gPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGlkZW50aWZpZXIsIHNlc3Npb25Qcm9wZXJ0aWVzLmdldCgpKSk7CiAgICAg
CiAgICAgLy8gVGhlIHByaXZhdGUgc3RvcmFnZSBzZXNzaW9uIHNob3VsZCBoYXZlIHRoZSBzYW1l
IHByb3BlcnRpZXMgYXMgdGhlIGRlZmF1bHQgc3RvcmFnZSBzZXNzaW9uLAogICAgIC8vIHdpdGgg
dGhlIGV4Y2VwdGlvbiB0aGF0IGl0IHNob3VsZCBiZSBpbi1tZW1vcnkgb25seSBzdG9yYWdlLgot
ICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgYXV0byBjYWNoZSA9IGFk
b3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBDRlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNh
Y2hlLmdldCgpLCAwKTsKICAgICBhdXRvIGRlZmF1bHRDYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNo
ZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHko
Y2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eShkZWZhdWx0Q2FjaGUuZ2V0KCkp
KTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpbwogICAgICAgICBj
ZkNvb2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQ
b2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UpOwogICAgIH0KIAotICAgIGF1dG8gY29va2llU3Rv
cmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbikpOworICAgIGF1dG8gY29va2llU3RvcmFn
ZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIENGSFRUUENvb2tpZVN0
b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgY2ZDb29raWVB
Y2NlcHRQb2xpY3kpOwogICAgIAogICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAKaW5kZXggY2IwOGI5MzczNTA5YTUwMDc5Mjc0NjhjMDc2Y2Y4MmU2NWQ1YjA3
ZS4uODczN2M0YzcxNGY2NWRlNGMwNDZkNTkxNzA2MjFhOWFhNWU3MDZjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IFByb3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBjb25zdAogewot
ICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gY2ZTcGFjZSA9IGFkb3B0Q0Yo
Y3JlYXRlQ0YoKnRoaXMpKTsKKyAgICBhdXRvIGNmU3BhY2UgPSBjcmVhdGVDRigqdGhpcyk7CiAg
ICAgcmV0dXJuIGNmU3BhY2UgJiYgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWNlaXZlc0NyZWRlbnRp
YWxTZWN1cmVseShjZlNwYWNlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXgg
MmQ0ZWZmNTA1Y2M0MTNhMGNkNjUyM2NiMDljMDQ0YzRiNDllODU1ZC4uNmJmM2NjMjA0MDQwYjhh
ZmU5MjRjN2Y5ZjU1MTNkN2E1YzJiMTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0zODks
NyArMzg5LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1
dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICAgICAgICAgICAgICAgICAg
Ly8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVm
YXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBj
cmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRl
Q0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3Jl
YXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3Jl
ZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KQEAgLTQzNiwxMSArNDM2LDExIEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlh
bFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgd2ViQ3JlZGVu
dGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAg
ICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVk
ZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwp
KTsKKyAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlh
bCk7CiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsK
LSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0g
Y3JlYXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRp
YWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5j
ZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgfQogCkBAIC01NTksOCArNTU5LDggQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXgKIAogICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2Ug
dG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgog
ICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAv
Km11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07
Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BT
b3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNl
KHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgICAgICAg
ICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAs
ICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNT
b3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2ln
bmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAKaW5kZXggMWZlNjkwMjRiY2JmYjhkNzdiYWI5OGE5MWEzY2E4MTU5ZmJhNGUw
My4uM2M4MmJjM2I0YzY4NTliOGJhOTRhMzJiZTlhNDI2YTgzOTk2ZWM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xMTAsOCArMTEwLDggQEAgc3RhdGljIENGUnVu
TG9vcFJlZiBnZXRSdW5Mb29wKCkKIAogICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2Ug
dG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgog
ICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAv
Km11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07
Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BT
b3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNl
KHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgICAgICAg
ICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAs
ICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNT
b3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2ln
bmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApp
bmRleCBmNmUxYjliNWQzYTViYTdhZTM1YTc3OTIzZDU2ZDUzZWFlMzI3MTk5Li5iN2VmNWI4NzU4
NGZmYmI2NmFmN2Q5YTExM2Y0MzA2ZDkxNWExNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApA
QCAtMTY3LDUxICsxNjcsNTEgQEAgc3RhdGljIENGVVJMUmVmIHNpdGVGb3JDb29raWVzKFJlc291
cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwKICAgICBjYXNlIFJl
c291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3NpdGlvbjo6U2FtZVNpdGU6CiAgICAgICAgIHJl
dHVybiB1cmw7CiAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRlRGlzcG9zaXRpb246
OkNyb3NzU2l0ZToKLSAgICAgICAgc3RhdGljIENGVVJMUmVmIGVtcHR5VVJMID0gQ0ZVUkxDcmVh
dGVXaXRoU3RyaW5nKG51bGxwdHIsIENGU1RSKCIiKSwgbnVsbHB0cik7Ci0gICAgICAgIHJldHVy
biBlbXB0eVVSTDsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlVS
TFJlZj4+IGVtcHR5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwg
Q0ZTVFIoIiIpLCBudWxscHRyKSk7CisgICAgICAgIHJldHVybiBlbXB0eVVSTC5nZXQoKS5nZXQo
KTsKICAgICB9CiB9CiAjZW5kaWYKIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCkKIHsKLSAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdDsK
KyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gY2ZSZXF1ZXN0OwogCiAgICAg
UmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBSZXNvdXJjZVJlcXVlc3Q6OnVybCgpLmNyZWF0ZUNG
VVJMKCk7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBmaXJzdFBhcnR5Rm9yQ29va2llcyA9IFJl
c291cmNlUmVxdWVzdDo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5jcmVhdGVDRlVSTCgpOwogICAg
IGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwgPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50
ZXJ2YWwoKSA/IFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogICAgIGlmIChtX2NmUmVx
dWVzdCkgewotICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29w
eSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJl
cXVlc3QsIHVybC5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVS
TChjZlJlcXVlc3QsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxS
ZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0LCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9s
aWN5KGNhY2hlUG9saWN5KCkpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVy
dmFsKGNmUmVxdWVzdCwgdGltZW91dEludGVydmFsKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRv
cHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSkp
OworICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LmdldCgpLCB1cmwuZ2V0KCkp
OworICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LmdldCgp
LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldENh
Y2hlUG9saWN5KGNmUmVxdWVzdC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShj
YWNoZVBvbGljeSgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChj
ZlJlcXVlc3QuZ2V0KCksIHRpbWVvdXRJbnRlcnZhbCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNm
UmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRm
b3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZp
cnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RD
YWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9y
Q29va2llcy5nZXQoKSkpOwogCi0gICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2Qo
Y2ZSZXF1ZXN0LCBodHRwTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgQ0ZV
UkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LmdldCgpLCBodHRwTWV0aG9k
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBpZiAoaHR0cFBpcGVsaW5pbmdFbmFi
bGVkKCkpCi0gICAgICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFBpcGVsaW5lSFRUUChjZlJlcXVl
c3QsIHRydWUsIHRydWUpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhU
VFAoY2ZSZXF1ZXN0LmdldCgpLCB0cnVlLCB0cnVlKTsKIAogICAgIGlmIChyZXNvdXJjZVByaW9y
aXRpZXNFbmFibGVkKCkpIHsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5
KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CisgICAg
ICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QuZ2V0KCksIHRvUGxh
dGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOwogCiAgICAgICAgIC8vIFVzZWQgYnkg
UExUIHRvIGlnbm9yZSB2ZXJ5IGxvdyBwcmlvcml0eSBiZWFjb24gYW5kIHBpbmcgbG9hZHMuCiAg
ICAgICAgIGlmIChwcmlvcml0eSgpID09IFJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93KQot
ICAgICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBD
RlNUUigiV0tWZXJ5TG93TG9hZFByaW9yaXR5IiksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICAgICAg
ICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgQ0ZT
VFIoIldLVmVyeUxvd0xvYWRQcmlvcml0eSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQogCi0g
ICAgc2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKKyAgICBz
ZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LmdldCgpLCBodHRwSGVhZGVyRmllbGRzKCkpOwogCi0g
ICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMoY2ZSZXF1ZXN0LCBhbGxv
d0Nvb2tpZXMoKSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMo
Y2ZSZXF1ZXN0LmdldCgpLCBhbGxvd0Nvb2tpZXMoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgQ0ZT
VFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyIpLCBzaXRlRm9y
Q29va2llcyhtX3NhbWVTaXRlRGlzcG9zaXRpb24sIHVybC5nZXQoKSkpOworICAgIF9DRlVSTFJl
cXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIl9rQ0ZIVFRQ
Q29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyIpLCBzaXRlRm9yQ29va2llcyhtX3Nh
bWVTaXRlRGlzcG9zaXRpb24sIHVybC5nZXQoKSkpOwogCiAgICAgaW50IGlzVG9wU2l0ZSA9IG1f
aXNUb3BTaXRlOwogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaXNUb3BTaXRlQ0YgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51bWJlckludFR5cGUsICZpc1RvcFNpdGUp
KTsKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RS
KCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5aXNUb3BTaXRlIiksIGlzVG9wU2l0ZUNGLmdl
dCgpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0
KCksIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5aXNUb3BTaXRlIiksIGlzVG9w
U2l0ZUNGLmdldCgpKTsKICNlbmRpZgogCiAgICAgdW5zaWduZWQgZmFsbGJhY2tDb3VudCA9IG1f
cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwpA
QCAtMjIyLDUxICsyMjIsNTEgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKICAgICAgICAgaWYgKGVuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52
YWxpZElkKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tz
LmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihlbmNvZGluZykpOwogICAgIH0K
LSAgICBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoY2ZSZXF1ZXN0
LCBlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSk7CisgICAgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5KGNmUmVxdWVzdC5nZXQoKSwgZW5jb2RpbmdGYWxsYmFja3MuZ2V0
KCkpOwogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBTdHJpbmcgcGFydGl0
aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAh
cGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwYXJ0
aXRpb24udXRmOCgpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZh
bHVlID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7Ci0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQ
cm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0
aXRpb25WYWx1ZS5nZXQoKSk7CisgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3Bl
cnR5KGNmUmVxdWVzdC5nZXQoKSwgX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25W
YWx1ZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0Yo
Y2ZSZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAog
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiB7Ci0gICAg
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3Q7CisgICAgUmV0YWluUHRyPENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJs
ID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVhdGVDRlVSTCgpOwogICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0UGFy
dHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBkb3VibGUgdGltZW91dEludGVydmFs
ID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgPyBSZXNvdXJjZVJlcXVl
c3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJlc291cmNlUmVxdWVzdEJhc2U6OmRlZmF1bHRU
aW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9jZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZSZXF1
ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkp
OwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwotICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBhcnR5
Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNm
UmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7Ci0g
ICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QsIHRpbWVvdXRJ
bnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRl
TXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMu
Z2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QuZ2V0
KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOworICAgICAg
ICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1lb3V0
SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShj
YWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQo
KSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3ko
KSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAogICAg
IEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFm
b3JtRGF0YS0+aXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShjZlJlcXVl
c3QsIGZvcm1EYXRhKTsKKyAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0Lmdl
dCgpLCBmb3JtRGF0YSk7CiAKLSAgICBpZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9k
eVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShj
ZlJlcXVlc3QpKSkgeworICAgIGlmIChSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBib2R5U3Ry
ZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKGNmUmVx
dWVzdC5nZXQoKSkpKSB7CiAgICAgICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVu
dC1MZW5ndGggdG8gYXZvaWQgdXNpbmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1
cmF0ZSB0b3RhbCBsZW5ndGggaW4gY2FsbGJhY2tzLgogICAgICAgICBpZiAoUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBsZW5ndGhTdHJpbmcgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoYm9keVN0cmVhbS5nZXQoKSwgZm9ybURhdGFTdHJl
YW1MZW5ndGhQcm9wZXJ0eU5hbWUoKSkpKSkgewotICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
SFRUUEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0LCBDRlNUUigiQ29udGVudC1MZW5ndGgiKSwg
bGVuZ3RoU3RyaW5nLmdldCgpKTsKKyAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFk
ZXJGaWVsZFZhbHVlKGNmUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxl
bmd0aFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICAvLyBTaW5jZSByZXNvdXJjZSByZXF1ZXN0
IGlzIGFscmVhZHkgbWFya2VkIHVwZGF0ZWQsIHdlIG5lZWQgdG8ga2VlcCBpdCB1cCB0byBkYXRl
IHRvby4KICAgICAgICAgICAgIEFTU0VSVChtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpOwogICAg
ICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudExl
bmd0aCwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2ZS
ZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShj
ZlJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJl
cXVlc3QoKQpAQCAtMzU1LDEwICszNTUsMTAgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0
b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24pCiB7CiAg
ICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7CiAKLSAgICBhdXRvIGNmUmVxdWVzdCA9IENGVVJM
UmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKKyAgICBhdXRv
IGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9j
ZlJlcXVlc3QuZ2V0KCkpKTsKICAgICBpZiAoc3RvcmFnZVNlc3Npb24pCi0gICAgICAgIF9DRlVS
TFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJlcXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKLSAg
ICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0KTsKKyAgICAgICAgX0NGVVJMUmVxdWVz
dFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdC5nZXQoKSwgc3RvcmFnZVNlc3Npb24pOworICAg
IG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVlc3QpOwogfQogCiAjZW5kaWYgLy8gVVNFKENG
VVJMQ09OTkVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDgwYmQ2NmQ3OGQ0MWE3NTBhMjYwZWViYzlmNjdmNGJjYjZmYmUyMTEuLjg2NGJiOTk3MzEwODlj
MjM2NWViMTVkOTNhMjljZmUzMWY4NDgwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQpAQCAtMTczLDcgKzE3Myw3IEBAIENvb2tpZVN0b3JhZ2VPYnNlcnZlciYgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlT2JzZXJ2ZXIoKSBjb25zdAogICAgIHJl
dHVybiAqbV9jb29raWVTdG9yYWdlT2JzZXJ2ZXI7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9w
dGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
Q0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4g
Y29va2llQWNjZXB0UG9saWN5KQogewogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eUtl
eXNbXSA9IHsgX2tDRlVSTFN0b3JhZ2VTZXNzaW9uSXNQcml2YXRlIH07CiAgICAgY29uc3Qgdm9p
ZCogc2Vzc2lvblByb3BlcnR5VmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07CkBAIC0yMTAs
NyArMjEwLDcgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAvLyBGSVhNRTogVXNlIF9D
RkhUVFBDb29raWVTdG9yYWdlR2V0RGVmYXVsdCB3aGVuIFVTRShDRk5FVFdPUkspIGlzIGRlZmlu
ZWQgaW4gV2ViS2l0IGZvciBjb25zaXN0ZW5jeS4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIG5zQ29va2llQWNjZXB0UG9s
aWN5KTsKIAotICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IHN0b3JhZ2VTZXNzaW9uOwogfQogCiBSZXRhaW5QdHI8TlNBcnJheT4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2Up
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9X
ZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KaW5kZXggNDU1YTdhNjJjYzEyNDE2MGNkOGJl
OTJkNzQ5MzEyM2JhNjg2ZTRmZi4uMzU3NzQwZjIyNTZmOTg5MGJhNzFhMzYzOGVmNTcwN2U3MWE5
ZDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpAQCAtMzksNyArMzksNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyA8cmRhcjovL3Byb2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5t
anMgZmlsZXMgYXMgd2hhdGV2ZXIgVVRJIGluZGljYXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgQ0ZE
aWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewog
ICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKICAgICAgICAgQ0ZTVFIoIm1qcyIpCkBAIC01MCw3
ICs1MCw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlw
ZU1hcCgpCiAgICAgfTsKIAogICAgIEFTU0VSVChzaXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVl
cykpOwotICAgIHJldHVybiBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykg
LyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywg
KGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYp
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJl
c3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKQpAQCAtNjYsMTEg
KzY2LDExIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAgICAgIGlmIChbKF9fYnJpZGdl
IE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVSTENvcHlQYXRoRXh0ZW5zaW9uKHVybCkpOwog
ICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewotICAgICAgICAgICAgICAgIHN0YXRpYyBDRkRp
Y3Rpb25hcnlSZWYgZXh0ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgp
OwotICAgICAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBtdXRhYmxlRXh0ZW5zaW9uID0g
Q0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNp
b24uZ2V0KCkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRl
bnNpb24sIE5VTEwpOwotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGFkb3B0Q0YobXV0YWJs
ZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gbmV3TUlNRVR5cGUgPSAoQ0ZT
dHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0
KCkpKQorICAgICAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPj4gZXh0ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1h
cCgpOworICAgICAgICAgICAgICAgIGF1dG8gbXV0YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24u
Z2V0KCkpKTsKKyAgICAgICAgICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5z
aW9uLmdldCgpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11
dGFibGVFeHRlbnNpb24pOworICAgICAgICAgICAgICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0g
KENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQo
KSwgZXh0ZW5zaW9uLmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZE1JTUVUeXBl
ID0gbmV3TUlNRVR5cGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bQppbmRleCBiYjExNmE5ZGZmM2U4MDI0OWUzYzFmZjEwZWU5MTI5YzcwNTZmZDE1Li40ZmE1MGU0
NmIwOTQ5NmNkZWUwNzM5NjQ1Yzg0ZjFkN2E0NjlmZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBA
IC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFdoZW4gd2UgZGlzYWJsZWQg
Y29udGVudCBzbmlmZmluZyBmb3IgZmlsZSBVUkxzIHdlIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRo
ZXNlIDEwMCsgZXh0ZW5zaW9ucyB0aGF0IENvcmVUeXBlcwogLy8gZG9lc24ndCBrbm93IGFib3V0
LgogLy8gSWYgQ29yZVR5cGVzIGlzIGV2ZXIgYnJvdWdodCB1cCB0byBzcGVlZCB3ZSBjYW4gcmVt
b3ZlIHRoaXMgdGFibGUgYW5kIGFzc29jaWF0ZWQgY29kZS4KLXN0YXRpYyBDRkRpY3Rpb25hcnlS
ZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCitzdGF0aWMgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCiB7CiAgICAgQ0ZTdHJp
bmdSZWYga2V5c1tdID0gewogICAgICAgICBDRlNUUigiYWkiKSwKQEAgLTI4OCw3ICsyODgsNyBA
QCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQog
ICAgIH07CiAKICAgICBBU1NFUlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAg
ICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2
b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpL3NpemVvZihD
RlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9p
ZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNpemVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKIH0KIAogdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCkBAIC0zMDQsMTEgKzMwNCwxMSBA
QCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3Bv
bnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewog
ICAgICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MDA3Mzg5PiBDb3JlVHlwZXMgVVRJ
IG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRlbnNpb25zIHRoYXQgR2F0ZUtlZXBlciBrbmV3
IGFib3V0CiAgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGlzIHJhZGFyIGlzIHJlc29sdmVkLCB3
ZSBjYW4gcmVtb3ZlIHRoaXMgZmlsZTovLyB1cmwgc3BlY2lmaWMgY29kZS4KLSAgICAgICAgICAg
ICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lv
blRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0
YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICBDRlN0cmluZ0xvd2Vy
Y2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb24g
PSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IChD
RlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAsIGV4dGVuc2lvbi5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBl
TWFwKCk7CisgICAgICAgICAgICAgICAgYXV0byBtdXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lv
bi5nZXQoKSkpOworICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRl
bnNpb24uZ2V0KCksIE5VTEwpOworICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IFdURk1vdmUo
bXV0YWJsZUV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9u
LmdldCgpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgR2F0ZWtlZXBlci1iYXNlZCBtYXAgZG9l
c24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0cnkgdG8gZmlndXJlIG91dCB3aGF0IGl0IHNo
b3VsZCBiZSBieQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0
Qm91bmRhcmllcy5tbQppbmRleCA1ZjM2ZDA4MzE0ODZjOWQ5ZTRmYzkzYjliZGYxZDYxNzdjMjBl
NjQwLi5hNTYxOGZlMGNkNjlmODYxODVkNzhiMGU2MzlkZDlhMjhhZmQyM2I0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAt
NzEsMjMgKzcxLDIzIEBAIHN0YXRpYyBib29sIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIo
VUNoYXIzMiBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6
ZXJGb3JTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogewotICAgIHN0YXRpYyBDRkxvY2FsZVJlZiBs
b2NhbGUgPSBudWxscHRyOwotICAgIGlmICghbG9jYWxlKSB7CisgICAgc3RhdGljIGF1dG8gbG9j
YWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgY29uc3QgY2hhciogdGVtcCA9
IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0Nv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRl
bXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7Ci0gICAgICAgIGxvY2FsZSA9IENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSk7Ci0gICAgICAgIGlmICghbG9jYWxlKQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICBhdXRvIGN1cnJlbnRM
b2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRlbXApLCBzdHJsZW4o
dGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7
CisgICAgICAgIHJldHVybiBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSkpOworICAgIH0oKSk7CisKKyAgICBpZiAoIWxvY2Fs
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBDRlJhbmdlIGVudGlyZVJh
bmdlID0gQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyKSk7ICAgIAogCi0gICAg
c3RhdGljIENGU3RyaW5nVG9rZW5pemVyUmVmIHRva2VuaXplciA9IG51bGxwdHI7Ci0gICAgaWYg
KCF0b2tlbml6ZXIpCi0gICAgICAgIHRva2VuaXplciA9IENGU3RyaW5nVG9rZW5pemVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0ciwgZW50aXJlUmFuZ2UsIGtDRlN0cmluZ1Rva2VuaXpl
clVuaXRXb3JkQm91bmRhcnksIGxvY2FsZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRlN0cmluZ1Rva2VuaXplclJlZj4+IHRva2VuaXplcjsKKyAgICBpZiAoIXRva2Vu
aXplci5nZXQoKSkKKyAgICAgICAgdG9rZW5pemVyLmdldCgpID0gYWRvcHRDRihDRlN0cmluZ1Rv
a2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZT
dHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5LCBsb2NhbGUuZ2V0KCkuZ2V0KCkpKTsKICAg
ICBlbHNlCi0gICAgICAgIENGU3RyaW5nVG9rZW5pemVyU2V0U3RyaW5nKHRva2VuaXplciwgc3Ry
LCBlbnRpcmVSYW5nZSk7Ci0gICAgcmV0dXJuIHRva2VuaXplcjsKKyAgICAgICAgQ0ZTdHJpbmdU
b2tlbml6ZXJTZXRTdHJpbmcodG9rZW5pemVyLmdldCgpLmdldCgpLCBzdHIsIGVudGlyZVJhbmdl
KTsKKyAgICByZXR1cm4gdG9rZW5pemVyLmdldCgpLmdldCgpOwogfQogCiAvLyBTaW1wbGUgY2Fz
ZTogQSB3b3JkIGlzIGEgc3RyZWFtIG9mIGNoYXJhY3RlcnMgZGVsaW1pdGVkIGJ5IGEgc3BlY2lh
bCBzZXQgb2Ygd29yZC1kZWxpbWl0aW5nIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCA0ZDhjNWM2MDZkNWM1NTg3ZjJj
OTVhZjJkYTZiZmRiZjAyNjlkYzk0Li4zMDRiMWZkMmFkZThhNzQ3MjZlMmY1OGM4MjI1MTExNWU0
YjA1MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dp
bi5jcHAKQEAgLTU3LDEzICs1NywxMSBAQCBHRElPYmplY3Q8SEJJVE1BUD4gYWxsb2NJbWFnZShI
REMgZGMsIEludFNpemUgc2l6ZSwgQ0dDb250ZXh0UmVmICp0YXJnZXRSZWYpCiAgICAgaWYgKCF0
YXJnZXRSZWYgfHwgIWhibXApCiAgICAgICAgIHJldHVybiBoYm1wOwogCi0gICAgQ0dDb250ZXh0
UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5i
bWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlIZWFkZXIuYmlIZWlnaHQsIDgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm1wSW5mby5i
bWlIZWFkZXIuYmlXaWR0aCAqIDQsIHNSR0JDb2xvclNwYWNlUmVmKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHQml0bWFwQnl0ZU9y
ZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7CisgICAgYXV0byBiaXRt
YXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5i
bWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlIZWFkZXIuYmlIZWlnaHQsIDgsIGJtcEluZm8u
Ym1pSGVhZGVyLmJpV2lkdGggKiA0LCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7CiAgICAgaWYgKCFi
aXRtYXBDb250ZXh0KQogICAgICAgICByZXR1cm4gR0RJT2JqZWN0PEhCSVRNQVA+KCk7CiAKLSAg
ICAqdGFyZ2V0UmVmID0gYml0bWFwQ29udGV4dDsKKyAgICAqdGFyZ2V0UmVmID0gYml0bWFwQ29u
dGV4dC5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGhibXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA3NWQ4MTE3ZjM4ZGMxZWMwNDE1MWYxODM3
ZDM3ZGExYWVlZTU2ZjkwLi5hZGU2MTkyOTgwNTcwNGU2OTlmOWI5NTIxNmJiNTk5YjZhNDMyYjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNTIs
MzYgKzE1MiwyNSBAQCBzdGF0aWMgdm9pZCBpbnRlcnBvbGF0ZUV4cG9uZW50aWFsR3JhZGllbnQo
dm9pZCAqaW5mbywgY29uc3QgQ0dGbG9hdCAqaW5EYXRhLCBDRwogCiBzdGF0aWMgQ0dGdW5jdGlv
blJlZiBnZXRTaGFyZWRGdW5jdGlvblJlZihJT1NHcmFkaWVudFJlZiBncmFkaWVudCwgSW50ZXJw
b2xhdGlvbiBpbnRlcnBvbGF0aW9uKQogewotICAgIENHRnVuY3Rpb25SZWYgZnVuY3Rpb24gPSBu
dWxscHRyOwotCi0gICAgc3RhdGljIEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25S
ZWY+KiBsaW5lYXJGdW5jdGlvblJlZnM7Ci0gICAgc3RhdGljIEhhc2hNYXA8SU9TR3JhZGllbnRS
ZWYsIENHRnVuY3Rpb25SZWY+KiBleHBvbmVudGlhbEZ1bmN0aW9uUmVmczsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgUmV0YWluUHRyPENHRnVuY3Rp
b25SZWY+Pj4gbGluZWFyRnVuY3Rpb25SZWZzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPElPU0dyYWRpZW50UmVmLCBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4+PiBleHBvbmVu
dGlhbEZ1bmN0aW9uUmVmczsKIAogICAgIGlmIChpbnRlcnBvbGF0aW9uID09IExpbmVhckludGVy
cG9sYXRpb24pIHsKLSAgICAgICAgaWYgKCFsaW5lYXJGdW5jdGlvblJlZnMpCi0gICAgICAgICAg
ICBsaW5lYXJGdW5jdGlvblJlZnMgPSBuZXcgSGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5j
dGlvblJlZj47Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gbGluZWFyRnVu
Y3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwotICAgIAorICAgICAgICBhdXRvIGZ1bmN0aW9uID0g
bGluZWFyRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwogICAgICAgICBpZiAoIWZ1bmN0aW9u
KSB7CiAgICAgICAgICAgICBzdGF0aWMgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgbGluZWFy
RnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBpbnRlcnBvbGF0ZUxpbmVhckdyYWRpZW50LCAwIH07
Ci0gICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24g
PSBDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAxLCBudWxscHRyLCA0LCBudWxscHRyLCAmbGlu
ZWFyRnVuY3Rpb25DYWxsYmFja3MpKTsKKyAgICAgICAgICAgIGxpbmVhckZ1bmN0aW9uUmVmcy0+
c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVu
dCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwgJmxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOworICAgICAgICByZXR1cm4gZnVu
Y3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFleHBvbmVudGlhbEZ1bmN0aW9uUmVmcykK
LSAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJlZnMgPSBuZXcgSGFzaE1hcDxJT1NHcmFkaWVu
dFJlZiwgQ0dGdW5jdGlvblJlZj47Ci0gICAgZWxzZQotICAgICAgICBmdW5jdGlvbiA9IGV4cG9u
ZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwotCisgICAgYXV0byBmdW5jdGlvbiA9
IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwogICAgIGlmICghZnVuY3Rp
b24pIHsKICAgICAgICAgc3RhdGljIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGV4cG9uZW50
aWFsRnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBpbnRlcnBvbGF0ZUV4cG9uZW50aWFsR3JhZGll
bnQsIDAgfTsKLSAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwg
ZnVuY3Rpb24gPSBDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAxLCAwLCA0LCAwLCAmZXhwb25l
bnRpYWxGdW5jdGlvbkNhbGxiYWNrcykpOworICAgICAgICBleHBvbmVudGlhbEZ1bmN0aW9uUmVm
cy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFk
aWVudCwgMSwgMCwgNCwgMCwgJmV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFja3MpKSk7CiAgICAg
fQotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOworICAgIHJldHVybiBmdW5jdGlvbi5nZXQoKTsKIH0K
IAogc3RhdGljIHZvaWQgZHJhd0F4aWFsR3JhZGllbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElP
U0dyYWRpZW50UmVmIGdyYWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBjb25z
dCBGbG9hdFBvaW50JiBzdG9wUG9pbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBv
cnQubW0KaW5kZXggYmU2NjA3OGE4M2QwY2E0OWI3MWExZmI1M2MyM2E4YzZiODFkNzY3ZS4uNWE5
YmJjNzE1YzllNWM4NDNhYWYyYjkxNWRkODhmNzJlZmExOWVlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTM5
LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
VGVzdFN1cHBvcnQgewogCi1zdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3Bv
bnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQorc3RhdGljIFJldGFp
blB0cjxDRlVSTFJlc3BvbnNlUmVmPiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0
YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQogewogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
OwogICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxv
Y10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTooX19icmlkZ2UgTlNEYXRhICopcmVzcG9uc2VEYXRh
IGVycm9yOm51bGxwdHJdKTsKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIENGVVJMUmVzcG9uc2VS
ZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNl
RGEKICAgICB9CiAKICAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxS
ZXNwb25zZSBjbGFzc11dKQotICAgICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUs
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRlVS
TFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZily
ZXNwb25zZS5VUkwsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXNwb25zZS5NSU1FVHlwZSwgcmVz
cG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9u
c2UudGV4dEVuY29kaW5nTmFtZSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwogCiAgICAg
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJl
c3BvbnNlOwogCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0
ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhCiAgICAg
Zm9yIChOU1N0cmluZyAqaGVhZGVyRmllbGQgaW4gW2hlYWRlckZpZWxkcyBrZXlFbnVtZXJhdG9y
XSkKICAgICAgICAgQ0ZIVFRQTWVzc2FnZVNldEhlYWRlckZpZWxkVmFsdWUoaHR0cE1lc3NhZ2Uu
Z2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZiloZWFkZXJGaWVsZCwgKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKVtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5OmhlYWRlckZpZWxkXSk7CiAKLSAgICBy
ZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3BvbnNlLlVSTCwgaHR0cE1lc3NhZ2UuZ2V0KCks
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOworICAgIHJldHVybiBhZG9wdENGKENGVVJMUmVz
cG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRn
ZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0
b3JhZ2VBbGxvd2VkKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbnZlcnRNSU1FVHlwZShDRk11dGFi
bGVTdHJpbmdSZWYgbWltZVR5cGUpCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY29u
dmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiBwcm9wZXIKICAgICBpZiAoQ0ZHZXRUeXBlSUQocmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRU
eXBlSUQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VS
ZWY+IHJlc3BvbnNlID0gYWRvcHRDRihjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0
YShyZXNwb25zZURhdGEpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gY3JlYXRlQ0ZVUkxSZXNwb25z
ZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKTsKICAgICBpZiAoIXJlc3BvbnNlKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggMWE5ZjcxOWQ2NTFmYThhZWQxOWY2ZWZmMDUxNTdmMDk1MmRiZWUx
MS4uYzUzN2VhMjhkOTFjNTA1YTI1OGI5YzgwNmU3ZTgzY2UyY2Y0MGU1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ1MSw3ICs0
NTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBO
ZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3NpbwogICAgIC8vIFNlc3Npb24gbmFtZSBzaG91
bGQgYmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBuYW1lIHRvIGJlIHVu
ZGVyIHRoZSBsaW1pdCwgb3RoZXJ3aXNlIHNhbmRib3ggcnVsZXMgd29uJ3Qgd29yayAoc2VlIDxy
ZGFyOi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgogICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VT
dHJpbmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7CiAKLSAgICBhdXRv
IHNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgYXV0byBzZXNzaW9uID0g
V2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBib29sIHNob3VsZFUKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3Rv
cmFnZVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBt
YWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZhdGVCcm93c2luZy4iLCBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgaWYgKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQotICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoY3JlYXRlUHJp
dmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSkpOworICAgICAgICBzdG9yYWdl
U2Vzc2lvbiA9IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkp
OwogICAgIGVsc2UgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoY2ZJZGVudGlmaWVy
LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IGZhNDIzMzRlYzBjYTFhZDA1MDIzZWNiZjc4ZDEzMWQwMWIzZWYzNmYuLjA3OTkx
NWUyYjRjMzlhODFjMjQ4OGViOWFjYTQ4OGZiMTE0M2RjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmpl
Y3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIApAQCAtNTU3LDcgKzU1OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFdlJ2Qg
bGlrZSB0byBiZSBhYmxlIHRvIGRvIHRoaXMgd2l0aG91dCB0aGUgI2lmZGVmLCBidXQgV29ya1F1
ZXVlICsgQmluYXJ5U2VtYXBob3JlIGlzbid0IGdvb2QgZW5vdWdoIHNpbmNlCiAgICAgLy8gbXVs
dGlwbGUgcmVxdWVzdHMgdG8gY2xlYXIgdGhlIGNhY2hlIGNhbiBjb21lIGluIGJlZm9yZSBwcmV2
aW91cyByZXF1ZXN0cyBjb21wbGV0ZSwgYW5kIHdlIG5lZWQgdG8gd2FpdCBmb3IgYWxsIG9mIHRo
ZW0uCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB1c2luZyBXb3JrUXVldWUgYW5kIGEgY291bnRpbmcg
c2VtYXBob3JlIHdvdWxkIHdvcmssIGFzIHdvdWxkIFdvcmtRdWV1ZSBzdXBwb3J0aW5nIHRoZSBs
aWJkaXNwYXRjaCBjb25jZXB0IG9mICJ3b3JrIGdyb3VwcyIuCi0gICAgZGlzcGF0Y2hfZ3JvdXBf
dCBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwIHsgbnVsbHB0ciB9OworICAgIE9TT2JqZWN0UHRy
PGRpc3BhdGNoX2dyb3VwX3Q+IG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXA7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNjBh
ZjkzZGRmNTFkZTc5MDMyNjQ1NDZjNmIwMzRiYTFiNWJhNTcyZS4uNWZiZTgxZDY4NmI5Yzc0ZDdk
ZWI5Njg1NjQwMzgxM2ZlNjdlZGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTkxLDkgKzE5
MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2FsbFRpbWUgbW9kaWZpZWRTCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
ckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2NsZWFyQ2FjaGVEaXNwYXRj
aEdyb3VwKQotICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gZGlzcGF0Y2hfZ3Jv
dXBfY3JlYXRlKCk7CisgICAgICAgIG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSBhZG9wdE9T
T2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKTsKIAotICAgIGF1dG8gZ3JvdXAgPSBtX2Ns
ZWFyQ2FjaGVEaXNwYXRjaEdyb3VwOworICAgIGF1dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNw
YXRjaEdyb3VwLmdldCgpOwogICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRTaW5jZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gYWdncmVnYXRv
ciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFttb2RpZmllZFNpbmNlLCAmYWdncmVn
YXRvcl0oTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggYjVlMGQxYTNk
NTEyNTNhNTAwM2RlNjVlNTg2OTc5ZTRkOGMyZDA4MC4uYjBmOWE1OWJiMmMwODM3ODVjODU5Y2I3
MDE1OTE4YTNhNjQxMTYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTk3LDkgKzk3LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRp
YWxpemF0aW9uUGFyYW0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkK
IHsKICAgICBpZiAobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCkgewotICAgICAgICBkaXNwYXRj
aF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAsIERJU1BBVENIX1RJTUVfRk9S
RVZFUik7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91
cCk7Ci0gICAgICAgIG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSAwOworICAgICAgICBkaXNw
YXRjaF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAuZ2V0KCksIERJU1BBVENI
X1RJTUVfRk9SRVZFUik7CisgICAgICAgIG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSBudWxs
cHRyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmlu
ZGV4IDRmNmIxODRmZjQwZDk5Mjg4ZWI2MDYwYTdjNTg4NmIzNzM2YzRiODMuLmQ5YjUzMDMzNThk
NjQ3ODY2YzlhYjZhNTdjYzE3YmRlYTk0MmY4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTQ1OCwxMCArNDU4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
YW5jZWxSZWNlaXZlU291cmNlKCk7CiAKICAgICBtYWNoX3BvcnRfdCBtX3NlbmRQb3J0IHsgTUFD
SF9QT1JUX05VTEwgfTsKLSAgICBkaXNwYXRjaF9zb3VyY2VfdCBtX3NlbmRTb3VyY2UgeyBudWxs
cHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfc291cmNlX3Q+IG1fc2VuZFNvdXJjZTsK
IAogICAgIG1hY2hfcG9ydF90IG1fcmVjZWl2ZVBvcnQgeyBNQUNIX1BPUlRfTlVMTCB9OwotICAg
IGRpc3BhdGNoX3NvdXJjZV90IG1fcmVjZWl2ZVNvdXJjZSB7IG51bGxwdHIgfTsKKyAgICBPU09i
amVjdFB0cjxkaXNwYXRjaF9zb3VyY2VfdD4gbV9yZWNlaXZlU291cmNlOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBtX3BlbmRpbmdPdXRnb2luZ01hY2hNZXNzYWdlOwogICAg
IGJvb2wgbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDhk
OWNkZTA4ZjQ2NzE0MWE5MGQ4ZWFmOWRkNzg1Yjc5MDM4ZDU4ZWUuLjkwYmRmMjQ4NzYyNDljZWYx
NzFiYzkyZDc2NmU3NGUwMmQ0MTg0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTE0Nyw4ICsxNDcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgQVNTRVJUKG1fcmVjZWl2ZVBv
cnQpOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXIgcG9ydHMuCi0gICAgZGlzcGF0Y2hfc291cmNl
X2NhbmNlbChtX3NlbmRTb3VyY2UpOwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZW5kU291cmNl
KTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1fc2VuZFNvdXJjZS5nZXQoKSk7CiAgICAg
bV9zZW5kU291cmNlID0gbnVsbHB0cjsKICAgICBtX3NlbmRQb3J0ID0gTUFDSF9QT1JUX05VTEw7
CiAKQEAgLTE1Nyw4ICsxNTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6Y2FuY2VsUmVjZWl2ZVNvdXJjZSgpCiB7Ci0gICAgZGlz
cGF0Y2hfc291cmNlX2NhbmNlbChtX3JlY2VpdmVTb3VyY2UpOwotICAgIGRpc3BhdGNoX3JlbGVh
c2UobV9yZWNlaXZlU291cmNlKTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1fcmVjZWl2
ZVNvdXJjZS5nZXQoKSk7CiAgICAgbV9yZWNlaXZlU291cmNlID0gbnVsbHB0cjsKICAgICBtX3Jl
Y2VpdmVQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiB9CkBAIC0yMzAsMTEgKzIyOCwxMSBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogICAgIC8vIENoYW5nZSB0aGUgbWVzc2FnZSBxdWV1ZSBsZW5n
dGggZm9yIHRoZSByZWNlaXZlIHBvcnQuCiAgICAgc2V0TWFjaFBvcnRRdWV1ZUxlbmd0aChtX3Jl
Y2VpdmVQb3J0LCBNQUNIX1BPUlRfUUxJTUlUX0xBUkdFKTsKIAotICAgIG1fcmVjZWl2ZVNvdXJj
ZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNW
LCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsK
LSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIobV9yZWNlaXZlU291cmNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIHsKKyAgICBtX3JlY2VpdmVT
b3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09V
UkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+
ZGlzcGF0Y2hRdWV1ZSgpKSk7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVy
KG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpXSB7CiAgICAgICAgIHJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKTsKICAgICB9KTsK
LSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2
ZVBvcnRdIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2
ZVNvdXJjZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCByZWNlaXZl
UG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKICNpZiAhUExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAg
bWFjaF9wb3J0X3VuZ3VhcmQobWFjaF90YXNrX3NlbGYoKSwgcmVjZWl2ZVBvcnQsIHJlaW50ZXJw
cmV0X2Nhc3Q8bWFjaF9wb3J0X2NvbnRleHRfdD4ocHJvdGVjdGVkVGhpcy5nZXQoKSkpOwogI2Vu
ZGlmCkBAIC0yNDMsMTAgKzI0MSwxMCBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogCiAgICAg
cmVmKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVl
dWUoKSwgXnsKLSAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fcmVjZWl2ZVNvdXJjZSk7CisgICAg
ICAgIGRpc3BhdGNoX3Jlc3VtZShtX3JlY2VpdmVTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGlm
IChtX3NlbmRTb3VyY2UpCi0gICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5kU291cmNl
KTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3NlbmRTb3VyY2UuZ2V0KCkpOwogCiAg
ICAgICAgIGRlcmVmKCk7CiAgICAgfSk7CkBAIC0zNzEsMjAgKzM2OSwyMCBAQCBib29sIENvbm5l
Y3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlcikK
IAogdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNvdXJjZSgpCiB7Ci0gICAgbV9zZW5k
U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNI
X1NFTkQsIG1fc2VuZFBvcnQsIERJU1BBVENIX01BQ0hfU0VORF9ERUFEIHwgRElTUEFUQ0hfTUFD
SF9TRU5EX1BPU1NJQkxFLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKKyAg
ICBtX3NlbmRTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElT
UEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9TRU5ELCBtX3NlbmRQb3J0LCBESVNQQVRDSF9NQUNIX1NF
TkRfREVBRCB8IERJU1BBVENIX01BQ0hfU0VORF9QT1NTSUJMRSwgbV9jb25uZWN0aW9uUXVldWUt
PmRpc3BhdGNoUXVldWUoKSkpOwogICAgIG1faXNJbml0aWFsaXppbmdTZW5kU291cmNlID0gdHJ1
ZTsKIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfcmVnaXN0cmF0aW9uX2hhbmRsZXIobV9zZW5k
U291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIHsKKyAgICBk
aXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lzdHJhdGlvbl9oYW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQo
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIGlm
ICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2lzSW5pdGlh
bGl6aW5nU2VuZFNvdXJjZSA9IGZhbHNlOwogICAgICAgICByZXN1bWVTZW5kU291cmNlKCk7CiAg
ICAgfSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fc2VuZFNvdXJj
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CisgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5kU291
cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9
IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtX3NlbmRTb3VyY2UpOworICAgICAgICB1bnNpZ25l
ZCBsb25nIGRhdGEgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEobV9zZW5kU291cmNlLmdldCgp
KTsKIAogICAgICAgICBpZiAoZGF0YSAmIERJU1BBVENIX01BQ0hfU0VORF9ERUFEKSB7CiAgICAg
ICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKQEAgLTQwMCw3ICszOTgsNyBAQCB2b2lkIENv
bm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNlKCkKIAogICAgIGlmIChNQUNIX1BPUlRfVkFM
SUQobV9zZW5kUG9ydCkpIHsKICAgICAgICAgbWFjaF9wb3J0X3Qgc2VuZFBvcnQgPSBtX3NlbmRQ
b3J0OwotICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fc2VuZFNv
dXJjZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3Nl
bmRTb3VyY2UuZ2V0KCksIF57CiAgICAgICAgICAgICAvLyBSZWxlYXNlIG91ciBzZW5kIHJpZ2h0
LgogICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNhZmVseShzZW5kUG9ydCk7CiAgICAg
ICAgIH0pOwpAQCAtNTgwLDcgKzU3OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJj
ZUV2ZW50SGFuZGxlcigpCiAgICAgICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNhZmVs
eShwcmV2aW91c05vdGlmaWNhdGlvblBvcnQpOwogCiAgICAgICAgICAgICBpbml0aWFsaXplU2Vu
ZFNvdXJjZSgpOwotICAgICAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2VuZFNvdXJjZSk7Cisg
ICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5kU291cmNlLmdldCgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQppbmRleCA1YjY4ODRi
ZmYyOWY4ZjRmOGRkYWMzNWVlZmNlZTgyZTg1ZDVjMjkzLi41ODc2MDkwNjA4ZDlhZmM4OGUzNDFj
NWRmZjczZjViMzEwZWZhODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAtMzEsNiArMzEsOCBAQAogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvRW50aXRsZW1lbnRzLmg+CkBAIC0xMTksNyArMTIxLDExIEBAIHN0YXRpYyBib29sIGRl
dGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGNvbnN0
IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0ICE9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7
CiB9CiAKLXN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdfaXRwUXVldWU7CitzdGF0aWMgT1NPYmpl
Y3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mIGl0cFF1ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4+IGl0cFF1ZXVlOworICAgIHJl
dHVybiBpdHBRdWV1ZTsKK30KIAogdm9pZCBkZXRlcm1pbmVJVFBTdGF0ZSgpCiB7CkBAIC0xMzAs
MTQgKzEzNiwxMyBAQCB2b2lkIGRldGVybWluZUlUUFN0YXRlKCkKICAgICBnX2N1cnJlbnRJVFBT
dGF0ZSA9IElUUFN0YXRlOjpJbml0aWFsaXppbmc7CiAgICAgYm9vbCBhcHBXYXNMaW5rZWRPbk9y
QWZ0ZXIgPSBsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoU2Vz
c2lvbkNsZWFudXBCeURlZmF1bHQpOwogCi0gICAgZ19pdHBRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBDaGVja1F1ZXVlIiwgTlVMTCk7CisgICAgaXRw
UXVldWUoKSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUu
V2ViS2l0Lml0cENoZWNrUXVldWUiLCBOVUxMKSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnX2l0
cFF1ZXVlLCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29y
ZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBk
aXNwYXRjaF9hc3luYyhpdHBRdWV1ZSgpLmdldCgpLCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBi
dW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCku
aXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgZ19jdXJyZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJ
VFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllcikg
PyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRlOjpEaXNhYmxlZDsKIAogICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShn
X2l0cFF1ZXVlKTsKLSAgICAgICAgICAgIGdfaXRwUXVldWUgPSBudWxscHRyOworICAgICAgICAg
ICAgaXRwUXVldWUoKSA9IG51bGxwdHI7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTQ5
LDEwICsxNTQsMTAgQEAgYm9vbCBkb2VzQXBwSGF2ZUlUUEVuYWJsZWQoKQogICAgIGlmIChnX2N1
cnJlbnRJVFBTdGF0ZSA+IElUUFN0YXRlOjpJbml0aWFsaXppbmcpCiAgICAgICAgIHJldHVybiBn
X2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxlZDsKIAotICAgIFJFTEVBU0VfQVNT
RVJUKGdfaXRwUXVldWUpOworICAgIFJFTEVBU0VfQVNTRVJUKGl0cFF1ZXVlKCkpOwogCiAgICAg
X19ibG9jayBib29sIGlzSVRQRW5hYmxlZDsKLSAgICBkaXNwYXRjaF9zeW5jKGdfaXRwUXVldWUs
IF57CisgICAgZGlzcGF0Y2hfc3luYyhpdHBRdWV1ZSgpLmdldCgpLCBeewogICAgICAgICBpc0lU
UEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxlZDsKICAgICB9
KTsKICAgICByZXR1cm4gaXNJVFBFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWlu
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCmluZGV4IGFiMDYzNGYxYWM2NTUzNzczNDgxODUwMmE5
MTQzZDFhZGQxMTQ4MzguLjc4ZWFmZjQ1MjA0ODdjYzNkY2UzMDVlMDU0NDFiMTZjNzc4MTc0NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0K
QEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgc2V0QXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNl
KCkKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90
IHBlZXIpCiB7Ci0gICAgc3RhdGljIHhwY19vYmplY3RfdCBwcmlvcml0eUJvb3N0TWVzc2FnZSA9
IG51bGxwdHI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPHhwY19vYmpl
Y3RfdD4+IHByaW9yaXR5Qm9vc3RNZXNzYWdlOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3Rh
cmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFu
ZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVudCkgewpAQCAtMTE4LDE5ICsxMTgsMTggQEAg
c3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIp
CiAgICAgICAgICAgICAgICAgICAgIGR1cDIoZmQsIFNUREVSUl9GSUxFTk8pOwogCiAgICAgICAg
ICAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAg
ICAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1bmN0aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlv
cml0eUJvb3N0TWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyRnVuY3Rp
b25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpLmdldCgpKTsKIAog
ICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxhbmd1YWdlc1ByZWZlcmVuY2UoKTsKICAgICAg
ICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIGlmIChwcmlvcml0eUJvb3N0TWVzc2Fn
ZSkKLSAgICAgICAgICAgICAgICAgICAgeHBjX3JlbGVhc2UocHJpb3JpdHlCb29zdE1lc3NhZ2Up
OworICAgICAgICAgICAgICAgIHByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gTGVhayBhIGJvb3N0IG9udG8gdGhlIE5l
dHdvcmtQcm9jZXNzLgogICAgICAgICAgICAgaWYgKCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAicHJlLWJvb3RzdHJhcCIpKSB7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJvb3N0TWVzc2FnZSk7Ci0gICAgICAgICAgICAg
ICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UgPSB4cGNfcmV0YWluKGV2ZW50KTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQoIXByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSA9IGV2ZW50OwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKGV2ZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAyNTgzYzkzNTFiOTc4NGM0Mzli
OTk4MDk2Yzc3MzFlNDM1ZDQyMjMyLi42Y2VmODdmM2M0NjQxNzlkZjc2NjJmZGMzOTkyM2EwNjEz
ZTIxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSh2
b2lkICpwdHIsIHZvaWQgKmluZm8pCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2Uq
PihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxl
UmVzb3VyY2VEZWFsbG9jYXRvcigpCiB9CiAgICAgCi1zdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3Jl
YXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3Vy
Y2UpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNv
dXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBDRkFs
bG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKICAgICAgICAgcmVzb3VyY2UsCkBAIC03Niw3
ICs3Niw3IEBAIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURl
YWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvCiAgICAgICAgIE5VTEwsIC8vIHByZWZl
cnJlZFNpemUKICAgICB9OwogCi0gICAgcmV0dXJuIENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsICZjb250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOwogfQogI2VuZGlmCiAKQEAgLTg1
LDggKzg1LDggQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJ
blNoYXJlZEJ1ZmZlcigpCiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hh
cmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgogCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxD
RkFsbG9jYXRvclJlZj4gZGVhbGxvY2F0b3IgPSBhZG9wdENGKGNyZWF0ZVNoYXJlYWJsZVJlc291
cmNlRGVhbGxvY2F0b3IodGhpcykpOwotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKCkpLCBzdGF0aWNfY2FzdDxDRklu
ZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOworICAgIGF1dG8gZGVhbGxvY2F0b3Ig
PSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOworICAgIGF1dG8gY2ZE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHN0YXRpY19jYXN0
PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7CiAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKICAgICBHUmVm
UHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMo
ZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggZDAyNDI5MDhkNGM5ZjRmZmQxODViZDhlMWE1
MzA1ODlkZjhhZWUwMy4uMzM3YzkzNjQ3MzI4NTdkMjcxMTRmOTQwMDRjY2QyYzUxOTk2ODI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTU0
MSw4ICs1NDEsNyBAQCBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZO
dW1iZXJSZWY+JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChk
YXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgQ0ZOdW1iZXJSZWYgbnVtYmVyID0gQ0ZOdW1iZXJD
cmVhdGUoMCwgbnVtYmVyVHlwZSwgZGF0YVJlZmVyZW5jZS5kYXRhKCkpOwotICAgIHJlc3VsdCA9
IGFkb3B0Q0YobnVtYmVyKTsKKyAgICByZXN1bHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0YSgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTU4MSwxMSArNTgwLDExIEBAIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGFSZWZlcmVuY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDRlN0cmluZ1JlZiBz
dHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwg
ZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5nLCBmYWxzZSk7CisgICAgYXV0byBzdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIGRhdGFSZWZlcmVuY2UuZGF0YSgp
LCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgZW5jb2RpbmcsIGZhbHNlKSk7CiAgICAgaWYgKCFzdHJp
bmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9IGFkb3B0Q0Yoc3RyaW5n
KTsKKyAgICByZXN1bHQgPSBXVEZNb3ZlKHN0cmluZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25T
dGF0ZUNvZGluZy5jcHAKaW5kZXggNjNlM2FmNDFkYTA1NTc5YmI1NDJhMmU2Njc4ODk4MzEwZTU1
ZDliOC4uYTM5NDA2NDlmZGJmMmRlZDQ4NGE0ZTI2MTAyYjkyMWNjMjgwNzhmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBzdGF0aWMgTWFsbG9jUHRyPHVpbnQ4X3QsIEhp
c3RvcnlFbnRyeURhdGFFbmNvZGVyTWFsbG9jPiBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudAogCiBz
dGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEo
Y29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JS
ZWYgZmFzdE1hbGxvY0RlYWxsb2NhdG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8Q0ZBbGxvY2F0b3JSZWY+PiBmYXN0TWFsbG9jRGVhbGxvY2F0b3I7CiAKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKQEAgLTQwMSwxMyArNDAxLDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBl
bmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShjb25zdCBGcmFtZVN0YXRlJiBmcmFtCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgbnVsbHB0ciwgLy8gcHJlZmVycmVkU2l6ZQogICAgICAg
ICB9OwotICAgICAgICBmYXN0TWFsbG9jRGVhbGxvY2F0b3IgPSBDRkFsbG9jYXRvckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7CisgICAgICAgIGZhc3RNYWxsb2NEZWFsbG9j
YXRvci5nZXQoKSA9IGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgJmNvbnRleHQpKTsKICAgICB9KTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplOwogICAgIGF1
dG8gYnVmZmVyID0gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoZnJhbWVTdGF0ZSwgYnVm
ZmVyU2l6ZSk7CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0Nv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmxlYWtQdHIoKSwgYnVmZmVyU2l6ZSwgZmFz
dE1hbGxvY0RlYWxsb2NhdG9yKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0
aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5sZWFrUHRyKCksIGJ1ZmZl
clNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKS5nZXQoKSkpOwogfQogCiBzdGF0aWMg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRGljdGlvbmFyeShzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8c3RkOjpwYWlyPENGU3RyaW5nUmVmLCBDRlR5cGVSZWY+PiBrZXlWYWx1ZVBhaXJz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
Q29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KaW5kZXggMmRmMjMzNWQ5YzVhZGZhYjVhNmJlOTJj
OWM3N2MyMDU3YjY5OWUyYS4uYmRkYmIwODlkZWViNWVmZWYyY2U3MmVmMjNlYTNjOTYwMTA0MDBi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
Q29va2llQ2FjaGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24oKQog
ICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKSB7CiAgICAgICAgIFN0cmluZyBzZXNz
aW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJvY2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVu
dFByb2Nlc3NJRCgpKTsKICAgICAgICAgYXV0byBjb29raWVBY2NlcHRQb2xpY3kgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb29raWVB
Y2NlcHRQb2xpY3koKTsKLSAgICAgICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2Vi
Q29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGljeSkpOworICAgICAgICBhdXRvIHN0b3JhZ2VT
ZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgICAgIGF1
dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2ll
U3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAg
ICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCksIFdURk1vdmUoc3Rv
cmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpLCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDA2MWYyNjY5OGQ4
ZmFjY2ExMzcxNzA0NGVkYTI2MDg2MWM2ODhhZGYuLmQ0ODJiNDJlMGMyNTQxMjc3Yzk0YTQ1ZGZj
ZmI1YjAxOTQ1MTExNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8YXRvbWljPgog
I2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTcsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9k
ZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZVdoaWxlV2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBm
YWxzZSB9OwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2NvbW1pdFF1ZXVlOworICAgIE9TT2Jq
ZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fY29tbWl0UXVldWU7CiAgICAgUmVmUHRyPEJhY2tp
bmdTdG9yZUZsdXNoZXI+IG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICBIYXNo
U2V0PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcio+IG1fZGlzcGxheVJlZnJl
c2hNb25pdG9yczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQppbmRleCA5OTkyODcxYjFjMDBlODIxMGNiNjZkZWJkMjhlZTZiMDhkYjEy
NGQ1Li5hMzg4MTMzNWE0ZWY3ZGEwYTI4ZmI3NjAyYjhhMjk3YTgwNjg1MzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC02
NSw3ICs2NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAgd2ViUGFnZS5jb3JlUGFn
ZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwogICAgIG1fcm9v
dExheWVyLT5zZXROYW1lKCJkcmF3aW5nIGFyZWEgcm9vdCIpOwogCi0gICAgbV9jb21taXRRdWV1
ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLkNvbW1pdFF1ZXVlIiwgbnVsbHB0cik7CisgICAgbV9j
b21taXRRdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuQ29tbWl0UXVl
dWUiLCBudWxscHRyKSk7CiAKICAgICAvLyBJbiBvcmRlciB0byBlbnN1cmUgdGhhdCB3ZSBnZXQg
YSB1bmlxdWUgRGlzcGxheVJlZnJlc2hNb25pdG9yIHBlci1EcmF3aW5nQXJlYSAobmVjZXNzYXJ5
IGJlY2F1c2UgRGlzcGxheVJlZnJlc2hNb25pdG9yCiAgICAgLy8gaXMgZHJpdmVuIGJ5IHRoaXMg
Y2xhc3MpLCBnaXZlIGVhY2ggcGFnZSBhIHVuaXF1ZSBEaXNwbGF5SUQgZGVyaXZlZCBmcm9tIFdl
YlBhZ2UncyB1bmlxdWUgSUQuCkBAIC03OCwxMCArNzgsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29u
c3QgVwogICAgICAgICBzZXRWaWV3RXhwb3NlZFJlY3Qodmlld0V4cG9zZWRSZWN0KTsKIH0KIAot
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgp
Ci17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2NvbW1pdFF1ZXVlKTsKLX0KK1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKSA9IGRlZmF1bHQ7
CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7
CkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBk
YXRlUmVuZGVyaW5nKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2lu
Z1N0b3JlRmx1c2hlcjsKIAogICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLmlkZW50aWZpZXIo
KTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hl
ciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0geworICAgIGRpc3BhdGNo
X2FzeW5jKG1fY29tbWl0UXVldWUuZ2V0KCksIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92
ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZs
dXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAppbmRleCBhODY3
MWZmMTk2MTBiNjFiZDY5ZGZmMjRkNTY2YjZiYzI1MGQ5ZTNlLi45NWVmMjI5NGE5NzZmODQ0ZWMz
YTQ5NWViYmJlM2IzZmQ5NmE3NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBA
IC02Niw3ICs2Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05l
d1Rlc3RpbmdTZXNzaW9uKCkKICAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVu
b3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQs
IG90ZWhyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0v
MTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQg
VGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRv
cHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
OwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VD
b29raWVBUEkoKSkgewpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwog
CiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwog
ICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24g
PSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZp
ZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKICAgICBlbHNlCiAgICAgICAg
IHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVD
RlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihjZklkZW50aWZpZXIuZ2V0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXgg
Y2JkNTBiNmZjYTg1NTcxNWMyYzdjYzNkNjAxMmFiZDE4MmU0MDI4MC4uOTdjMzc5Y2VlNjZiNDkw
ODY5MWFmMGRmMWVjYjY2OWJlM2I2NWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8
V2ViS2l0TGVnYWN5L1dlYk5TVmlld0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTksMTEgKzYwLDExIEBAIHN0YXRpYyBpbnQgY29tcGFy
ZVBhZ2VSZWN0cyhjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmFycmF5KTsKIHN0YXRpYyBj
b25zdCBmbG9hdCBQQUdFX1dJRFRIX0lOU0VUICAgICA9IDQuMCAqIDIuMDsKIHN0YXRpYyBjb25z
dCBmbG9hdCBQQUdFX0hFSUdIVF9JTlNFVCAgICA9IDQuMCAqIDIuMDsKIAotc3RhdGljIENHQ29s
b3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0
IGFscGhhKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yV2l0aERl
dmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxwaGEpCiB7Ci0gICAgc3RhdGljIENH
Q29sb3JTcGFjZVJlZiBncmF5U3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+PiBn
cmF5U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKSk7CiAgICAg
Y29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10gPSB7IHdoaXRlLCBhbHBoYSB9OwotICAgIHJldHVy
biBDR0NvbG9yQ3JlYXRlKGdyYXlTcGFjZSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UuZ2V0KCkuZ2V0KCksIGNvbXBvbmVudHMpKTsKIH0K
IAogQGltcGxlbWVudGF0aW9uIFdlYlBERlZpZXcgewpAQCAtODMsMTQgKzg0LDE0IEBAICsgKE5T
QXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIAogKyAoQ0dDb2xvclJlZilzaGFkb3dDb2xvcgog
ewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNoYWRvd0NvbG9yID0gY3JlYXRlQ0dDb2xvcldpdGhE
ZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKLSAgICByZXR1cm4gc2hhZG93Q29sb3I7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gc2hhZG93Q29sb3IgPSBj
cmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDAsIDIuMCAvIDMpOworICAgIHJldHVybiBzaGFk
b3dDb2xvci5nZXQoKS5nZXQoKTsKIH0KIAogKyAoQ0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IK
IHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBiYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVDR0NvbG9y
V2l0aERldmljZVdoaXRlKDIwNC4wIC8gMjU1LCAxKTsKLSAgICByZXR1cm4gYmFja2dyb3VuZENv
bG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJh
Y2tncm91bmRDb2xvciA9IGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUoMjA0LjAgLyAyNTUs
IDEpOworICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkuZ2V0KCk7CiB9CiAKIC8vIFRo
aXMgaXMgYSBzZWNyZXQgcHJvdG9jb2wgZm9yIFdlYkRhdGFTb3VyY2UgYW5kIFdlYkZyYW1lVmll
dyB0byBvZmZlciB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudCAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rp
b25hcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1lbnREaWN0aW9u
YXJ5Lm1tCmluZGV4IDFmYjUxOGY4NzRiODNlNjRhZmU1ZmY0OThkMWVmNTFjZTMxODVmYzguLmFl
YjRkOGYxNmZkZGIwMjU1MTA4YjJhMDBlYjlmNjcyMTVmMTc2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVtZW50RGljdGlvbmFyeS5tbQpAQCAtNTAs
MTEgKzUwLDE1IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBsb29rdXBUYWJsZSA9IE5VTEw7CitzdGF0aWMgUmV0YWluUHRyPENG
TXV0YWJsZURpY3Rpb25hcnlSZWY+JiBsb29rdXBUYWJsZSgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gbG9va3VwVGFibGU7
CisgICAgcmV0dXJuIGxvb2t1cFRhYmxlOworfQogCiBzdGF0aWMgdm9pZCBhZGRMb29rdXBLZXko
TlNTdHJpbmcgKmtleSwgU0VMIHNlbGVjdG9yKQogewotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGxvb2t1cFRhYmxlLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5LCBzZWxlY3Rvcik7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUobG9va3VwVGFibGUoKS5nZXQoKSwgKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKWtleSwgc2VsZWN0b3IpOwogfQogCiBzdGF0aWMgdm9pZCBjYWNoZVZhbHVlRm9yS2V5
KGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKnNlbGYpCkBAIC03Niwx
MCArODAsMTAgQEAgKyAodm9pZClpbml0aWFsaXplCiAKICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1
cFRhYmxlCiB7Ci0gICAgaWYgKGxvb2t1cFRhYmxlKQorICAgIGlmIChsb29rdXBUYWJsZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBsb29rdXBUYWJsZSA9IENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCBOVUxMKTsKKyAgICBsb29rdXBUYWJsZSgpID0gYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZDb3B5U3RyaW5nRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCkpOwogCiAgICAgYWRkTG9va3VwS2V5KFdlYkVsZW1l
bnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5vZGUpKTsKICAgICBhZGRMb29rdXBLZXkoV2Vi
RWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dlYkZyYW1lKSk7CkBAIC0xMjUsNyArMTI5LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpX2ZpbGxDYWNoZQogewotICAgIENGRGljdGlv
bmFyeUFwcGx5RnVuY3Rpb24obG9va3VwVGFibGUsIGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRn
ZSB2b2lkKilzZWxmKTsKKyAgICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKGxvb2t1cFRhYmxl
KCkuZ2V0KCksIGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilzZWxmKTsKICAgICBf
Y2FjaGVDb21wbGV0ZSA9IFlFUzsKIH0KIApAQCAtMTQ5LDEyICsxNTMsMTIgQEAgLSAoaWQpb2Jq
ZWN0Rm9yS2V5OihpZClrZXkKICAgICBpZiAodmFsdWUgfHwgX2NhY2hlQ29tcGxldGUgfHwgW19u
aWxWYWx1ZXMgY29udGFpbnNPYmplY3Q6a2V5XSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0g
ICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSwgKF9fYnJpZGdlIENGVHlwZVJlZilrZXkpKSk7
CisgICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VMPihjb25zdF9jYXN0PHZvaWQqPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBl
UmVmKWtleSkpKTsKICAgICBpZiAoIXNlbGVjdG9yKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IHZhbHVlID0gW3NlbGYgcGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXTsKIAotICAgIE5TVUludGVn
ZXIgbG9va3VwVGFibGVDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGxvb2t1cFRhYmxlKTsK
KyAgICBOU1VJbnRlZ2VyIGxvb2t1cFRhYmxlQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChs
b29rdXBUYWJsZSgpLmdldCgpKTsKICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgaWYgKCFfY2Fj
aGUpCiAgICAgICAgICAgICBfY2FjaGUgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6bG9va3VwVGFibGVDb3VudF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDAwOGZiYmEyOGYyMTk4ZjhiMDkxYmIzYzNhMmVl
N2M4MzIwMzU1Yi4uNWIwZWU4YTNhYzhjMzMzYjZlZTM0NGNkZDljM2I1NTc2NWMyNmZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTI2MywyOCAr
MTI2MywzMiBAQCBzdGF0aWMgQ0ZTZXRDYWxsQmFja3MgTm9uUmV0YWluaW5nU2V0Q2FsbGJhY2tz
ID0gewogICAgIENGSGFzaAogfTsKIAotc3RhdGljIENGTXV0YWJsZVNldFJlZiBhbGxXZWJWaWV3
c1NldDsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiYgYWxsV2ViVmlld3NTZXQo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVm
Pj4gYWxsV2ViVmlld3NTZXQ7CisgICAgcmV0dXJuIGFsbFdlYlZpZXdzU2V0OworfQogCiArICh2
b2lkKV9tYWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogewotICAg
IGlmICghYWxsV2ViVmlld3NTZXQpCisgICAgaWYgKCFhbGxXZWJWaWV3c1NldCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0
IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXTsKKyAgICBbKF9fYnJpZGdlIE5T
TXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0KCkuZ2V0KCkgbWFrZU9iamVjdHNQZXJmb3JtU2Vs
ZWN0b3I6c2VsZWN0b3JdOwogfQogCiAtICh2b2lkKV9yZW1vdmVGcm9tQWxsV2ViVmlld3NTZXQK
IHsKLSAgICBpZiAoYWxsV2ViVmlld3NTZXQpCi0gICAgICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxs
V2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgaWYgKGFsbFdlYlZp
ZXdzU2V0KCkpCisgICAgICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NTZXQoKS5nZXQo
KSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogLSAodm9pZClfYWRkVG9BbGxXZWJW
aWV3c1NldAogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCi0gICAgICAgIGFsbFdlYlZpZXdz
U2V0ID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFj
a3MpOworICAgIGlmICghYWxsV2ViVmlld3NTZXQoKSkKKyAgICAgICAgYWxsV2ViVmlld3NTZXQo
KSA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRhaW5pbmdTZXRD
YWxsYmFja3MpKTsKIAotICAgIENGU2V0U2V0VmFsdWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRn
ZSBDRlR5cGVSZWYpc2VsZik7CisgICAgQ0ZTZXRTZXRWYWx1ZShhbGxXZWJWaWV3c1NldCgpLmdl
dCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwogfQogCiBAZW5kCkBAIC0yMjMwLDcgKzIy
MzQsNyBAQCArICh2b2lkKWNsb3NlQWxsV2ViVmlld3MKICAgICBXZWJDb3JlOjpET01XaW5kb3c6
OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cygpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNs
b3NlIHRoZSBXZWJWaWV3cyBpbiBhIHJhbmRvbSBvcmRlci4gQ2hhbmdlIHRoaXMgaWYgY2xvc2Ug
b3JkZXIgaXMgaW1wb3J0YW50LgotICAgIGZvciAoV2ViVmlldyAqd2ViVmlldyBpbiBbKF9fYnJp
ZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQgYWxsT2JqZWN0c10pCisgICAgZm9yIChXZWJWaWV3
ICp3ZWJWaWV3IGluIFsoX19icmlkZ2UgTlNTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIGFs
bE9iamVjdHNdKQogICAgICAgICBbd2ViVmlldyBjbG9zZV07CiB9CiAKQEAgLTY5MTEsNyArNjkx
NSw3IEBAICsgKEJPT0wpX2RpZFNldENhY2hlTW9kZWwKICsgKFdlYkNhY2hlTW9kZWwpX21heENh
Y2hlTW9kZWxJbkFueUluc3RhbmNlCiB7CiAgICAgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0g
V2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwotICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRv
ciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2ViVmlld3NTZXQgb2JqZWN0RW51bWVyYXRvcl07Cisg
ICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gWyhOU011dGFibGVTZXQgKilhbGxXZWJWaWV3
c1NldCgpLmdldCgpIG9iamVjdEVudW1lcmF0b3JdOwogICAgIHdoaWxlIChXZWJQcmVmZXJlbmNl
cyAqcHJlZmVyZW5jZXMgPSBbW2VudW1lcmF0b3IgbmV4dE9iamVjdF0gcHJlZmVyZW5jZXNdKQog
ICAgICAgICBjYWNoZU1vZGVsID0gc3RkOjptYXgoY2FjaGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNh
Y2hlTW9kZWxdKTsKICAgICByZXR1cm4gY2FjaGVNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggNTExYTkyYjcyZDFjYTBkMjMz
ZDQ5MWMzMDAxOTYzNDMxY2M2NGQyYS4uOGYyNzE2MmJiYWYxOGVlMWMxMThiOTUxMWY1MWI0N2U0
NDg1Nzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRp
b25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25D
YWNoZS5jcHAKQEAgLTE5Nyw5ICsxOTcsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6
Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFnKiogb3JpZ2lucykKICAgICBmb3IgKGF1dG8m
IGNvcmVPcmlnaW4gOiBjb3JlT3JpZ2lucykKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFy
cmF5SXRlbS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oV2ViU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUluc3RhbmNlKGNvcmVPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSkpKTsKIAot
ICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRD
RigKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0K
KyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
MCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOwogICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RS
VG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggZWEwYjY3
NTFjNTU0ZTgyN2RjOTgyNTVjZDRhNzE1N2YxZDVhZDJiMi4uMWQyNzAyYWRiMDgyNzdjNDQ1MDhk
M2RmYmRjNDI3OTg2ZGNmYzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCBfSW5f
bwogICAgIGlmICghd2ViQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9w
dENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSkpOworICAgIGF1dG8gY2ZD
cmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpKTsKIAogICAg
IGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rv
d25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIHdlYkNoYWxsZW5nZS0+YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CkBAIC0zNzYsNyArMzc2
LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGUKICAgICBpZiAoIUNGVVJMQXV0aENoYWxsZW5n
ZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxsZW5nZSkpIHsKICAgICAgICAgQ3JlZGVudGlh
bCBjcmVkZW50aWFsID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChlbXB0eVN0cmluZygpLCBjb3JlKENGVVJM
QXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpKSk7CiAgICAgICAgIGlm
ICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENy
ZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkp
OworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBjcmVhdGVDRihjcmVkZW50aWFsKTsK
ICAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0KCks
IGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXggZDViZWVm
ODJlOTkwODkxYTcyZTZiNGZjNGJlMzc4ODMwYWI2YWM5MC4uZmYzNGFkMDczN2EyNmQyYTE3M2Vj
ZGJiOWI5NjdiNTllMTZiZTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIu
Y3BwCkBAIC0zNzAsMTQgKzM3MCwxMiBAQCBzdGF0aWMgYm9vbCBwcmVwYXJlRGV2aWNlKElEaXJl
Y3QzRERldmljZTkqIGRldmljZSwgY29uc3QgQ0dSZWN0JiBib3VuZHMsIElEaXJlYwogCiBzdGF0
aWMgQ0dSZWN0IHVwZGF0ZUJvdW5kcyhDQVJlbmRlclVwZGF0ZSogdXBkYXRlKQogewotICAgIENH
U1JlZ2lvbk9iaiByZ24gPSBDQVJlbmRlclVwZGF0ZUNvcHlSZWdpb24odXBkYXRlKTsKKyAgICBh
dXRvIHJnbiA9IGFkb3B0Q0YoQ0FSZW5kZXJVcGRhdGVDb3B5UmVnaW9uKHVwZGF0ZSkpOwogICAg
IGlmICghcmduKQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKIAogICAgIENHUmVjdCByZXN1
bHQ7Ci0gICAgQ0dFcnJvciBlcnJvciA9IENHU0dldFJlZ2lvbkJvdW5kcyhyZ24sICZyZXN1bHQp
OwotICAgIENHU1JlbGVhc2VSZWdpb24ocmduKTsKLQorICAgIENHRXJyb3IgZXJyb3IgPSBDR1NH
ZXRSZWdpb25Cb3VuZHMocmduLmdldCgpLCAmcmVzdWx0KTsKICAgICByZXR1cm4gZXJyb3IgPT0g
a0NHRXJyb3JTdWNjZXNzID8gcmVzdWx0IDogQ0dSZWN0WmVybzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggYjQxNjhi
Zjg0MTkxZThhMTE0MzlkOTAwMzJmZTg5ZWE0ZDI2ZjcwNC4uNDNjYzFiYTI2Nzc4YThkYWE2MGUx
MGYwZTJjZDNjMDYxNTQxNmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC02NywxNyArNjcsMTcgQEAgc3RhdGljIExvY2Fs
aXplZFN0cmluZ01hcCBmcmFtZXdvcmtMb2NTdHJpbmdzKCkKIGNsYXNzIExvY2FsaXplZFN0cmlu
ZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxpemVkU3RyaW5nKTsKIHB1YmxpYzoK
LSAgICBMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQotICAgICAgICA6IG1fY2ZT
dHJpbmcoc3RyaW5nKQorICAgIExvY2FsaXplZFN0cmluZyhSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
JiYgc3RyaW5nKQorICAgICAgICA6IG1fY2ZTdHJpbmcoV1RGTW92ZShzdHJpbmcpKQogICAgIHsK
LSAgICAgICAgQVNTRVJUX0FSRyhzdHJpbmcsIHN0cmluZyk7CisgICAgICAgIEFTU0VSVChtX2Nm
U3RyaW5nKTsKICAgICB9CiAKICAgICBvcGVyYXRvciBMUENUU1RSKCkgY29uc3Q7Ci0gICAgb3Bl
cmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmU3RyaW5nOyB9CisgICAgb3Bl
cmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmU3RyaW5nLmdldCgpOyB9CiAK
IHByaXZhdGU6Ci0gICAgQ0ZTdHJpbmdSZWYgbV9jZlN0cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG1fY2ZTdHJpbmc7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9zdHJpbmc7CiB9Owog
CkBAIC04Niw3ICs4Niw3IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNv
bnN0CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3N0cmlu
Zy53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKIAotICAgIG1fc3RyaW5nID0gbV9jZlN0cmluZzsK
KyAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmcuZ2V0KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMTsgaSA8IG1fc3RyaW5nLmxlbmd0aCgpOyBpKyspCiAgICAgICAgIGlmIChtX3N0cmlu
Z1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAxXSA9PSAnJScgfHwgKGkgPiAyICYmIG1fc3Ry
aW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdbaSAtIDJdID49ICcxJyAmJiBtX3N0cmluZ1tp
IC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAzXSA9PSAnJScpKSkKQEAgLTE1Miw3ICsxNTIs
NyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2Fs
aXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5ncwogICAgIHJldHVybiBzdHJpbmdzQnVuZGxlLT5i
dW5kbGU7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1
bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0
cmluZyYga2V5KQorc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29weUxvY2FsaXplZFN0
cmluZ0Zyb21CdW5kbGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxl
LCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90Rm91bmQg
PSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKIApAQCAtMTYwLDcgKzE2MCw3
IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJM
b2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0CiAgICAgaWYgKCFidW5kbGUpCiAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKIAotICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENGQ29weUxvY2FsaXpl
ZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGJ1
bmRsZSwgbm90Rm91bmQsIDApOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRkNvcHlMb2Nh
bGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAw
LCBidW5kbGUsIG5vdEZvdW5kLCAwKSk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3Vs
dCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAlcyBpbiBi
dW5kbGUiLCBrZXkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwYWZmYjQ1YTE3ZmJiYzk4
YzcwYWVlODJiNWViOWVlYTUyYzY4ZjA3Li41YmJkZWNhYWU1Mzk2MjE1MzM4YjkxNDBiMmNiNmIw
ZjA0Y2RiMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3Bw
CkBAIC0xMTcsNyArMTE3LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmlu
Z1ZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRlByb3BlcnR5TGlzdFJlZiB2CiAKIC8vIFdlYlBy
ZWZlcmVuY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIENGRGljdGlvbmFyeVJlZiBkZWZhdWx0U2V0dGlu
Z3M7CitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGRlZmF1bHRTZXR0aW5ncygp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
PiBkZWZhdWx0U2V0dGluZ3M7CisgICAgcmV0dXJuIGRlZmF1bHRTZXR0aW5nczsKK30KIAogUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBXZWJQcmVmZXJlbmNlczo6bV9hcHBsaWNhdGlvbklkID0ga0NG
UHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb247CiAjZW5kaWYKQEAgLTIxNCwxNTcgKzIxOCwx
NTcgQEAgQ0ZTdHJpbmdSZWYgV2ViUHJlZmVyZW5jZXM6OmFwcGxpY2F0aW9uSWQoKQogdm9pZCBX
ZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiB7CiAjaWYgVVNFKENG
KQotICAgIGlmIChkZWZhdWx0U2V0dGluZ3MpCisgICAgaWYgKGRlZmF1bHRTZXR0aW5ncygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGRlZmF1bHRzID0g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIGRlZmF1
bHRzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
IAogICAgIElOSVRJQUxJWkVfREVGQVVMVF9QUkVGRVJFTkNFU19ESUNUSU9OQVJZX0ZST01fR0VO
RVJBVEVEX1BSRUZFUkVOQ0VTOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3
IFJvbWFuIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3IikpOwotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTZXJpZkZvbnRQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBD
RlNUUigiQXJpYWwiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGYW50YXN5
Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ29taWMgU2FucyBNUyIpKTsKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIlNlZ29lIFVJIFN5bWJvbCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSks
IENGU1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRNaW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5IikpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rm9u
dFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiMTMiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMg
TmV3IFJvbWFuIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3Iikp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRT
ZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIpKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2Fuc1Nlcmlm
Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQXJpYWwiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtl
eSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNU
UigiQ29taWMgU2FucyBNUyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlNl
Z29lIFVJIFN5bWJvbCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRN
aW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5IikpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREZWZhdWx0Rm9u
dFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZl
cmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CiAKICAgICBTdHJpbmcgZGVmYXVsdERlZmF1bHRFbmNv
ZGluZyhXRUJfVUlfU1RSSU5HKCJJU08tODg1OS0xIiwgIlRoZSBkZWZhdWx0LCBkZWZhdWx0IGNo
YXJhY3RlciBlbmNvZGluZyBvbiBXaW5kb3dzIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VL
ZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
UHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0VGV4dEFyZWFzQXJlUmVzaXphYmxlUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEph
dmFFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5jZUtleSksIENG
U1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYkF1ZGlvRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RnJh
bWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luc0Vu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NSZWdpb25zRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2Nh
bFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RXhwZXJpbWVudGFsTm90aWZp
Y2F0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Wm9vbXNUZXh0T25seVByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihX
ZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGlz
cGxheUltYWdlc0tleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TG9hZFNpdGVJY29uc0tleSksIGtDRkJvb2xlYW5GYWxz
ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEJhY2tG
b3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkpLCBDRlNUUigiMTgwMCIpKTsKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VGFiVG9MaW5rc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZhbGVudHNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0U2hvd3NVUkxzSW5Ub29sVGlwc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRT
aG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQREZE
aXNwbGF5TW9kZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMSIpKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UERGU2NhbGVGYWN0b3JQcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hv
dWxkRGlzcGxheUNhcHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlU
ZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERlZmF1bHRUZXh0
RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRU
ZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YUVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNl
S2V5KSwgQ0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRGcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU1JlZ2lvbnNF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRE
aXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMb2FkU2l0ZUljb25zS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSksIENGU1RSKCIx
ODAwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFByaXZhdGVCcm93
c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJk
U3R5bGVLZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG93c1VS
THNJblRvb2xUaXBzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNob3dzVG9vbFRpcE92
ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBERkRpc3BsYXlN
b2RlUHJlZmVyZW5jZUtleSksIENGU1RSKCIxIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXkp
LCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGlua0JlaGF2aW9yU3RyaW5n
UmVmID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiks
IFdlYktpdEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcikpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVu
Y2VLZXkpLCBsaW5rQmVoYXZpb3JTdHJpbmdSZWYuZ2V0KCkpOwotCi0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEhpc3RvcnlJdGVtTGltaXRLZXkpLCBDRlNU
UigiMTAwMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0S2V5KSwgQ0ZTVFIoIjciKSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEljb25EYXRhYmFzZUxvY2F0aW9uS2V5
KSwgQ0ZTVFIoIiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0SWNvbkRhdGFiYXNlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZvbnRTbW9v
dGhpbmdUeXBlUHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGb250U21vb3RoaW5nQ29udHJhc3RQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lQcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYkNv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKEFsbG93Q29udGludW91c1NwZWxsQ2hl
Y2tpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSksIENGU1RSKCIi
KSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dEVkaXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1Jl
Zi5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSksIENGU1RSKCIxMDAwIikpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5E
YXlzTGltaXRLZXkpLCBDRlNUUigiNyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkpLCBDRlNUUigi
IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Rm9udFNt
b290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdDb250cmFz
dFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZl
cmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoQWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKIAogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVNb2RlbFJlZiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlZCIpLCBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3
ZXIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q2Fj
aGVNb2RlbFByZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZl
cmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250cm9sc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdFBhaW50TmF0aXZlQ29udHJvbHNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNo
b3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvd0RlYnVnQm9y
ZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRN
ZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRN
ZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVk
aWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVx
dWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJl
cXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUp
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZ1bGxT
Y3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZ1bGxTY3JlZW5FbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5QW5kUnVubmluZ09mSW5z
ZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5QW5k
UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDdXN0b21F
bGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q3VzdG9tRWxlbWVu
dHNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0
ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYkFuaW1h
dGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdExpbmtQcmVsb2FkRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMaW5rUHJlbG9hZEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRNZWRpYVByZWxvYWRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRE
YXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGF0
YVRyYW5zZmVySXRlbXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SW5zcGVjdG9y
QWRkaXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJbnNwZWN0b3JB
ZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VmlzdWFsVmlld3BvcnRB
UElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFZpc3VhbFZpZXdwb3J0QVBJ
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Njcm9sbGluZ0FQSUVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJ
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXNpemVPYnNlcnZlckVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFz
eW5jQ2xpcGJvYXJkQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwog
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvbnRhY3RQ
aWNrZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvbnRhY3RQaWNr
ZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QXNwZWN0UmF0aW9PZkltZ0Zy
b21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXNw
ZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRXZWJTUUxFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYlNR
TEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NJbmRpdmlkdWFsVHJhbnNmb3Jt
UHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NJbmRpdmlk
dWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTcGVl
Y2hSZWNvZ25pdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRPdmVyc2Nyb2xs
QmVoYXZpb3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE92ZXJzY3JvbGxC
ZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIGRl
ZmF1bHRTZXR0aW5ncyA9IGRlZmF1bHRzOworICAgIGRlZmF1bHRTZXR0aW5ncygpID0gV1RGTW92
ZShkZWZhdWx0cyk7CiAjZW5kaWYKIH0KIApAQCAtMzc5LDcgKzM4Myw3IEBAIFJldGFpblB0cjxD
RlByb3BlcnR5TGlzdFJlZj4gV2ViUHJlZmVyZW5jZXM6OnZhbHVlRm9yS2V5KENGU3RyaW5nUmVm
IGtleSkKICAgICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIHJldHVy
biBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleSk7CisgICAgcmV0dXJu
IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncygpLmdldCgpLCBrZXkpOwogfQog
CiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXksIENG
UHJvcGVydHlMaXN0UmVmIHZhbHVlKQpAQCAtNjIwLDcgKzYyNCw3IEBAIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlS
ZWYgZGljdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChvbWl0RGVmYXVs
dHMpIHsKLSAgICAgICAgICAgIENGVHlwZVJlZiBkZWZhdWx0VmFsdWUgPSBDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleXNbaV0pOworICAgICAgICAgICAgQ0ZUeXBlUmVm
IGRlZmF1bHRWYWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncygpLmdl
dCgpLCBrZXlzW2ldKTsKICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWUgJiYgQ0ZFcXVhbChk
ZWZhdWx0VmFsdWUsIHZhbHVlc1tpXSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBmNjQ5OTI1MTMxOWIxMjRhZjliZWM2NDMyOTI1MTg3ODAwYTc2ZDc5Li4wMDBkNjk0NmQ1Yzdh
MWFkNDI0NjY0YmQyZTIyMzQ5NWNhYjNiODE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMtMTAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBP
U09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRD
Ry5jcHA6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaDoKKyAgICAgICAgKEJpdG1hcENvbnRleHQ6
OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KToKKyAgICAgICAgKEJpdG1hcENvbnRl
eHQ6OkJpdG1hcENvbnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKFdlYlRocmVhZExvY2tBZnRlckRlbGVnYXRlQ2FsbGJhY2tz
SGF2ZUNvbXBsZXRlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1
cHBvcnRXaW4uY3BwOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToK
KyAgICAgICAgKiBJbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6CisgICAgICAgIChJ
bWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OnBpeGVscyBjb25zdCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRl
Q0dDb250ZXh0RnJvbUNHSW1hZ2UpOgorICAgICAgICAoV1RSOjpjcmVhdGVDR0NvbnRleHRGcm9t
SW1hZ2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBh
cmVXaXRoRXhwZWN0ZWQpOgorCiAyMDIxLTAzLTEwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRh
bnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtXUEVdW0dUS10gSW50cm9kdWNlIE5lZWRzVW5i
cmFuZGVkVXNlckFnZW50IHF1aXJrIGFuZCB1c2UgaXQgZm9yIGFjY291bnRzLmdvb2dsZS5jb20s
IGRvY3MuZ29vZ2xlLmNvbSwgYW5kIGRyaXZlLmdvb2dsZS5jb20KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCmluZGV4IDViYzA0MDNiODExYmM2NTVk
ZDIwZmEyZDQwOTIyOTlmMGU0MDdkODUuLjhlNmRkNWZlZDdkMmMyZWIzOWJjZWViYjFkNDY4Y2Nl
ZDU5MjhjZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9y
dENHLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVC
aXRtYXBDb250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAgICAK
ICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHBy
ZXZlbnRzIGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIgdmll
dyBpcyBkcmF3biBpbnRvIGl0LgogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIsIHBpeGVsc1dp
ZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIsIHBpeGVs
c1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAg
ICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJlbmRlclRyZWU6
IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAsIDB4JXgpIGZh
aWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRlcywgY29sb3JT
cGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMySG9zdCk7CiAgICAgICAgIGZyZWUoYnVmZmVyKTsKQEAgLTEzNCw2ICsxMzQsNiBA
QCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dChzaXplX3QgcGl4ZWxz
V2lkZSwgc2l6ZV90IHBpeGVsc0hpZ2gsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29u
dGV4dChidWZmZXIsIGNvbnRleHQpOworICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVC
eUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpOwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBw
b3J0Q0cuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCmlu
ZGV4IDQxMjRiMGNhZWRjZTczOGY0NjQ2Y2RjMzhhN2I1MTZhMWE3NjFjMDguLmI3OTRiMjE5OGVk
OGEwYWExNDcyZDMwYjkzYTNhYmZhY2M3MDI3YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCkBAIC00Nyw5ICs0Nyw5IEBAIHR5cGVkZWYgSEJJVE1B
UCBQbGF0Zm9ybUJpdG1hcEJ1ZmZlcjsKIAogY2xhc3MgQml0bWFwQ29udGV4dCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEJpdG1hcENvbnRleHQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1h
cENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KFBsYXRmb3JtQml0bWFw
QnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxCaXRt
YXBDb250ZXh0PiBjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChQbGF0Zm9ybUJpdG1h
cEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0NvbnRleHRSZWY+JiYgY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRleHQoYnVmZmVyLCBjb250
ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRleHQoYnVmZmVy
LCBXVEZNb3ZlKGNvbnRleHQpKSk7CiAgICAgfQogCiAgICAgfkJpdG1hcENvbnRleHQoKQpAQCAt
NjYsOSArNjYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICBCaXRtYXBDb250ZXh0KFBs
YXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAgQml0
bWFwQ29udGV4dChQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0NvbnRl
eHRSZWY+JiYgY29udGV4dCkKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgICAgICwg
bV9jb250ZXh0KGFkb3B0Q0YoY29udGV4dCkpCisgICAgICAgICwgbV9jb250ZXh0KFdURk1vdmUo
Y29udGV4dCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDNkY2U1YWM1YzMyOTFhMzYyZTQ3ZWI0MjBlNzc3MjFlODJiNWI0
YzQuLmI1MWUxYWVmZTJkZmY2YWNlZWI3NjQzYjNiNDMyZjIxZTQwNzliYWUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQAog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTE4MTAsMjAgKzE4MTEsMTggQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUoY29uc3QgV1RSOjpUZXN0
T3B0aW9ucyYgb3B0aW9ucywgUmVzZXQKIC8vIGxvY2sgdG8gcHJldmVudCBwb3RlbnRpYWxseSBy
ZS1lbnRlcmluZyBXZWJDb3JlLgogc3RhdGljIHZvaWQgV2ViVGhyZWFkTG9ja0FmdGVyRGVsZWdh
dGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKCkKIHsKLSAgICBkaXNwYXRjaF9zZW1hcGhvcmVfdCBk
ZWxlZ2F0ZVNlbWFwaG9yZSA9IGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCk7CisgICAgYXV0
byBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc2VtYXBob3JlX2Ny
ZWF0ZSgwKSk7CiAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIGRpc3BhdGNoX3NlbWFwaG9y
ZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUpOworICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVf
c2lnbmFsKGRlbGVnYXRlU2VtYXBob3JlLmdldCgpKTsKICAgICB9KTsKIAotICAgIHdoaWxlIChk
aXNwYXRjaF9zZW1hcGhvcmVfd2FpdChkZWxlZ2F0ZVNlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9O
T1cpKSB7CisgICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRlU2VtYXBo
b3JlLmdldCgpLCBESVNQQVRDSF9USU1FX05PVykpIHsKICAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CiAgICAgICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0Rl
ZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIFdlYlRocmVhZExvY2soKTsKLQotICAgIGRpc3BhdGNoX3JlbGVh
c2UoZGVsZWdhdGVTZW1hcGhvcmUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAppbmRleCBhOWJhNjkxODMxMThiYjgz
MjNjOGQ0OWIxZmQzMzlhNTFmNTM5YjYwLi4zOTVkMzAyN2I5ZDg3ZWE4OTU2ZTZiMDAwODdjNjIx
NDhhMjY3ZDhlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1w
U3VwcG9ydFdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1
cHBvcnRXaW4uY3BwCkBAIC05MCw4ICs5MCw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVh
dGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAK
ICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBpbmZvLmJtV2lk
dGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7Cisg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJp
dHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwgaW5mby5ibVdpZHRoQnl0ZXMsIGNv
bG9yU3BhY2UuZ2V0KCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCB8IGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3QpKTsKICNlbGlmIFVTRShDQUlSTykgCiAgICAgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25l
ZCBjaGFyKilpbmZvLmJtQml0cywgQ0FJUk9fRk9STUFUX0FSR0IzMiwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGgsIGlu
Zm8uYm1IZWlnaHQsIGluZm8uYm1XaWR0aEJ5dGVzKTsgCkBAIC0xMTIsNSArMTExLDUgQEAgUmVm
UHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9u
c2NyZWVuLCBib29sIGluY3JlbWUKICAgICBhdXRvIGNvbnRleHQgPSByZW5kZXJUYXJnZXQuZ2V0
KCk7CiAjZW5kaWYgCiAKLSAgICByZXR1cm4gQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGlu
Z0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gQml0bWFwQ29u
dGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBXVEZNb3ZlKGNv
bnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdElu
dm9jYXRpb25DRy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9u
Q0cuY3BwCmluZGV4IDAxYzUzMWE5YjZhY2U4ZTgxNjk0OGY2NzZjZTYzMWY1Mjc5NGI2YzQuLjRl
YzljMjBlOTgwZjVlMDdlZmYzMzM2OGFmOTgxZjViOGI0OTdiMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcApAQCAtNDUsNyArNDUsNyBAQCBz
dGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7
CiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4
dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4
dFJlZj4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIHsKICAg
ICBzaXplX3QgcGl4ZWxzV2lkZSA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6ZV90
IHBpeGVsc0hpZ2ggPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKQEAgLTUzLDE1ICs1MywxNSBA
QCBzdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UpCiAKICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNv
bG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGlt
YWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIGF1dG8gY29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4
dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVs
c0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNI
aWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIGlmICghY29udGV4
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29u
dGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoKSwgaW1hZ2UpOwor
ICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBp
eGVsc1dpZGUsIHBpeGVsc0hpZ2gpLCBpbWFnZSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAK
LXN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYg
d2tJbWFnZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRG
cm9tSW1hZ2UoV0tJbWFnZVJlZiB3a0ltYWdlKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENG
KFdLSW1hZ2VDcmVhdGVDR0ltYWdlKHdrSW1hZ2UpKTsKICAgICByZXR1cm4gY3JlYXRlQ0dDb250
ZXh0RnJvbUNHSW1hZ2UoaW1hZ2UuZ2V0KCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgVGVz
dEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFNuYXBzaG90UmVz
dWx0VHlwZSBzbmFwc2hvCiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoImR1bXBQaXhlbHNBbmRD
b21wYXJlV2l0aEV4cGVjdGVkOiBpbWFnZSBpcyBudWxsXG4iKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRG
cm9tSW1hZ2Uod2tJbWFnZSkpOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlQ0dDb250ZXh0RnJv
bUltYWdlKHdrSW1hZ2UpOwogICAgICAgICBpbWFnZVNpemUgPSBXS0ltYWdlR2V0U2l6ZSh3a0lt
YWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTbmFwc2hvdFJlc3VsdFR5cGU6OldlYlZp
ZXc6CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0Fu
ZENvbXBhcmVXaXRoRXhwZWN0ZWQoU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG8KICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdl
IGlzIG51bGxcbiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNv
bnRleHQgPSBhZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKGltYWdlLmdldCgpKSk7
CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQo
KSk7CiAgICAgICAgIGltYWdlU2l6ZSA9IFdLU2l6ZU1ha2UoQ0dJbWFnZUdldFdpZHRoKGltYWdl
LmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwogICAgICAgICBicmVhazsK
ICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422863</attachid>
            <date>2021-03-10 13:10:38 -0800</date>
            <delta_ts>2021-03-10 15:14:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310131037.patch</filename>
            <type>text/plain</type>
            <size>217815</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzhmYTliNDEyODFjMzQ0NDIwNTY5OTlkODliYjBkYjFmYmE3MTYwLi5hM2E0MmNmOTBiNWUyNTA2
MDQ2NDkxMjU4MjMwZDQzMzVlZWMyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWlu
KToKKwogMjAyMS0wMy0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIEdMaWIgSlNDIEFQSSBoZWFkZXJzIHNob3VsZCBvbmx5IGluY2x1ZGUgb3RoZXIg
R0xpYiBKU0MgQVBJIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGFiZTViMGU5MjFkNDgyOGMwOWNkMTAyMDNlYzdl
NTJhZDhlYWQzMC4uNGI2NjBjZTE4NjU2NWVjZWIwYzA0NGE5YzBkODA3OWFkYzdjOWY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZSk6CisgICAgICAgICogd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
Y29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXVEY6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKToKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAg
ICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6Cisg
ICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgUkVMRUFTRV9BU1NFUlQoKSBmb3IgRGVxdWUgYm91
bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyYTkxNjY4ZDVhNWU1Y2EzYmE1M2JiMWFkMTE2NTA1
NjQ3ZWRjMzAuLjQyNDY3OGMzZjE5ZWJjOWNkNjcxZDY5MGRiY2NjM2JmYTc5NDdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpjbGFzc2VzQnlJc0EpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6X2NyZWF0ZUNsYXNzZXNC
eUlzQUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6Y2xh
c3NGb3JJc0EpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dyYXBoTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NwdUhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dDSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlDZXJ0aWZpY2F0ZVRvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGlz
cGF0Y2hRdWV1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXRhZGF0YUtleU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjp+QVZGV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5
RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmF0Y2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmF0Y2hDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhI
REMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV2aWNlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgICh3ZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk6CisgICAgICAgIChk
ZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcik6
CisgICAgICAgIChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0
QW5kUmVsZWFzZSk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKToKKyAg
ICAgICAgKE1haW5SdW5Mb29wQXV0b1VubG9jayk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xv
Y2spOgorICAgICAgICAoX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6Cisg
ICAgICAgIChfV2ViUnVuTG9vcERpc2FibGVOZXN0ZWRGcm9tTWFpblRocmVhZCk6CisgICAgICAg
IChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZl
cjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjp+UG93
ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojp+QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmljYXRl
Q2hhaW5Gcm9tU2VjVHJ1c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6
OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UnVuTG9vcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRva2VuaXplckZvclN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG9jSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNoYXJlZEZ1bmN0aW9uUmVmKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBw
b3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeSk6CisKIDIwMjEtMDMt
MTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGktY29s
dW1uXSBBZGp1c3QgdGhlIGZsb3cgc3RhdGUgb2YgdGhlIGRlc2NlbmRhbnRzIHdoZW4gZ29pbmcg
ZnJvbSBub3QtaW5zaWRlLWZsb3cgdG8gaW5zaWRlLWZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzY2ZDQyY2I0
YmQzYjg3MjgyOTIzMTA0MjRlNmIxZjA2MTFjMmVlNy4uYzY4ZGRkOTE0OTAyN2I4Zjg0ZWIxMjBl
MDgzN2YxMTllYWQxNTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRT
b3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06
CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5l
SVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2ZUlUUEVuYWJsZWQpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisKIDIw
MjEtMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERv
IG5vdCBzZW5kIHNhbmRib3ggZXh0ZW5zaW9ucyB0byBXZWJQcm9jZXNzIGlmIGNhcHR1cmUgaGFw
cGVucyBpbiBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDA0ZGJlZWM4NjZhYjQ3
NjBjMGM2ZDAwY2Y1OTVjNTJkMjUxZGY3MjIuLmY1ZmU5NzUwMzlkNGYyOTNhYzEzOWI0ZWNhZTlh
Y2QzODlmZmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0
YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAyMjMwMzBfUmV0YWluUHRyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MjEtMDMtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIEJ1bXAgY21ha2VfbWluaW11bV9yZXF1aXJlZCB2ZXJzaW9uIHRvIDMuMTIgb3Ig
bGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA3N2Y1OGIwNjA3MjE5N2I4NTM0
NmVlNzU1MWUxNjAxMmU0NWU3ZDkzLi4wODExNzk2ODZmNzRhMGQxNGYwODc0YzJhMzZjOWNlNTM4
MzVhNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbToKKyAgICAgICAgKGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUpOgorICAgICAgICAo
K1tXZWJQREZWaWV3IHNoYWRvd0NvbG9yXSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgYmFja2dy
b3VuZENvbG9yXSk6CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5
YjI0OWUxMzNlZjlkMTk5ZjUwZWFjMWJkMmYwNzc4NGNhNjA0OTk2Li5hMTAwM2Y5YmRjMjM1MzAz
YmU0ZGRkNTgwYTRlNGI5OTUyMmVhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW06CisgICAgICAgIChsb29rdXBUYWJsZSk6CisgICAg
ICAgIChhZGRMb29rdXBLZXkpOgorICAgICAgICAoK1tXZWJFbGVtZW50RGljdGlvbmFyeSBpbml0
aWFsaXplTG9va3VwVGFibGVdKToKKyAgICAgICAgKC1bV2ViRWxlbWVudERpY3Rpb25hcnkgX2Zp
bGxDYWNoZV0pOgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9t
YWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Jl
bW92ZUZyb21BbGxXZWJWaWV3c1NldF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hZGRUb0FsbFdl
YlZpZXdzU2V0XSk6CisgICAgICAgICgrW1dlYlZpZXcgY2xvc2VBbGxXZWJWaWV3c10pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorCiAyMDIxLTAz
LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NT
UGFyc2VyQ29udGV4dDo6ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIGFzIGl0IGlz
IHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMxNjkzZGNiZTJkNjE3YTFl
NjU4OWU4MWZmYzhjYjQ3ZDBjOGZhZTYuLjEyNWJkZWUxZWNiMThmYTU1ZmU1ODljOWVhZTQ3OTk5
ODU4NmRjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKToK
KyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6dXBkYXRlQm91bmRzKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpM
b2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBDRlN0
cmluZ1JlZiBjb25zdCk6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RT
VFIgY29uc3QpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUpOgorICAg
ICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKGRlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisKIDIwMjEtMDMtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwcmVmZXJlbmNl
IHJlc2V0aW5nIHRvIFdlYktpdExlZ2FjeSBXaW5kb3dzIHRvIHNpbXBsaWZ5IHRlc3RpbmcgcmVz
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMTg1MGM0ZDcw
OTJjNTAxY2IyY2Q5MWUxMTBhMmU2N2Q1Y2MyODUzOC4uZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2Mz
YzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KQEAgLTI3NSwxMyArMjc1LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlv
bl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCkpOwogICAg
IGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZWxheUNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9u
LCBtX3hwY1F1ZXVlLCB0aGlzKSk7CisgICAgbV9yZWxheUNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpLCBtX3hwY1F1
ZXVlLCB0aGlzKSk7CiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwg
bmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25u
ZWN0aW9uLgotICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCiAgICAgaWYgKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSBoYXZlIGEgZGVidWdnYWJsZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5z
cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oCmluZGV4IGMzMTYzOGY0ZTJkYmUyMGIxZjAzODNkY2Y3MGY3YThkNWEyNjBjZmMuLjBkYTg4
NWRlYWI4NmFhOGQ4OWI2M2Y1MjhiN2U2M2MzM2U0ODRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTYzLDggKzY0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZSBtYWtlIHN1cmUgdGhhdCBtX2NsaWVudCBpcyB0aHJlYWQg
c2FmZSBhbmQgaW1tZWRpYXRlbHkgY2xlYXJlZCBpbiBjbG9zZSgpLgogICAgIExvY2sgbV9tdXRl
eDsKIAotICAgIHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9xdWV1ZTsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5l
Y3Rpb247CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9jbG9zZWQgeyBmYWxzZSB9OwogI2lmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tCmluZGV4IDgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcyM2JlNzAuLmI1
MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNTEsMTggKzUxLDE1
IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uCiAgICAgLCBtX3F1ZXVlKHF1ZXVlKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewotICAgIGRpc3BhdGNoX3JldGFpbihtX3F1ZXVlKTsKLQotICAg
IHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0
X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICB4
cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbi5nZXQoKSwgbV9xdWV1
ZS5nZXQoKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0
aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKICAgICAgICAgaGFuZGxlRXZlbnQo
b2JqZWN0KTsKICAgICB9KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gdGhlIHhw
Y19jb25uZWN0aW9uIHJlY2VpdmVzIFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQuCiAgICAg
cmVmKCk7CiAKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQpAQCAt
ODMsNyArODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1f
cXVldWUuZ2V0KCksIF57CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVl
dWUoKTsKQEAgLTkzLDE1ICs5MCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlRnJvbU1lc3NhZ2UoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpjbG9zZU9uUXVldWUoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKG1f
Y29ubmVjdGlvbik7CisgICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIGlm
IChtX3F1ZXVlKSB7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7Ci0gICAgICAg
IG1fcXVldWUgPSBudWxscHRyOwotICAgIH0KKyAgICBtX3F1ZXVlID0gbnVsbHB0cjsKIH0KIAog
TlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1l
c3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKQEAgLTE0Nyw3ICsxNDAsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3Qp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghbV92YWxpZGF0ZWQpIHsKICAgICAgICAgYXVk
aXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2Vu
KG1fY29ubmVjdGlvbiwgJnRva2VuKTsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0
X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYgKCFXVEY6Omhh
c0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmlu
c3BlY3RvcmQiKSkgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgpAQCAtMTgxLDIzICsx
NzQsMTkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAobV9jbG9zZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBkaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKICAgICBpZiAodXNlckluZm8p
CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBh
dXRvIHhwY0RpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5LmdldCgpKSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNl
KG1zZyk7CisgICAgYXV0byBtc2cgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1z
Zy5nZXQoKSwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
LCB4cGNEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
bV9jb25uZWN0aW9uLmdldCgpLCBtc2cuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDhkNjI4OTBhOWUxZWE3Yjc3ZjIwMDU0Njhl
ZjlmMTJkMzE1OGJiZi4uMjAyNjc5NGExMDkzZGYzOWZkYmI0ZGQyMDIyZWFhNjA0NTc0NDMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTM1NDEsOSArMzU0Miw4IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBhdXRvJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNp
bmdsZXRvbigpOwogICAgIHsKLSAgICAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgianNjIHNoZWxsIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIiwgRElT
UEFUQ0hfUVVFVUVfU0VSSUFMKTsKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERp
c3BhdGNoUXVldWUocXVldWUpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKKyAg
ICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJq
c2Mgc2hlbGwgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
KTsKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldERpc3BhdGNoUXVldWUoV1RGTW92
ZShxdWV1ZSkpOwogICAgIH0KICAgICBCb3g8Q3JpdGljYWw+IG1lbW9yeVByZXNzdXJlQ3JpdGlj
YWxTdGF0ZSA9IEJveDxDcml0aWNhbD46OmNyZWF0ZShDcml0aWNhbDo6Tm8pOwogICAgIEJveDxT
eW5jaHJvbm91cz4gbWVtb3J5UHJlc3N1cmVTeW5jaHJvbm91c1N0YXRlID0gQm94PFN5bmNocm9u
b3VzPjo6Y3JlYXRlKFN5bmNocm9ub3VzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcAppbmRleCAzNDE2MTZjNjlkYzYxNGEzMTE2YTVkNjg0NjY5Mjk2YjFhZjRi
NzdiLi4zN2I3MTAwZmI2MzRlYTVhZTk5MDBkMTFhMWVjMDgxZjllNTEyN2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTMxNiwxMyArMzE2LDEwIEBAIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0
RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKQordm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4m
JiBxdWV1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YWxsZWQpOwotICAgIGRpc3Bh
dGNoX3JldGFpbihxdWV1ZSk7Ci0gICAgaWYgKG1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IHF1
ZXVlOworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjIxZWQ4OTIyOWM2ZTYw
N2NkNjMxZDJlY2Y1ODgzYzU0N2M0N2M0Mi4uMzU2ODc3ZTlmMGQwYzY0M2NiZWFjZDYxMzdjZmVl
MzJlOTk0ZjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTM4
LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBvbGljeSA6IHVp
bnQ4X3QgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3Bh
dGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RGlzcGF0Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKICNlbmRp
ZgogCiAgICAgY2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTIwNiw3ICsyMTAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
ZGlzcGF0Y2hRdWV1ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1
ZV90PiBtX2Rpc3BhdGNoUXVldWU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNWQ2
OTRiZDhjM2Y1YTRhNWMwMGM5NDJmOWRkNDMzZDdjODQ0NWUyMy4uNGEzYjdkYWZhZTc4ZjFhNmQ5
YzQ2M2IyY2M2YTAzZGE5NGE0MTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjZWxzZQogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAjZW5kaWYKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMs
IFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmKTsKIAogI2lmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQorICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKTsgfQogI2Vsc2UKICAg
ICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlm
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+
IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbHNlCiAgICAgUnVuTG9vcCogbV9ydW5Mb29wOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tCmluZGV4IDA4OGIxOWNjMTBhNjVlZmZlNWQ0ZTlmYzI3YTA4MWMyNTZiYTM3NmYuLjVjMGY1
YjI1NDRmN2JhNWVlNGQ3MjUwNjA3ZjdmZDZmYmQwNDQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC02OCwxMyArNjgs
MTMgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogICAgIGlmIChtX2lu
c3RhbGxlZCB8fCB0aW1lckV2ZW50U291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBeewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1
dG8gbWVtb3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9OT1JNQUwgfCBE
SVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOIHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfQ1JJ
VElDQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX1dBUk4gfCBESVNQQVRD
SF9NRU1PUllQUkVTU1VSRV9QUk9DX0xJTUlUX0NSSVRJQ0FMOwogI2Vsc2UgLy8gUExBVEZPUk0o
TUFDKQogICAgICAgICBhdXRvIG1lbW9yeVN0YXR1c0ZsYWdzID0gRElTUEFUQ0hfTUVNT1JZUFJF
U1NVUkVfQ1JJVElDQUw7CiAjZW5kaWYKLSAgICAgICAgbWVtb3J5UHJlc3N1cmVFdmVudFNvdXJj
ZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUVNT1JZUFJF
U1NVUkUsIDAsIG1lbW9yeVN0YXR1c0ZsYWdzLCBtX2Rpc3BhdGNoUXVldWUpOworICAgICAgICBt
ZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRD
SF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgbWVtb3J5U3RhdHVzRmxhZ3MsIG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSk7CiAKICAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9o
YW5kbGVyKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UsIF57CiAgICAgICAgICAgICBhdXRvIHN0
YXR1cyA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNl
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFs
bCgpCiAgICAgfSk7CiAKICAgICAvLyBBbGxvdyBzaW11bGF0aW9uIG9mIG1lbW9yeSBwcmVzc3Vy
ZSB3aXRoICJub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5IgotICAgIG5vdGlmeV9y
ZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkiLCAmbm90aWZ5VG9rZW5zWzBd
LCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNo
KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIsICZub3RpZnlUb2tlbnNbMF0sIG1fZGlzcGF0Y2hRdWV1
ZS5nZXQoKSwgXihpbnQpIHsKICNpZiBFTkFCTEUoRk1XX0ZPT1RQUklOVF9DT01QQVJJU09OKQog
ICAgICAgICBhdXRvIGZvb3RwcmludEJlZm9yZSA9IHBhZ2VzUGVyVk1UYWcoKTsKICNlbmRpZgpA
QCAtMTI0LDE1ICsxMjQsMTUgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwo
KQogICAgICAgICBsb2dGb290cHJpbnRDb21wYXJpc29uKGZvb3RwcmludEJlZm9yZSwgZm9vdHBy
aW50QWZ0ZXIpOwogI2VuZGlmCiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLCBeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57
CiAgICAgICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIAotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dN
ZW1vcnkuYmVnaW4iLCAmbm90aWZ5VG9rZW5zWzFdLCBtX2Rpc3BhdGNoUXVldWUsIF4oaW50KSB7
CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeS5iZWdp
biIsICZub3RpZnlUb2tlbnNbMV0sIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXihpbnQpIHsKICAg
ICAgICAgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIH0pOwotICAgIG5vdGlm
eV9yZWdpc3Rlcl9kaXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRv
a2Vuc1syXSwgbV9kaXNwYXRjaFF1ZXVlLCBeKGludCkgeworICAgIG5vdGlmeV9yZWdpc3Rlcl9k
aXNwYXRjaCgib3JnLldlYktpdC5sb3dNZW1vcnkuZW5kIiwgJm5vdGlmeVRva2Vuc1syXSwgbV9k
aXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogICAgICAgICBlbmRTaW11bGF0ZWRNZW1vcnlQ
cmVzc3VyZSgpOwogICAgIH0pOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAgICAgaWYgKCFtX2luc3RhbGxlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgIGRp
c3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgaWYgKG1lbW9y
eVByZXNzdXJlRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5j
ZWwobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSk7CiAgICAgICAgICAgICBtZW1vcnlQcmVzc3Vy
ZUV2ZW50U291cmNlID0gbnVsbHB0cjsKQEAgLTE2NCw4ICsxNjQsOCBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OmhvbGRPZmYoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0
Y2hRdWV1ZSwgXnsKLSAgICAgICAgdGltZXJFdmVudFNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9j
cmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfVElNRVIsIDAsIDAsIG1fZGlzcGF0Y2hRdWV1ZSk7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgICAgICB0
aW1lckV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9USU1FUiwgMCwgMCwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKICAgICAgICAgaWYgKHRp
bWVyRXZlbnRTb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KHRpbWVy
RXZlbnRTb3VyY2UsIHRoaXMpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmaW5hbCBhcmd1
bWVudCBgc19taW5pbXVtSG9sZE9mZlRpbWUuc2Vjb25kcygpYCBzZWVtcyB3cm9uZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAppbmRleCAzNzczYzc5ODUyZWJiMjFiZDA2
ZDU2N2IwMTdjZjdjOTMyMjUzZGU2Li40OWNkYmI1ODgwYmIxNjZiNWY3NWU1NmRkYzc5YzFjZmEx
YTU0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCkBAIC0zMywx
NCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNw
YXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICB9KS5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNl
Y29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5v
c2Vjb25kc0FzPGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24p
XSB7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
ZHVyYXRpb24ubmFub3NlY29uZHNBczxpbnQ2NF90PigpKSwgbV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgp
KTsKIH0KQEAgLTQ5LDEzICs0OSwxMiBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICBkaXNwYXRj
aF9xdWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENI
X1FVRVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CiAgICAgYXR0ciA9IGRp
c3BhdGNoX3F1ZXVlX2F0dHJfbWFrZV93aXRoX3Fvc19jbGFzcyhhdHRyLCBUaHJlYWQ6OmRpc3Bh
dGNoUU9TQ2xhc3MocW9zKSwgMCk7Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKG5hbWUsIGF0dHIpOwotICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KG1fZGlzcGF0
Y2hRdWV1ZSwgdGhpcyk7CisgICAgbV9kaXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cikpOworICAgIGRpc3BhdGNoX3NldF9jb250ZXh0
KG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OmNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9u
cywgV1RGOjpGdW5jdGlvbjx2b2lkKHNpemVfdCBpbmRleCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzY3Y2MzYTk2M2E1MGVjMjFhZWI4
NjcyNTA5Y2Q2YjI5MTUzZGM4Yi4uMzBlZjM2MDU3MTQ0Y2IyYTFiZjU2MGI1NGVjNmE2OGI2YWEw
NTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTExLDE2
ICsxMTEsMTMgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAgICAgICAg
IHJldHVybiBzaXplOwogICAgIH0KIAotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGUo
KQotICAgIHsKLSAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxw
dHIsIHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0
ZSwgZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwotICAgICAgICByZXR1cm4gQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpOwotICAgIH0KLQogICAgIHN0YXRpYyBDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IoKQogICAgIHsKLSAgICAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciA9IGNyZWF0ZSgpOwotICAgICAgICByZXR1cm4gYWxsb2NhdG9yOworICAgICAg
ICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxwdHIsIHJldGFpbiwg
cmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0ZSwgZGVhbGxvY2F0
ZSwgcHJlZmVycmVkU2l6ZSB9OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0
b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKKyAgICAgICAgfSgpKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci5nZXQoKS5nZXQoKTsKICAgICB9CiAKIH0KQEAgLTEzOCwxNSArMTM1LDE1
IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQog
ICAgIEFTU0VSVCghU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nKTsKICAg
ICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSB0aGlzOwogCi0gICAg
Q0ZTdHJpbmdSZWYgc3RyaW5nOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwog
ICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFj
dGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZh
bHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgZWxzZQotICAgICAgICBzdHJpbmcgPSBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9y
TnVsbCk7CisgICAgICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNo
YXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAvLyBDb3Jl
Rm91bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIg
Y3VycmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAg
IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOworICAgIHJldHVybiBzdHJpbmc7CiB9CiAKIC8vIE9u
IFN0cmluZ0ltcGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0
aGUgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggZmZlNjNhNmMzOWI4NDZjMWU1OTc2MTVkYmM0NzJmZDczZTIwMDY2
OC4uNGIwMWVjMzc5ZWJhOWZjZTFkOGE0ODY5MWM1OGE4MDViODM4NDZhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0
ICJXZWJTY3JpcHRPYmplY3RQcm90b2NvbC5oIgogI2ltcG9ydCAib2JqY19pbnN0YW5jZS5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CisjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewpAQCAtMzksMjIgKzQxLDI2IEBAIE9i
amNDbGFzczo6T2JqY0NsYXNzKENsYXNzU3RydWN0UHRyIGFDbGFzcykKIHsKIH0KIAotc3RhdGlj
IENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2xhc3Nlc0J5SXNBID0gMDsKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGNsYXNzZXNCeUlzQSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gY2xhc3Nl
c0J5SXNBOworICAgIHJldHVybiBjbGFzc2VzQnlJc0E7Cit9CiAKIHN0YXRpYyB2b2lkIF9jcmVh
dGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCFjbGFzc2VzQnlJc0EpCi0g
ICAgICAgIGNsYXNzZXNCeUlzQSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwg
TlVMTCwgTlVMTCk7CisgICAgaWYgKCFjbGFzc2VzQnlJc0EoKSkKKyAgICAgICAgY2xhc3Nlc0J5
SXNBKCkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwg
TlVMTCkpOwogfQogCiBPYmpjQ2xhc3MqIE9iamNDbGFzczo6Y2xhc3NGb3JJc0EoQ2xhc3NTdHJ1
Y3RQdHIgaXNhKQogewogICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpOwogCi0g
ICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFzcyo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilpc2EpKSk7CisgICAgYXV0byBhQ2xhc3MgPSByZWludGVycHJldF9jYXN0PE9iamNDbGFz
cyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSgp
LmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSkpKTsKICAgICBpZiAoIWFDbGFzcykgewog
ICAgICAgICBhQ2xhc3MgPSBuZXcgT2JqY0NsYXNzKGlzYSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGNsYXNzZXNCeUlzQSwgKF9fYnJpZGdlIENGVHlwZVJlZilpc2EsIGFDbGFzcyk7
CisgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGNsYXNzZXNCeUlzQSgpLmdldCgpLCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKWlzYSwgYUNsYXNzKTsKICAgICB9CiAKICAgICByZXR1cm4gYUNsYXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAppbmRleCA4NWU5YmM0
YWE0ZWRkZmI0NDUzOTRiMGU4ZDM5NjA3ZjQyZDEyNGVmLi43ZDkyMDhhM2ZjZWQwMjY2MzgyNTIw
MDM2ZDFkNjgyMmFmYTFkOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nt
YXJ0UmVwbGFjZUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZUNGLmNwcApAQCAtMzEsMzggKzMxLDM3IEBACiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RkNoYXJhY3RlclNldC5oPgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRS
ZWYgZ2V0U21hcnRTZXQoYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBD
Rk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcHJlU21hcnRTZXQ7Ci0gICAgc3RhdGljIENGTXV0YWJs
ZUNoYXJhY3RlclNldFJlZiBwb3N0U21hcnRTZXQ7Ci0gICAgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0
UmVmIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0NoYXJhY3RlciA/IHByZVNtYXJ0U2V0IDogcG9zdFNt
YXJ0U2V0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hh
cmFjdGVyU2V0UmVmPj4gcHJlU21hcnRTZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+PiBwb3N0U21hcnRTZXQ7CisgICAgUmV0
YWluUHRyPENGTXV0YWJsZUNoYXJhY3RlclNldFJlZj4mIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0No
YXJhY3RlciA/IHByZVNtYXJ0U2V0LmdldCgpIDogcG9zdFNtYXJ0U2V0LmdldCgpOwogICAgIGlm
ICghc21hcnRTZXQpIHsKLSAgICAgICAgc21hcnRTZXQgPSBDRkNoYXJhY3RlclNldENyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hh
cmFjdGVyc0luU3RyaW5nKHNtYXJ0U2V0LCBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gQ0ZTVFIoIihb
XCJcJyMkLy1geyIpIDogQ0ZTVFIoIildLiw7Oj9cJyFcIiUqLS99IikpOwotICAgICAgICBDRkNo
YXJhY3RlclNldFVuaW9uKHNtYXJ0U2V0LCBDRkNoYXJhY3RlclNldEdldFByZWRlZmluZWQoa0NG
Q2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFuZE5ld2xpbmUpKTsgICAgICAgIAorICAgICAgICBzbWFy
dFNldCA9IGFkb3B0Q0YoQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQpKTsKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21h
cnRTZXQuZ2V0KCksIGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7Iikg
OiBDRlNUUigiKV0uLDs6P1wnIVwiJSotL30iKSk7CisgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5p
b24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0
ZXJTZXRXaGl0ZXNwYWNlQW5kTmV3bGluZSkpOworCiAgICAgICAgIC8vIEFkZGluZyBDSksgcmFu
Z2VzCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQs
IENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAweDEx
RkYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQs
IENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRpY2FscyAoMHgy
RTgwIC0gMHgyRkRGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdl
KHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJZGVvZ3JhcGggRGVzY3Jp
cHRpb25zLCBDSksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBCb3BvbW9mbywgSGFuZ3Vs
IENvbXBhdGliaWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4dCAoMHgyRkYwIC0gMHgz
MUJGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0
LCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVuY2xvc2VkIENKSywgQ0pLIElkZW9n
cmFwaHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIwMCAtIDB4QTRDRikKLSAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2Uo
MHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3lsbGFibGVzICgweEFDMDAgLSAweEQ3QUYpCi0g
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFu
Z2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4
RjkwMCAtIDB4RkE1RikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5n
ZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0
eSBGcm9tICgweEZFMzAgLSAweEZFNEYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFj
dGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYv
RnVsbCBXaWR0aCBGb3JtICgweEZGMDAgLSAweEZGRUYpCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0
QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZE
NykpOyAvLyBDSksgSWRlb2dyYXBoIEV4bnRlbnNpb24gQgotICAgICAgICBDRkNoYXJhY3RlclNl
dEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAy
MUUpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4MTEwMCwgMjU2KSk7IC8vIEhhbmd1bCBKYW1vICgweDExMDAgLSAw
eDExRkYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MkU4MCwgMzUyKSk7IC8vIENKSyAmIEthbmd4aSBSYWRp
Y2FscyAoMHgyRTgwIC0gMHgyRkRGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3Rl
cnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGRjAsIDQ2NCkpOyAvLyBJ
ZGVvZ3JhcGggRGVzY3JpcHRpb25zLCBDSksgU3ltYm9scywgSGlyYWdhbmEsIEthdGFrYW5hLCBC
b3BvbW9mbywgSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbywgS2FuYnVuLCAmIEJvcG9tb2ZvIEV4
dCAoMHgyRkYwIC0gMHgzMUJGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJ
blJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDMyMDAsIDI5MzkyKSk7IC8vIEVu
Y2xvc2VkIENKSywgQ0pLIElkZW9ncmFwaHMgKFVuaSBIYW4gJiBFeHQgQSksICYgWWkgKDB4MzIw
MCAtIDB4QTRDRikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShz
bWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHhBQzAwLCAxMTE4MykpOyAvLyBIYW5ndWwgU3ls
bGFibGVzICgweEFDMDAgLSAweEQ3QUYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFj
dGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4RjkwMCwgMzUyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4RjkwMCAtIDB4RkE1RikKKyAgICAgICAg
Q0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5n
ZU1ha2UoMHhGRTMwLCAzMikpOyAvLyBDSksgQ29tcGF0aWJpbGl0eSBGcm9tICgweEZFMzAgLSAw
eEZFNEYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4RkYwMCwgMjQwKSk7IC8vIEhhbGYvRnVsbCBXaWR0aCBG
b3JtICgweEZGMDAgLSAweEZGRUYpCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVy
c0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MjAwMDAsIDB4QTZENykpOyAv
LyBDSksgSWRlb2dyYXBoIEV4bnRlbnNpb24gQgorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENo
YXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweDJGODAwLCAweDAy
MUUpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQp
CiAKLSAgICAgICAgaWYgKGlzUHJldmlvdXNDaGFyYWN0ZXIpCi0gICAgICAgICAgICBwcmVTbWFy
dFNldCA9IHNtYXJ0U2V0OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIENGQ2hhcmFjdGVy
U2V0VW5pb24oc21hcnRTZXQsIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0
ZXJTZXRQdW5jdHVhdGlvbikpOyAgICAgICAKLSAgICAgICAgICAgIHBvc3RTbWFydFNldCA9IHNt
YXJ0U2V0OwotICAgICAgICB9CisgICAgICAgIGlmICghaXNQcmV2aW91c0NoYXJhY3RlcikKKyAg
ICAgICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRTZXQuZ2V0KCksIENGQ2hhcmFjdGVy
U2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRQdW5jdHVhdGlvbikpOwogICAgIH0KLSAg
ICByZXR1cm4gc21hcnRTZXQ7CisgICAgcmV0dXJuIHNtYXJ0U2V0LmdldCgpOwogfQogCiBib29s
IGlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0KFVDaGFyMzIgYywgYm9vbCBpc1ByZXZpb3Vz
Q2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDFjZDVkOWZkYjhhMTQxOWQzNjdjMDg2ZTBjNmNh
NjNkZmVkNjMzMjUuLjUwOWYyM2JhY2UxZWU1ZmE2MTdkODVjYmRhMTU2OGQ5OTM4Yjg1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW0KQEAgLTExOSwxMCArMTE5LDEwIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9jdXJyZW50IHsgMCB9OwogfTsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxv
YXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsK
ICAgICBDR0Zsb2F0IGNvbXBvbmVudHNbNF0gPSB7IHIsIGcsIGIsIGEgfTsKLSAgICByZXR1cm4g
Q0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25lbnRzKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMp
KTsKIH0KIAogc3RydWN0IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQog
CiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFtt
X2xheWVyLmdldCgpIHNldENvbnRlbnRzU2NhbGU6Mi4wXTsKLSAgICBbbV9sYXllci5nZXQoKSBz
ZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihjcmVhdGVDb2xvcigwLCAwLCAwLCAwLjgpKS5nZXQo
KV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0QmFja2dyb3VuZENvbG9yOmNyZWF0ZUNvbG9yKDAs
IDAsIDAsIDAuOCkuZ2V0KCldOwogICAgIFttX2xheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RN
YWtlKDAsIDAsIG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQpXTsKIAogICAgIG92ZXJsYXkoKS5s
YXllcigpLnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKG1fbGF5ZXIuZ2V0KCksIEdyYXBoaWNz
TGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lKTsKQEAgLTI4MCwxNyArMjgwLDE3IEBA
IHN0YXRpYyB2b2lkIHNob3dUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBjCiAKIHN0YXRpYyB2b2lkIGRyYXdHcmFwaExhYmVsKENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBjb25zdCBTdHJpbmcmIHRleHQp
CiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAx
KTsKLSAgICBzaG93VGV4dChjb250ZXh0LCB4ICsgNSwgeSAtIDMsIGJsYWNrLCB0ZXh0KTsKLSAg
ICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZSA9IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOwotICAg
IHNob3dUZXh0KGNvbnRleHQsIHggKyA0LCB5IC0gNCwgd2hpdGUsIHRleHQpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJsYWNrID0gY3JlYXRlQ29s
b3IoMCwgMCwgMCwgMSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgeCArIDUsIHkgLSAzLCBibGFj
ay5nZXQoKS5nZXQoKSwgdGV4dCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yUmVmPj4gd2hpdGUgPSBjcmVhdGVDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBzaG93
VGV4dChjb250ZXh0LCB4ICsgNCwgeSAtIDQsIHdoaXRlLmdldCgpLmdldCgpLCB0ZXh0KTsKIH0K
IAogc3RhdGljIHZvaWQgZHJhd0NwdUhpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpbmdCdWZmZXI8ZmxvYXQ+JiBoaXN0b3J5KQogewot
ICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNwdUNvbG9yID0gY3JlYXRlQ29sb3IoMCwgMSwgMCwgMSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY3B1Q29s
b3IgPSBjcmVhdGVDb2xvcigwLCAxLCAwLCAxKTsKIAotICAgIENHQ29udGV4dFNldFN0cm9rZUNv
bG9yV2l0aENvbG9yKGNvbnRleHQsIGNwdUNvbG9yKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VD
b2xvcldpdGhDb2xvcihjb250ZXh0LCBjcHVDb2xvci5nZXQoKS5nZXQoKSk7CiAgICAgQ0dDb250
ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIDEpOwogCiAgICAgaW50IGkgPSAwOwpAQCAtMzIxLDgg
KzMyMSw4IEBAIHN0YXRpYyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpCiAKICAgICBDR0NvbnRleHRTZXRMaW5l
V2lkdGgoY29udGV4dCwgMSk7CiAKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBjYXBhY2l0eUNvbG9y
ID0gY3JlYXRlQ29sb3IoMSwgMCwgMC4zLCAxKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xv
cldpdGhDb2xvcihjb250ZXh0LCBjYXBhY2l0eUNvbG9yKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBjYXBhY2l0eUNvbG9yID0gY3JlYXRlQ29sb3Io
MSwgMCwgMC4zLCAxKTsKKyAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYXBhY2l0eUNvbG9yLmdldCgpLmdldCgpKTsKIAogICAgIHNpemVfdCBpID0gMDsKIApA
QCAtMzM1LDggKzMzNSw4IEBAIHN0YXRpYyB2b2lkIGRyYXdHQ0hpc3RvcnkoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFJpCiAgICAgICAgIGkrKzsK
ICAgICB9KTsKIAotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNpemVDb2xvciA9IGNyZWF0ZUNvbG9y
KDAuNiwgMC41LCAwLjksIDEpOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9y
KGNvbnRleHQsIHNpemVDb2xvcik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDR0NvbG9yUmVmPj4gc2l6ZUNvbG9yID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7
CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9y
LmdldCgpLmdldCgpKTsKIAogICAgIGkgPSAwOwogCkBAIC00NTYsMTAgKzQ1NiwxMCBAQCB2b2lk
IFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQp
CiAgICAgQ0dSZWN0IHZpZXdCb3VuZHMgPSBtX292ZXJsYXktPmJvdW5kcygpOwogICAgIENHQ29u
dGV4dENsZWFyUmVjdChjb250ZXh0LCB2aWV3Qm91bmRzKTsKIAotICAgIHN0YXRpYyBDR0NvbG9y
UmVmIGNvbG9yRm9yTGFiZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwgMSk7Ci0gICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscywgbWFrZVN0cmluZygiICAg
ICAgICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24oZGF0YS5jcHUubGFz
dCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwg
MzAsIGNvbG9yRm9yTGFiZWxzLCAiICBGb290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1l
bW9yeUZvb3RwcmludCgpKSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZv
ckxhYmVscywgIiAgIEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0
ZXJuYWxTaXplLmxhc3QoKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
Q0dDb2xvclJlZj4+IGNvbG9yRm9yTGFiZWxzID0gY3JlYXRlQ29sb3IoMC45LCAwLjksIDAuOSwg
MSk7CisgICAgc2hvd1RleHQoY29udGV4dCwgMTAsIDIwLCBjb2xvckZvckxhYmVscy5nZXQoKS5n
ZXQoKSwgbWFrZVN0cmluZygiICAgICAgICBDUFU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24oZGF0YS5jcHUubGFzdCgpLCA2LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKKyAgICBz
aG93VGV4dChjb250ZXh0LCAxMCwgMzAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICBG
b290cHJpbnQ6ICIgKyBmb3JtYXRCeXRlTnVtYmVyKG1lbW9yeUZvb3RwcmludCgpKSk7CisgICAg
c2hvd1RleHQoY29udGV4dCwgMTAsIDQwLCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAg
IEV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihkYXRhLnRvdGFsRXh0ZXJuYWxTaXplLmxh
c3QoKSkpOwogCiAgICAgZmxvYXQgeSA9IDU1OwogICAgIGZvciAoYXV0byYgY2F0ZWdvcnkgOiBk
YXRhLmNhdGVnb3JpZXMpIHsKQEAgLTQ4MCw4ICs0ODAsOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VP
dmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgeSAtPSA1Owog
CiAgICAgTW9ub3RvbmljVGltZSBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBzaG93
VGV4dChjb250ZXh0LCAxMCwgeSArIDEwLCBjb2xvckZvckxhYmVscywgIiAgICBFZGVuIEdDOiAi
ICsgZ2NUaW1lclN0cmluZyhkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiwgbm93KSk7Ci0g
ICAgc2hvd1RleHQoY29udGV4dCwgMTAsIHkgKyAyMCwgY29sb3JGb3JMYWJlbHMsICIgICAgRnVs
bCBHQzogIiArIGdjVGltZXJTdHJpbmcoZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5v
dykpOworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsgMTAsIGNvbG9yRm9yTGFiZWxzLmdl
dCgpLmdldCgpLCAiICAgIEVkZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4
dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwgeSArIDIw
LCBjb2xvckZvckxhYmVscy5nZXQoKS5nZXQoKSwgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0
cmluZyhkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiwgbm93KSk7CiAKICAgICBkcmF3Q3B1
SGlzdG9yeShjb250ZXh0LCB2aWV3Qm91bmRzLnNpemUud2lkdGggLSA3MCwgMCwgdmlld0JvdW5k
cy5zaXplLmhlaWdodCwgZGF0YS5jcHUpOwogICAgIGRyYXdHQ0hpc3RvcnkoY29udGV4dCwgdmll
d0JvdW5kcy5zaXplLndpZHRoIC0gMTQwLCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRh
LmdjSGVhcFNpemUsIGRhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFwXS5kaXJ0
eVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRp
ZmljYXRlQ0ZXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmlj
YXRlQ0ZXaW4uY3BwCmluZGV4IDgyMDNjMDM2YTM2MTI1N2U1MmU4MDVkMWZmOTU4ODRjNmI0ODFh
NjQuLjMwZDVlMDU1NTE5YmNhMDAzZDI0NTQ1ZjQzZGQyMTM3MGNmMDJkMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNlcnRpZmlj
YXRlQ0ZXaW4uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNCwxOSArMzUsMTkgQEAgc3RhdGljIHZvaWQgZGVhbGxvY0NlcnRD
b250ZXh0KHZvaWQqIHB0ciwgdm9pZCogaW5mbykKICAgICAgICAgQ2VydEZyZWVDZXJ0aWZpY2F0
ZUNvbnRleHQoc3RhdGljX2Nhc3Q8UENDRVJUX0NPTlRFWFQ+KHB0cikpOwogfQogCi1zdGF0aWMg
Q0ZBbGxvY2F0b3JSZWYgY3JlYXRlQ2VydENvbnRleHREZWFsbG9jYXRvcigpCitzdGF0aWMgUmV0
YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKIHsK
ICAgICBDRkFsbG9jYXRvckNvbnRleHQgYWxsb2NDb250ZXh0ID0gewogICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCBkZWFsbG9jQ2VydENvbnRleHQsIDAKICAgICB9OwotICAgIHJldHVybiBD
RkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmYWxsb2NDb250ZXh0KTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAm
YWxsb2NDb250ZXh0KSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IGNvcHlDZXJ0aWZpY2F0
ZVRvRGF0YShQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxv
Y2F0b3JSZWYgY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29udGV4dERlYWxsb2NhdG9yKCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4+IGNlcnRE
ZWFsbG9jID0gY3JlYXRlQ2VydENvbnRleHREZWFsbG9jYXRvcigpOwogICAgIFBDQ0VSVF9DT05U
RVhUIGNlcnRpZmljYXRlQ29weSA9IENlcnREdXBsaWNhdGVDZXJ0aWZpY2F0ZUNvbnRleHQoY2Vy
dGlmaWNhdGUpOwotICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29w
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2Vy
dGlmaWNhdGVDb3B5KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYykpOwor
ICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGVDb3B5
KSwgc2l6ZW9mKCpjZXJ0aWZpY2F0ZUNvcHkpLCBjZXJ0RGVhbGxvYy5nZXQoKS5nZXQoKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMDU3MzI1YzA2MmRiY2U1ZDgx
MmZiNDhmODQ3MzI1OTg2MmFlZDc0OS4uMzA1OGVlODE3ZmNkZjk1ODRjYmIzNjE3MWY0YzZmYzg0
NzEyN2Q4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxh
dGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNP
YmxpcXVlLCBGb250T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZv
bnRXaWR0aFZhcmlhbnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5k
ZXJpbmdNb2RlID0gVGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlv
bkRhdGEqID0gbnVsbHB0cik7CiAKICNpZiBVU0UoQ09SRV9URVhUKQotICAgIFdFQkNPUkVfRVhQ
T1JUIEZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmLCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQgPSBmYWxzZSwgYm9vbCBzeW50aGV0aWNPYmxpcXVlID0gZmFsc2UsIEZvbnRPcmllbnRh
dGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZv
bnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVu
ZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBGb250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRSZWY+
JiYsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRp
Y09ibGlxdWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9uOjpIb3Jp
em9udGFsLCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxhcldpZHRo
LCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJlbmRlcmlu
ZywgQ3JlYXRpb25EYXRhKiA9IG51bGxwdHIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggYWEzMTMy
YmFiZjcwMjNjZmE1ZjM4MDhjMjM4ZTlhZmQzZGZiZmI4NC4uZDAyYTQ2YjNhM2FmOGNkNzJkODgw
OTJiOTM4ZTlmMjI3MTBlYzI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaApAQCAtMzUsNyArMzUsNyBAQAogCiAjaWYgVVNFKENHKQogdHlwZWRlZiBzdHJ1
Y3QgQ0dQYXR0ZXJuKiBDR1BhdHRlcm5SZWY7Ci10eXBlZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9y
bVBhdHRlcm5QdHI7Cit0eXBlZGVmIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IFBsYXRmb3JtUGF0
dGVyblB0cjsKICNlbGlmIFVTRShESVJFQ1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNo
OwogdHlwZWRlZiBJRDJEMUJpdG1hcEJydXNoKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcAppbmRleCBhODIxNWNjMDVmZjIyZDEyOTBmMTcwODAxOTA1NDIxYTAxOTcwOTVhLi43
NjdhOTZiYTFlYjdlYjFiZTQwMjdiZjMxODBiNzUwZmFkZTUzYmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKQEAgLTY5LDEwICs2OSwxMSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
IAogLy8gU29mdC1saW5raW5nIGhlYWRlcnMgbXVzdCBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIHRo
ZXkgI2RlZmluZSBmdW5jdGlvbnMsIGNvbnN0YW50cywgZXRjLgogI2luY2x1ZGUgIkFWRm91bmRh
dGlvbkNGU29mdExpbmtpbmcuaCIKQEAgLTE1Nyw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgaW5s
aW5lIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0KCkgY29uc3Qg
eyByZXR1cm4gbV9sZWdpYmxlT3V0cHV0LmdldCgpOyB9CiAgICAgQVZDRk1lZGlhU2VsZWN0aW9u
R3JvdXBSZWYgc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKSBjb25zdDsK
ICNlbmRpZgotICAgIGlubGluZSBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25z
dCB7IHJldHVybiBtX25vdGlmaWNhdGlvblF1ZXVlOyB9CisgICAgaW5saW5lIGRpc3BhdGNoX3F1
ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUXVldWUu
Z2V0KCk7IH0KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSZWY+IHRha2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYp
OwpAQCAtMTk1LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQ0ZNZWRpYVNl
bGVjdGlvbkdyb3VwUmVmPiBtX3NlbGVjdGlvbkdyb3VwOwogI2VuZGlmCiAKLSAgICBkaXNwYXRj
aF9xdWV1ZV90IG1fbm90aWZpY2F0aW9uUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
cXVldWVfdD4gbV9ub3RpZmljYXRpb25RdWV1ZTsKIAogICAgIG11dGFibGUgUmV0YWluUHRyPENB
Q0ZMYXllclJlZj4gbV9jYVZpZGVvTGF5ZXI7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
bV92aWRlb0xheWVyV3JhcHBlcjsKQEAgLTI0NCw3ICsyNDUsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogYm9vbFN0cmluZyhib29sIHZhbCkKIH0KICNlbmRpZgogCi1zdGF0aWMgQ0ZBcnJheVJlZiBj
cmVhdGVNZXRhZGF0YUtleU5hbWVzKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY3Jl
YXRlTWV0YWRhdGFLZXlOYW1lcygpCiB7CiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtl
eU5hbWVzW10gPSB7CiAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5RHVyYXRpb24sCkBAIC0yNTgs
MTMgKzI1OSwxMyBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCkK
ICNlbmRpZgogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0
IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihrZXlOYW1lc1swXSks
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVh
dGUoMCwgKGNvbnN0IHZvaWQqKilrZXlOYW1lcywgc2l6ZW9mKGtleU5hbWVzKSAvIHNpemVvZihr
ZXlOYW1lc1swXSksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAogc3RhdGljIENGQXJy
YXlSZWYgbWV0YWRhdGFLZXlOYW1lcygpCiB7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYga2V5cyA9
IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKTsKLSAgICByZXR1cm4ga2V5czsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQXJyYXlSZWY+PiBrZXlzID0gY3JlYXRlTWV0YWRh
dGFLZXlOYW1lcygpOworICAgIHJldHVybiBrZXlzLmdldCgpLmdldCgpOwogfQogCiAvLyBGSVhN
RTogSXQgd291bGQgYmUgYmV0dGVyIGlmIEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRl
ZCB0aGlzIGtleS4KQEAgLTEzNzUsNyArMTM3Niw3IEBAIEFWRldyYXBwZXI6OkFWRldyYXBwZXIo
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIG93bmVyKQogICAgIEFTU0VSVChkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpID09IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwog
ICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OkFWRldyYXBwZXIoJXApIiwgdGhpcyk7CiAKLSAg
ICBtX25vdGlmaWNhdGlvblF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5ub3RpZmljYXRpb25RdWV1ZSIsIDApOworICAgIG1fbm90
aWZpY2F0aW9uUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yubm90aWZpY2F0aW9uUXVldWUiLCAwKSk7CiAK
ICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAgICAgbV9yZXNvdXJjZUxv
YWRlckNhbGxiYWNrcy52ZXJzaW9uID0ga0FWQ0ZBc3NldFJlc291cmNlTG9hZGVyX0NhbGxiYWNr
c1ZlcnNpb25fMTsKQEAgLTEzOTUsOSArMTM5Niw2IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVy
KCkKICAgICBkZXN0cm95VmlkZW9MYXllcigpOwogICAgIGRlc3Ryb3lJbWFnZUdlbmVyYXRvcigp
OwogCi0gICAgaWYgKG1fbm90aWZpY2F0aW9uUXVldWUpCi0gICAgICAgIGRpc3BhdGNoX3JlbGVh
c2UobV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0KICAgICBpZiAoYXZBc3NldCgpKSB7CiAgICAgICAg
IEFWQ0ZBc3NldENhbmNlbExvYWRpbmcoYXZBc3NldCgpKTsKICAgICAgICAgbV9hdkFzc2V0ID0g
MDsKQEAgLTE1MzAsNyArMTUyOCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JV
UkwoY29uc3QgVVJMJiB1cmwsIGJvb2wgaW5oZXJpdFVSSSkKIAogICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKG9wdGlvbnNSZWYuZ2V0KCksIEFWQ0ZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9u
c0tleSwgY2ZSZXN0cmljdGlvbnMuZ2V0KCkpOwogCi0gICAgbV9hdkFzc2V0ID0gYWRvcHRDRihB
VkNGVVJMQXNzZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmxSZWYuZ2V0KCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKKyAg
ICBtX2F2QXNzZXQgPSBhZG9wdENGKEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25z
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZS5nZXQoKSkpOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVS
X0RFTEVHQVRFKQogICAgIEFTU0VSVChjYWxsYmFja0NvbnRleHQoKSk7CkBAIC0xNTY3LDI0ICsx
NTY1LDI0IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVyKElEaXJlY3QzRERldmljZTkq
IGQzZERldmljZSkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8gY3Jl
YXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBhbiBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3Byb2Js
ZW0vOTg3NzczMD4uCi0gICAgQVZDRlBsYXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVyQ3Jl
YXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVy
SXRlbSgpLCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2
UGxheWVyID0gYWRvcHRDRihwbGF5ZXJSZWYpOworICAgIGF1dG8gcGxheWVyUmVmID0gYWRvcHRD
RihBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVmLmdldCgpLCBtX25vdGlmaWNhdGlvblF1
ZXVlLmdldCgpKSk7CisgICAgbV9hdlBsYXllciA9IHBsYXllclJlZjsKICNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQpCi0gICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5
RW5hYmxlZChwbGF5ZXJSZWYsIEZBTFNFKTsKKyAgICBBVkNGUGxheWVyU2V0Q2xvc2VkQ2FwdGlv
bkRpc3BsYXlFbmFibGVkKHBsYXllclJlZi5nZXQoKSwgRkFMU0UpOwogI2VuZGlmCiAKICAgICBp
ZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkpCi0gICAg
ICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKHBsYXllclJlZiwgbV9kM2REZXZp
Y2UuZ2V0KCkpOworICAgICAgICBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5
ZXJSZWYuZ2V0KCksIG1fZDNkRGV2aWNlLmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAg
ICBBU1NFUlQoY2VudGVyKTsKIAotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
Y2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5
ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBwbGF5ZXJSZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKIAog
ICAgIC8vIEFkZCBhIHRpbWUgb2JzZXJ2ZXIsIGFzayB0byBiZSBjYWxsZWQgaW5mcmVxdWVudGx5
IGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5IHdhbnQgcGVyaW9kaWMgY2FsbGJhY2tzIGJ1dAogICAg
IC8vIG91ciBvYnNlcnZlciB3aWxsIGFsc28gYmUgY2FsbGVkIHdoZW5ldmVyIGEgc2VlayBoYXBw
ZW5zLgogICAgIGNvbnN0IGRvdWJsZSB2ZXJ5TG9uZ0ludGVydmFsID0gNjAqNjAqNjAqMjQqMzA7
Ci0gICAgbV90aW1lT2JzZXJ2ZXIgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJDcmVhdGVQZXJpb2RpY1Rp
bWVPYnNlcnZlckZvckludGVydmFsKHBsYXllclJlZiwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVy
dmFsLCAxMCksIG1fbm90aWZpY2F0aW9uUXVldWUsICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxi
YWNrLCBjYWxsYmFja0NvbnRleHQoKSkpOworICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihB
VkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYu
Z2V0KCksIENNVGltZU1ha2UodmVyeUxvbmdJbnRlcnZhbCwgMTApLCBtX25vdGlmaWNhdGlvblF1
ZXVlLmdldCgpLCAmcGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0
KCkpKTsKIH0KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkg
JiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKQEAgLTE2MDcsMjIg
KzE2MDUsMjIgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBiZWdpbiBsb2Fk
aW5nIG1lZGlhIGRhdGEuCi0gICAgQVZDRlBsYXllckl0ZW1SZWYgaXRlbVJlZiA9IEFWQ0ZQbGF5
ZXJJdGVtQ3JlYXRlV2l0aEFzc2V0KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2QXNzZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSk7Ci0gICAgbV9hdlBsYXllckl0ZW0gPSBhZG9wdENGKGl0ZW1SZWYp
OworICAgIGF1dG8gaXRlbVJlZiA9IGFkb3B0RihBVkNGUGxheWVySXRlbUNyZWF0ZVdpdGhBc3Nl
dChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdkFzc2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0
KCkpKTsKKyAgICBtX2F2UGxheWVySXRlbSA9IGl0ZW1SZWY7CiAKICAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiBjZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7
CiAgICAgQVNTRVJUKGNlbnRlcik7CiAKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZp
Y2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlm
aWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlm
aWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24s
IGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJh
Y2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYs
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXND
aGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhh
dmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNl
cnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZD
RlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRv
S2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVy
QWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJh
Y2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlv
biwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxs
YmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5
YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlv
blN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRp
b25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRp
b25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0
ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5
KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tD
b250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0Vu
ZFRpbWVOb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCks
IENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0
KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3Rp
ZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
RGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVy
KGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxh
eWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0
KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsK
KyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250
ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbUxvYWRlZFRpbWVSYW5n
ZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxs
YmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hhbmdlZE5vdGlmaWNhdGlvbiwg
aXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBj
YWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQ
bGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwg
Q0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQo
KSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckVt
cHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZi5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2Fs
bGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0
aW9uLCBpdGVtUmVmLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50
ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0
ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYuZ2V0KCksIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKICAgICAvLyBGSVhNRTog
QXJlIHRoZXJlIG90aGVyIGxlZ2libGUgb3V0cHV0IHRoaW5ncyB3ZSBuZWVkIHRvIHJlZ2lzdGVy
IGZvcj8gYXNzZXQgYW5kIGhhc0VuYWJsZWRBdWRpbyBhcmUgbm90IGV4cG9zZWQgYnkgQVZDRgog
CiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29u
dGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZp
Y2F0aW9uKCksIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVk
aWF0ZWx5KTsKQEAgLTE3NTQsMTUgKzE3NTIsMTQgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1Bs
YXlhYmlsaXR5KCkKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmls
aXR5KCVwKSIsIHRoaXMpOwogCi0gICAgc3RhdGljIENGQXJyYXlSZWYgcHJvcGVydHlLZXlOYW1l
OwotICAgIGlmICghcHJvcGVydHlLZXlOYW1lKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBDRlN0
cmluZ1JlZiBrZXlOYW1lc1tdID0geyAKKyAgICBzdGF0aWMgYXV0byBwcm9wZXJ0eUtleU5hbWUg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYga2V5TmFtZXNbXSA9IHsKICAgICAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUK
ICAgICAgICAgfTsKLSAgICAgICAgcHJvcGVydHlLZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAo
Y29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXplb2Yoa2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVz
WzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlO
YW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Cisg
ICAgfSgpKTsKIAotICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3Bl
cnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25D
YWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3lu
Y2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCku
Z2V0KCksIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkp
OwogfQogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhB
VkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0yMDAzLDcgKzIwMDAsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKCkuCi0gICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZD
RlBsYXllckxheWVyQ3JlYXRlV2l0aEFWQ0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQ
bGF5ZXIoKSwgbV9ub3RpZmljYXRpb25RdWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBh
ZG9wdENGKEFWQ0ZQbGF5ZXJMYXllckNyZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGF2UGxheWVyKCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpjcmVhdGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcg
JXAiLCB0aGlzLCB2aWRlb0xheWVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1
MjA5OGE5ZGNiNjU1ZTEzNjkuLmM2NzQ5ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUz
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBD
b2xvciYpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+
IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29s
b3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29s
b3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQog
ewotICAgIHJldHVybiBhZG9wdENGKFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKQEAgLTg5LDcgKzg5LDcgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9w
dGlvblNldDxGbGFncz4gZmxhZ3MpCiB7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3Jl
YXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwg
Y29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgs
NyArMTE4LDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNn
RmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JD
cmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAK
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYg
KzEyNiwxNiBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGlmIChhdXRvIHNyZ2IgPSBjb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAg
ICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBj
YXNlIFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTog
ewotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVh
a0NHQ29sb3IoY29sb3IpOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsK
KyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+
IHRyYW5zcGFyZW50Q0dDb2xvciA9IGNyZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAg
cmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAg
ICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9y
KTsKLSAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVh
dGVDR0NvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCku
Z2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9y
Ojp3aGl0ZSB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNH
Q29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0Nv
bG9yOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9y
UmVmPj4gd2hpdGVDR0NvbG9yID0gY3JlYXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICBy
ZXR1cm4gd2hpdGVDR0NvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JT
cGFjZUNHLmNwcAppbmRleCBhM2ZiODlkNTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVh
Li4yMGUxY2NhYmNkOGZlNzAzOWQ0NWNmOTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAg
LTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENG
U3RyaW5nUmVmJiBjb2xvclNwYWNlTmFtZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIG5hbWVkQ29sb3JTcGFjZSgpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPj4gY29sb3JTcGFjZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQp
OwotICAgICAgICBBU1NFUlQoY29sb3JTcGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkg
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFs
Q29uc3RhbnQpKTsKKyAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwot
ICAgIHJldHVybiBjb2xvclNwYWNlOworICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgp
OwogfQogCiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCmluZGV4IDFiYTllYmVjMmRkMmMwZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1
ZWNhNjc0NmExOWE4MTZiZGNjOGExMTZjOWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
QEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0
ZXJuKCkKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNl
clRvQmFzZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBs
YXRmb3JtUGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0g
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNU
TSk7CiAgICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgw
LDcgKzU4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNU
TShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0
dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KHVzZXJUb0Jhc2VDVE0pKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmls
bFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAo
IXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAppbmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRi
OTgwMTEwN2RmMjkyLi4yNzE1OTI0ZDE0YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQx
LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAg
IDogbV9jZ0NvbnRleHQoY2dDb250ZXh0KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZShSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
Q0dGbGFncyBmbGFncyA9IDApCisgICAgICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRl
eHQpKQogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1f
c2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1
NTdlMTcxZjlhMTgzMzBkMjQuLmExOWEyMTFhODcxNzk4NWQ2ZDRjOWY5NDEzODhhYzFiMTQ2MDA4
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNw
cApAQCAtNDUsMjMgKzQ1LDIzIEBAIHN0YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQq
LCBjb25zdCB2b2lkKiwgc2l6ZV90IGNvdW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3Rh
dGljIENHQ29udGV4dFJlZiBjcmVhdGVTY3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gY3JlYXRlU2NyYXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1
bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0
YWluUHRyPENHRGF0YUNvbnN1bWVyUmVmPiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3Vt
ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcykpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQ
REZDb250ZXh0Q3JlYXRlKGNvbnN1bWVyLmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0
byBjb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAs
IDApKTsKIAogICAgIENHRmxvYXQgYmxhY2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3IoY29udGV4dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9r
ZUNvbG9yKGNvbnRleHQsIGJsYWNrKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4
dC5nZXQoKSwgYmxhY2spOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0
KCksIGJsYWNrKTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENH
Q29udGV4dFJlZiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gY3JlYXRlU2NyYXRjaENvbnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQg
PSBjcmVhdGVTY3JhdGNoQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgp
OwogfQogCiBQYXRoIFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8Rmxv
YXRQb2ludD4mIHBvaW50cykKQEAgLTIxMCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlD
bG9zaW5nU3VicGF0aHNBcHBsaWVyRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxl
bWVudCoKICAgICB9CiB9CiAKLXN0YXRpYyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9z
aW5nU3VicGF0aHMoQ0dQYXRoUmVmIG9yaWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dN
dXRhYmxlUGF0aFJlZj4gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2lu
YWxQYXRoKQogewotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFi
bGUoKTsKLSAgICBDR1BhdGhBcHBseShvcmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3Vi
cGF0aHNBcHBsaWVyRnVuY3Rpb24pOwotICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAg
ICBhdXRvIHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRo
QXBwbHkob3JpZ2luYWxQYXRoLCBwYXRoLmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGll
ckZ1bmN0aW9uKTsKKyAgICBDR1BhdGhDbG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0
dXJuIHBhdGg7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNv
bnN0IEZsb2F0UG9pbnQgJnBvaW50LCBXaW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBDR1BhdGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9y
IG5vbi1jbG9zZWQgcGF0aHMsIGFzIGEgd29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRo
ZSBwYXRoIGZpcnN0LiAgUmFkYXIgNDc1ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8g
dXNlCi0gICAgYXV0byBwYXRoID0gYWRvcHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBs
YXRmb3JtUGF0aCgpKSk7CisgICAgYXV0byBwYXRoID0gY29weUNHUGF0aENsb3NpbmdTdWJwYXRo
cyhwbGF0Zm9ybVBhdGgoKSk7CiAgICAgYm9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBh
dGguZ2V0KCksIDAsIHBvaW50LCBydWxlID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZh
bHNlKTsKICAgICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4
M2ZkZWIxZGNjOTNjZjljMy4uNzZlYTlhZjRkNDIzMjQ5NDFhODk3ZmFhM2U1ZGZkYWIyM2RmODEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJu
Q0cuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJh
Y2sodm9pZCogaW5mbykKICAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3Rh
dGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbykpXSB7IH0pOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNw
YWNlVHJhbnNmb3JtKSBjb25zdAorUmV0YWluUHRyPENHUGF0dGVyblJlZj4gUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNm
b3JtKSBjb25zdAogewogICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uo
KS5zaXplKCkgfTsKIApAQCAtNjgsNyArNjgsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgog
ICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2Ug
aW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMs
IGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKHJlcGVhdFgoKSAm
JiByZXBlYXRZKCkpCi0gICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBs
YXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25z
dGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28g
YmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZy
YWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyBy
ZW5kZXJlZC4KQEAgLTgyLDcgKzgyLDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBD
R0ltYWdlUmVmIGltYWdlID0gcGxhdGZvcm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShp
bWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVy
blRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJl
dHVybiBhZG9wdENGKENHUGF0dGVybkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJV
RSwgJnBhdHRlcm5DYWxsYmFja3MpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNmYzMjJjMzVhOWY5OTE1NmY5MTU2OTliNjJhNmU2NTA1
Y2VhMWVjMi4uNjE0YzgwMmVkZDQ4YjVjZDlmYTQ3ZmEzZjhmZmRiOTgzMzczNjYwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3Jt
RGF0YShDVEZvbnRSZWYgZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRo
VmFyaWFudCB3aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2Rl
LCBDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSkKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0
Zm9ybURhdGEoUmV0YWluUHRyPENURm9udFJlZj4mJiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUg
dGV4dFJlbmRlcmluZ01vZGUsIENyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKQogICAgIDogRm9u
dFBsYXRmb3JtRGF0YShzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBvcmll
bnRhdGlvbiwgd2lkdGhWYXJpYW50LCB0ZXh0UmVuZGVyaW5nTW9kZSwgY3JlYXRpb25EYXRhKQog
ewogICAgIEFTU0VSVF9BUkcoZm9udCwgZm9udCk7CkBAIC00NCw5ICs0NCw5IEBAIEZvbnRQbGF0
Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmIGZvbnQsIGZsb2F0IHNpemUsIGJv
b2wgc3ludGhldGljQm9sCiAjZWxzZQogICAgIG1fZm9udCA9IGZvbnQ7CiAjZW5kaWYKLSAgICBt
X2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMoZm9udCkgJiBrQ1RG
b250Q29sb3JHbHlwaHNUcmFpdDsKLSAgICBtX2lzU3lzdGVtRm9udCA9IFdlYkNvcmU6OmlzU3lz
dGVtRm9udChmb250KTsKLSAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250LCBrQ1RGb250VmFyaWF0
aW9uQXR0cmlidXRlKSkpOworICAgIG1faXNDb2xvckJpdG1hcEZvbnQgPSBDVEZvbnRHZXRTeW1i
b2xpY1RyYWl0cyhmb250LmdldCgpKSAmIGtDVEZvbnRDb2xvckdseXBoc1RyYWl0OworICAgIG1f
aXNTeXN0ZW1Gb250ID0gV2ViQ29yZTo6aXNTeXN0ZW1Gb250KGZvbnQuZ2V0KCkpOworICAgIGF1
dG8gdmFyaWF0aW9ucyA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDVEZv
bnRDb3B5QXR0cmlidXRlKGZvbnQuZ2V0KCksIGtDVEZvbnRWYXJpYXRpb25BdHRyaWJ1dGUpKSk7
CiAgICAgbV9oYXNWYXJpYXRpb25zID0gdmFyaWF0aW9ucyAmJiBDRkRpY3Rpb25hcnlHZXRDb3Vu
dCh2YXJpYXRpb25zLmdldCgpKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbQppbmRleCA3N2UxYzNmMTYyZjA2NjNmYjg1M2ZhMjI1YWMyNDhiNDU2
ZTQxYWY0Li5lM2YwOTI3MDM0OGU3YTVhZWY3MjY2ZWI0NzJkZGJhZTczYmMzNDA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTIxMSwxNCArMjExLDEzIEBAIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcihD
R0ltYWdlUmVmCiAgICAgQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhyZ2JCdWZmZXIsIDAp
OwogICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MocmdiQnVmZmVy
KTsKICAgICBhdXRvIHJldGFpbmVkUkdCQnVmZmVyID0gYWRvcHRDRihyZ2JCdWZmZXIpOwotICAg
IGF1dG8gY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3co
cmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGRhdGEsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCks
IDgsIENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhyZ2JCdWZmZXIpLCBzUkdCQ29sb3JTcGFj
ZVJlZigpLCAoQ0dCaXRtYXBJbmZvKSBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAg
IGlmICghY29udGV4dCkgewogICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQ6OmNyZWF0ZVBpeGVsQnVmZmVyOiBDR0JpdG1hcENvbnRleHRDcmVhdGUgcmV0
dXJuZWQgbnVsbHB0ciIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBh
dXRvIHJldGFpbmVkQ29udGV4dCA9IGFkb3B0Q0YoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdl
U2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKSwgaW1hZ2UpOwogICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhyZ2JCdWZm
ZXIsIDApOwogCiAgICAgcmV0dXJuIGNvbnZlcnRQaXhlbEJ1ZmZlcihyZ2JCdWZmZXIsIHNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDQ1MTEwN2Ji
YjQ2NWJkZTM5NTQ0OWRjMDc4ZDgwNWE4ZTE2NGY4YTQuLjAzMjA5Njk4OGZjZGUyMTcxNzU5MzM1
MDAxMzkwZWIzZmJiOTlhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRl
eHQubW0KQEAgLTE0MiwxMyArMTQyLDEzIEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpj
b2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAg
ICAgIHN0YXRpYyBjb25zdCB2b2lkKiBvcHRpb25LZXlzW10gPSB7IGtDVFR5cGVzZXR0ZXJPcHRp
b25Gb3JjZWRFbWJlZGRpbmdMZXZlbCB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogbHRy
T3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNob3J0VHlwZSwgJmx0ckZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07CiAgICAg
ICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxPcHRpb25WYWx1ZXNbXSA9IHsgQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU2hvcnRUeXBlLCAmcnRsRm9yY2VkRW1i
ZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKLSAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBsdHJU
eXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5
cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOwotICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5
cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChvcHRpb25LZXlz
KSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gbHRyVHlwZXNldHRlck9wdGlvbnMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25W
YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBy
dGxUeXBlc2V0dGVyT3B0aW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdU
SChvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgICAgIFByb3ZpZGVySW5mbyBp
bmZvID0geyBjcCwgbGVuZ3RoLCBzdHJpbmdBdHRyaWJ1dGVzLmdldCgpIH07CiAgICAgICAgIC8v
IEZJWE1FOiBTb21lIFNES3MgY29tcGxhaW4gdGhhdCB0aGUgc2Vjb25kIHBhcmFtZXRlciBiZWxv
dyBjYW5ub3QgYmUgbnVsbC4KICAgICAgICAgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfQkVH
SU4KLSAgICAgICAgUmV0YWluUHRyPENUVHlwZXNldHRlclJlZj4gdHlwZXNldHRlciA9IGFkb3B0
Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMoJnByb3Zp
ZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5mbywgbV9ydW4ubHRyKCkgPyBsdHJUeXBlc2V0
dGVyT3B0aW9ucyA6IHJ0bFR5cGVzZXR0ZXJPcHRpb25zKSk7CisgICAgICAgIFJldGFpblB0cjxD
VFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBhZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdp
dGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywg
MCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMuZ2V0KCkuZ2V0KCkg
OiBydGxUeXBlc2V0dGVyT3B0aW9ucy5nZXQoKS5nZXQoKSkpOwogICAgICAgICBJR05PUkVfTlVM
TF9DSEVDS19XQVJOSU5HU19FTkQKIAogICAgICAgICBpZiAoIXR5cGVzZXR0ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFD
b3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggNzQ4ZWRiOTQwMDlmZDI4YTg5MjVmZGFmMjRmM2Iw
ZTI1OWJhNmQxOC4uZmFhYjZlMTRmMDI3YTQ0NGJkNmRlMjcxMmU2Njk1NGE3NjU1ZGQxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAtNjMsOSArNjMsOSBAQCBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVL
ZXJuaW5nLCBGb250TwogCiAgICAgaWYgKCFlbmFibGVLZXJuaW5nKSB7CiAgICAgICAgIGNvbnN0
IGZsb2F0IHplcm8gPSAwOwotICAgICAgICBzdGF0aWMgQ0ZOdW1iZXJSZWYgemVyb0tlcm5pbmdW
YWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0
VHlwZSwgJnplcm8pOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENG
TnVtYmVyUmVmPj4gemVyb0tlcm5pbmdWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmemVybykpOwogICAgICAgICBr
ZXlzW2NvdW50XSA9IGtDVEtlcm5BdHRyaWJ1dGVOYW1lOwotICAgICAgICB2YWx1ZXNbY291bnRd
ID0gemVyb0tlcm5pbmdWYWx1ZTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5n
VmFsdWUuZ2V0KCkuZ2V0KCk7CiAgICAgICAgICsrY291bnQ7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENHV2luLmNwcAppbmRleCBjZWRiMDJlYjllMWY5NWJmOTAzMzExM2JhNjA1ZDljY2ZmZjg2
OWU4Li5iNjIwMTU4MzgxYjRjMGFiNDcyNzJiYTQxNzYxYzU1N2QxZWIwNjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIENHQ29udGV4dFdpdGhIREMoSERDIGhkYywgYm9vbCBo
YXNBbHBoYSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBDR0NvbnRleHRXaXRoSERD
KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiB7CiAgICAgSEJJVE1BUCBiaXRtYXAgPSBzdGF0aWNf
Y2FzdDxIQklUTUFQPihHZXRDdXJyZW50T2JqZWN0KGhkYywgT0JKX0JJVE1BUCkpOwogCkBAIC01
NSwxMiArNTUsMTEgQEAgc3RhdGljIENHQ29udGV4dFJlZiBDR0NvbnRleHRXaXRoSERDKEhEQyBo
ZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQ0dCaXRtYXBJbmZv
IGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IChoYXNBbHBoYSA/IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJz
dCk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4
ZWxEYXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEuc2l6ZSgpLndpZHRoKCksIHBpeGVsRGF0YS5zaXpl
KCkuaGVpZ2h0KCksIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJp
dG1hcEluZm8pOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERh
dGEuc2l6ZSgpLmhlaWdodCgpLCA4LCBwaXhlbERhdGEuYnl0ZXNQZXJSb3coKSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgYml0bWFwSW5mbykpOwogCiAgICAgLy8gRmxpcCBjb29yZHMKLSAgICBDR0Nv
bnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7
Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOworICAgIENHQ29udGV4dFRy
YW5zbGF0ZUNUTShjb250ZXh0LmdldCgpLCAwLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpKTsK
KyAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LmdldCgpLCAxLCAtMSk7CiAgICAgCiAgICAg
Ly8gUHV0IHRoZSBIREMgSW4gYWR2YW5jZWQgbW9kZSBzbyBpdCB3aWxsIGhvbm9yIGFmZmluZSB0
cmFuc2Zvcm1zLgogICAgIFNldEdyYXBoaWNzTW9kZShoZGMsIEdNX0FEVkFOQ0VEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKaW5kZXggNmExNjAzZDIxYjY4ZWM1YmUyOGZk
MDY5NTk3Y2RkMjJjYWYyM2Q2Yy4uOGU1YjNlNDIyMTQ3N2U5MjFkNzgyMjUxOTQ1MjYyZjllMGE4
ZTgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKQEAgLTU4LDEyICs1
OCwxMiBAQCBNR0RldmljZUNsYXNzIGRldmljZUNsYXNzKCkKIFN0cmluZyBkZXZpY2VOYW1lKCkK
IHsKICNpZiBUQVJHRVRfT1NfSU9TCi0gICAgc3RhdGljIENGU3RyaW5nUmVmIGRldmljZU5hbWU7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGRldmlj
ZU5hbWU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10gewotICAgICAgICBkZXZpY2VOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNlTmFtZSwgbnVsbHB0cikpOworICAgICAg
ICBkZXZpY2VOYW1lLmdldCgpID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oTUdD
b3B5QW5zd2VyKGtNR1FEZXZpY2VOYW1lLCBudWxscHRyKSkpOwogICAgIH0pOwotICAgIHJldHVy
biBkZXZpY2VOYW1lOworICAgIHJldHVybiBkZXZpY2VOYW1lLmdldCgpLmdldCgpOwogI2Vsc2UK
ICAgICByZXR1cm4gImlQaG9uZSJfczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggYzY0YTRiY2ExYWQ4ZTdiNzJhZjIyNjAzZmIxY2Mw
MWY5NzY5ZjYyMC4uNzM1OTMzZjE3MjA4NWI5ZTY2OTNhZDQ0YjJhZjE2MGIzNDBjNGY5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKQogc3RhdGljIEZvbnRD
YXNjYWRlIGNhc2NhZGVGb3JTeXN0ZW1Gb250KENHRmxvYXQgc2l6ZSkKIHsKICAgICBVSUZvbnQg
KmZvbnQgPSBbUEFMOjpnZXRVSUZvbnRDbGFzcygpIHN5c3RlbUZvbnRPZlNpemU6c2l6ZV07Ci0g
ICAgcmV0dXJuIEZvbnRDYXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEoQ1RGb250Q3JlYXRlV2l0aE5h
bWUoKENGU3RyaW5nUmVmKWZvbnQuZm9udE5hbWUsIGZvbnQucG9pbnRTaXplLCBuaWwpLCBmb250
LnBvaW50U2l6ZSkpOworICAgIHJldHVybiBGb250Q2FzY2FkZShGb250UGxhdGZvcm1EYXRhKGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoKENGU3RyaW5nUmVmKWZvbnQuZm9udE5hbWUsIGZv
bnQucG9pbnRTaXplLCBuaWwpKSwgZm9udC5wb2ludFNpemUpKTsKIH0KIAogRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYgbGlua0VsZW1lbnQsIFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBUZXh0SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgRm9u
dFJlbmRlcmluZ01vZGUsIGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDkzMmM3ODJjNmJjYjNiMmQ2N2U5MzQwMmVjNDIx
YTM0MmQzNmJmNDEuLmE2MDg4ZjdmNmU4MGRhZjFlZjhhOTFlMTdhYjE5MWNiNGYwZjVkODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0K
QEAgLTEyNCwxOCArMTI0LDM4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgSWdub3JlQXV0b3JlbGVh
c2VQb29sCiB9IEF1dG9yZWxlYXNlUG9vbE9wZXJhdGlvbjsKIAotc3RhdGljIENGUnVuTG9vcFNv
dXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwotc3RhdGljIENGTXV0YWJsZUFycmF5UmVm
IFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291
cmNlUmVmPiYgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiB3ZWJUaHJlYWRSZWxlYXNlU291
cmNlOworICAgIHJldHVybiB3ZWJUaHJlYWRSZWxlYXNlU291cmNlOworfQorCitzdGF0aWMgUmV0
YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiYgd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPj4g
d2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworICAgIHJldHVybiB3ZWJUaHJlYWRSZWxlYXNlT2Jq
QXJyYXk7Cit9CiAKIHN0YXRpYyBMb2NrIGRlbGVnYXRlTG9jazsKIHN0YXRpYyBTdGF0aWNDb25k
aXRpb24gZGVsZWdhdGVDb25kaXRpb247Ci1zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIGRlbGVn
YXRlU291cmNlID0gbnVsbHB0cjsKKworc3RhdGljIFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VS
ZWY+JiBkZWxlZ2F0ZVNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+PiBkZWxlZ2F0ZVNvdXJjZTsKKyAgICByZXR1cm4gZGVs
ZWdhdGVTb3VyY2U7Cit9CisKIHN0YXRpYyBCT09MIGRlbGVnYXRlSGFuZGxlZDsKICNpZiBMT0df
TUFJTl9USFJFQURfTE9DS0lORwogc3RhdGljIEJPT0wgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZTsK
ICNlbmRpZgogCi1zdGF0aWMgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFpblJ1bkxvb3BBdXRvVW5s
b2NrT2JzZXJ2ZXI7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcE9ic2VydmVyUmVmPiYgbWFp
blJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wT2JzZXJ2ZXJSZWY+PiBtYWluUnVuTG9vcEF1dG9VbmxvY2tP
YnNlcnZlcjsKKyAgICByZXR1cm4gbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7Cit9CisK
IHN0YXRpYyBCT09MIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1VubG9jazsKIAogc3RhdGljIExv
Y2sgc3RhcnR1cExvY2s7CkBAIC0yMzQsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVn
YXRlTWVzc2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYmIGludm9jYXRpb24pCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UpOworICAgIEFTU0VS
VChkZWxlZ2F0ZVNvdXJjZSgpKTsKICAgICBkZWxlZ2F0ZUxvY2subG9jaygpOwogCiAgICAgZGVs
ZWdhdGVJbnZvY2F0aW9uKCkgPSBXVEZNb3ZlKGludm9jYXRpb24pOwpAQCAtMjU1LDcgKzI3NSw3
IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5TSW52b2NhdGlv
bj4mJiBpbnZvY2F0aW9uKQogICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsKICAgICAgICAgX1dlYlRocmVhZFVubG9jaygp
OwogCi0gICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAg
ICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxlZ2F0ZVNvdXJjZSgpLmdldCgpKTsKICAgICAg
ICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7CiAKICAgICAgICAgd2hpbGUg
KCFkZWxlZ2F0ZUhhbmRsZWQpIHsKQEAgLTI5Niw3ICszMTYsNyBAQCB2b2lkIFdlYlRocmVhZFJ1
bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogdm9pZCBXZWJUaHJlYWRBZG9w
dEFuZFJlbGVhc2UoaWQgb2JqKQogewogICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwotICAgIEFTU0VSVChXZWJUaHJlYWRSZWxlYXNlU291cmNlKTsKKyAgICBBU1NFUlQod2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSgpKTsKIAogI2lmIExPR19SRUxFQVNFUwogICAgIE5TTG9nKEAiUmVs
ZWFzZSBzZW5kIFttYWluIHRocmVhZF06ICVAIiwgb2JqKTsKQEAgLTMwNCwxMCArMzI0LDEwIEBA
IHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKIAogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxvY2spOwogCi0gICAgaWYgKFdlYlRocmVhZFJl
bGVhc2VPYmpBcnJheSA9PSBuaWwpCi0gICAgICAgIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9
IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIDAsIG51bGxw
dHIpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXksIG9i
aik7Ci0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKFdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOwor
ICAgIGlmICh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9PSBuaWwpCisgICAgICAgIHdlYlRo
cmVhZFJlbGVhc2VPYmpBcnJheSgpID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKSk7CisgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpLCBvYmopOworICAgIENGUnVuTG9v
cFNvdXJjZVNpZ25hbCh3ZWJUaHJlYWRSZWxlYXNlU291cmNlKCkuZ2V0KCkpOwogICAgIENGUnVu
TG9vcFdha2VVcCh3ZWJUaHJlYWRSdW5Mb29wKTsKIH0KIApAQCAtNDA0LDkgKzQyNCw5IEBAIHN0
YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZUFycmF5UmVmPiBvYmplY3RzOwogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgICAgIGlmIChDRkFycmF5
R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KSkgewotICAgICAgICAgICAgb2JqZWN0
cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIFdlYlRocmVh
ZFJlbGVhc2VPYmpBcnJheSkpOwotICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhX
ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KHdl
YlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKSkgeworICAgICAgICAgICAgb2JqZWN0cyA9
IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIHdlYlRocmVhZFJl
bGVhc2VPYmpBcnJheSgpLmdldCgpKSk7CisgICAgICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFs
dWVzKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNDczLDcgKzQ5Myw3IEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29wQXV0b1VubG9jayhD
RlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHksIHZvaWQqCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1VubG9jayA9IE5POwotICAgIENG
UnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BB
dXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29w
UmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9Vbmxv
Y2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgX1dlYlRo
cmVhZFVubG9jaygpOwogfQpAQCAtNDg0LDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJl
YWRBdXRvTG9jayh2b2lkKQogCiAgICAgaWYgKCFtYWluVGhyZWFkTG9ja0NvdW50KSB7CiAgICAg
ICAgIG1haW5UaHJlYWRIYXNQZW5kaW5nQXV0b1VubG9jayA9IFlFUzsKLSAgICAgICAgQ0ZSdW5M
b29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9Vbmxv
Y2tPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsgICAgCisgICAgICAgIENGUnVuTG9v
cEFkZE9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2Nr
T2JzZXJ2ZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICAgICAgX1dlYlRo
cmVhZExvY2soKTsKICAgICAgICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7
CiAgICAgfQpAQCAtNTU2LDEyICs1NzYsMTIgQEAgc3RhdGljIHZvaWQgTWFpblJ1bkxvb3BVbmxv
Y2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXYKIAog
c3RhdGljIHZvaWQgX1dlYlJ1bkxvb3BFbmFibGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0g
ICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVu
TG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1
bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHN0
YXRpYyB2b2lkIF9XZWJSdW5Mb29wRGlzYWJsZU5lc3RlZEZyb21NYWluVGhyZWFkKCkKIHsKLSAg
ICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29w
QXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOyAKKyAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9j
a09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2Vi
UnVuTG9vcEVuYWJsZU5lc3RlZCgpCkBAIC02NDIsOCArNjYyLDggQEAgc3RhdGljIHZvaWQqIFJ1
bldlYlRocmVhZCh2b2lkKikKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5M
b29wLCB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7CiAKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0
ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2V9OwotICAg
IFdlYlRocmVhZFJlbGVhc2VTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwg
LTEsICZSZWxlYXNlU291cmNlQ29udGV4dCk7Ci0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKHdlYlRo
cmVhZFJ1bkxvb3AsIFdlYlRocmVhZFJlbGVhc2VTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CisgICAgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpID0gYWRvcHRDRihDRlJ1bkxvb3BTb3Vy
Y2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNlU291cmNlQ29udGV4dCkpOworICAgIENGUnVu
TG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJUaHJlYWRSZWxlYXNlU291cmNlKCku
Z2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAKICAgICBwZXJDYWxsb3V0QXV0b3JlbGVh
c2Vwb29sRW5hYmxlZCA9IF9DRlJ1bkxvb3BTZXRQZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5h
YmxlZChZRVMpOwogCkBAIC02NzksMTYgKzY5OSwxNiBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRo
cmVhZCgpCiAKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQo
KTsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGRlbGVnYXRlU291cmNlQ29udGV4dCA9IHsw
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZX07Ci0gICAgZGVsZWdhdGVTb3Vy
Y2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgMCwgJmRlbGVnYXRlU291cmNlQ29u
dGV4dCk7CisgICAgZGVsZWdhdGVTb3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3Jl
YXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpKTsKIAogICAgIC8vIFdlIHNo
b3VsZG4ndCBnZXQgZGVsZWdhdGUgY2FsbGJhY2tzIHdoaWxlIHNjcm9sbGluZywgYnV0IHRoZXJl
IG1pZ2h0IGJlCiAgICAgLy8gb25lIG91dHN0YW5kaW5nIHdoZW4gd2Ugc3RhcnQuICBBZGQgdGhl
IHNvdXJjZSBmb3IgYWxsIGNvbW1vbiBydW4gbG9vcAogICAgIC8vIG1vZGVzIHNvIHdlIGRvbid0
IGJsb2NrIHRoZSB3ZWIgdGhyZWFkIHdoaWxlIHNjcm9sbGluZy4KLSAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UocnVuTG9vcCwgZGVsZWdhdGVTb3VyY2UsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cisg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVnYXRlU291cmNlKCkuZ2V0KCksIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAKICAgICBzQXN5bmNEZWxlZ2F0ZXMoKSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCi0gICAgbWFpblJ1bkxvb3BBdXRvVW5s
b2NrT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29w
QmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDMwMDAwMDEsIE1haW5SdW5Mb29w
QXV0b1VubG9jaywgbnVsbHB0cik7CisgICAgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIo
KSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJl
Zm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1
dG9VbmxvY2ssIG51bGxwdHIpKTsKIAogICAgIHB0aHJlYWRfYXR0cl90IHRhdHRyOwogICAgIHB0
aHJlYWRfYXR0cl9pbml0KCZ0YXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAppbmRleCBlZmE4NDY0NWJhMzk4YTRiZTFi
Y2RlMmRlYzNkMDEwOGE0Mzk3NTUzLi5jYTk4YThmY2I0OTc2MjUxYTJjYzE5YmRjZjI3MWY3ZjY0
OTZlMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWRSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZFJ1bi5jcHAKQEAgLTExMiwxNCArMTEyLDE5IEBAIGV4dGVybiAiQyIgewogdHlw
ZWRlZiBXVEY6OlZlY3RvcjxXZWJUaHJlYWRCbG9jaz4gV2ViVGhyZWFkUnVuUXVldWU7CiAKIHN0
YXRpYyBMb2NrIHJ1blF1ZXVlTXV0ZXg7Ci1zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIHJ1blNv
dXJjZTsKIHN0YXRpYyBXZWJUaHJlYWRSdW5RdWV1ZSogcnVuUXVldWU7CiAKK3N0YXRpYyBSZXRh
aW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgcnVuU291cmNlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4+IHJ1blNvdXJjZTsKKyAg
ICByZXR1cm4gcnVuU291cmNlOworfQorCiBzdGF0aWMgdm9pZCBIYW5kbGVSdW5Tb3VyY2Uodm9p
ZCAqaW5mbykKIHsKICAgICBVTlVTRURfUEFSQU0oaW5mbyk7CiAgICAgQVNTRVJUKFdlYlRocmVh
ZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQocnVuU291cmNlKTsKKyAgICBBU1NFUlQocnVuU291
cmNlKCkpOwogICAgIEFTU0VSVChydW5RdWV1ZSk7CiAKICAgICBXZWJUaHJlYWRSdW5RdWV1ZSBx
dWV1ZUNvcHk7CkBAIC0xNDAsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgX1dlYlRocmVhZFJ1bih2
b2lkICheYmxvY2spKHZvaWQpLCBib29sIHN5bmNocm9ub3VzKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQVNTRVJUKHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsK
ICAgICBBU1NFUlQocnVuUXVldWUpOwogCiAgICAgV2ViVGhyZWFkQmxvY2tTdGF0ZSogc3RhdGUg
PSAwOwpAQCAtMTUyLDcgKzE1Nyw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAo
XmJsb2NrKSh2b2lkKSwgYm9vbCBzeW5jaHJvbm91cykKICAgICAgICAgcnVuUXVldWUtPmFwcGVu
ZChXZWJUaHJlYWRCbG9jayhibG9jaywgc3RhdGUpKTsKICAgICB9CiAKLSAgICBDRlJ1bkxvb3BT
b3VyY2VTaWduYWwocnVuU291cmNlKTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwocnVuU291
cmNlKCkuZ2V0KCkpOwogICAgIENGUnVuTG9vcFdha2VVcChXZWJUaHJlYWRSdW5Mb29wKCkpOwog
CiAgICAgaWYgKHN5bmNocm9ub3VzKSB7CkBAIC0xNjksMTUgKzE3NCwxNSBAQCB2b2lkIFdlYlRo
cmVhZFJ1bih2b2lkICheYmxvY2spKHZvaWQpKQogdm9pZCBXZWJUaHJlYWRJbml0UnVuUXVldWUo
KQogewogICAgIEFTU0VSVCghcnVuUXVldWUpOwotICAgIEFTU0VSVCghcnVuU291cmNlKTsKKyAg
ICBBU1NFUlQoIXJ1blNvdXJjZSgpKTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgcHJl
ZDsKICAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBeewogICAgICAgICBydW5RdWV1ZSA9IG5ldyBX
ZWJUaHJlYWRSdW5RdWV1ZTsKIAotICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1blNv
dXJjZUNvbnRleHQgPSB7MCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgTlVMTCwgSGFuZGxlUnVuU291cmNlfTsKLSAgICAgICAgcnVuU291cmNlID0gQ0ZSdW5Mb29w
U291cmNlQ3JlYXRlKE5VTEwsIC0xLCAmcnVuU291cmNlQ29udGV4dCk7Ci0gICAgICAgIENGUnVu
TG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29wKCksIHJ1blNvdXJjZSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKKyAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250
ZXh0ID0geyAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVSdW5Tb3VyY2UgfTsKKyAgICAgICAgcnVu
U291cmNlKCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAtMSwgJnJ1
blNvdXJjZUNvbnRleHQpKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKFdlYlRocmVhZFJ1
bkxvb3AoKSwgcnVuU291cmNlKCkuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVy
TWFjLmNwcAppbmRleCA4ZjM3ZGQ3MWYwNzc0ZTM4NWI2Njk2MjljYmQyZTBkNTg0YzQ2NmJhLi5h
NDdlMzQzZjRkY2EwMzZmZWFlZmQzYzEwZDVmMjQwZTM0YjlmMGRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCkBAIC0zNSw3ICszNSw3
IEBAIFBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
cG93ZXJPbkhhbmRlcikKICAgICAsIG1fcG93ZXJDb25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlm
aWNhdGlvblBvcnQobnVsbHB0cikKICAgICAsIG1fbm90aWZpZXJSZWZlcmVuY2UoMCkKLSAgICAs
IG1fZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQu
UG93ZXJPYnNlcnZlciIsIDApKQorICAgICwgbV9kaXNwYXRjaFF1ZXVlKGFkb3B0T1NPYmplY3Qo
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAw
KSkpCiB7CiAgICAgbV9wb3dlckNvbm5lY3Rpb24gPSBJT1JlZ2lzdGVyRm9yU3lzdGVtUG93ZXIo
dGhpcywgJm1fbm90aWZpY2F0aW9uUG9ydCwgW10odm9pZCogY29udGV4dCwgaW9fc2VydmljZV90
IHNlcnZpY2UsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJndW1lbnQpIHsK
ICAgICAgICAgc3RhdGljX2Nhc3Q8UG93ZXJPYnNlcnZlcio+KGNvbnRleHQpLT5kaWRSZWNlaXZl
U3lzdGVtUG93ZXJOb3RpZmljYXRpb24oc2VydmljZSwgbWVzc2FnZVR5cGUsIG1lc3NhZ2VBcmd1
bWVudCk7CkBAIC00Myw3ICs0Myw3IEBAIFBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcikKICAgICBpZiAoIW1fcG93ZXJDb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBJT05vdGlmaWNhdGlvblBvcnRTZXREaXNw
YXRjaFF1ZXVlKG1fbm90aWZpY2F0aW9uUG9ydCwgbV9kaXNwYXRjaFF1ZXVlKTsKKyAgICBJT05v
dGlmaWNhdGlvblBvcnRTZXREaXNwYXRjaFF1ZXVlKG1fbm90aWZpY2F0aW9uUG9ydCwgbV9kaXNw
YXRjaFF1ZXVlLmdldCgpKTsKIH0KIAogUG93ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQpA
QCAtNTEsOCArNTEsNiBAQCBQb3dlck9ic2VydmVyOjp+UG93ZXJPYnNlcnZlcigpCiAgICAgaWYg
KCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfcmVs
ZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotCiAgICAgSU9EZXJlZ2lzdGVyRm9yU3lzdGVtUG93ZXIo
Jm1fbm90aWZpZXJSZWZlcmVuY2UpOwogICAgIElPU2VydmljZUNsb3NlKG1fcG93ZXJDb25uZWN0
aW9uKTsKICAgICBJT05vdGlmaWNhdGlvblBvcnREZXN0cm95KG1fbm90aWZpY2F0aW9uUG9ydCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaAppbmRl
eCAxNTg2ZDdiYjdhZjI1OTMxMTY2ZDI2ZWM1ZGZjNDY5M2E4ZjYyODlhLi5hODBiNjIwNzVjMDFk
YzE0OWY4MzExYzc0OTRjODEzMjlhYzYwNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPElP
S2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBpb19jb25u
ZWN0X3QgbV9wb3dlckNvbm5lY3Rpb247CiAgICAgSU9Ob3RpZmljYXRpb25Qb3J0UmVmIG1fbm90
aWZpY2F0aW9uUG9ydDsKICAgICBpb19vYmplY3RfdCBtX25vdGlmaWVyUmVmZXJlbmNlOwotICAg
IGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3Bh
dGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4
IDBiNzcwY2ZiMTMzZjNhOGE0ZTdkYjZkYjhjODBmZjYyNWMyMzkyNDkuLmQzZjFhYzcyOWI1YjVj
ZGU2M2RiNDRjMDA1MjdjMDk4NjNjODJhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNpbXBvcnQgPENvcmVNZWRpYS9Db3Jl
TWVkaWEuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CkBAIC02Myw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1l
KENNVGltZSk7CiAgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24q
Kik7CiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3NlcmlhbERpc3BhdGNoUXVldWU7CiAgICAg
Q01UaW1lIG1fbG93V2F0ZXJUaW1lIHsga0NNVGltZUludmFsaWQgfTsKIAogICAgIFJldGFpblB0
cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCBjNzlhNDc5NjI0MDJiYjEz
MjkzM2M4N2JmZTk4ZDIzN2Y1NmVlMDY5Li5jY2M4ZGQzYTlkNGYwZmRhODg5MzNmMGZkMWUyODFk
ZTNhZGU5N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtNTIsMTQgKzUyLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlCiB9CiAK
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
KCkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ii
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAgICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGlt
ZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkRTLCAxMDAwKSB9CiB7CiB9
CiAKIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpCiB7Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwog
ICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAgICBBdWRpb0NvbnZlcnRlckRpc3Bvc2UobV9j
b252ZXJ0ZXIpOwogICAgICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CkBAIC04OSw3ICs4OCw3
IEBAIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVy
UXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpmaW5pc2goKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1
ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBe
ewogICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJ
bnZhbGlkKTsKICAgICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOwogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZm
ZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOwpAQCAtNTEwLDcgKzUwOSw3
IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIAogdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiB7Ci0gICAg
ZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3lu
YyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAgICAgIGlmIChtX2lzRW5jb2Rp
bmcpCiAgICAgICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCBjMDU4
Mzc0NzBiMWM4MjcyZGU3Yzg5YzQxNGJhMThhMGYwZTllOWNkLi4zNzZhNWNmYmVhYjFhMTQ2ZjI5
MGIyY2IyNDNjNWMxMzMyZGQ3NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPENvcmVNZWRp
YS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVlRFcnJvcnMuaD4KKyNpbmNs
dWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVC
dWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVz
c2lvblNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNzaW9uUmVmOwpAQCAtNTgsNyArNTksNyBAQCBw
cml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQg
KnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZm
ZXJSZWYpOwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7Cisg
ICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwog
ICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRDb2RlY1R5cGUgeyBrQ01WaWRlb0NvZGVjVHlw
ZV9IMjY0IH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZm
ZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KaW5kZXggZTAzZTc3MGYwY2FhOWJkYzZiMTZkNWFjNzRiYjM3ODZkZjhmNGFkNy4uMTc2Nzk5
NzQxYmQ0ZmJiOTkwOTlhZDg0MzRlZjZjMmY0NmI4YWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTQ4LDE0ICs0OCwxMyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlw
ZSkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNw
YXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ii
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CiAgICAgLCBtX291dHB1dENvZGVjVHlwZSB7IG91
dHB1dENvZGVjVHlwZSB9CiB7CiB9CiAKIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCiB7Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX3Nl
cmlhbERpc3BhdGNoUXVldWUpOwogICAgIGlmIChtX3Z0U2Vzc2lvbikgewogICAgICAgICBWVENv
bXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUobV92dFNlc3Npb24uZ2V0KCkpOwogICAgICAgICBt
X3Z0U2Vzc2lvbiA9IG51bGxwdHI7CkBAIC04Myw3ICs4Miw3IEBAIHZvaWQgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkIGJpdFJhdGUpCiAKIHZv
aWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQogewotICAgIGRpc3BhdGNo
X3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJp
YWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewogICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVz
c2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFs
aWQpOwogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZy
YW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKIApAQCAtMTY1LDcgKzE2NCw3IEBAIHZvaWQg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxl
QnVmZmVyUmVmIGJ1ZmZlcikKIAogdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFk
ZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiB7Ci0gICAgZGlzcGF0Y2hf
c3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhtX3Nlcmlh
bERpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAgICAgICAgIGlmICghbV9pc0VuY29kaW5nKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIuaAppbmRleCAzY2JlOGNlYTY4NWE1NDU4ODIwZGYyODhiZGY2Y2E2ZGVh
YjIzYjliLi5mODYxOWY2YTE5MThhZjA2MGUyYTA1ZTA2MzE4MmY1NGU4NmEyMGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBdWRpb1Nlc3Np
b247CkBAIC03Nyw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYkFWQXVkaW9T
ZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXI+IG1fbGlzdGVuZXI7CiAgICAgUmV0YWluUHRy
PEFWQXVkaW9TZXNzaW9uPiBtX2F1ZGlvU2Vzc2lvbjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRp
bWVyPiBtX3VwZGF0ZURldmljZVN0YXRlUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rp
c3BhdGNoUXVldWUgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4gbV9kaXNwYXRjaFF1ZXVlOwogICAgIExvY2sgbV9sb2NrOwogICAgIEF1ZGlvU2Vzc2lvblN0
YXRlIG1fYXVkaW9TZXNzaW9uU3RhdGUgeyBBdWRpb1Nlc3Npb25TdGF0ZTo6Tm90TmVlZGVkIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9z
L0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbQppbmRleCBiMWI0N2FmMjljNGE0NDUyZmM4MTAwM2JhMzU4NmQ5MDJlODZhZTlmLi5lZjli
ZTEwNmJiZDRlYTE2ODQ0ZWU3MDljNjBhMjU4Y2M2MmNlYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtODcsOSArODcsOSBA
QCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBBVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0bwogfQogCiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKLSAgICA6IG1f
ZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkp
CisgICAgOiBtX2Rpc3BhdGNoUXVldWUoYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoImNvbS5hcHBsZS5XZWJLaXQuQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciIs
IERJU1BBVENIX1FVRVVFX1NFUklBTCkpKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0
Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spXSB7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIo
W3RoaXMsIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayldIHsKICAgICAgICAgY3JlYXRlQXVkaW9T
ZXNzaW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQpAQCAtMTEzLDcgKzExMyw2IEBAIHZvaWQgQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlQXVkaW9TZXNzaW9uKCkKIAog
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIoKQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVl
KTsKICAgICBbbV9saXN0ZW5lciBpbnZhbGlkYXRlXTsKICAgICBtX2xpc3RlbmVyID0gbnVsbHB0
cjsKIH0KQEAgLTE1NywxMyArMTU2LDEzIEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKQogICAgIGlmIChtX2F1ZGlv
U2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkgewogICAgICAgICBt
X2F1ZGlvU2Vzc2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6OkFjdGl2ZTsKIAotICAgICAg
ICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7Cisg
ICAgICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIo
W3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgICAgIH0p
LmdldCgpKTsKICAgICB9CiAKICAgICBWZWN0b3I8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
PiBuZXdBdWRpb0RldmljZXM7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1h
a2VCbG9ja1B0cihbJl0geworICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCBtYWtlQmxvY2tQdHIoWyZdIHsKICAgICAgICAgbmV3QXVkaW9EZXZpY2VzID0gcmV0cmlldmVB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgIH0pLmdldCgpKTsKICAgICBzZXRBdWRp
b0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSk7CkBAIC0xNzQsMTIgKzE3
MywxMiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldENhcHR1
cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0
YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkgewogICAgICAgICBtX2F1ZGlvU2Vz
c2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6OkFjdGl2ZTsKIAotICAgICAgICBkaXNwYXRj
aF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10geworICAgICAgICBk
aXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbdGhpc10g
ewogICAgICAgICAgICAgYWN0aXZhdGVBdWRpb1Nlc3Npb24oKTsKICAgICAgICAgfSkuZ2V0KCkp
OwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2Nr
UHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7
CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIo
W3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgYXV0byBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVE
ZXZpY2VzKCk7CiAgICAgICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRo
cmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24p
LCBuZXdBdWRpb0RldmljZXMgPSBXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcyldICgpIG11dGFibGUg
ewogICAgICAgICAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2
aWNlcykpOwpAQCAtMjU0LDcgKzI1Myw3IEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6ZGlzYWJsZUFsbERldmljZXNRdWVyeSgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmUp
IHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIo
W3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBt
YWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRl
ICE9IEF1ZGlvU2Vzc2lvblN0YXRlOjpOb3ROZWVkZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA4
YjE4ZmYxMjkyNTc4OTM3OTE1ZWFhNmE0OTk4Mzc5MTcwNTE4MzA4Li43OGVjMDZiNzRlNDcyYmQ2
MzhhOWY1ZTkzNzBiZjJmNmI4ZjliMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTMwMSw3ICszMDEs
NyBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQotV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENv
b2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxvcHQpOworV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihD
RlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9
IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggYTM3ODUwZDc2
ZWJkZTg4NGIyMmQ4OTAwZGVlMzZmODRjODQ1MTZhYi4uY2VlNWQ3ZWFjYmNiNjIxMGIyMjlkY2Vh
Yzg3YjQ2ZjRmYmQ4ZWNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCkBAIC03MiwxNyArNzIsMTYgQEAgYm9v
bCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhLAogICAgIHJldHVybiB0cnVlOwogfQogCi1DRlVSTEF1dGhDaGFs
bGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFs
bGVuZ2UpCitSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjcmVhdGVDRihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTog
V2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgaW4gbV9jZkNoYWxsZW5nZT8gRm91
bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQuCiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVk
ZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnBy
b3Bvc2VkQ3JlZGVudGlhbCgpKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNl
UmVmPiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlKCkpKTsKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZV
UkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlh
bC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJv
cigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gY3JlZGVudGlhbCA9IGNyZWF0ZUNG
KGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpOworICAgIGF1dG8gcHJvdGVjdGlv
blNwYWNlID0gY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFj
ZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVD
b3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwg
Y29yZUNoYWxsZW5nZS5lcnJvcigpKSk7CiB9CiAKLUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVD
Rihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKK1JldGFpblB0cjxDRlVSTENyZWRl
bnRpYWxSZWY+IGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogewog
ICAgIENGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlID0ga0NGVVJMQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZTsKICAgICBzd2l0Y2ggKGNvcmVDcmVkZW50aWFsLnBlcnNpc3Rl
bmNlKCkpIHsKQEAgLTk4LDEwICs5NywxMCBAQCBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0Yo
Y29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAs
IGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVu
dGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsK
KyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoMCwgY29yZUNyZWRlbnRp
YWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVDcmVkZW50aWFsLnBhc3N3b3Jk
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgcGVyc2lzdGVuY2UpKTsKIH0KIAotQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3Bh
Y2UpCitSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQogewogICAgIENGVVJMUHJvdGVjdGlvblNwYWNlU2Vy
dmVyVHlwZSBzZXJ2ZXJUeXBlID0ga0NGVVJMUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUDsKICAg
ICBzd2l0Y2ggKGNvcmVTcGFjZS5zZXJ2ZXJUeXBlKCkpIHsKQEAgLTE2NSw3ICsxNjQsNyBAQCBD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNv
cmVTcGFjZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIENGVVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRlKDAsIGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlwZSwgY29yZVNwYWNl
LnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgc2NoZW1lKTsKKyAgICByZXR1cm4gYWRv
cHRDRihDRlVSTFByb3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFj
ZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHNjaGVtZSkpOwogfQogCiBDcmVkZW50
aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKaW5kZXgg
ODlhOTM1Mjg5YWQ3OWQ0MGIzN2RkMjAzYTgwZTllOGRmNzExYjI2ZS4uNzBmNTAyMDVlYjJiZGEw
ODE2YmJkMDg4YzQ2Y2RhYWI5YzQ1MzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3Jl
ZGVudGlhbFByaXYuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB0eXBlZGVmIHN0cnVj
dCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7CiB0eXBlZGVmIHN0
cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOwpAQCAt
MzgsOSArMzksOSBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRl
bnRpYWw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKLUNGVVJMQXV0aENoYWxsZW5nZVJlZiBj
cmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotQ0ZVUkxDcmVkZW50aWFs
UmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVm
IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworUmV0YWluUHRyPENGVVJMQXV0aENo
YWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKK1Jl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsK
K1JldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gY3JlYXRlQ0YoY29uc3QgUHJvdGVj
dGlvblNwYWNlJik7CiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKIFByb3Rl
Y3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHAKaW5kZXggNmVhMzAxMjM5NTZlZGJkMzA5ZDZjZTBlYWZmZTc4M2Q3MzhlNmRmYy4u
MWZhODliYWUxZGUxY2IwNzYzZTA3YzYxYTQxOGEzMWNjZWY1NWI1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBib29sIGNlcnRpZmljYXRlc01hdGNoKFNlY1Ry
dXN0UmVmIHRydXN0MSwgU2VjVHJ1c3RSZWYgdHJ1c3QyKQogUmV0YWluUHRyPENGQXJyYXlSZWY+
IENlcnRpZmljYXRlSW5mbzo6Y2VydGlmaWNhdGVDaGFpbkZyb21TZWNUcnVzdChTZWNUcnVzdFJl
ZiB0cnVzdCkKIHsKICAgICBhdXRvIGNvdW50ID0gU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUNvdW50
KHRydXN0KTsKLSAgICBhdXRvIGNlcnRpZmljYXRlQ2hhaW4gPSBDRkFycmF5Q3JlYXRlTXV0YWJs
ZSgwLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CisgICAgYXV0byBjZXJ0aWZpY2F0
ZUNoYWluID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBjb3VudCwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKysp
Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZXJ0aWZpY2F0ZUNoYWluLCBTZWNUcnVzdEdl
dENlcnRpZmljYXRlQXRJbmRleCh0cnVzdCwgaSkpOwotICAgIHJldHVybiBhZG9wdENGKChDRkFy
cmF5UmVmKWNlcnRpZmljYXRlQ2hhaW4pOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2Vy
dGlmaWNhdGVDaGFpbi5nZXQoKSwgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgodHJ1c3Qs
IGkpKTsKKyAgICByZXR1cm4gY2VydGlmaWNhdGVDaGFpbjsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdl
Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFs
U3RvcmFnZUNGTmV0LmNwcAppbmRleCAwNzUyY2ExMDU1MmZkYjFhN2MzNTc1OTMyYTIzMmFhZWJl
ZGM1ZDYwLi4wYTAzMzg2ZDkzYzVjMTJlNjYwMTY2ZmUyOTA2YjgxMTRiNWRlNGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdl
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVu
dGlhbFN0b3JhZ2VDRk5ldC5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCi1zdGF0aWMgaW5saW5lIENGVVJMQ3JlZGVudGlhbFJlZiBjb3B5Q3JlZGVu
dGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlv
blNwYWNlKQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjb3B5
Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJv
dGVjdGlvblNwYWNlKQogewogICAgIGF1dG8gc3RvcmFnZSA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgcmV0dXJuIENGVVJM
Q3JlZGVudGlhbFN0b3JhZ2VDb3B5RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uo
c3RvcmFnZS5nZXQoKSwgcHJvdGVjdGlvblNwYWNlKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENyZWRlbnRpYWxTdG9yYWdlQ29weURlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNl
KHN0b3JhZ2UuZ2V0KCksIHByb3RlY3Rpb25TcGFjZSkpOwogfQogCiBDcmVkZW50aWFsIENyZWRl
bnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgYXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9IGFk
b3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7Ci0gICAgYXV0byBjcmVkZW50aWFsQ0Yg
PSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3Bh
Y2VDRi5nZXQoKSkpOworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBjcmVhdGVDRihwcm90
ZWN0aW9uU3BhY2UpOworICAgIGF1dG8gY3JlZGVudGlhbENGID0gY29weUNyZWRlbnRpYWxGcm9t
UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKTsKICAgICByZXR1cm4gY29y
ZShjcmVkZW50aWFsQ0YuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKaW5kZXggNWVhNDQ4ZmNlNzcz
ZTAzOTRkNzRmZDdiMWY5YzM3NjM2OWNkOWY4My4uYmI4M2RmZjRhMjliZmQ5N2ZiNTA1YTQ5M2I4
OTRiMThlMTE2ZjVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcApAQCAtNjMsOCArNjMsOCBAQCBDRlJ1bkxvb3BS
ZWYgbG9hZGVyUnVuTG9vcCgpCiAKICAgICAgICAgICAgICAgICAvLyBNdXN0IGFkZCBhIHNvdXJj
ZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRpbmcu
CiAgICAgICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0gezAsICh2b2lk
KikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZv
cm19OwotICAgICAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENG
UnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCk7Ci0gICAgICAgICAgICAgICAgQ0ZSdW5M
b29wQWRkU291cmNlKGxvYWRlclJ1bkxvb3BPYmplY3QsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOworICAgICAgICAgICAgICAgIGF1dG8gYm9ndXNTb3VyY2UgPSBhZG9wdENG
KENGUnVuTG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCkpOworICAgICAgICAgICAgICAgIENG
UnVuTG9vcEFkZFNvdXJjZShsb2FkZXJSdW5Mb29wT2JqZWN0LCBib2d1c1NvdXJjZS5nZXQoKSwg
a0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKIAogICAgICAgICAgICAgICAgIGxvYWRlclJ1bkxvb3BD
b25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNWQ3ZDc5NjE0NDY1ZmNhYjViZDZiNjQx
OGUwNjBmNjhlYjA5NGE0YS4uYTUxYmRiOGUzMjViMzM3NmQxNGM2ZjRmNWU4MDdkMzgxZGJiOGQ2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKQEAgLTc5LDE2ICs3
OSwxNiBAQCBzdGF0aWMgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSB0b0NGSFRUUENv
b2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koSFRUUENvbwogICAgIHJldHVybiBDRkhUVFBDb29raWVT
dG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNy
ZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25h
bDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCitSZXRhaW5QdHI8
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3Ry
aW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tp
ZUFjY2VwdFBvbGljeSkKIHsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlLZXlzW10g
PSB7IF9rQ0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJpdmF0ZSB9OwogICAgIGNvbnN0IHZvaWQqIHNl
c3Npb25Qcm9wZXJ0eVZhbHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwotICAgIENGRGljdGlv
bmFyeVJlZiBzZXNzaW9uUHJvcGVydGllcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBzZXNzaW9uUHJvcGVydHlLZXlzLCBzZXNzaW9uUHJvcGVydHlWYWx1ZXMsIHNp
emVvZihzZXNzaW9uUHJvcGVydHlLZXlzKSAvIHNpemVvZigqc2Vzc2lvblByb3BlcnR5S2V5cyks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOwotICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBf
Q0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZGVudGlmaWVy
LCBzZXNzaW9uUHJvcGVydGllcyk7CisgICAgYXV0byBzZXNzaW9uUHJvcGVydGllcyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25Qcm9wZXJ0
eUtleXMsIHNlc3Npb25Qcm9wZXJ0eVZhbHVlcywgc2l6ZW9mKHNlc3Npb25Qcm9wZXJ0eUtleXMp
IC8gc2l6ZW9mKCpzZXNzaW9uUHJvcGVydHlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gc3Rv
cmFnZVNlc3Npb24gPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGlkZW50aWZpZXIsIHNlc3Npb25Qcm9wZXJ0aWVzLmdldCgpKSk7CiAgICAg
CiAgICAgLy8gVGhlIHByaXZhdGUgc3RvcmFnZSBzZXNzaW9uIHNob3VsZCBoYXZlIHRoZSBzYW1l
IHByb3BlcnRpZXMgYXMgdGhlIGRlZmF1bHQgc3RvcmFnZSBzZXNzaW9uLAogICAgIC8vIHdpdGgg
dGhlIGV4Y2VwdGlvbiB0aGF0IGl0IHNob3VsZCBiZSBpbi1tZW1vcnkgb25seSBzdG9yYWdlLgot
ICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgYXV0byBjYWNoZSA9IGFk
b3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBDRlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNh
Y2hlLmdldCgpLCAwKTsKICAgICBhdXRvIGRlZmF1bHRDYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNo
ZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHko
Y2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eShkZWZhdWx0Q2FjaGUuZ2V0KCkp
KTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpbwogICAgICAgICBj
ZkNvb2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQ
b2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UpOwogICAgIH0KIAotICAgIGF1dG8gY29va2llU3Rv
cmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbikpOworICAgIGF1dG8gY29va2llU3RvcmFn
ZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIENGSFRUUENvb2tpZVN0
b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgY2ZDb29raWVB
Y2NlcHRQb2xpY3kpOwogICAgIAogICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAKaW5kZXggY2IwOGI5MzczNTA5YTUwMDc5Mjc0NjhjMDc2Y2Y4MmU2NWQ1YjA3
ZS4uODczN2M0YzcxNGY2NWRlNGMwNDZkNTkxNzA2MjFhOWFhNWU3MDZjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IFByb3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBjb25zdAogewot
ICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gY2ZTcGFjZSA9IGFkb3B0Q0Yo
Y3JlYXRlQ0YoKnRoaXMpKTsKKyAgICBhdXRvIGNmU3BhY2UgPSBjcmVhdGVDRigqdGhpcyk7CiAg
ICAgcmV0dXJuIGNmU3BhY2UgJiYgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWNlaXZlc0NyZWRlbnRp
YWxTZWN1cmVseShjZlNwYWNlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXgg
MmQ0ZWZmNTA1Y2M0MTNhMGNkNjUyM2NiMDljMDQ0YzRiNDllODU1ZC4uNmJmM2NjMjA0MDQwYjhh
ZmU5MjRjN2Y5ZjU1MTNkN2E1YzJiMTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0zODks
NyArMzg5LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1
dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICAgICAgICAgICAgICAgICAg
Ly8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVm
YXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBj
cmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRl
Q0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3Jl
YXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3Jl
ZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KQEAgLTQzNiwxMSArNDM2LDExIEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlh
bFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgd2ViQ3JlZGVu
dGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAg
ICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVk
ZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwp
KTsKKyAgICAgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlh
bCk7CiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsK
LSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0g
Y3JlYXRlQ0YoY3JlZGVudGlhbCk7CiAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRp
YWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5j
ZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgfQogCkBAIC01NTksOCArNTU5LDggQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXgKIAogICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2Ug
dG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgog
ICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAv
Km11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07
Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BT
b3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNl
KHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgICAgICAg
ICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAs
ICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNT
b3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2ln
bmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAKaW5kZXggMWZlNjkwMjRiY2JmYjhkNzdiYWI5OGE5MWEzY2E4MTU5ZmJhNGUw
My4uM2M4MmJjM2I0YzY4NTliOGJhOTRhMzJiZTlhNDI2YTgzOTk2ZWM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xMTAsOCArMTEwLDggQEAgc3RhdGljIENGUnVu
TG9vcFJlZiBnZXRSdW5Mb29wKCkKIAogICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2Ug
dG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgog
ICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0geyAwLCAodm9pZCopMSAv
Km11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtIH07
Ci0gICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BT
b3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAgICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNl
KHJ1bkxvb3AsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgICAgICAg
ICAgYXV0byBib2d1c1NvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAs
ICZjdHh0KSk7CisgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UocnVuTG9vcCwgYm9ndXNT
b3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgICAgICAgICBzZW0uc2ln
bmFsKCk7CiAKICAgICAgICAgICAgIHdoaWxlICh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApp
bmRleCBmNmUxYjliNWQzYTViYTdhZTM1YTc3OTIzZDU2ZDUzZWFlMzI3MTk5Li5iN2VmNWI4NzU4
NGZmYmI2NmFmN2Q5YTExM2Y0MzA2ZDkxNWExNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApA
QCAtMTY3LDUxICsxNjcsNTEgQEAgc3RhdGljIENGVVJMUmVmIHNpdGVGb3JDb29raWVzKFJlc291
cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwKICAgICBjYXNlIFJl
c291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3NpdGlvbjo6U2FtZVNpdGU6CiAgICAgICAgIHJl
dHVybiB1cmw7CiAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRlRGlzcG9zaXRpb246
OkNyb3NzU2l0ZToKLSAgICAgICAgc3RhdGljIENGVVJMUmVmIGVtcHR5VVJMID0gQ0ZVUkxDcmVh
dGVXaXRoU3RyaW5nKG51bGxwdHIsIENGU1RSKCIiKSwgbnVsbHB0cik7Ci0gICAgICAgIHJldHVy
biBlbXB0eVVSTDsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlVS
TFJlZj4+IGVtcHR5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwg
Q0ZTVFIoIiIpLCBudWxscHRyKSk7CisgICAgICAgIHJldHVybiBlbXB0eVVSTC5nZXQoKS5nZXQo
KTsKICAgICB9CiB9CiAjZW5kaWYKIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCkKIHsKLSAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdDsK
KyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gY2ZSZXF1ZXN0OwogCiAgICAg
UmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBSZXNvdXJjZVJlcXVlc3Q6OnVybCgpLmNyZWF0ZUNG
VVJMKCk7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBmaXJzdFBhcnR5Rm9yQ29va2llcyA9IFJl
c291cmNlUmVxdWVzdDo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5jcmVhdGVDRlVSTCgpOwogICAg
IGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwgPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50
ZXJ2YWwoKSA/IFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogICAgIGlmIChtX2NmUmVx
dWVzdCkgewotICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29w
eSgwLCBtX2NmUmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJl
cXVlc3QsIHVybC5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVS
TChjZlJlcXVlc3QsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxS
ZXF1ZXN0U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0LCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9s
aWN5KGNhY2hlUG9saWN5KCkpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVy
dmFsKGNmUmVxdWVzdCwgdGltZW91dEludGVydmFsKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRv
cHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSkp
OworICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LmdldCgpLCB1cmwuZ2V0KCkp
OworICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LmdldCgp
LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldENh
Y2hlUG9saWN5KGNmUmVxdWVzdC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShj
YWNoZVBvbGljeSgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChj
ZlJlcXVlc3QuZ2V0KCksIHRpbWVvdXRJbnRlcnZhbCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNm
UmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRm
b3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZp
cnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RD
YWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9y
Q29va2llcy5nZXQoKSkpOwogCi0gICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2Qo
Y2ZSZXF1ZXN0LCBodHRwTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgQ0ZV
UkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LmdldCgpLCBodHRwTWV0aG9k
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBpZiAoaHR0cFBpcGVsaW5pbmdFbmFi
bGVkKCkpCi0gICAgICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFBpcGVsaW5lSFRUUChjZlJlcXVl
c3QsIHRydWUsIHRydWUpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRQaXBlbGluZUhU
VFAoY2ZSZXF1ZXN0LmdldCgpLCB0cnVlLCB0cnVlKTsKIAogICAgIGlmIChyZXNvdXJjZVByaW9y
aXRpZXNFbmFibGVkKCkpIHsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5
KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CisgICAg
ICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QuZ2V0KCksIHRvUGxh
dGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOwogCiAgICAgICAgIC8vIFVzZWQgYnkg
UExUIHRvIGlnbm9yZSB2ZXJ5IGxvdyBwcmlvcml0eSBiZWFjb24gYW5kIHBpbmcgbG9hZHMuCiAg
ICAgICAgIGlmIChwcmlvcml0eSgpID09IFJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93KQot
ICAgICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBD
RlNUUigiV0tWZXJ5TG93TG9hZFByaW9yaXR5IiksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICAgICAg
ICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgQ0ZT
VFIoIldLVmVyeUxvd0xvYWRQcmlvcml0eSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQogCi0g
ICAgc2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKKyAgICBz
ZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LmdldCgpLCBodHRwSGVhZGVyRmllbGRzKCkpOwogCi0g
ICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMoY2ZSZXF1ZXN0LCBhbGxv
d0Nvb2tpZXMoKSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMo
Y2ZSZXF1ZXN0LmdldCgpLCBhbGxvd0Nvb2tpZXMoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgQ0ZT
VFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyIpLCBzaXRlRm9y
Q29va2llcyhtX3NhbWVTaXRlRGlzcG9zaXRpb24sIHVybC5nZXQoKSkpOworICAgIF9DRlVSTFJl
cXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIl9rQ0ZIVFRQ
Q29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyIpLCBzaXRlRm9yQ29va2llcyhtX3Nh
bWVTaXRlRGlzcG9zaXRpb24sIHVybC5nZXQoKSkpOwogCiAgICAgaW50IGlzVG9wU2l0ZSA9IG1f
aXNUb3BTaXRlOwogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaXNUb3BTaXRlQ0YgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51bWJlckludFR5cGUsICZpc1RvcFNpdGUp
KTsKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIENGU1RS
KCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5aXNUb3BTaXRlIiksIGlzVG9wU2l0ZUNGLmdl
dCgpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0
KCksIENGU1RSKCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5aXNUb3BTaXRlIiksIGlzVG9w
U2l0ZUNGLmdldCgpKTsKICNlbmRpZgogCiAgICAgdW5zaWduZWQgZmFsbGJhY2tDb3VudCA9IG1f
cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwpA
QCAtMjIyLDUxICsyMjIsNTEgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKICAgICAgICAgaWYgKGVuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52
YWxpZElkKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tz
LmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihlbmNvZGluZykpOwogICAgIH0K
LSAgICBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoY2ZSZXF1ZXN0
LCBlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSk7CisgICAgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5KGNmUmVxdWVzdC5nZXQoKSwgZW5jb2RpbmdGYWxsYmFja3MuZ2V0
KCkpOwogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBTdHJpbmcgcGFydGl0
aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAh
cGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwYXJ0
aXRpb24udXRmOCgpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZh
bHVlID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7Ci0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQ
cm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0
aXRpb25WYWx1ZS5nZXQoKSk7CisgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3Bl
cnR5KGNmUmVxdWVzdC5nZXQoKSwgX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25W
YWx1ZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0Yo
Y2ZSZXF1ZXN0KTsKKyAgICBtX2NmUmVxdWVzdCA9IFdURk1vdmUoY2ZSZXF1ZXN0KTsKIH0KIAog
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiB7Ci0gICAg
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3Q7CisgICAgUmV0YWluUHRyPENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdDsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJs
ID0gUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5jcmVhdGVDRlVSTCgpOwogICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0UGFy
dHlGb3JDb29raWVzKCkuY3JlYXRlQ0ZVUkwoKTsKICAgICBkb3VibGUgdGltZW91dEludGVydmFs
ID0gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgPyBSZXNvdXJjZVJlcXVl
c3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA6IFJlc291cmNlUmVxdWVzdEJhc2U6OmRlZmF1bHRU
aW1lb3V0SW50ZXJ2YWwoKTsKICAgICBpZiAobV9jZlJlcXVlc3QpIHsKLSAgICAgICAgY2ZSZXF1
ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkp
OwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOwotICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBhcnR5
Rm9yQ29va2llcy5nZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNm
UmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7Ci0g
ICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QsIHRpbWVvdXRJ
bnRlcnZhbCk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRl
TXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMu
Z2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QuZ2V0
KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOworICAgICAg
ICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1lb3V0
SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShj
YWNoZVBvbGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQo
KSk7CisgICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZSgwLCB1cmwuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3ko
KSksIHRpbWVvdXRJbnRlcnZhbCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpKTsKIAogICAg
IEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFm
b3JtRGF0YS0+aXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShjZlJlcXVl
c3QsIGZvcm1EYXRhKTsKKyAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0Lmdl
dCgpLCBmb3JtRGF0YSk7CiAKLSAgICBpZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9k
eVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShj
ZlJlcXVlc3QpKSkgeworICAgIGlmIChSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBib2R5U3Ry
ZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKGNmUmVx
dWVzdC5nZXQoKSkpKSB7CiAgICAgICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVu
dC1MZW5ndGggdG8gYXZvaWQgdXNpbmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1
cmF0ZSB0b3RhbCBsZW5ndGggaW4gY2FsbGJhY2tzLgogICAgICAgICBpZiAoUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBsZW5ndGhTdHJpbmcgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoYm9keVN0cmVhbS5nZXQoKSwgZm9ybURhdGFTdHJl
YW1MZW5ndGhQcm9wZXJ0eU5hbWUoKSkpKSkgewotICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
SFRUUEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0LCBDRlNUUigiQ29udGVudC1MZW5ndGgiKSwg
bGVuZ3RoU3RyaW5nLmdldCgpKTsKKyAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFk
ZXJGaWVsZFZhbHVlKGNmUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxl
bmd0aFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICAvLyBTaW5jZSByZXNvdXJjZSByZXF1ZXN0
IGlzIGFscmVhZHkgbWFya2VkIHVwZGF0ZWQsIHdlIG5lZWQgdG8ga2VlcCBpdCB1cCB0byBkYXRl
IHRvby4KICAgICAgICAgICAgIEFTU0VSVChtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpOwogICAg
ICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudExl
bmd0aCwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2ZS
ZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShj
ZlJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJl
cXVlc3QoKQpAQCAtMzU1LDEwICszNTUsMTAgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0
b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24pCiB7CiAg
ICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7CiAKLSAgICBhdXRvIGNmUmVxdWVzdCA9IENGVVJM
UmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKKyAgICBhdXRv
IGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9j
ZlJlcXVlc3QuZ2V0KCkpKTsKICAgICBpZiAoc3RvcmFnZVNlc3Npb24pCi0gICAgICAgIF9DRlVS
TFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJlcXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKLSAg
ICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0KTsKKyAgICAgICAgX0NGVVJMUmVxdWVz
dFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdC5nZXQoKSwgc3RvcmFnZVNlc3Npb24pOworICAg
IG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVlc3QpOwogfQogCiAjZW5kaWYgLy8gVVNFKENG
VVJMQ09OTkVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDgwYmQ2NmQ3OGQ0MWE3NTBhMjYwZWViYzlmNjdmNGJjYjZmYmUyMTEuLjg2NGJiOTk3MzEwODlj
MjM2NWViMTVkOTNhMjljZmUzMWY4NDgwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQpAQCAtMTczLDcgKzE3Myw3IEBAIENvb2tpZVN0b3JhZ2VPYnNlcnZlciYgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlT2JzZXJ2ZXIoKSBjb25zdAogICAgIHJl
dHVybiAqbV9jb29raWVTdG9yYWdlT2JzZXJ2ZXI7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9w
dGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
Q0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4g
Y29va2llQWNjZXB0UG9saWN5KQogewogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eUtl
eXNbXSA9IHsgX2tDRlVSTFN0b3JhZ2VTZXNzaW9uSXNQcml2YXRlIH07CiAgICAgY29uc3Qgdm9p
ZCogc2Vzc2lvblByb3BlcnR5VmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07CkBAIC0yMTAs
NyArMjEwLDcgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAvLyBGSVhNRTogVXNlIF9D
RkhUVFBDb29raWVTdG9yYWdlR2V0RGVmYXVsdCB3aGVuIFVTRShDRk5FVFdPUkspIGlzIGRlZmlu
ZWQgaW4gV2ViS2l0IGZvciBjb25zaXN0ZW5jeS4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIG5zQ29va2llQWNjZXB0UG9s
aWN5KTsKIAotICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IHN0b3JhZ2VTZXNzaW9uOwogfQogCiBSZXRhaW5QdHI8TlNBcnJheT4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2Up
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9X
ZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KaW5kZXggNDU1YTdhNjJjYzEyNDE2MGNkOGJl
OTJkNzQ5MzEyM2JhNjg2ZTRmZi4uMzU3NzQwZjIyNTZmOTg5MGJhNzFhMzYzOGVmNTcwN2U3MWE5
ZDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpAQCAtMzksNyArMzksNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyA8cmRhcjovL3Byb2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5t
anMgZmlsZXMgYXMgd2hhdGV2ZXIgVVRJIGluZGljYXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgQ0ZE
aWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQorc3RhdGljIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQogewog
ICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKICAgICAgICAgQ0ZTVFIoIm1qcyIpCkBAIC01MCw3
ICs1MCw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlw
ZU1hcCgpCiAgICAgfTsKIAogICAgIEFTU0VSVChzaXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVl
cykpOwotICAgIHJldHVybiBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykg
LyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywg
KGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYp
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CiB9CiAKIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJl
c3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKQpAQCAtNjYsMTEg
KzY2LDExIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAgICAgIGlmIChbKF9fYnJpZGdl
IE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVSTENvcHlQYXRoRXh0ZW5zaW9uKHVybCkpOwog
ICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewotICAgICAgICAgICAgICAgIHN0YXRpYyBDRkRp
Y3Rpb25hcnlSZWYgZXh0ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgp
OwotICAgICAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBtdXRhYmxlRXh0ZW5zaW9uID0g
Q0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNp
b24uZ2V0KCkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRl
bnNpb24sIE5VTEwpOwotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGFkb3B0Q0YobXV0YWJs
ZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gbmV3TUlNRVR5cGUgPSAoQ0ZT
dHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLCBleHRlbnNpb24uZ2V0
KCkpKQorICAgICAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPj4gZXh0ZW5zaW9uTWFwID0gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1h
cCgpOworICAgICAgICAgICAgICAgIGF1dG8gbXV0YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24u
Z2V0KCkpKTsKKyAgICAgICAgICAgICAgICBDRlN0cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5z
aW9uLmdldCgpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11
dGFibGVFeHRlbnNpb24pOworICAgICAgICAgICAgICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0g
KENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQo
KSwgZXh0ZW5zaW9uLmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZE1JTUVUeXBl
ID0gbmV3TUlNRVR5cGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bQppbmRleCBiYjExNmE5ZGZmM2U4MDI0OWUzYzFmZjEwZWU5MTI5YzcwNTZmZDE1Li40ZmE1MGU0
NmIwOTQ5NmNkZWUwNzM5NjQ1Yzg0ZjFkN2E0NjlmZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBA
IC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFdoZW4gd2UgZGlzYWJsZWQg
Y29udGVudCBzbmlmZmluZyBmb3IgZmlsZSBVUkxzIHdlIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRo
ZXNlIDEwMCsgZXh0ZW5zaW9ucyB0aGF0IENvcmVUeXBlcwogLy8gZG9lc24ndCBrbm93IGFib3V0
LgogLy8gSWYgQ29yZVR5cGVzIGlzIGV2ZXIgYnJvdWdodCB1cCB0byBzcGVlZCB3ZSBjYW4gcmVt
b3ZlIHRoaXMgdGFibGUgYW5kIGFzc29jaWF0ZWQgY29kZS4KLXN0YXRpYyBDRkRpY3Rpb25hcnlS
ZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCitzdGF0aWMgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCiB7CiAgICAgQ0ZTdHJp
bmdSZWYga2V5c1tdID0gewogICAgICAgICBDRlNUUigiYWkiKSwKQEAgLTI4OCw3ICsyODgsNyBA
QCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQog
ICAgIH07CiAKICAgICBBU1NFUlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAg
ICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2
b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpL3NpemVvZihD
RlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIHJldHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9p
ZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNpemVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKIH0KIAogdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCkBAIC0zMDQsMTEgKzMwNCwxMSBA
QCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3Bv
bnNlLCBib29sIGlzTWFpblJlc291cmNlTAogICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewog
ICAgICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MDA3Mzg5PiBDb3JlVHlwZXMgVVRJ
IG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRlbnNpb25zIHRoYXQgR2F0ZUtlZXBlciBrbmV3
IGFib3V0CiAgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGlzIHJhZGFyIGlzIHJlc29sdmVkLCB3
ZSBjYW4gcmVtb3ZlIHRoaXMgZmlsZTovLyB1cmwgc3BlY2lmaWMgY29kZS4KLSAgICAgICAgICAg
ICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lv
blRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0
YWJsZUV4dGVuc2lvbiA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICBDRlN0cmluZ0xvd2Vy
Y2FzZShtdXRhYmxlRXh0ZW5zaW9uLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb24g
PSBhZG9wdENGKG11dGFibGVFeHRlbnNpb24pOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IChD
RlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAsIGV4dGVuc2lvbi5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBl
TWFwKCk7CisgICAgICAgICAgICAgICAgYXV0byBtdXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lv
bi5nZXQoKSkpOworICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRl
bnNpb24uZ2V0KCksIE5VTEwpOworICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IFdURk1vdmUo
bXV0YWJsZUV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9u
LmdldCgpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgR2F0ZWtlZXBlci1iYXNlZCBtYXAgZG9l
c24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0cnkgdG8gZmlndXJlIG91dCB3aGF0IGl0IHNo
b3VsZCBiZSBieQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0
Qm91bmRhcmllcy5tbQppbmRleCA1ZjM2ZDA4MzE0ODZjOWQ5ZTRmYzkzYjliZGYxZDYxNzdjMjBl
NjQwLi5hNTYxOGZlMGNkNjlmODYxODVkNzhiMGU2MzlkZDlhMjhhZmQyM2I0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAt
NzEsMjMgKzcxLDIzIEBAIHN0YXRpYyBib29sIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIo
VUNoYXIzMiBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6
ZXJGb3JTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogewotICAgIHN0YXRpYyBDRkxvY2FsZVJlZiBs
b2NhbGUgPSBudWxscHRyOwotICAgIGlmICghbG9jYWxlKSB7CisgICAgc3RhdGljIGF1dG8gbG9j
YWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgY29uc3QgY2hhciogdGVtcCA9
IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0Nv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRl
bXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7Ci0gICAgICAgIGxvY2FsZSA9IENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSk7Ci0gICAgICAgIGlmICghbG9jYWxlKQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICBhdXRvIGN1cnJlbnRM
b2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRlbXApLCBzdHJsZW4o
dGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7
CisgICAgICAgIHJldHVybiBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSkpOworICAgIH0oKSk7CisKKyAgICBpZiAoIWxvY2Fs
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBDRlJhbmdlIGVudGlyZVJh
bmdlID0gQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyKSk7ICAgIAogCi0gICAg
c3RhdGljIENGU3RyaW5nVG9rZW5pemVyUmVmIHRva2VuaXplciA9IG51bGxwdHI7Ci0gICAgaWYg
KCF0b2tlbml6ZXIpCi0gICAgICAgIHRva2VuaXplciA9IENGU3RyaW5nVG9rZW5pemVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0ciwgZW50aXJlUmFuZ2UsIGtDRlN0cmluZ1Rva2VuaXpl
clVuaXRXb3JkQm91bmRhcnksIGxvY2FsZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRlN0cmluZ1Rva2VuaXplclJlZj4+IHRva2VuaXplcjsKKyAgICBpZiAoIXRva2Vu
aXplci5nZXQoKSkKKyAgICAgICAgdG9rZW5pemVyLmdldCgpID0gYWRvcHRDRihDRlN0cmluZ1Rv
a2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZT
dHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5LCBsb2NhbGUuZ2V0KCkuZ2V0KCkpKTsKICAg
ICBlbHNlCi0gICAgICAgIENGU3RyaW5nVG9rZW5pemVyU2V0U3RyaW5nKHRva2VuaXplciwgc3Ry
LCBlbnRpcmVSYW5nZSk7Ci0gICAgcmV0dXJuIHRva2VuaXplcjsKKyAgICAgICAgQ0ZTdHJpbmdU
b2tlbml6ZXJTZXRTdHJpbmcodG9rZW5pemVyLmdldCgpLmdldCgpLCBzdHIsIGVudGlyZVJhbmdl
KTsKKyAgICByZXR1cm4gdG9rZW5pemVyLmdldCgpLmdldCgpOwogfQogCiAvLyBTaW1wbGUgY2Fz
ZTogQSB3b3JkIGlzIGEgc3RyZWFtIG9mIGNoYXJhY3RlcnMgZGVsaW1pdGVkIGJ5IGEgc3BlY2lh
bCBzZXQgb2Ygd29yZC1kZWxpbWl0aW5nIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCA0ZDhjNWM2MDZkNWM1NTg3ZjJj
OTVhZjJkYTZiZmRiZjAyNjlkYzk0Li4zMDRiMWZkMmFkZThhNzQ3MjZlMmY1OGM4MjI1MTExNWU0
YjA1MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dp
bi5jcHAKQEAgLTU3LDEzICs1NywxMSBAQCBHRElPYmplY3Q8SEJJVE1BUD4gYWxsb2NJbWFnZShI
REMgZGMsIEludFNpemUgc2l6ZSwgQ0dDb250ZXh0UmVmICp0YXJnZXRSZWYpCiAgICAgaWYgKCF0
YXJnZXRSZWYgfHwgIWhibXApCiAgICAgICAgIHJldHVybiBoYm1wOwogCi0gICAgQ0dDb250ZXh0
UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5i
bWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlIZWFkZXIuYmlIZWlnaHQsIDgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm1wSW5mby5i
bWlIZWFkZXIuYmlXaWR0aCAqIDQsIHNSR0JDb2xvclNwYWNlUmVmKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHQml0bWFwQnl0ZU9y
ZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7CisgICAgYXV0byBiaXRt
YXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYml0cywgYm1wSW5mby5i
bWlIZWFkZXIuYmlXaWR0aCwgYm1wSW5mby5ibWlIZWFkZXIuYmlIZWlnaHQsIDgsIGJtcEluZm8u
Ym1pSGVhZGVyLmJpV2lkdGggKiA0LCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7CiAgICAgaWYgKCFi
aXRtYXBDb250ZXh0KQogICAgICAgICByZXR1cm4gR0RJT2JqZWN0PEhCSVRNQVA+KCk7CiAKLSAg
ICAqdGFyZ2V0UmVmID0gYml0bWFwQ29udGV4dDsKKyAgICAqdGFyZ2V0UmVmID0gYml0bWFwQ29u
dGV4dC5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGhibXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA3NWQ4MTE3ZjM4ZGMxZWMwNDE1MWYxODM3
ZDM3ZGExYWVlZTU2ZjkwLi5hZGU2MTkyOTgwNTcwNGU2OTlmOWI5NTIxNmJiNTk5YjZhNDMyYjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNTIs
MzYgKzE1MiwyNSBAQCBzdGF0aWMgdm9pZCBpbnRlcnBvbGF0ZUV4cG9uZW50aWFsR3JhZGllbnQo
dm9pZCAqaW5mbywgY29uc3QgQ0dGbG9hdCAqaW5EYXRhLCBDRwogCiBzdGF0aWMgQ0dGdW5jdGlv
blJlZiBnZXRTaGFyZWRGdW5jdGlvblJlZihJT1NHcmFkaWVudFJlZiBncmFkaWVudCwgSW50ZXJw
b2xhdGlvbiBpbnRlcnBvbGF0aW9uKQogewotICAgIENHRnVuY3Rpb25SZWYgZnVuY3Rpb24gPSBu
dWxscHRyOwotCi0gICAgc3RhdGljIEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25S
ZWY+KiBsaW5lYXJGdW5jdGlvblJlZnM7Ci0gICAgc3RhdGljIEhhc2hNYXA8SU9TR3JhZGllbnRS
ZWYsIENHRnVuY3Rpb25SZWY+KiBleHBvbmVudGlhbEZ1bmN0aW9uUmVmczsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgUmV0YWluUHRyPENHRnVuY3Rp
b25SZWY+Pj4gbGluZWFyRnVuY3Rpb25SZWZzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPElPU0dyYWRpZW50UmVmLCBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4+PiBleHBvbmVu
dGlhbEZ1bmN0aW9uUmVmczsKIAogICAgIGlmIChpbnRlcnBvbGF0aW9uID09IExpbmVhckludGVy
cG9sYXRpb24pIHsKLSAgICAgICAgaWYgKCFsaW5lYXJGdW5jdGlvblJlZnMpCi0gICAgICAgICAg
ICBsaW5lYXJGdW5jdGlvblJlZnMgPSBuZXcgSGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgQ0dGdW5j
dGlvblJlZj47Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gbGluZWFyRnVu
Y3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwotICAgIAorICAgICAgICBhdXRvIGZ1bmN0aW9uID0g
bGluZWFyRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwogICAgICAgICBpZiAoIWZ1bmN0aW9u
KSB7CiAgICAgICAgICAgICBzdGF0aWMgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgbGluZWFy
RnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBpbnRlcnBvbGF0ZUxpbmVhckdyYWRpZW50LCAwIH07
Ci0gICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24g
PSBDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAxLCBudWxscHRyLCA0LCBudWxscHRyLCAmbGlu
ZWFyRnVuY3Rpb25DYWxsYmFja3MpKTsKKyAgICAgICAgICAgIGxpbmVhckZ1bmN0aW9uUmVmcy0+
c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVu
dCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwgJmxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOworICAgICAgICByZXR1cm4gZnVu
Y3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaWYgKCFleHBvbmVudGlhbEZ1bmN0aW9uUmVmcykK
LSAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJlZnMgPSBuZXcgSGFzaE1hcDxJT1NHcmFkaWVu
dFJlZiwgQ0dGdW5jdGlvblJlZj47Ci0gICAgZWxzZQotICAgICAgICBmdW5jdGlvbiA9IGV4cG9u
ZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwotCisgICAgYXV0byBmdW5jdGlvbiA9
IGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5nZXQoZ3JhZGllbnQpOwogICAgIGlmICghZnVuY3Rp
b24pIHsKICAgICAgICAgc3RhdGljIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGV4cG9uZW50
aWFsRnVuY3Rpb25DYWxsYmFja3MgPSAgeyAwLCBpbnRlcnBvbGF0ZUV4cG9uZW50aWFsR3JhZGll
bnQsIDAgfTsKLSAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwg
ZnVuY3Rpb24gPSBDR0Z1bmN0aW9uQ3JlYXRlKGdyYWRpZW50LCAxLCAwLCA0LCAwLCAmZXhwb25l
bnRpYWxGdW5jdGlvbkNhbGxiYWNrcykpOworICAgICAgICBleHBvbmVudGlhbEZ1bmN0aW9uUmVm
cy0+c2V0KGdyYWRpZW50LCBmdW5jdGlvbiA9IGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZShncmFk
aWVudCwgMSwgMCwgNCwgMCwgJmV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFja3MpKSk7CiAgICAg
fQotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOworICAgIHJldHVybiBmdW5jdGlvbi5nZXQoKTsKIH0K
IAogc3RhdGljIHZvaWQgZHJhd0F4aWFsR3JhZGllbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElP
U0dyYWRpZW50UmVmIGdyYWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBjb25z
dCBGbG9hdFBvaW50JiBzdG9wUG9pbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBv
cnQubW0KaW5kZXggYmU2NjA3OGE4M2QwY2E0OWI3MWExZmI1M2MyM2E4YzZiODFkNzY3ZS4uNWE5
YmJjNzE1YzllNWM4NDNhYWYyYjkxNWRkODhmNzJlZmExOWVlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTM5
LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
VGVzdFN1cHBvcnQgewogCi1zdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3Bv
bnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQorc3RhdGljIFJldGFp
blB0cjxDRlVSTFJlc3BvbnNlUmVmPiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0
YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQogewogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
OwogICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxv
Y10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTooX19icmlkZ2UgTlNEYXRhICopcmVzcG9uc2VEYXRh
IGVycm9yOm51bGxwdHJdKTsKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIENGVVJMUmVzcG9uc2VS
ZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNl
RGEKICAgICB9CiAKICAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxS
ZXNwb25zZSBjbGFzc11dKQotICAgICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUs
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRlVS
TFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZily
ZXNwb25zZS5VUkwsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXNwb25zZS5NSU1FVHlwZSwgcmVz
cG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9u
c2UudGV4dEVuY29kaW5nTmFtZSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwogCiAgICAg
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJl
c3BvbnNlOwogCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0
ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhCiAgICAg
Zm9yIChOU1N0cmluZyAqaGVhZGVyRmllbGQgaW4gW2hlYWRlckZpZWxkcyBrZXlFbnVtZXJhdG9y
XSkKICAgICAgICAgQ0ZIVFRQTWVzc2FnZVNldEhlYWRlckZpZWxkVmFsdWUoaHR0cE1lc3NhZ2Uu
Z2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZiloZWFkZXJGaWVsZCwgKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKVtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5OmhlYWRlckZpZWxkXSk7CiAKLSAgICBy
ZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3BvbnNlLlVSTCwgaHR0cE1lc3NhZ2UuZ2V0KCks
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOworICAgIHJldHVybiBhZG9wdENGKENGVVJMUmVz
cG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRn
ZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0
b3JhZ2VBbGxvd2VkKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbnZlcnRNSU1FVHlwZShDRk11dGFi
bGVTdHJpbmdSZWYgbWltZVR5cGUpCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgY29u
dmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiBwcm9wZXIKICAgICBpZiAoQ0ZHZXRUeXBlSUQocmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRU
eXBlSUQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VS
ZWY+IHJlc3BvbnNlID0gYWRvcHRDRihjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0
YShyZXNwb25zZURhdGEpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gY3JlYXRlQ0ZVUkxSZXNwb25z
ZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKTsKICAgICBpZiAoIXJlc3BvbnNlKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggMWE5ZjcxOWQ2NTFmYThhZWQxOWY2ZWZmMDUxNTdmMDk1MmRiZWUx
MS4uYzUzN2VhMjhkOTFjNTA1YTI1OGI5YzgwNmU3ZTgzY2UyY2Y0MGU1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ1MSw3ICs0
NTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBO
ZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3NpbwogICAgIC8vIFNlc3Npb24gbmFtZSBzaG91
bGQgYmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBuYW1lIHRvIGJlIHVu
ZGVyIHRoZSBsaW1pdCwgb3RoZXJ3aXNlIHNhbmRib3ggcnVsZXMgd29uJ3Qgd29yayAoc2VlIDxy
ZGFyOi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgogICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VT
dHJpbmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7CiAKLSAgICBhdXRv
IHNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgYXV0byBzZXNzaW9uID0g
V2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBib29sIHNob3VsZFUKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3Rv
cmFnZVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBt
YWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZhdGVCcm93c2luZy4iLCBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgaWYgKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQotICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoY3JlYXRlUHJp
dmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSkpOworICAgICAgICBzdG9yYWdl
U2Vzc2lvbiA9IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkp
OwogICAgIGVsc2UgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoY2ZJZGVudGlmaWVy
LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IGZhNDIzMzRlYzBjYTFhZDA1MDIzZWNiZjc4ZDEzMWQwMWIzZWYzNmYuLjQ4NTdl
NTk2NzdmOTEwZjMzMWUyZDZmYTMxOThmMDNkNWY0YTQ0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTYzLDYgKzYzLDcgQEAKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiB0
eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZjsKICNlbmRpZgogCkBAIC01NTcsNyArNTU4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBG
SVhNRTogV2UnZCBsaWtlIHRvIGJlIGFibGUgdG8gZG8gdGhpcyB3aXRob3V0IHRoZSAjaWZkZWYs
IGJ1dCBXb3JrUXVldWUgKyBCaW5hcnlTZW1hcGhvcmUgaXNuJ3QgZ29vZCBlbm91Z2ggc2luY2UK
ICAgICAvLyBtdWx0aXBsZSByZXF1ZXN0cyB0byBjbGVhciB0aGUgY2FjaGUgY2FuIGNvbWUgaW4g
YmVmb3JlIHByZXZpb3VzIHJlcXVlc3RzIGNvbXBsZXRlLCBhbmQgd2UgbmVlZCB0byB3YWl0IGZv
ciBhbGwgb2YgdGhlbS4KICAgICAvLyBJbiB0aGUgZnV0dXJlIHVzaW5nIFdvcmtRdWV1ZSBhbmQg
YSBjb3VudGluZyBzZW1hcGhvcmUgd291bGQgd29yaywgYXMgd291bGQgV29ya1F1ZXVlIHN1cHBv
cnRpbmcgdGhlIGxpYmRpc3BhdGNoIGNvbmNlcHQgb2YgIndvcmsgZ3JvdXBzIi4KLSAgICBkaXNw
YXRjaF9ncm91cF90IG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgeyBudWxscHRyIH07CisgICAg
T1NPYmplY3RQdHI8ZGlzcGF0Y2hfZ3JvdXBfdD4gbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cDsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQppbmRleCA2MGFmOTNkZGY1MWRlNzkwMzI2NDU0NmM2YjAzNGJhMWI1YmE1NzJlLi41ZmJlODFk
Njg2YjljNzRkN2RlYjk2ODU2NDAzODEzZmU2N2VkZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBA
IC0xOTEsOSArMTkxLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFMKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY2xlYXJD
YWNoZURpc3BhdGNoR3JvdXApCi0gICAgICAgIG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSBk
aXNwYXRjaF9ncm91cF9jcmVhdGUoKTsKKyAgICAgICAgbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91
cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwogCi0gICAgYXV0byBn
cm91cCA9IG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXA7CisgICAgYXV0byBncm91cCA9IG1fY2xl
YXJDYWNoZURpc3BhdGNoR3JvdXAuZ2V0KCk7CiAgICAgZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZ3Jv
dXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNpbmNlLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byBhZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW21vZGlmaWVkU2lu
Y2UsICZhZ2dyZWdhdG9yXShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQppbmRl
eCBiNWUwZDFhM2Q1MTI1M2E1MDAzZGU2NWU1ODY5NzllNGQ4YzJkMDgwLi5iMGY5YTU5YmIyYzA4
Mzc4NWM4NTljYjcwMTU5MThhM2E2NDExNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQpAQCAtOTcsOSArOTcsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1U
ZXJtaW5hdGUoKQogewogICAgIGlmIChtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKSB7Ci0gICAg
ICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCwgRElTUEFU
Q0hfVElNRV9GT1JFVkVSKTsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2NsZWFyQ2FjaGVE
aXNwYXRjaEdyb3VwKTsKLSAgICAgICAgbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCA9IDA7Cisg
ICAgICAgIGRpc3BhdGNoX2dyb3VwX3dhaXQobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cC5nZXQo
KSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKKyAgICAgICAgbV9jbGVhckNhY2hlRGlzcGF0Y2hH
cm91cCA9IG51bGxwdHI7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKaW5kZXggNGY2YjE4NGZmNDBkOTkyODhlYjYwNjBhN2M1ODg2YjM3MzZjNGI4My4u
ZDliNTMwMzM1OGQ2NDc4NjZjOWFiNmE1N2NjMTdiZGVhOTQyZjhkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDU4LDEwICs0NTgsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNhbmNlbFJlY2VpdmVTb3VyY2UoKTsKIAogICAgIG1hY2hfcG9ydF90IG1fc2Vu
ZFBvcnQgeyBNQUNIX1BPUlRfTlVMTCB9OwotICAgIGRpc3BhdGNoX3NvdXJjZV90IG1fc2VuZFNv
dXJjZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9zb3VyY2VfdD4gbV9z
ZW5kU291cmNlOwogCiAgICAgbWFjaF9wb3J0X3QgbV9yZWNlaXZlUG9ydCB7IE1BQ0hfUE9SVF9O
VUxMIH07Ci0gICAgZGlzcGF0Y2hfc291cmNlX3QgbV9yZWNlaXZlU291cmNlIHsgbnVsbHB0ciB9
OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3NvdXJjZV90PiBtX3JlY2VpdmVTb3VyY2U7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IG1fcGVuZGluZ091dGdvaW5nTWFjaE1l
c3NhZ2U7CiAgICAgYm9vbCBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2Eu
bW0KaW5kZXggOGQ5Y2RlMDhmNDY3MTQxYTkwZDhlYWY5ZGQ3ODViNzkwMzhkNThlZS4uOTBiZGYy
NDg3NjI0OWNlZjE3MWJjOTJkNzY2ZTc0ZTAyZDQxODQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpAQCAtMTQ3LDggKzE0
Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAgICBBU1NFUlQo
bV9yZWNlaXZlUG9ydCk7CiAKICAgICAvLyBVbnJlZ2lzdGVyIG91ciBwb3J0cy4KLSAgICBkaXNw
YXRjaF9zb3VyY2VfY2FuY2VsKG1fc2VuZFNvdXJjZSk7Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZSht
X3NlbmRTb3VyY2UpOworICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5jZWwobV9zZW5kU291cmNlLmdl
dCgpKTsKICAgICBtX3NlbmRTb3VyY2UgPSBudWxscHRyOwogICAgIG1fc2VuZFBvcnQgPSBNQUNI
X1BPUlRfTlVMTDsKIApAQCAtMTU3LDggKzE1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZv
cm1JbnZhbGlkYXRlKCkKIAogdm9pZCBDb25uZWN0aW9uOjpjYW5jZWxSZWNlaXZlU291cmNlKCkK
IHsKLSAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1fcmVjZWl2ZVNvdXJjZSk7Ci0gICAgZGlz
cGF0Y2hfcmVsZWFzZShtX3JlY2VpdmVTb3VyY2UpOworICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5j
ZWwobV9yZWNlaXZlU291cmNlLmdldCgpKTsKICAgICBtX3JlY2VpdmVTb3VyY2UgPSBudWxscHRy
OwogICAgIG1fcmVjZWl2ZVBvcnQgPSBNQUNIX1BPUlRfTlVMTDsKIH0KQEAgLTIzMCwxMSArMjI4
LDExIEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgLy8gQ2hhbmdlIHRoZSBtZXNzYWdl
IHF1ZXVlIGxlbmd0aCBmb3IgdGhlIHJlY2VpdmUgcG9ydC4KICAgICBzZXRNYWNoUG9ydFF1ZXVl
TGVuZ3RoKG1fcmVjZWl2ZVBvcnQsIE1BQ0hfUE9SVF9RTElNSVRfTEFSR0UpOwogCi0gICAgbV9y
ZWNlaXZlU291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQ
RV9NQUNIX1JFQ1YsIG1fcmVjZWl2ZVBvcnQsIDAsIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRj
aFF1ZXVlKCkpOwotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihtX3JlY2Vp
dmVTb3VyY2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0geworICAg
IG1fcmVjZWl2ZVNvdXJjZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShE
SVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1JFQ1YsIG1fcmVjZWl2ZVBvcnQsIDAsIG1fY29ubmVj
dGlvblF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkpKTsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2
ZW50X2hhbmRsZXIobV9yZWNlaXZlU291cmNlLmdldCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyldIHsKICAgICAgICAgcmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigp
OwogICAgIH0pOwotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfY2FuY2VsX2hhbmRsZXIobV9yZWNl
aXZlU291cmNlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHJlY2VpdmVQb3J0
ID0gbV9yZWNlaXZlUG9ydF0geworICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfY2FuY2VsX2hhbmRs
ZXIobV9yZWNlaXZlU291cmNlLmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHJlY2VpdmVQb3J0ID0gbV9yZWNlaXZlUG9ydF0gewogI2lmICFQTEFURk9STShXQVRDSE9T
KQogICAgICAgICBtYWNoX3BvcnRfdW5ndWFyZChtYWNoX3Rhc2tfc2VsZigpLCByZWNlaXZlUG9y
dCwgcmVpbnRlcnByZXRfY2FzdDxtYWNoX3BvcnRfY29udGV4dF90Pihwcm90ZWN0ZWRUaGlzLmdl
dCgpKSk7CiAjZW5kaWYKQEAgLTI0MywxMCArMjQxLDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6b3Bl
bigpCiAKICAgICByZWYoKTsKICAgICBkaXNwYXRjaF9hc3luYyhtX2Nvbm5lY3Rpb25RdWV1ZS0+
ZGlzcGF0Y2hRdWV1ZSgpLCBeewotICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9yZWNlaXZlU291
cmNlKTsKKyAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSk7CiAK
ICAgICAgICAgaWYgKG1fc2VuZFNvdXJjZSkKLSAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZSht
X3NlbmRTb3VyY2UpOworICAgICAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2VuZFNvdXJjZS5n
ZXQoKSk7CiAKICAgICAgICAgZGVyZWYoKTsKICAgICB9KTsKQEAgLTM3MSwyMCArMzY5LDIwIEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4m
JiBlbmNvZGVyKQogCiB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNlKCkKIHsK
LSAgICBtX3NlbmRTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJD
RV9UWVBFX01BQ0hfU0VORCwgbV9zZW5kUG9ydCwgRElTUEFUQ0hfTUFDSF9TRU5EX0RFQUQgfCBE
SVNQQVRDSF9NQUNIX1NFTkRfUE9TU0lCTEUsIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaFF1
ZXVlKCkpOworICAgIG1fc2VuZFNvdXJjZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc291cmNl
X2NyZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1NFTkQsIG1fc2VuZFBvcnQsIERJU1BB
VENIX01BQ0hfU0VORF9ERUFEIHwgRElTUEFUQ0hfTUFDSF9TRU5EX1BPU1NJQkxFLCBtX2Nvbm5l
Y3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKSk7CiAgICAgbV9pc0luaXRpYWxpemluZ1NlbmRT
b3VyY2UgPSB0cnVlOwogCi0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9yZWdpc3RyYXRpb25faGFu
ZGxlcihtX3NlbmRTb3VyY2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KV0geworICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfcmVnaXN0cmF0aW9uX2hhbmRsZXIobV9zZW5k
U291cmNlLmdldCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIHsK
ICAgICAgICAgaWYgKCFtX3NlbmRTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1faXNJbml0aWFsaXppbmdTZW5kU291cmNlID0gZmFsc2U7CiAgICAgICAgIHJlc3VtZVNlbmRT
b3VyY2UoKTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIo
bV9zZW5kU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIHsK
KyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIobV9zZW5kU291cmNlLmdldCgp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIHsKICAgICAgICAgaWYg
KCFtX3NlbmRTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdW5zaWduZWQg
bG9uZyBkYXRhID0gZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKG1fc2VuZFNvdXJjZSk7CisgICAg
ICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtX3NlbmRT
b3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGlmIChkYXRhICYgRElTUEFUQ0hfTUFDSF9TRU5EX0RF
QUQpIHsKICAgICAgICAgICAgIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwpAQCAtNDAwLDcgKzM5OCw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNlbmRTb3VyY2UoKQogCiAgICAgaWYgKE1B
Q0hfUE9SVF9WQUxJRChtX3NlbmRQb3J0KSkgewogICAgICAgICBtYWNoX3BvcnRfdCBzZW5kUG9y
dCA9IG1fc2VuZFBvcnQ7Ci0gICAgICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfY2FuY2VsX2hhbmRs
ZXIobV9zZW5kU291cmNlLCBeeworICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9o
YW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgXnsKICAgICAgICAgICAgIC8vIFJlbGVhc2Ugb3Vy
IHNlbmQgcmlnaHQuCiAgICAgICAgICAgICBkZWFsbG9jYXRlU2VuZFJpZ2h0U2FmZWx5KHNlbmRQ
b3J0KTsKICAgICAgICAgfSk7CkBAIC01ODAsNyArNTc4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpy
ZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgICAgICAgICBkZWFsbG9jYXRlU2Vu
ZFJpZ2h0U2FmZWx5KHByZXZpb3VzTm90aWZpY2F0aW9uUG9ydCk7CiAKICAgICAgICAgICAgIGlu
aXRpYWxpemVTZW5kU291cmNlKCk7Ci0gICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5k
U291cmNlKTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3NlbmRTb3VyY2UuZ2V0KCkp
OwogICAgICAgICB9CiAKICAgICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCmlu
ZGV4IDViNjg4NGJmZjI5ZjhmNGY4ZGRhYzM1ZWVmY2VlODJlODVkNWMyOTMuLjU4NzYwOTA2MDhk
OWFmYzg4ZTM0MWM1ZGZmNzNmNWIzMTBlZmE4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCkBAIC0zMSw2ICszMSw4
IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4K
ICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNp
bXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KQEAgLTExOSw3ICsxMjEsMTEgQEAgc3Rh
dGljIGJvb2wgZGV0ZXJtaW5lSVRQU3RhdGVJbnRlcm5hbChib29sIGFwcFdhc0xpbmtlZE9uT3JB
ZnRlciwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiByZXN1bHQgIT0ga1RDQ0FjY2Vzc1ByZWZs
aWdodERlbmllZDsKIH0KIAotc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ19pdHBRdWV1ZTsKK3N0
YXRpYyBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYgaXRwUXVldWUoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90Pj4gaXRwUXVl
dWU7CisgICAgcmV0dXJuIGl0cFF1ZXVlOworfQogCiB2b2lkIGRldGVybWluZUlUUFN0YXRlKCkK
IHsKQEAgLTEzMCwxNCArMTM2LDEzIEBAIHZvaWQgZGV0ZXJtaW5lSVRQU3RhdGUoKQogICAgIGdf
Y3VycmVudElUUFN0YXRlID0gSVRQU3RhdGU6OkluaXRpYWxpemluZzsKICAgICBib29sIGFwcFdh
c0xpbmtlZE9uT3JBZnRlciA9IGxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpG
aXJzdFdpdGhTZXNzaW9uQ2xlYW51cEJ5RGVmYXVsdCk7CiAKLSAgICBnX2l0cFF1ZXVlID0gZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0cENoZWNrUXVldWUiLCBOVUxM
KTsKKyAgICBpdHBRdWV1ZSgpID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuaXRwQ2hlY2tRdWV1ZSIsIE5VTEwpKTsKIAotICAgIGRpc3BhdGNo
X2FzeW5jKGdfaXRwUXVldWUsIFthcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZp
ZXIgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKS5pc29sYXRlZENvcHko
KV0geworICAgIGRpc3BhdGNoX2FzeW5jKGl0cFF1ZXVlKCkuZ2V0KCksIFthcHBXYXNMaW5rZWRP
bk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZpZXIgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9
IGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJ
ZGVudGlmaWVyKSA/IElUUFN0YXRlOjpFbmFibGVkIDogSVRQU3RhdGU6OkRpc2FibGVkOwogCiAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICBkaXNwYXRj
aF9yZWxlYXNlKGdfaXRwUXVldWUpOwotICAgICAgICAgICAgZ19pdHBRdWV1ZSA9IG51bGxwdHI7
CisgICAgICAgICAgICBpdHBRdWV1ZSgpID0gbnVsbHB0cjsKICAgICAgICAgfSk7CiAgICAgfSk7
CiB9CkBAIC0xNDksMTAgKzE1NCwxMCBAQCBib29sIGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpCiAg
ICAgaWYgKGdfY3VycmVudElUUFN0YXRlID4gSVRQU3RhdGU6OkluaXRpYWxpemluZykKICAgICAg
ICAgcmV0dXJuIGdfY3VycmVudElUUFN0YXRlID09IElUUFN0YXRlOjpFbmFibGVkOwogCi0gICAg
UkVMRUFTRV9BU1NFUlQoZ19pdHBRdWV1ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXRwUXVldWUo
KSk7CiAKICAgICBfX2Jsb2NrIGJvb2wgaXNJVFBFbmFibGVkOwotICAgIGRpc3BhdGNoX3N5bmMo
Z19pdHBRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKGl0cFF1ZXVlKCkuZ2V0KCksIF57CiAg
ICAgICAgIGlzSVRQRW5hYmxlZCA9IGdfY3VycmVudElUUFN0YXRlID09IElUUFN0YXRlOjpFbmFi
bGVkOwogICAgIH0pOwogICAgIHJldHVybiBpc0lUUEVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZU1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KaW5kZXggYWIwNjM0ZjFhYzY1NTM3
NzM0ODE4NTAyYTkxNDNkMWFkZDExNDgzOC4uNzhlYWZmNDUyMDQ4N2NjM2RjZTMwNWUwNTQ0MWIx
NmM3NzgxNzQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2
aWNlTWFpbi5tbQpAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgdm9pZCBzZXRBcHBsZUxhbmd1YWdl
c1ByZWZlcmVuY2UoKQogCiBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19j
b25uZWN0aW9uX3QgcGVlcikKIHsKLSAgICBzdGF0aWMgeHBjX29iamVjdF90IHByaW9yaXR5Qm9v
c3RNZXNzYWdlID0gbnVsbHB0cjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQ
dHI8eHBjX29iamVjdF90Pj4gcHJpb3JpdHlCb29zdE1lc3NhZ2U7CiAKICAgICB4cGNfY29ubmVj
dGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKHBlZXIsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElT
UEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCkpOwogICAgIHhwY19jb25uZWN0aW9uX3Nl
dF9ldmVudF9oYW5kbGVyKHBlZXIsIF4oeHBjX29iamVjdF90IGV2ZW50KSB7CkBAIC0xMTgsMTkg
KzExOCwxOCBAQCBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jb25uZWN0
aW9uX3QgcGVlcikKICAgICAgICAgICAgICAgICAgICAgZHVwMihmZCwgU1RERVJSX0ZJTEVOTyk7
CiAKICAgICAgICAgICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57Ci0gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwg
ZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlh
bGl6ZXJGdW5jdGlvblB0cihwZWVyLCBldmVudCwgcHJpb3JpdHlCb29zdE1lc3NhZ2UuZ2V0KCku
Z2V0KCkpOwogCiAgICAgICAgICAgICAgICAgICAgIHNldEFwcGxlTGFuZ3VhZ2VzUHJlZmVyZW5j
ZSgpOwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgaWYgKHByaW9yaXR5
Qm9vc3RNZXNzYWdlKQotICAgICAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShwcmlvcml0eUJv
b3N0TWVzc2FnZSk7CisgICAgICAgICAgICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UuZ2V0KCkg
PSBudWxscHRyOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBMZWFrIGEgYm9vc3Qg
b250byB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgICAgICAgICBpZiAoIXN0cmNtcCh4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVzc2FnZS1uYW1lIiksICJwcmUtYm9vdHN0cmFw
IikpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIXByaW9yaXR5Qm9vc3RNZXNzYWdlKTsKLSAg
ICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVzc2FnZSA9IHhwY19yZXRhaW4oZXZlbnQpOwor
ICAgICAgICAgICAgICAgIGFzc2VydCghcHJpb3JpdHlCb29zdE1lc3NhZ2UuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIHByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpID0gZXZlbnQ7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMoZXZlbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDI1ODNjOTM1
MWI5Nzg0YzQzOWI5OTgwOTZjNzczMWU0MzVkNDIyMzIuLjZjZWY4N2YzYzQ2NDE3OWRmNzY2MmZk
YzM5OTIzYTA2MTNlMjFkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIHZvaWQgc2hhcmVhYmxlUmVzb3VyY2VE
ZWFsbG9jYXRlKHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKICAgICBzdGF0aWNfY2FzdDxTaGFyZWFi
bGVSZXNvdXJjZSo+KGluZm8pLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBjcmVh
dGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKCkKIH0KICAgICAKLXN0YXRpYyBDRkFsbG9j
YXRvclJlZiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291
cmNlKiByZXNvdXJjZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZVNo
YXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQog
ewogICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLAogICAgICAgICByZXNvdXJj
ZSwKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGNyZWF0ZVNoYXJlYWJs
ZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc28KICAgICAgICAgTlVM
TCwgLy8gcHJlZmVycmVkU2l6ZQogICAgIH07CiAKLSAgICByZXR1cm4gQ0ZBbGxvY2F0b3JDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpOworICAgIHJldHVybiBhZG9wdENGKENG
QWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KSk7CiB9CiAjZW5k
aWYKIApAQCAtODUsOCArODUsOCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNv
dXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVy
ZWYgd2hlbiBTaGFyZWRCdWZmZXIgaXMgZGVhbGxvY2F0ZWQuCiAKICNpZiBVU0UoQ0YpCi0gICAg
UmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBkZWFsbG9jYXRvciA9IGFkb3B0Q0YoY3JlYXRlU2hh
cmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKSk7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHN0YXRp
Y19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7CisgICAgYXV0byBk
ZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Cisg
ICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSgpKSwg
c3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgpKTsKICNlbGlmIFVTRShHTElC
KQogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRo
X2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10odm9pZCogZGF0YSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBkMDI0MjkwOGQ0YzlmNGZm
ZDE4NWJkOGUxYTUzMDU4OWRmOGFlZTAzLi4zMzdjOTM2NDczMjg1N2QyNzExNGY5NDAwNGNjZDJj
NTE5OTY4MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENv
ZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NG
LmNwcApAQCAtNTQxLDggKzU0MSw3IEBAIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJl
dGFpblB0cjxDRk51bWJlclJlZj4mIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgQVNTRVJUKGRhdGFSZWZlcmVuY2UuZGF0YSgpKTsKLSAgICBDRk51bWJlclJlZiBudW1iZXIg
PSBDRk51bWJlckNyZWF0ZSgwLCBudW1iZXJUeXBlLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0g
ICAgcmVzdWx0ID0gYWRvcHRDRihudW1iZXIpOworICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoMCwgbnVtYmVyVHlwZSwgZGF0YVJlZmVyZW5jZS5kYXRhKCkpKTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtNTgxLDExICs1ODAsMTEgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgUmV0YWluUHRyPENGU3RyaW5nUmVmPiYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENG
U3RyaW5nUmVmIHN0cmluZyA9IENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIGRhdGFSZWZlcmVu
Y2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgZW5jb2RpbmcsIGZhbHNlKTsKKyAgICBh
dXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgZGF0YVJlZmVy
ZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpLCBlbmNvZGluZywgZmFsc2UpKTsKICAg
ICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gYWRv
cHRDRihzdHJpbmcpOworICAgIHJlc3VsdCA9IFdURk1vdmUoc3RyaW5nKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2Fj
eVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVn
YWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAppbmRleCA2M2UzYWY0MWRhMDU1NzliYjU0MmEyZTY2
Nzg4OTgzMTBlNTVkOWI4Li5hMzk0MDY0OWZkYmYyZGVkNDg0YTRlMjYxMDJiOTIxY2MyODA3OGY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vz
c2lvblN0YXRlQ29kaW5nLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0YXRpYyBNYWxsb2NQdHI8
dWludDhfdCwgSGlzdG9yeUVudHJ5RGF0YUVuY29kZXJNYWxsb2M+IGVuY29kZVNlc3Npb25IaXN0
b3J5RW50CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9y
eUVudHJ5RGF0YShjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YXRlKQogewotICAgIHN0YXRpYyBD
RkFsbG9jYXRvclJlZiBmYXN0TWFsbG9jRGVhbGxvY2F0b3I7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4+IGZhc3RNYWxsb2NEZWFsbG9jYXRvcjsK
IAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10gewpAQCAtNDAxLDEzICs0MDEsMTMgQEAgc3RhdGljIFJldGFpblB0cjxD
RkRhdGFSZWY+IGVuY29kZVNlc3Npb25IaXN0b3J5RW50cnlEYXRhKGNvbnN0IEZyYW1lU3RhdGUm
IGZyYW0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBudWxscHRyLCAvLyBwcmVmZXJyZWRT
aXplCiAgICAgICAgIH07Ci0gICAgICAgIGZhc3RNYWxsb2NEZWFsbG9jYXRvciA9IENGQWxsb2Nh
dG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KTsKKyAgICAgICAgZmFzdE1h
bGxvY0RlYWxsb2NhdG9yLmdldCgpID0gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOwogICAgIH0pOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNp
emU7CiAgICAgYXV0byBidWZmZXIgPSBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShmcmFt
ZVN0YXRlLCBidWZmZXJTaXplKTsKIAotICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdp
dGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIubGVha1B0cigpLCBidWZm
ZXJTaXplLCBmYXN0TWFsbG9jRGVhbGxvY2F0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRh
dGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmxlYWtQ
dHIoKSwgYnVmZmVyU2l6ZSwgZmFzdE1hbGxvY0RlYWxsb2NhdG9yLmdldCgpLmdldCgpKSk7CiB9
CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVEaWN0aW9uYXJ5KHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8Q0ZTdHJpbmdSZWYsIENGVHlwZVJlZj4+IGtl
eVZhbHVlUGFpcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQppbmRleCAyZGYyMzM1ZDljNWFk
ZmFiNWE2YmU5MmM5Yzc3YzIwNTdiNjk5ZTJhLi5iZGRiYjA4OWRlZWI1ZWZlZjJjZTcyZWYyM2Vh
M2M5NjAxMDQwMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KQEAgLTM5LDcgKzM5LDcg
QEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdl
U2Vzc2lvbigpCiAgICAgaWYgKCFtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24pIHsKICAgICAgICAg
U3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0i
LCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogICAgICAgICBhdXRvIGNvb2tpZUFjY2VwdFBvbGlj
eSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvb2tpZUFjY2VwdFBvbGljeSgpOwotICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0g
YWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29va2llQWNjZXB0UG9saWN5KSk7CisgICAgICAgIGF1
dG8gc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
c2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29va2llQWNjZXB0UG9saWN5KTsK
ICAgICAgICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lv
bkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdl
dCgpKSk7CiAgICAgICAgIG1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPihXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSwg
V1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSksIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6SXNJbk1lbW9yeUNvb2tpZVN0b3JlOjpZZXMpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXgg
MDYxZjI2Njk4ZDhmYWNjYTEzNzE3MDQ0ZWRhMjYwODYxYzY4OGFkZi4uZDQ4MmI0MmUwYzI1NDEy
NzdjOTRhNDVkZmNmYjViMDE5NDUxMTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
IDxhdG9taWM+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV93YWl0aW5nRm9yQmFja2luZ1N0b3JlU3dhcCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2RlZmVycmVkUmVuZGVyaW5nVXBkYXRlV2hpbGVXYWl0aW5nRm9yQmFja2luZ1N0
b3JlU3dhcCB7IGZhbHNlIH07CiAKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fY29tbWl0UXVldWU7
CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9jb21taXRRdWV1ZTsKICAgICBS
ZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlcjsK
IAogICAgIEhhc2hTZXQ8UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKj4gbV9k
aXNwbGF5UmVmcmVzaE1vbml0b3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDk5OTI4NzFiMWMwMGU4MjEwY2I2NmRlYmQy
OGVlNmIwOGRiMTI0ZDUuLmEzODgxMzM1YTRlZjdkYTBhMjhmYjc2MDJiOGEyOTdhODA2ODUzMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0KQEAgLTY1LDcgKzY1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFcKICAgICB3ZWJQ
YWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7
CiAgICAgbV9yb290TGF5ZXItPnNldE5hbWUoImRyYXdpbmcgYXJlYSByb290Iik7CiAKLSAgICBt
X2NvbW1pdFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuQ29tbWl0UXVldWUiLCBudWxscHRy
KTsKKyAgICBtX2NvbW1pdFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5Db21taXRRdWV1ZSIsIG51bGxwdHIpKTsKIAogICAgIC8vIEluIG9yZGVyIHRvIGVuc3VyZSB0
aGF0IHdlIGdldCBhIHVuaXF1ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgcGVyLURyYXdpbmdBcmVh
IChuZWNlc3NhcnkgYmVjYXVzZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IKICAgICAvLyBpcyBkcml2
ZW4gYnkgdGhpcyBjbGFzcyksIGdpdmUgZWFjaCBwYWdlIGEgdW5pcXVlIERpc3BsYXlJRCBkZXJp
dmVkIGZyb20gV2ViUGFnZSdzIHVuaXF1ZSBJRC4KQEAgLTc4LDEwICs3OCw3IEBAIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3
ZWJQYWdlLCBjb25zdCBXCiAgICAgICAgIHNldFZpZXdFeHBvc2VkUmVjdCh2aWV3RXhwb3NlZFJl
Y3QpOwogfQogCi1SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhKCkKLXsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fY29tbWl0UXVldWUpOwotfQor
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgp
ID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0TmVlZHNE
aXNwbGF5KCkKIHsKQEAgLTQxMiw3ICs0MDksNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNo
ZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCiAgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2Uu
aWRlbnRpZmllcigpOwotICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5n
U3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7Cisg
ICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZS5nZXQoKSwgW2JhY2tpbmdTdG9yZUZsdXNo
ZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKICAgICAgICAgYmFj
a2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBNb25vdG9uaWNUaW1lIHRpbWVz
dGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3Bw
CmluZGV4IGE4NjcxZmYxOTYxMGI2MWJkNjlkZmYyNGQ1NjZiNmJjMjUwZDllM2UuLjk1ZWYyMjk0
YTk3NmY4NDRlYzNhNDk1ZWJiYmUzYjNmZDk2YTc0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQogICAgIC8vIFNlc3Npb24gbmFtZSBzaG91bGQg
YmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBuYW1lIHRvIGJlIHVuZGVy
IHRoZSBsaW1pdCwgb3RlaHJ3aXNlIHNhbmRib3ggcnVsZXMgd29uJ3Qgd29yayAoc2VlIDxyZGFy
Oi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgogICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJp
bmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7CiAKLSAgICBhdXRvIHNl
c3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNz
aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgYXV0byBzZXNzaW9uID0gV2Vi
Q29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNv
b2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJv
Y2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNz
aW9uSUQsIGNvCiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3RvcmFn
ZVNlc3Npb247CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBzdG9y
YWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KGNmSWRlbnRpZmllci5nZXQoKSkpOworICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6
OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOwogICAgIGVs
c2UKICAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKGNmSWRlbnRpZmllci5nZXQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERG
Vmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbQppbmRleCBjYmQ1MGI2ZmNhODU1NzE1YzJjN2NjM2Q2MDEyYWJkMTgyZTQwMjgwLi45N2Mz
NzljZWU2NmI0OTA4NjkxYWYwZGYxZWNiNjY5YmUzYjY1ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViTlNWaWV3RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJL
aXRMZWdhY3kvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01OSwxMSArNjAsMTEgQEAgc3RhdGlj
IGludCBjb21wYXJlUGFnZVJlY3RzKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYXJyYXkp
Owogc3RhdGljIGNvbnN0IGZsb2F0IFBBR0VfV0lEVEhfSU5TRVQgICAgID0gNC4wICogMi4wOwog
c3RhdGljIGNvbnN0IGZsb2F0IFBBR0VfSEVJR0hUX0lOU0VUICAgID0gNC4wICogMi4wOwogCi1z
dGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKENHRmxvYXQgd2hp
dGUsIENHRmxvYXQgYWxwaGEpCitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNH
Q29sb3JXaXRoRGV2aWNlV2hpdGUoQ0dGbG9hdCB3aGl0ZSwgQ0dGbG9hdCBhbHBoYSkKIHsKLSAg
ICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGdyYXlTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURl
dmljZUdyYXkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4+IGdyYXlTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3Jh
eSgpKTsKICAgICBjb25zdCBDR0Zsb2F0IGNvbXBvbmVudHNbXSA9IHsgd2hpdGUsIGFscGhhIH07
Ci0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoZ3JheVNwYWNlLCBjb21wb25lbnRzKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGdyYXlTcGFjZS5nZXQoKS5nZXQoKSwgY29tcG9u
ZW50cykpOwogfQogCiBAaW1wbGVtZW50YXRpb24gV2ViUERGVmlldyB7CkBAIC04MywxNCArODQs
MTQgQEAgKyAoTlNBcnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlcwogCiArIChDR0NvbG9yUmVmKXNo
YWRvd0NvbG9yCiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYgc2hhZG93Q29sb3IgPSBjcmVhdGVD
R0NvbG9yV2l0aERldmljZVdoaXRlKDAsIDIuMCAvIDMpOwotICAgIHJldHVybiBzaGFkb3dDb2xv
cjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBzaGFk
b3dDb2xvciA9IGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUoMCwgMi4wIC8gMyk7CisgICAg
cmV0dXJuIHNoYWRvd0NvbG9yLmdldCgpLmdldCgpOwogfQogCiArIChDR0NvbG9yUmVmKWJhY2tn
cm91bmRDb2xvcgogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIGJhY2tncm91bmRDb2xvciA9IGNy
ZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUoMjA0LjAgLyAyNTUsIDEpOwotICAgIHJldHVybiBi
YWNrZ3JvdW5kQ29sb3I7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0Nv
bG9yUmVmPj4gYmFja2dyb3VuZENvbG9yID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgy
MDQuMCAvIDI1NSwgMSk7CisgICAgcmV0dXJuIGJhY2tncm91bmRDb2xvci5nZXQoKS5nZXQoKTsK
IH0KIAogLy8gVGhpcyBpcyBhIHNlY3JldCBwcm90b2NvbCBmb3IgV2ViRGF0YVNvdXJjZSBhbmQg
V2ViRnJhbWVWaWV3IHRvIG9mZmVyIHVzIHRoZSBvcHBvcnR1bml0eSB0byBkbyBzb21ldGhpbmcg
ZGlmZmVyZW50IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJF
bGVtZW50RGljdGlvbmFyeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxl
bWVudERpY3Rpb25hcnkubW0KaW5kZXggMWZiNTE4Zjg3NGI4M2U2NGFmZTVmZjQ5OGQxZWY1MWNl
MzE4NWZjOC4uYWViNGQ4ZjE2ZmRkYjAyNTUxMDhiMmEwMGViOWY2NzIxNWYxNzY0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVtZW50RGljdGlvbmFyeS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5
Lm1tCkBAIC01MCwxMSArNTAsMTUgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0
YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGxvb2t1cFRhYmxlID0gTlVMTDsKK3N0YXRpYyBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGxvb2t1cFRhYmxlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+PiBs
b29rdXBUYWJsZTsKKyAgICByZXR1cm4gbG9va3VwVGFibGU7Cit9CiAKIHN0YXRpYyB2b2lkIGFk
ZExvb2t1cEtleShOU1N0cmluZyAqa2V5LCBTRUwgc2VsZWN0b3IpCiB7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUobG9va3VwVGFibGUsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXksIHNlbGVj
dG9yKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShsb29rdXBUYWJsZSgpLmdldCgpLCAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5LCBzZWxlY3Rvcik7CiB9CiAKIHN0YXRpYyB2b2lkIGNhY2hl
VmFsdWVGb3JLZXkoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICp2YWx1ZSwgdm9pZCAqc2Vs
ZikKQEAgLTc2LDEwICs4MCwxMCBAQCArICh2b2lkKWluaXRpYWxpemUKIAogKyAodm9pZClpbml0
aWFsaXplTG9va3VwVGFibGUKIHsKLSAgICBpZiAobG9va3VwVGFibGUpCisgICAgaWYgKGxvb2t1
cFRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxvb2t1cFRhYmxlID0gQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGQ29weVN0cmluZ0Rp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsIE5VTEwpOworICAgIGxvb2t1cFRhYmxlKCkgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRkNv
cHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKSk7CiAKICAgICBhZGRMb29rdXBL
ZXkoV2ViRWxlbWVudERPTU5vZGVLZXksIEBzZWxlY3RvcihfZG9tTm9kZSkpOwogICAgIGFkZExv
b2t1cEtleShXZWJFbGVtZW50RnJhbWVLZXksIEBzZWxlY3Rvcihfd2ViRnJhbWUpKTsKQEAgLTEy
NSw3ICsxMjksNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAodm9pZClfZmlsbENhY2hlCiB7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlvbihsb29rdXBUYWJsZSwgY2FjaGVWYWx1ZUZvcktl
eSwgKF9fYnJpZGdlIHZvaWQqKXNlbGYpOworICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24o
bG9va3VwVGFibGUoKS5nZXQoKSwgY2FjaGVWYWx1ZUZvcktleSwgKF9fYnJpZGdlIHZvaWQqKXNl
bGYpOwogICAgIF9jYWNoZUNvbXBsZXRlID0gWUVTOwogfQogCkBAIC0xNDksMTIgKzE1MywxMiBA
QCAtIChpZClvYmplY3RGb3JLZXk6KGlkKWtleQogICAgIGlmICh2YWx1ZSB8fCBfY2FjaGVDb21w
bGV0ZSB8fCBbX25pbFZhbHVlcyBjb250YWluc09iamVjdDprZXldKQogICAgICAgICByZXR1cm4g
dmFsdWU7CiAKLSAgICBTRUwgc2VsZWN0b3IgPSBzdGF0aWNfY2FzdDxTRUw+KGNvbnN0X2Nhc3Q8
dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGxvb2t1cFRhYmxlLCAoX19icmlkZ2UgQ0ZUeXBl
UmVmKWtleSkpKTsKKyAgICBTRUwgc2VsZWN0b3IgPSBzdGF0aWNfY2FzdDxTRUw+KGNvbnN0X2Nh
c3Q8dm9pZCo+KENGRGljdGlvbmFyeUdldFZhbHVlKGxvb2t1cFRhYmxlKCkuZ2V0KCksIChfX2Jy
aWRnZSBDRlR5cGVSZWYpa2V5KSkpOwogICAgIGlmICghc2VsZWN0b3IpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgdmFsdWUgPSBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdOwogCi0g
ICAgTlNVSW50ZWdlciBsb29rdXBUYWJsZUNvdW50ID0gQ0ZEaWN0aW9uYXJ5R2V0Q291bnQobG9v
a3VwVGFibGUpOworICAgIE5TVUludGVnZXIgbG9va3VwVGFibGVDb3VudCA9IENGRGljdGlvbmFy
eUdldENvdW50KGxvb2t1cFRhYmxlKCkuZ2V0KCkpOwogICAgIGlmICh2YWx1ZSkgewogICAgICAg
ICBpZiAoIV9jYWNoZSkKICAgICAgICAgICAgIF9jYWNoZSA9IFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpsb29rdXBUYWJsZUNvdW50XTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBkMDA4ZmJiYTI4ZjIxOThmOGIw
OTFiYjNjM2EyZWU3YzgzMjAzNTViLi41YjBlZThhM2FjOGMzMzNiNmVlMzQ0Y2RkOWMzYjU1NzY1
YzI2ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC0xMjYzLDI4ICsxMjYzLDMyIEBAIHN0YXRpYyBDRlNldENhbGxCYWNrcyBOb25SZXRhaW5pbmdT
ZXRDYWxsYmFja3MgPSB7CiAgICAgQ0ZIYXNoCiB9OwogCi1zdGF0aWMgQ0ZNdXRhYmxlU2V0UmVm
IGFsbFdlYlZpZXdzU2V0Oworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVTZXRSZWY+JiBhbGxX
ZWJWaWV3c1NldCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11
dGFibGVTZXRSZWY+PiBhbGxXZWJWaWV3c1NldDsKKyAgICByZXR1cm4gYWxsV2ViVmlld3NTZXQ7
Cit9CiAKICsgKHZvaWQpX21ha2VBbGxXZWJWaWV3c1BlcmZvcm1TZWxlY3RvcjooU0VMKXNlbGVj
dG9yCiB7Ci0gICAgaWYgKCFhbGxXZWJWaWV3c1NldCkKKyAgICBpZiAoIWFsbFdlYlZpZXdzU2V0
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFsoX19icmlkZ2UgTlNNdXRhYmxlU2V0ICopYWxs
V2ViVmlld3NTZXQgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdOworICAgIFso
X19icmlkZ2UgTlNNdXRhYmxlU2V0ICopYWxsV2ViVmlld3NTZXQoKS5nZXQoKSBtYWtlT2JqZWN0
c1BlcmZvcm1TZWxlY3RvcjpzZWxlY3Rvcl07CiB9CiAKIC0gKHZvaWQpX3JlbW92ZUZyb21BbGxX
ZWJWaWV3c1NldAogewotICAgIGlmIChhbGxXZWJWaWV3c1NldCkKLSAgICAgICAgQ0ZTZXRSZW1v
dmVWYWx1ZShhbGxXZWJWaWV3c1NldCwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKKyAgICBp
ZiAoYWxsV2ViVmlld3NTZXQoKSkKKyAgICAgICAgQ0ZTZXRSZW1vdmVWYWx1ZShhbGxXZWJWaWV3
c1NldCgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwogfQogCiAtICh2b2lkKV9h
ZGRUb0FsbFdlYlZpZXdzU2V0CiB7Ci0gICAgaWYgKCFhbGxXZWJWaWV3c1NldCkKLSAgICAgICAg
YWxsV2ViVmlld3NTZXQgPSBDRlNldENyZWF0ZU11dGFibGUoTlVMTCwgMCwgJk5vblJldGFpbmlu
Z1NldENhbGxiYWNrcyk7CisgICAgaWYgKCFhbGxXZWJWaWV3c1NldCgpKQorICAgICAgICBhbGxX
ZWJWaWV3c1NldCgpID0gYWRvcHRDRihDRlNldENyZWF0ZU11dGFibGUoTlVMTCwgMCwgJk5vblJl
dGFpbmluZ1NldENhbGxiYWNrcykpOwogCi0gICAgQ0ZTZXRTZXRWYWx1ZShhbGxXZWJWaWV3c1Nl
dCwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKKyAgICBDRlNldFNldFZhbHVlKGFsbFdlYlZp
ZXdzU2V0KCkuZ2V0KCksIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIEBlbmQKQEAg
LTIyMzAsNyArMjIzNCw3IEBAICsgKHZvaWQpY2xvc2VBbGxXZWJWaWV3cwogICAgIFdlYkNvcmU6
OkRPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKCk7CiAKICAgICAvLyBU
aGlzIHdpbGwgY2xvc2UgdGhlIFdlYlZpZXdzIGluIGEgcmFuZG9tIG9yZGVyLiBDaGFuZ2UgdGhp
cyBpZiBjbG9zZSBvcmRlciBpcyBpbXBvcnRhbnQuCi0gICAgZm9yIChXZWJWaWV3ICp3ZWJWaWV3
IGluIFsoX19icmlkZ2UgTlNTZXQgKilhbGxXZWJWaWV3c1NldCBhbGxPYmplY3RzXSkKKyAgICBm
b3IgKFdlYlZpZXcgKndlYlZpZXcgaW4gWyhfX2JyaWRnZSBOU1NldCAqKWFsbFdlYlZpZXdzU2V0
KCkuZ2V0KCkgYWxsT2JqZWN0c10pCiAgICAgICAgIFt3ZWJWaWV3IGNsb3NlXTsKIH0KIApAQCAt
NjkxMSw3ICs2OTE1LDcgQEAgKyAoQk9PTClfZGlkU2V0Q2FjaGVNb2RlbAogKyAoV2ViQ2FjaGVN
b2RlbClfbWF4Q2FjaGVNb2RlbEluQW55SW5zdGFuY2UKIHsKICAgICBXZWJDYWNoZU1vZGVsIGNh
Y2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7Ci0gICAgTlNFbnVtZXJhdG9y
ICplbnVtZXJhdG9yID0gWyhOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCBvYmplY3RFbnVt
ZXJhdG9yXTsKKyAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbKE5TTXV0YWJsZVNldCAq
KWFsbFdlYlZpZXdzU2V0KCkuZ2V0KCkgb2JqZWN0RW51bWVyYXRvcl07CiAgICAgd2hpbGUgKFdl
YlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbZW51bWVyYXRvciBuZXh0T2JqZWN0XSBwcmVm
ZXJlbmNlc10pCiAgICAgICAgIGNhY2hlTW9kZWwgPSBzdGQ6Om1heChjYWNoZU1vZGVsLCBbcHJl
ZmVyZW5jZXMgY2FjaGVNb2RlbF0pOwogICAgIHJldHVybiBjYWNoZU1vZGVsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA1MTFhOTJi
NzJkMWNhMGQyMzNkNDkxYzMwMDE5NjM0MzFjYzY0ZDJhLi44ZjI3MTYyYmJhZjE4ZWUxYzExOGI5
NTExZjUxYjQ3ZTQ0ODU3NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMTk3LDkgKzE5Nyw3IEBAIEhSRVNVTFQgV2ViQXBwbGlj
YXRpb25DYWNoZTo6b3JpZ2luc1dpdGhDYWNoZShJUHJvcGVydHlCYWcqKiBvcmlnaW5zKQogICAg
IGZvciAoYXV0byYgY29yZU9yaWdpbiA6IGNvcmVPcmlnaW5zKQogICAgICAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoYXJyYXlJdGVtLmdldCgpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihXZWJTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2UoY29yZU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLnB0
cigpKSkpOwogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGRpY3Rpb25h
cnkgPSBhZG9wdENGKAotICAgICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKLQorICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKF9ic3RyX3QoTCJvcmlnaW5zIikpOwogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgYXJyYXlJdGVtLmdl
dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApp
bmRleCBlYTBiNjc1MWM1NTRlODI3ZGM5ODI1NWNkNGE3MTU3ZjFkNWFkMmIyLi4xZDI3MDJhZGIw
ODI3N2M0NDUwOGQzZGZiZGM0Mjc5ODZkY2ZjMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIEhSRVNVTFQgV2Vi
RG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwoX0luX29wdF8gSVdlYlVSTENyZWRlbnRpYWwqIGNyZWRl
bnRpYWwsIF9Jbl9vCiAgICAgaWYgKCF3ZWJDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gRV9O
T0lOVEVSRkFDRTsKIAotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVu
dGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpKSk7Cisg
ICAgYXV0byBjZkNyZWRlbnRpYWwgPSBjcmVhdGVDRih3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFs
KCkpOwogCiAgICAgaWYgKG1fZG93bmxvYWQpCiAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVk
ZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgd2ViQ2hhbGxlbmdl
LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKQEAg
LTM3Niw3ICszNzYsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNoYWxsZQogICAgIGlmICghQ0ZVUkxB
dXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQoY2hhbGxlbmdlKSkgewogICAgICAg
ICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KGVtcHR5U3RyaW5nKCks
IGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpKTsK
ICAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihj
cmVkZW50aWFsKSk7CisgICAgICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGNyZWF0ZUNGKGNy
ZWRlbnRpYWwpOwogICAgICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3du
bG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcApp
bmRleCBkNWJlZWY4MmU5OTA4OTFhNzJlNmI0ZmM0YmUzNzg4MzBhYjZhYzkwLi5mZjM0YWQwNzM3
YTI2ZDJhMTczZWNkYmI5Yjk2N2I1OWUxNmJlNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHAKQEAgLTM3MCwxNCArMzcwLDEyIEBAIHN0YXRpYyBib29sIHByZXBhcmVE
ZXZpY2UoSURpcmVjdDNERGV2aWNlOSogZGV2aWNlLCBjb25zdCBDR1JlY3QmIGJvdW5kcywgSURp
cmVjCiAKIHN0YXRpYyBDR1JlY3QgdXBkYXRlQm91bmRzKENBUmVuZGVyVXBkYXRlKiB1cGRhdGUp
CiB7Ci0gICAgQ0dTUmVnaW9uT2JqIHJnbiA9IENBUmVuZGVyVXBkYXRlQ29weVJlZ2lvbih1cGRh
dGUpOworICAgIGF1dG8gcmduID0gYWRvcHRDRihDQVJlbmRlclVwZGF0ZUNvcHlSZWdpb24odXBk
YXRlKSk7CiAgICAgaWYgKCFyZ24pCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwogCiAgICAg
Q0dSZWN0IHJlc3VsdDsKLSAgICBDR0Vycm9yIGVycm9yID0gQ0dTR2V0UmVnaW9uQm91bmRzKHJn
biwgJnJlc3VsdCk7Ci0gICAgQ0dTUmVsZWFzZVJlZ2lvbihyZ24pOwotCisgICAgQ0dFcnJvciBl
cnJvciA9IENHU0dldFJlZ2lvbkJvdW5kcyhyZ24uZ2V0KCksICZyZXN1bHQpOwogICAgIHJldHVy
biBlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MgPyByZXN1bHQgOiBDR1JlY3RaZXJvOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApp
bmRleCBiNDE2OGJmODQxOTFlOGExMTQzOWQ5MDAzMmZlODllYTRkMjZmNzA0Li40M2NjMWJhMjY3
NzhhOGRhYTYwZTEwZjBlMmNkM2MwNjE1NDE2ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKQEAgLTY3LDE3ICs2NywxNyBAQCBz
dGF0aWMgTG9jYWxpemVkU3RyaW5nTWFwIGZyYW1ld29ya0xvY1N0cmluZ3MoKQogY2xhc3MgTG9j
YWxpemVkU3RyaW5nIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbGl6ZWRTdHJpbmcp
OwogcHVibGljOgotICAgIExvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBzdHJpbmcpCi0gICAg
ICAgIDogbV9jZlN0cmluZyhzdHJpbmcpCisgICAgTG9jYWxpemVkU3RyaW5nKFJldGFpblB0cjxD
RlN0cmluZ1JlZj4mJiBzdHJpbmcpCisgICAgICAgIDogbV9jZlN0cmluZyhXVEZNb3ZlKHN0cmlu
ZykpCiAgICAgewotICAgICAgICBBU1NFUlRfQVJHKHN0cmluZywgc3RyaW5nKTsKKyAgICAgICAg
QVNTRVJUKG1fY2ZTdHJpbmcpOwogICAgIH0KIAogICAgIG9wZXJhdG9yIExQQ1RTVFIoKSBjb25z
dDsKLSAgICBvcGVyYXRvciBDRlN0cmluZ1JlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2ZTdHJpbmc7
IH0KKyAgICBvcGVyYXRvciBDRlN0cmluZ1JlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2ZTdHJpbmcu
Z2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBDRlN0cmluZ1JlZiBtX2NmU3RyaW5nOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbV9jZlN0cmluZzsKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0
cmluZzsKIH07CiAKQEAgLTg2LDcgKzg2LDcgQEAgTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBM
UENUU1RSKCkgY29uc3QKICAgICBpZiAoIW1fc3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG1fc3RyaW5nLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpOwogCi0gICAgbV9zdHJpbmcgPSBt
X2NmU3RyaW5nOworICAgIG1fc3RyaW5nID0gbV9jZlN0cmluZy5nZXQoKTsKIAogICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAxOyBpIDwgbV9zdHJpbmcubGVuZ3RoKCk7IGkrKykKICAgICAgICAg
aWYgKG1fc3RyaW5nW2ldID09ICdAJyAmJiAobV9zdHJpbmdbaSAtIDFdID09ICclJyB8fCAoaSA+
IDIgJiYgbV9zdHJpbmdbaSAtIDFdID09ICckJyAmJiBtX3N0cmluZ1tpIC0gMl0gPj0gJzEnICYm
IG1fc3RyaW5nW2kgLSAyXSA8PSAnOScgJiYgbV9zdHJpbmdbaSAtIDNdID09ICclJykpKQpAQCAt
MTUyLDcgKzE1Miw3IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBjZkJ1bmRsZUZvclN0cmluZ3NCdW5k
bGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzCiAgICAgcmV0dXJuIHN0cmlu
Z3NCdW5kbGUtPmJ1bmRsZTsKIH0KIAotc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRT
dHJpbmdGcm9tQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRs
ZSwgY29uc3QgU3RyaW5nJiBrZXkpCitzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb3B5
TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0
cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOwogCkBAIC0x
NjAsNyArMTYwLDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9t
QnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgQ0ZTdHJpbmdSZWYgcmVzdWx0ID0gQ0ZD
b3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdENG
KENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApKTsKIAogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3Ry
aW5nICVzIGluIGJ1bmRsZSIsIGtleS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDBhZmZi
NDVhMTdmYmJjOThjNzBhZWU4MmI1ZWI5ZWVhNTJjNjhmMDcuLjViYmRlY2FhZTUzOTYyMTUzMzhi
OTE0MGIyY2I2YjBmMDRjZGIzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKQEAgLTExNyw3ICsxMTcsMTEgQEAgc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gc3RyaW5nVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGUHJvcGVydHlMaXN0UmVmIHYK
IAogLy8gV2ViUHJlZmVyZW5jZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGRl
ZmF1bHRTZXR0aW5nczsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgZGVmYXVs
dFNldHRpbmdzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4+IGRlZmF1bHRTZXR0aW5nczsKKyAgICByZXR1cm4gZGVmYXVsdFNldHRpbmdz
OworfQogCiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFdlYlByZWZlcmVuY2VzOjptX2FwcGxpY2F0
aW9uSWQgPSBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsKICNlbmRpZgpAQCAtMjE0
LDE1NyArMjE4LDE1NyBAQCBDRlN0cmluZ1JlZiBXZWJQcmVmZXJlbmNlczo6YXBwbGljYXRpb25J
ZCgpCiB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKIHsK
ICNpZiBVU0UoQ0YpCi0gICAgaWYgKGRlZmF1bHRTZXR0aW5ncykKKyAgICBpZiAoZGVmYXVsdFNl
dHRpbmdzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
ZGVmYXVsdHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAg
IGF1dG8gZGVmYXVsdHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogCiAgICAgSU5JVElBTElaRV9ERUZBVUxUX1BSRUZFUkVOQ0VTX0RJQ1RJT05B
UllfRlJPTV9HRU5FUkFURURfUFJFRkVSRU5DRVM7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVyZW5jZUtleSksIENGU1RS
KCJUaW1lcyBOZXcgUm9tYW4iKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ291cmllciBOZXci
KSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNlcmlm
Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVy
ZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWlj
IFNhbnMgTVMiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQaWN0b2dyYXBo
Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIjkiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYiKSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXpl
UHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVyZW5jZUtleSksIENG
U1RSKCJUaW1lcyBOZXcgUm9tYW4iKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ291
cmllciBOZXciKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdFNlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFu
IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIpKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZvbnRQ
cmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5j
ZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQaWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkp
LCBDRlNUUigiU2Vnb2UgVUkgU3ltYm9sIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjki
KSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTYiKSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZv
bnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0
RGVmYXVsdEVuY29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQs
IGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nIG9uIFdpbmRvd3MiKSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1l
UHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0RW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFs
bG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQXVk
aW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU1JlZ2lvbnNFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRFeHBlcmlt
ZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRab29tc1Rl
eHRPbmx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2FkU2l0ZUljb25zS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSksIENGU1RSKCIxODAw
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRUYWJU
b0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVLZXlFcXVpdmFsZW50c1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93c1VSTHNJblRvb2xUaXBzUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RSKCIxIikpOwotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQREZTY2FsZUZhY3RvclBy
ZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hv
dWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgZGVmYXVsdERlZmF1bHRFbmNv
ZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldEVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRMb2NhdGlvblByZWZlcmVuY2VL
ZXkpLCBDRlNUUigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRKYXZhRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdFJ1bnRpbWVGbGFn
c1ByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc1ByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
Q1NTUmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREYXRhYmFzZXNF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TG9jYWxTdG9yYWdlRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFpvb21zVGV4dE9ubHlQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdERpc3BsYXlJbWFnZXNLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExvYWRTaXRlSWNvbnNL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5
KSwgQ0ZTVFIoIjE4MDAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXNw
ZWN0U3RhbmRhcmRTdHlsZUtleUVxdWl2YWxlbnRzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hv
d3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
UERGRGlzcGxheU1vZGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjEiKSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBERlNjYWxlRmFjdG9yUHJl
ZmVyZW5jZUtleSksIENGU1RSKCIwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0bGVzUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsaW5rQmVo
YXZpb3JTdHJpbmdSZWYgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBD
RlNUUigiJWQiKSwgV2ViS2l0RWRpdGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yKSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2
aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5nZXQoKSk7Ci0KLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SGlzdG9yeUl0ZW1MaW1p
dEtleSksIENGU1RSKCIxMDAwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpLCBDRlNUUigiNyIpKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNl
TG9jYXRpb25LZXkpLCBDRlNUUigiIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdDb250
cmFzdFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZlcmVu
Y2VLZXkpLCBDRlNUUigiMiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoQWxsb3dDb250aW51
b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNlS2V5KSwgbGlua0JlaGF2
aW9yU3RyaW5nUmVmLmdldCgpKTsKKworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5SXRlbUxpbWl0S2V5KSwgQ0ZTVFIoIjEwMDAiKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEhp
c3RvcnlBZ2VJbkRheXNMaW1pdEtleSksIENGU1RSKCI3IikpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VMb2NhdGlvbktl
eSksIENGU1RSKCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihX
ZWJLaXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Rm9udFNtb290
aGluZ0NvbnRyYXN0UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViR3JhbW1hckNoZWNraW5nRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihBbGxvd0NvbnRpbnVvdXNTcGVsbENoZWNraW5nUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkpLCBDRlNUUigiIikp
OwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZU1vZGVsUmVmID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiksIFdlYkNhY2hlTW9kZWxE
b2N1bWVudFZpZXdlcikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYuZ2V0KCkpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDYWNo
ZU1vZGVsUHJlZmVyZW5jZUtleSksIGNhY2hlTW9kZWxSZWYuZ2V0KCkpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQYWludE5hdGl2ZUNvbnRy
b2xzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250cm9sc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRT
aG93RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEROU1ByZWZldGNoaW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RnVs
bFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlcXVlc3RBbmltYXRp
b25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0Rpc3BsYXlBbmRS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRBbGxv
d0Rpc3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdEN1c3RvbUVsZW1lbnRzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRD
dXN0b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJBbmltYXRp
b25zQ29tcG9zaXRlT3BlcmF0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc011dGFibGVUaW1lbGluZXNFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU0N1c3RvbVByb3BlcnRpZXNB
bmRWYWx1ZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TGlua1ByZWxvYWRFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExpbmtQcmVsb2FkRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQcmVsb2FkaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRWaXN1
YWxWaWV3cG9ydEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VmlzdWFs
Vmlld3BvcnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U2Ny
b2xsaW5nQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NPTVZpZXdT
Y3JvbGxpbmdBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVzaXplT2JzZXJ2
ZXJFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlc2l6ZU9ic2VydmVyRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Ntb290aFNjcm9sbGluZ0Vu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U21vb3RoU2Nyb2xs
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvcmVNYXRoTUxFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
Q29udGFjdFBpY2tlckFQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBc3BlY3RS
YXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0V2ViU1FMRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0luZGl2aWR1
YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dENTU0luZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dE92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
T3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwogCi0gICAgZGVmYXVsdFNldHRpbmdzID0gZGVmYXVsdHM7CisgICAgZGVmYXVsdFNldHRpbmdz
KCkgPSBXVEZNb3ZlKGRlZmF1bHRzKTsKICNlbmRpZgogfQogCkBAIC0zNzksNyArMzgzLDcgQEAg
UmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXko
Q0ZTdHJpbmdSZWYga2V5KQogICAgIGlmICh2YWx1ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwog
Ci0gICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncywga2V5KTsK
KyAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVmYXVsdFNldHRpbmdzKCkuZ2V0KCks
IGtleSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFZhbHVlRm9yS2V5KENGU3RyaW5n
UmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUpCkBAIC02MjAsNyArNjI0LDcgQEAgdm9p
ZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKENG
RGljdGlvbmFyeVJlZiBkaWN0KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYg
KG9taXREZWZhdWx0cykgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIGRlZmF1bHRWYWx1ZSA9IENG
RGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncywga2V5c1tpXSk7CisgICAgICAgICAg
ICBDRlR5cGVSZWYgZGVmYXVsdFZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVmYXVsdFNl
dHRpbmdzKCkuZ2V0KCksIGtleXNbaV0pOwogICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSAm
JiBDRkVxdWFsKGRlZmF1bHRWYWx1ZSwgdmFsdWVzW2ldKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGY2NDk5MjUxMzE5YjEyNGFmOWJlYzY0MzI5MjUxODc4MDBhNzZkNzkuLjAw
MGQ2OTQ2ZDVjN2ExYWQ0MjQ2NjRiZDJlMjIzNDk1Y2FiM2I4MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
My0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRh
aW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxE
dW1wU3VwcG9ydENHLmNwcDoKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRleHQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oOgorICAgICAgICAoQml0
bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQpOgorICAgICAgICAo
Qml0bWFwQ29udGV4dDo6Qml0bWFwQ29udGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoV2ViVGhyZWFkTG9ja0FmdGVyRGVsZWdh
dGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
UGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHA6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0RnJv
bVdlYlZpZXcpOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBJbWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcDoK
KyAgICAgICAgKEltYWdlRGlmZjo6UGxhdGZvcm1JbWFnZTo6cGl4ZWxzIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgorICAgICAgICAo
V1RSOjpjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZUNH
Q29udGV4dEZyb21JbWFnZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4
ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6CisKIDIwMjEtMDMtMTAgIE1pY2hhZWwgQ2F0YW56
YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW1dQRV1bR1RLXSBJbnRyb2R1
Y2UgTmVlZHNVbmJyYW5kZWRVc2VyQWdlbnQgcXVpcmsgYW5kIHVzZSBpdCBmb3IgYWNjb3VudHMu
Z29vZ2xlLmNvbSwgZG9jcy5nb29nbGUuY29tLCBhbmQgZHJpdmUuZ29vZ2xlLmNvbQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKaW5kZXggNWJjMDQw
M2I4MTFiYzY1NWRkMjBmYTJkNDA5MjI5OWYwZTQwN2Q4NS4uOGU2ZGQ1ZmVkN2QyYzJlYjM5YmNl
ZWJiMWQ0NjhjY2VkNTkyOGNkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cv
UGl4ZWxEdW1wU3VwcG9ydENHLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhl
bER1bXBTdXBwb3J0Q0cuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgUmVmUHRyPEJpdG1hcENvbnRl
eHQ+IGNyZWF0ZUJpdG1hcENvbnRleHQoc2l6ZV90IHBpeGVsc1dpZGUsIHNpemVfdCBwaXhlbHNI
aWdoLAogICAgIAogICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFwIGluIHRoZSBkZXZpY2UgY29s
b3Igc3BhY2UgcHJldmVudHMgYW55IGNvbG9yIGNvbnZlcnNpb24gd2hlbiB0aGUgaW1hZ2Ugb2Yg
dGhlIHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkp
OwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZl
ciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhv
c3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1
ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0
KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIz
Mkhvc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJEdW1w
UmVuZGVyVHJlZTogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKCVwLCAlenUsICV6dSwgOCwgJXp1LCAl
cCwgMHgleCkgZmFpbGVkXG4iLCBidWZmZXIsIHBpeGVsc0hpZ2gsIHBpeGVsc1dpZGUsIHJvd0J5
dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwg
a0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKICAgICAgICAgZnJlZShidWZmZXIpOwpAQCAtMTM0
LDYgKzEzNCw2IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0KHNp
emVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdC
aXRtYXBBbmRDb250ZXh0KGJ1ZmZlciwgY29udGV4dCk7CisgICAgcmV0dXJuIEJpdG1hcENvbnRl
eHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KGJ1ZmZlciwgV1RGTW92ZShjb250
ZXh0KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1Bp
eGVsRHVtcFN1cHBvcnRDRy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3Vw
cG9ydENHLmgKaW5kZXggNDEyNGIwY2FlZGNlNzM4ZjQ2NDZjZGMzOGE3YjUxNmExYTc2MWMwOC4u
Yjc5NGIyMTk4ZWQ4YTBhYTE0NzJkMzBiOTNhM2FiZmFjYzcwMjdhNiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKQEAgLTQ3LDkgKzQ3LDkgQEAgdHlw
ZWRlZiBIQklUTUFQIFBsYXRmb3JtQml0bWFwQnVmZmVyOwogCiBjbGFzcyBCaXRtYXBDb250ZXh0
IDogcHVibGljIFJlZkNvdW50ZWQ8Qml0bWFwQ29udGV4dD4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8Qml0bWFwQ29udGV4dD4gY3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoUGxh
dGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKKyAgICBzdGF0
aWMgUmVmPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KFBs
YXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgUmV0YWluUHRyPENHQ29udGV4dFJlZj4mJiBjb250
ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwQ29udGV4dChi
dWZmZXIsIGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwQ29u
dGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpKTsKICAgICB9CiAKICAgICB+Qml0bWFwQ29u
dGV4dCgpCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKIAotICAgIEJpdG1h
cENvbnRleHQoUGxhdGZvcm1CaXRtYXBCdWZmZXIgYnVmZmVyLCBDR0NvbnRleHRSZWYgY29udGV4
dCkKKyAgICBCaXRtYXBDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgUmV0YWlu
UHRyPENHQ29udGV4dFJlZj4mJiBjb250ZXh0KQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikK
LSAgICAgICAgLCBtX2NvbnRleHQoYWRvcHRDRihjb250ZXh0KSkKKyAgICAgICAgLCBtX2NvbnRl
eHQoV1RGTW92ZShjb250ZXh0KSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2RjZTVhYzVjMzI5MWEzNjJlNDdlYjQyMGU3
NzcyMWU4MmI1YjRjNC4uYjUxZTFhZWZlMmRmZjZhY2VlYjc2NDNiM2I0MzJmMjFlNDA3OWJhZSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTAwLDYg
KzEwMCw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09T
T2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTgxMCwyMCAr
MTgxMSwxOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShjb25z
dCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogLy8gbG9jayB0byBwcmV2ZW50IHBv
dGVudGlhbGx5IHJlLWVudGVyaW5nIFdlYkNvcmUuCiBzdGF0aWMgdm9pZCBXZWJUaHJlYWRMb2Nr
QWZ0ZXJEZWxlZ2F0ZUNhbGxiYWNrc0hhdmVDb21wbGV0ZWQoKQogewotICAgIGRpc3BhdGNoX3Nl
bWFwaG9yZV90IGRlbGVnYXRlU2VtYXBob3JlID0gZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgw
KTsKKyAgICBhdXRvIGRlbGVnYXRlU2VtYXBob3JlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9z
ZW1hcGhvcmVfY3JlYXRlKDApKTsKICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgZGlzcGF0
Y2hfc2VtYXBob3JlX3NpZ25hbChkZWxlZ2F0ZVNlbWFwaG9yZSk7CisgICAgICAgIGRpc3BhdGNo
X3NlbWFwaG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUuZ2V0KCkpOwogICAgIH0pOwogCi0g
ICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRlU2VtYXBob3JlLCBESVNQ
QVRDSF9USU1FX05PVykpIHsKKyAgICB3aGlsZSAoZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQoZGVs
ZWdhdGVTZW1hcGhvcmUuZ2V0KCksIERJU1BBVENIX1RJTUVfTk9XKSkgewogICAgICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBy
dW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFz
dF1dOwogICAgICAgICB9CiAgICAgfQogCiAgICAgV2ViVGhyZWFkTG9jaygpOwotCi0gICAgZGlz
cGF0Y2hfcmVsZWFzZShkZWxlZ2F0ZVNlbWFwaG9yZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwCmluZGV4IGE5YmE2
OTE4MzExOGJiODMyM2M4ZDQ5YjFmZDMzOWE1MWY1MzliNjAuLjM5NWQzMDI3YjlkODdlYTg5NTZl
NmIwMDA4N2M2MjE0OGEyNjdkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
UGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKQEAgLTkwLDggKzkwLDcgQEAgUmVmUHRyPEJpdG1hcENv
bnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29s
IGluY3JlbWUKIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBj
b2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMs
IGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBjb2xvclNwYWNlLmdl
dCgpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZShpbmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LCBpbmZvLmJtV2lk
dGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogI2VsaWYgVVNFKENBSVJPKSAKICAgICBj
YWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2Rh
dGEoKHVuc2lnbmVkIGNoYXIqKWluZm8uYm1CaXRzLCBDQUlST19GT1JNQVRfQVJHQjMyLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8u
Ym1XaWR0aCwgaW5mby5ibUhlaWdodCwgaW5mby5ibVdpZHRoQnl0ZXMpOyAKQEAgLTExMiw1ICsx
MTEsNSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJW
aWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIGF1dG8gY29udGV4dCA9IHJlbmRl
clRhcmdldC5nZXQoKTsKICNlbmRpZiAKIAotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVh
dGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAsIGNvbnRleHQpOworICAgIHJldHVy
biBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChiaXRtYXAs
IFdURk1vdmUoY29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVz
dEludm9jYXRpb25DRy5jcHAKaW5kZXggMDFjNTMxYTliNmFjZThlODE2OTQ4ZjY3NmNlNjMxZjUy
Nzk0YjZjNC4uNGVjOWMyMGU5ODBmNWUwN2VmZjMzMzY4YWY5ODFmNWI4YjQ5N2IxZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1
YmxpYy5wbmciKTsKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyBDR0NvbnRleHRSZWYgY3Jl
YXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGlt
YWdlKQogewogICAgIHNpemVfdCBwaXhlbHNXaWRlID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsK
ICAgICBzaXplX3QgcGl4ZWxzSGlnaCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOwpAQCAtNTMs
MTUgKzUzLDE1IEBAIHN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1h
Z2UoQ0dJbWFnZVJlZiBpbWFnZSkKIAogICAgIC8vIENyZWF0aW5nIHRoaXMgYml0bWFwIGluIHRo
ZSBkZXZpY2UgY29sb3Igc3BhY2Ugc2hvdWxkIHByZXZlbnQgYW55IGNvbG9yIGNvbnZlcnNpb24g
d2hlbiB0aGUgaW1hZ2Ugb2YgdGhlIHdlYiB2aWV3IGlzIGRyYXduIGludG8gaXQuCiAgICAgYXV0
byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0g
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgcGl4ZWxz
V2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpOworICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dp
ZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENHQ29udGV4dERy
YXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gp
LCBpbWFnZSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1h
a2UoMCwgMCwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCksIGltYWdlKTsKICAgICByZXR1cm4gY29u
dGV4dDsKIH0KIAotc3RhdGljIENHQ29udGV4dFJlZiBjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uo
V0tJbWFnZVJlZiB3a0ltYWdlKQorc3RhdGljIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0
ZUNHQ29udGV4dEZyb21JbWFnZShXS0ltYWdlUmVmIHdrSW1hZ2UpCiB7CiAgICAgYXV0byBpbWFn
ZSA9IGFkb3B0Q0YoV0tJbWFnZUNyZWF0ZUNHSW1hZ2Uod2tJbWFnZSkpOwogICAgIHJldHVybiBj
cmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQoKSk7CkBAIC0xNTgsNyArMTU4LDcg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQo
U25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG8KICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiZHVt
cFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdlIGlzIG51bGxcbiIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQgPSBhZG9wdENGKGNyZWF0
ZUNHQ29udGV4dEZyb21JbWFnZSh3a0ltYWdlKSk7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVD
R0NvbnRleHRGcm9tSW1hZ2Uod2tJbWFnZSk7CiAgICAgICAgIGltYWdlU2l6ZSA9IFdLSW1hZ2VH
ZXRTaXplKHdrSW1hZ2UpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNuYXBzaG90UmVzdWx0
VHlwZTo6V2ViVmlldzoKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
dW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChTbmFwc2hvdFJlc3VsdFR5cGUgc25hcHNo
bwogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZDogaW1hZ2UgaXMgbnVsbFxuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgY29udGV4dCA9IGFkb3B0Q0YoY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoaW1h
Z2UuZ2V0KCkpKTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdl
KGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2VTaXplID0gV0tTaXplTWFrZShDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422878</attachid>
            <date>2021-03-10 15:14:23 -0800</date>
            <delta_ts>2021-03-10 15:30:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310151422.patch</filename>
            <type>text/plain</type>
            <size>217828</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGNkODg5YWM0NDRjNGRjMzdjZmMwYzYxYzViNDNmODg2MTQ5ODQxLi5jMTY0YmZkYTczMzU0ZDJm
NmJkZWZjMThlY2NiNTBhZTFjM2Q5NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToK
KwogMjAyMS0wMy0xMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBleGVjdXRlTW9kdWxlUHJvZ3JhbSBuZWVkcyB0byBlbnN1cmUgbW9kdWxlIGFyZ3Vt
ZW50IGFycmF5IGlzIHN0aWxsIGluIHNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4MmQ1ZmQ2YWQ3MTgyNGFhNmRlODBh
OTAxYTA3MzMwNTdkZWViMDQuLjhlNGFlMzlkZWJjOGM2N2U2NDcxYTlmZjY2Yzg0ZDcwMGQ2OTk0
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUpOgorICAgICAgICAqIHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICog
d3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV1RGOjpN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnVuaW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6aG9sZE9mZik6CisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcDoK
KyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXVEY6OldvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUp
OgorICAgICAgICAqIHd0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHA6CisgICAgICAgIChXVEY6
OlN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6YWxsb2NhdG9yKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcpOgorCiAyMDIxLTAzLTEwICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugc3RkOjpmb3J3YXJkIGZvciBmb3J3YXJkaW5n
IHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBXVEZNb3ZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YyYWI0ZDlkYThi
MTAwZTBlMDEyODEwNmIyNGMxNDQ3YzYwNjgxYi4uMDAzYzFiOTYyNzIxZjEzNmEzZmYxY2Y1ZDg0
YzBmYjU0ZDhkOGY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OmNsYXNzZXNCeUlzQSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6T2JqY0NsYXNzOjpjbGFzc0ZvcklzQSk6CisgICAgICAgICogZWRpdGluZy9TbWFydFJlcGxh
Y2VDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTbWFydFNldCk6CisgICAgICAgICogcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBs
YXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3R3JhcGhMYWJlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmF3Q3B1SGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
R0NIaXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0
Zm9ybURyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNlcnRDb250ZXh0RGVhbGxvY2F0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUNlcnRpZmljYXRlVG9EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpkaXNwYXRjaFF1ZXVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZU1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6bWV0YWRhdGFLZXlOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6On5BVkZXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmNyZWF0ZVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQ
bGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmNoZWNrUGxheWFiaWxp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlQVZDRlZpZGVvTGF5ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAo
V1RGOjpSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OjpjcmVhdGVWYWx1ZUZvcktleSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29s
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lZENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyYXRjaENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6c2NyYXRjaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Y29weUNHUGF0aENsb3NpbmdT
dWJwYXRocyk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpj
b2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0dDb250ZXh0V2l0aEhEQyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RldmljZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y2FzY2FkZUZvclN5c3RlbUZvbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAg
KHdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAod2ViVGhyZWFkUmVsZWFzZU9iakFy
cmF5KToKKyAgICAgICAgKGRlbGVnYXRlU291cmNlKToKKyAgICAgICAgKG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyKToKKyAgICAgICAgKFNlbmREZWxlZ2F0ZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAgKEhhbmRsZVdlYlRocmVhZFJl
bGVhc2VTb3VyY2UpOgorICAgICAgICAoTWFpblJ1bkxvb3BBdXRvVW5sb2NrKToKKyAgICAgICAg
KF9XZWJUaHJlYWRBdXRvTG9jayk6CisgICAgICAgIChfV2ViUnVuTG9vcEVuYWJsZU5lc3RlZEZy
b21NYWluVGhyZWFkKToKKyAgICAgICAgKF9XZWJSdW5Mb29wRGlzYWJsZU5lc3RlZEZyb21NYWlu
VGhyZWFkKToKKyAgICAgICAgKFJ1bldlYlRocmVhZCk6CisgICAgICAgIChTdGFydFdlYlRocmVh
ZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBv
d2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUG93
ZXJPYnNlcnZlck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpBVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldENhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVBbGxEZXZp
Y2VzUXVlcnkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbzo6Y2VydGlmaWNhdGVDaGFpbkZyb21TZWNUcnVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkZXJSdW5Mb29wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0
aW9uU3BhY2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U6OnJl
Y2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRSdW5Mb29wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpdGVGb3JDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1Rl
eHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5pemVyRm9yU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YWxsb2NJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2hhcmVkRnVuY3Rpb25SZWYpOgorICAgICAgICAqIHRl
c3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRl
c3RTdXBwb3J0OjpjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlVGVzdFN1cHBvcnQ6OmNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9u
YXJ5KToKKwogMjAyMS0wMy0xMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBJbXByb3ZlIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIGludGVycG9sYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMDRkYTkyYTZjNTFhYWQ2ODRjN2ZmYzkwOWEzYmMyNjY1MmEyZTRkNi4uNjVl
YTA0ODEyMDM2MTlmMjg4ZDRmMTNjOWQzNjZmYzYyMjBhNjAxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NSBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
bmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25u
ZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxp
ZGF0ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6aW5pdGlhbGl6ZVNlbmRTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNl
aXZlU291cmNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdl
YkJyb3dzZXJDaGVja3MubW06CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAg
KFdlYktpdDo6ZGV0ZXJtaW5lSVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2
ZUlUUEVuYWJsZWQpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZp
Y2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6
OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNz
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0
ZVJlbmRlcmluZyk6CisKIDIwMjEtMDMtMTAgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gQWRkIGFkZGl0aW9uYWwgdGVsZW1ldHJ5IHRvIFdlYkNvbnRlbnQg
c2FuZGJveCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMDRkYmVlYzg2NmFiNDc2MGMwYzZkMDBj
ZjU5NWM1MmQyNTFkZjcyMi4uMTFkMzllZTU3MzA0ZmEyODAxZDFmY2I4MTMzYmFjYjk5M2IyZTAx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMy0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAv
IE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIDIyMzAzMF9SZXRhaW5QdHIKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKToKKwogMjAyMS0wMy0wNSAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQnVt
cCBjbWFrZV9taW5pbXVtX3JlcXVpcmVkIHZlcnNpb24gdG8gMy4xMiBvciBsYXRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDc3ZjU4YjA2MDcyMTk3Yjg1MzQ2ZWU3NTUxZTE2MDEy
ZTQ1ZTdkOTMuLjI3M2EzNTNhOGFmNjdhMTEwN2FkNWY5MzEyYzNhNWQ1NzQ5ZWFlYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAv
IE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAo
Y3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgc2hh
ZG93Q29sb3JdKToKKyAgICAgICAgKCtbV2ViUERGVmlldyBiYWNrZ3JvdW5kQ29sb3JdKToKKwog
MjAyMS0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
ZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGlu
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDliMjQ5ZTEzM2VmOWQxOTlm
NTBlYWMxYmQyZjA3Nzg0Y2E2MDQ5OTYuLjk4NGU5YjIzMmY0MDA3YTQ2Y2FmMDk1MzBlNjYxMjEw
Zjg1MTQ4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWlzYy9XZWJFbGVtZW50RGljdGlv
bmFyeS5tbToKKyAgICAgICAgKGxvb2t1cFRhYmxlKToKKyAgICAgICAgKGFkZExvb2t1cEtleSk6
CisgICAgICAgICgrW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGluaXRpYWxpemVMb29rdXBUYWJsZV0p
OgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBfZmlsbENhY2hlXSk6CisgICAgICAg
ICgtW1dlYkVsZW1lbnREaWN0aW9uYXJ5IG9iamVjdEZvcktleTpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX21ha2VBbGxXZWJWaWV3c1BlcmZv
cm1TZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVtb3ZlRnJvbUFsbFdlYlZpZXdz
U2V0XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2FkZFRvQWxsV2ViVmlld3NTZXRdKToKKyAgICAg
ICAgKCtbV2ViVmlldyBjbG9zZUFsbFdlYlZpZXdzXSk6CisgICAgICAgICgrW1dlYlZpZXcgX21h
eENhY2hlTW9kZWxJbkFueUluc3RhbmNlXSk6CisKIDIwMjEtMDMtMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDU1NQYXJzZXJDb250ZXh0OjplbmZv
cmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgYXMgaXQgaXMgdW51c2VkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzE2OTNkY2JlMmQ2MTdhMWU2NTg5ZTgxZmZjOGNiNDdkMGM4
ZmFlNi4uNmY3NjM1ODE5NmJjOTU5OTZlOTM0ODE4OTBkMWRmYmFiZWIzNmNiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTEwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFJldGFpblB0cjw+IC8gT1NP
YmplY3RQdHI8PiBtb3JlIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkFw
cGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAqIFdlYkRvd25sb2Fk
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcDoKKyAgICAg
ICAgKFdLUUNBOjp1cGRhdGVCb3VuZHMpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5n
cy5jcHA6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6OkxvY2FsaXplZFN0cmluZyk6CisgICAg
ICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIENGU3RyaW5nUmVmIGNvbnN0KToKKyAgICAg
ICAgKExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUiBjb25zdCk6CisgICAgICAgIChj
b3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZSk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMu
Y3BwOgorICAgICAgICAoZGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2Vz
Ojppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjp2
YWx1ZUZvcktleSk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVu
Y2VzVG9DRlByZWZlcmVuY2VzKToKKwogMjAyMS0wMy0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHByZWZlcmVuY2UgcmVzZXRpbmcgdG8gV2ViS2l0TGVn
YWN5IFdpbmRvd3MgdG8gc2ltcGxpZnkgdGVzdGluZyByZXNldApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCAxODUwYzRkNzA5MmM1MDFjYjJjZDkxZTExMGEyZTY3
ZDVjYzI4NTM4Li5kMWJmNzEzY2JjOTZjNDZjZjliMDY3YzNjOWZmZTllNTNmODFiNmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQpAQCAtMjc1LDEzICsyNzUsMTIg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKICAg
ICBpZiAobV9yZWxheUNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHhwY19jb25u
ZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2Uo
V0lSWFBDTWFjaFBvcnROYW1lLCBtX3hwY1F1ZXVlLCAwKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24g
PSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoV0lSWFBD
TWFjaFBvcnROYW1lLCBtX3hwY1F1ZXVlLCAwKSk7CiAgICAgaWYgKCFjb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3JlbGF5Q29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKGNvbm5lY3Rpb24sIG1feHBjUXVldWUsIHRoaXMpKTsK
KyAgICBtX3JlbGF5Q29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uKGNvbm5lY3Rpb24uZ2V0KCksIG1feHBjUXVldWUsIHRoaXMpKTsKICAgICBtX3Jl
bGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoQCJzeW4iLCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxl
IG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUgWFBDIGNvbm5lY3Rpb24uCi0gICAgeHBjX3JlbGVh
c2UoY29ubmVjdGlvbik7CiAKICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRl
VGFyZ2V0SWRlbnRpZmllcikgewogICAgICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYSBkZWJ1Z2dh
YmxlIHdhaXRpbmcgdG8gYmUgYXV0b21hdGljYWxseSBpbnNwZWN0ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKaW5kZXggYzMxNjM4ZjRlMmRi
ZTIwYjFmMDM4M2RjZjcwZjdhOGQ1YTI2MGNmYy4uMGRhODg1ZGVhYjg2YWE4ZDg5YjYzZjUyOGI3
ZTYzYzMzZTQ4NGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNw
YXRjaC5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5o
PgogI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW1wb3J0IDx3dGYvc3Bp
L2Rhcndpbi9YUENTUEkuaD4KIApAQCAtNjMsOCArNjQsOCBAQCBwcml2YXRlOgogICAgIC8vIFdl
IG1ha2Ugc3VyZSB0aGF0IG1fY2xpZW50IGlzIHRocmVhZCBzYWZlIGFuZCBpbW1lZGlhdGVseSBj
bGVhcmVkIGluIGNsb3NlKCkuCiAgICAgTG9jayBtX211dGV4OwogCi0gICAgeHBjX2Nvbm5lY3Rp
b25fdCBtX2Nvbm5lY3Rpb247Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlOworICAgIE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0
cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3F1ZXVlOwogICAgIENsaWVudCogbV9jbGllbnQ7CiAgICAg
Ym9vbCBtX2Nsb3NlZCB7IGZhbHNlIH07CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KaW5kZXggODEzYzE2MzBl
M2Q2YTBjYmIxNjhiMjc2YzY1MGUwNTcxNzIzYmU3MC4uYjUwMmUyOTM1ZjBmODU2YWExZjIyYmU1
MDQyNGFjM2E3ODU3MjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLm1tCkBAIC01MSwxOCArNTEsMTUgQEAgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90
IGNvbm4KICAgICAsIG1fcXVldWUocXVldWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7Ci0g
ICAgZGlzcGF0Y2hfcmV0YWluKG1fcXVldWUpOwotCi0gICAgeHBjX3JldGFpbihtX2Nvbm5lY3Rp
b24pOwotICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLCBt
X3F1ZXVlKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rp
b24sIF4oeHBjX29iamVjdF90IG9iamVjdCkgeworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJn
ZXRfcXVldWUobV9jb25uZWN0aW9uLmdldCgpLCBtX3F1ZXVlLmdldCgpKTsKKyAgICB4cGNfY29u
bmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIF4oeHBjX29iamVj
dF90IG9iamVjdCkgewogICAgICAgICBoYW5kbGVFdmVudChvYmplY3QpOwogICAgIH0pOwogCiAg
ICAgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiB0aGUgeHBjX2Nvbm5lY3Rpb24gcmVjZWl2ZXMg
WFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRC4KICAgICByZWYoKTsKIAotICAgIHhwY19jb25u
ZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24pOworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZSht
X2Nvbm5lY3Rpb24uZ2V0KCkpOwogfQogCiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjp+
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbigpCkBAIC04Myw3ICs4MCw3IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSgpCiAgICAgbV9jbG9z
ZWQgPSB0cnVlOwogICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKIAotICAgIGRpc3BhdGNoX2FzeW5j
KG1fcXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZS5nZXQoKSwgXnsKICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dl
ciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRoZSBxdWV1
ZSBhbmQgZGVyZWYgdXMuCiAgICAgICAgIGNsb3NlT25RdWV1ZSgpOwpAQCAtOTMsMTUgKzkwLDEx
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSgp
CiB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1ZSgpCiB7CiAg
ICAgaWYgKG1fY29ubmVjdGlvbikgewotICAgICAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwobV9j
b25uZWN0aW9uKTsKLSAgICAgICAgeHBjX3JlbGVhc2UobV9jb25uZWN0aW9uKTsKKyAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29u
bmVjdGlvbiA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKG1fcXVldWUpIHsKLSAgICAgICAg
ZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlKTsKLSAgICAgICAgbV9xdWV1ZSA9IG51bGxwdHI7Ci0g
ICAgfQorICAgIG1fcXVldWUgPSBudWxscHRyOwogfQogCiBOU0RpY3Rpb25hcnkgKlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2Jq
ZWN0KQpAQCAtMTQ3LDcgKzE0MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgaWYgKCFtX3ZhbGlkYXRlZCkgewogICAgICAgICBhdWRpdF90b2tlbl90IHRva2VuOwotICAg
ICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25uZWN0aW9uLCAmdG9rZW4p
OworICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25uZWN0aW9uLmdl
dCgpLCAmdG9rZW4pOwogICAgICAgICBpZiAoIVdURjo6aGFzRW50aXRsZW1lbnQodG9rZW4sICJj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iud2ViaW5zcGVjdG9yZCIpKSB7CiAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwg
dHJpZ2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRo
ZSBxdWV1ZSBhbmQgZGVyZWYgdXMuCkBAIC0xODEsMjMgKzE3NCwxOSBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OnNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwg
TlNEaWN0aW9uYQogICAgIGlmIChtX2Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0
YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0
TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW2RpY3Rpb25hcnkg
c2V0T2JqZWN0Om1lc3NhZ2VOYW1lIGZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
TWVzc2FnZU5hbWVLZXldOwogICAgIGlmICh1c2VySW5mbykKICAgICAgICAgW2RpY3Rpb25hcnkg
c2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNl
ckluZm9LZXldOwogCi0gICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSBfQ0ZYUENDcmVh
dGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGljdGlv
bmFyeS5nZXQoKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhw
Y19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAgIGF1dG8geHBjRGljdGlvbmFyeSA9IGFk
b3B0T1NPYmplY3QoX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkuZ2V0KCkpID09
IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8gc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7
CiAgICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICB4cGNfb2Jq
ZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApOwot
ICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFyeSk7Ci0gICAgeHBjX3JlbGVh
c2UoeHBjRGljdGlvbmFyeSk7Ci0KLSAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9j
b25uZWN0aW9uLCBtc2cpOwotCi0gICAgeHBjX3JlbGVhc2UobXNnKTsKKyAgICBhdXRvIG1zZyA9
IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDAp
KTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLmdldCgpLCBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rpb25hcnkuZ2V0KCkp
OworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24uZ2V0KCksIG1z
Zy5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCAwOGQ2Mjg5MGE5ZTFlYTdiNzdmMjAwNTQ2OGVmOWYxMmQzMTU4YmJmLi4yMDI2Nzk0
YTEwOTNkZjM5ZmRiYjRkZDIwMjJlYWE2MDQ1NzQ0MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApA
QCAtOTksNiArOTksNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8Y3J0X2V4
dGVybnMuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oR1RLKQpAQCAtMzU0MSw5ICszNTQyLDggQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJl
SGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAgICAgewotICAg
ICAgICBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJqc2Mg
c2hlbGwgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwot
ICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0RGlzcGF0Y2hRdWV1ZShxdWV1ZSk7Ci0g
ICAgICAgIGRpc3BhdGNoX3JlbGVhc2UocXVldWUpOworICAgICAgICBhdXRvIHF1ZXVlID0gYWRv
cHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImpzYyBzaGVsbCBtZW1vcnkgcHJlc3N1
cmUgaGFuZGxlciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOworICAgICAgICBtZW1vcnlQcmVz
c3VyZUhhbmRsZXIuc2V0RGlzcGF0Y2hRdWV1ZShXVEZNb3ZlKHF1ZXVlKSk7CiAgICAgfQogICAg
IEJveDxDcml0aWNhbD4gbWVtb3J5UHJlc3N1cmVDcml0aWNhbFN0YXRlID0gQm94PENyaXRpY2Fs
Pjo6Y3JlYXRlKENyaXRpY2FsOjpObyk7CiAgICAgQm94PFN5bmNocm9ub3VzPiBtZW1vcnlQcmVz
c3VyZVN5bmNocm9ub3VzU3RhdGUgPSBCb3g8U3luY2hyb25vdXM+OjpjcmVhdGUoU3luY2hyb25v
dXM6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDM0
MTYxNmM2OWRjNjE0YTMxMTZhNWQ2ODQ2NjkyOTZiMWFmNGI3N2IuLjM3YjcxMDBmYjYzNGVhNWFl
OTkwMGQxMWExZWMwODFmOWU1MTI3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcApAQCAtMzE2LDEzICszMTYsMTAgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpIHsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXREaXNwYXRjaFF1ZXVlKGRpc3BhdGNo
X3F1ZXVlX3QgcXVldWUpCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2luc3RhbGxlZCk7Ci0gICAgZGlzcGF0Y2hfcmV0YWluKHF1ZXVlKTsKLSAg
ICBpZiAobV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0
Y2hRdWV1ZSk7Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gcXVldWU7CisgICAgbV9kaXNwYXRjaFF1
ZXVlID0gV1RGTW92ZShxdWV1ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaAppbmRleCBmMjFlZDg5MjI5YzZlNjA3Y2Q2MzFkMmVjZjU4ODNjNTQ3YzQ3
YzQyLi4zNTY4NzdlOWYwZDBjNjQzY2JlYWNkNjEzN2NmZWUzMmU5OTRmMGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRl
IDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewog
CiBlbnVtIGNsYXNzIE1lbW9yeVVzYWdlUG9saWN5IDogdWludDhfdCB7CkBAIC05Miw3ICs5Niw3
IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lbW9yeVVzYWdlUG9s
aWN5IGN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1
ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREaXNwYXRjaFF1ZXVlKE9TT2Jq
ZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+JiYpOwogI2VuZGlmCiAKICAgICBjbGFzcyBSZWxpZWZM
b2dnZXIgewpAQCAtMjA2LDcgKzIxMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0
ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCA1ZDY5NGJkOGMzZjVhNGE1YzAwYzk0MmY5
ZGQ0MzNkN2M4NDQ1ZTIzLi40YTNiN2RhZmFlNzhmMWE2ZDljNDYzYjJjYzZhMDNkYTk0YTQxMzI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Xb3JrUXVldWUuaApAQCAtMzQsNiArMzQsNyBAQAogCiAjaWYgVVNFKENPQ09BX0VWRU5U
X0xPT1ApCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDx3dGYvT1NP
YmplY3RQdHIuaD4KICNlbHNlCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNlbmRpZgpAQCAt
NTgsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lkKHNp
emVfdCBpbmRleCk+JiYpOwogCiAjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCi0gICAgZGlzcGF0
Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVl
OyB9CisgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwYXRjaFF1ZXVlLmdldCgpOyB9CiAjZWxzZQogICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBj
b25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CiAjZW5kaWYKQEAgLTcxLDcgKzcyLDcgQEAgcHJp
dmF0ZToKIAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIHN0YXRpYyB2b2lkIGV4ZWN1
dGVGdW5jdGlvbih2b2lkKik7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7
CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOwogI2Vs
c2UKICAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KaW5kZXggMDg4YjE5Y2MxMGE2
NWVmZmU1ZDRlOWZjMjdhMDgxYzI1NmJhMzc2Zi4uNWMwZjViMjU0NGY3YmE1ZWU0ZDcyNTA2MDdm
N2ZkNmZiZDA0NDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTY4LDEzICs2OCwxMyBAQCB2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6aW5zdGFsbCgpCiAgICAgaWYgKG1faW5zdGFsbGVkIHx8IHRpbWVyRXZlbnRT
b3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hR
dWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgYXV0byBtZW1vcnlTdGF0dXNGbGFncyA9
IERJU1BBVENIX01FTU9SWVBSRVNTVVJFX05PUk1BTCB8IERJU1BBVENIX01FTU9SWVBSRVNTVVJF
X1dBUk4gfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9DUklUSUNBTCB8IERJU1BBVENIX01FTU9S
WVBSRVNTVVJFX1BST0NfTElNSVRfV0FSTiB8IERJU1BBVENIX01FTU9SWVBSRVNTVVJFX1BST0Nf
TElNSVRfQ1JJVElDQUw7CiAjZWxzZSAvLyBQTEFURk9STShNQUMpCiAgICAgICAgIGF1dG8gbWVt
b3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9DUklUSUNBTDsKICNlbmRp
ZgotICAgICAgICBtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2Ny
ZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgbWVtb3J5U3RhdHVz
RmxhZ3MsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAgICAgIG1lbW9yeVByZXNzdXJlRXZlbnRTb3Vy
Y2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9SWVBS
RVNTVVJFLCAwLCBtZW1vcnlTdGF0dXNGbGFncywgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKIAog
ICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIobWVtb3J5UHJlc3N1cmVF
dmVudFNvdXJjZSwgXnsKICAgICAgICAgICAgIGF1dG8gc3RhdHVzID0gZGlzcGF0Y2hfc291cmNl
X2dldF9kYXRhKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UpOwpAQCAtMTEwLDcgKzExMCw3IEBA
IHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKICAgICB9KTsKIAogICAgIC8v
IEFsbG93IHNpbXVsYXRpb24gb2YgbWVtb3J5IHByZXNzdXJlIHdpdGggIm5vdGlmeXV0aWwgLXAg
b3JnLldlYktpdC5sb3dNZW1vcnkiCi0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcu
V2ViS2l0Lmxvd01lbW9yeSIsICZub3RpZnlUb2tlbnNbMF0sIG1fZGlzcGF0Y2hRdWV1ZSwgXihp
bnQpIHsKKyAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5
IiwgJm5vdGlmeVRva2Vuc1swXSwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogI2lm
IEVOQUJMRShGTVdfRk9PVFBSSU5UX0NPTVBBUklTT04pCiAgICAgICAgIGF1dG8gZm9vdHByaW50
QmVmb3JlID0gcGFnZXNQZXJWTVRhZygpOwogI2VuZGlmCkBAIC0xMjQsMTUgKzEyNCwxNSBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCiAgICAgICAgIGxvZ0Zvb3Rwcmlu
dENvbXBhcmlzb24oZm9vdHByaW50QmVmb3JlLCBmb290cHJpbnRBZnRlcik7CiAjZW5kaWYKIAot
ICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgICAgIGVuZFNpbXVs
YXRlZE1lbW9yeVByZXNzdXJlKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgbm90aWZ5
X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeS5iZWdpbiIsICZub3RpZnlU
b2tlbnNbMV0sIG1fZGlzcGF0Y2hRdWV1ZSwgXihpbnQpIHsKKyAgICBub3RpZnlfcmVnaXN0ZXJf
ZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmJlZ2luIiwgJm5vdGlmeVRva2Vuc1sxXSwg
bV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogICAgICAgICBiZWdpblNpbXVsYXRlZE1l
bW9yeVByZXNzdXJlKCk7CiAgICAgfSk7Ci0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJv
cmcuV2ViS2l0Lmxvd01lbW9yeS5lbmQiLCAmbm90aWZ5VG9rZW5zWzJdLCBtX2Rpc3BhdGNoUXVl
dWUsIF4oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxv
d01lbW9yeS5lbmQiLCAmbm90aWZ5VG9rZW5zWzJdLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF4o
aW50KSB7CiAgICAgICAgIGVuZFNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CiAgICAgfSk7CiAK
QEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxs
KCkKICAgICBpZiAoIW1faW5zdGFsbGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNwYXRj
aF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBeewogICAgICAgICBpZiAobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSkg
ewogICAgICAgICAgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtZW1vcnlQcmVzc3VyZUV2ZW50
U291cmNlKTsKICAgICAgICAgICAgIG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UgPSBudWxscHRy
OwpAQCAtMTY0LDggKzE2NCw4IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3Rh
bGwoKQogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZihTZWNvbmRzIHNlY29u
ZHMpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeewotICAgICAgICB0
aW1lckV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9USU1FUiwgMCwgMCwgbV9kaXNwYXRjaFF1ZXVlKTsKKyAgICBkaXNwYXRjaF9hc3luYyht
X2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57CisgICAgICAgIHRpbWVyRXZlbnRTb3VyY2UgPSBkaXNw
YXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1RJTUVSLCAwLCAwLCBtX2Rp
c3BhdGNoUXVldWUuZ2V0KCkpOwogICAgICAgICBpZiAodGltZXJFdmVudFNvdXJjZSkgewogICAg
ICAgICAgICAgZGlzcGF0Y2hfc2V0X2NvbnRleHQodGltZXJFdmVudFNvdXJjZSwgdGhpcyk7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhlIGZpbmFsIGFyZ3VtZW50IGBzX21pbmltdW1Ib2xkT2Zm
VGltZS5zZWNvbmRzKClgIHNlZW1zIHdyb25nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwCmluZGV4IDM3NzNjNzk4NTJlYmIyMWJkMDZkNTY3YjAxN2NmN2M5MzIyNTNkZTYu
LjQ5Y2RiYjU4ODBiYjE2NmI1Zjc1ZTU2ZGRjNzljMWNmYTFhNTQwNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKQEAgLTMzLDE0ICszMywxNCBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5j
dGlvbikKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0
cihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtl
QmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24gPSBXVEZN
b3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgpKTsKIH0K
IAogdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3Rp
bWUoRElTUEFUQ0hfVElNRV9OT1csIGR1cmF0aW9uLm5hbm9zZWNvbmRzQXM8aW50NjRfdD4oKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKKyAgICBkaXNwYXRjaF9hZnRl
cihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5vc2Vjb25kc0Fz
PGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7
CiAgICAgICAgIGZ1bmN0aW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQpAQCAtNDksMTMgKzQ5LDEy
IEBAIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwg
VHlwZSB0eXBlLCBRT1MgcW9zKQogewogICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0g
dHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJ
U1BBVENIX1FVRVVFX1NFUklBTDsKICAgICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtl
X3dpdGhfcW9zX2NsYXNzKGF0dHIsIFRocmVhZDo6ZGlzcGF0Y2hRT1NDbGFzcyhxb3MpLCAwKTsK
LSAgICBtX2Rpc3BhdGNoUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7
Ci0gICAgZGlzcGF0Y2hfc2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKKyAgICBt
X2Rpc3BhdGNoUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZShuYW1l
LCBhdHRyKSk7CisgICAgZGlzcGF0Y2hfc2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCB0aGlzKTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7Ci0g
ICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwogfQogCiB2b2lkIFdvcmtRdWV1
ZTo6Y29uY3VycmVudEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
c2l6ZV90IGluZGV4KT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY2YvU3RyaW5nSW1wbENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcAppbmRleCBjNjdjYzNhOTYzYTUwZWMyMWFlYjg2NzI1MDljZDZiMjkxNTNkYzhiLi4z
MGVmMzYwNTcxNDRjYjJhMWJmNTYwYjU0ZWM2YTY4YjZhYTA1N2NjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCkBAIC0xMTEsMTYgKzExMSwxMyBAQCBuYW1lc3BhY2Ug
U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKICAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgfQog
Ci0gICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGNyZWF0ZSgpCi0gICAgewotICAgICAgICBDRkFs
bG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwgbnVsbHB0ciwgcmV0YWluLCByZWxlYXNlLCBj
b3B5RGVzY3JpcHRpb24sIGFsbG9jYXRlLCByZWFsbG9jYXRlLCBkZWFsbG9jYXRlLCBwcmVmZXJy
ZWRTaXplIH07Ci0gICAgICAgIHJldHVybiBDRkFsbG9jYXRvckNyZWF0ZShudWxscHRyLCAmY29u
dGV4dCk7Ci0gICAgfQotCiAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvcigpCiAg
ICAgewotICAgICAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yID0gY3JlYXRlKCk7
Ci0gICAgICAgIHJldHVybiBhbGxvY2F0b3I7CisgICAgICAgIHN0YXRpYyBhdXRvIGFsbG9jYXRv
ciA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgICAgICBDRkFsbG9jYXRvckNvbnRl
eHQgY29udGV4dCA9IHsgMCwgbnVsbHB0ciwgcmV0YWluLCByZWxlYXNlLCBjb3B5RGVzY3JpcHRp
b24sIGFsbG9jYXRlLCByZWFsbG9jYXRlLCBkZWFsbG9jYXRlLCBwcmVmZXJyZWRTaXplIH07Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShudWxscHRyLCAmY29u
dGV4dCkpOworICAgICAgICB9KCkpOworICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmdldCgpLmdl
dCgpOwogICAgIH0KIAogfQpAQCAtMTM4LDE1ICsxMzUsMTUgQEAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgQVNTRVJUKCFTdHJpbmdXcmFw
cGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcpOwogICAgIFN0cmluZ1dyYXBwZXJDRkFsbG9j
YXRvcjo6Y3VycmVudFN0cmluZyA9IHRoaXM7CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmc7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmc7CiAgICAgaWYgKGlzOEJpdCgpKQotICAg
ICAgICBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCk7CisgICAg
ICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoYWxsb2Nh
dG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFjdGVyczgoKSksIG1fbGVu
Z3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwp
KTsKICAgICBlbHNlCi0gICAgICAgIHN0cmluZyA9IENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFy
YWN0ZXJzMTYoKSksIG1fbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgc3RyaW5n
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0
aCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIC8vIENvcmVGb3VuZGF0aW9uIG1pZ2h0IG5vdCBo
YXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNhc2Ug
d2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2Nh
dG9yOjpjdXJyZW50U3RyaW5nID0gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdENGKHN0cmlu
Zyk7CisgICAgcmV0dXJuIHN0cmluZzsKIH0KIAogLy8gT24gU3RyaW5nSW1wbCBjcmVhdGlvbiB3
ZSBjb3VsZCBjaGVjayBpZiB0aGUgYWxsb2NhdG9yIGlzIHRoZSBTdHJpbmdXcmFwcGVyQ0ZBbGxv
Y2F0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNz
Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCBmZmU2
M2E2YzM5Yjg0NmMxZTU5NzYxNWRiYzQ3MmZkNzNlMjAwNjY4Li40YjAxZWMzNzllYmE5ZmNlMWQ4
YTQ4NjkxYzU4YTgwNWI4Mzg0NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2NsYXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MubW0KQEAgLTMwLDYgKzMwLDggQEAKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByb3Rv
Y29sLmgiCiAjaW1wb3J0ICJvYmpjX2luc3RhbmNlLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CkBAIC0zOSwyMiArNDEsMjYgQEAgT2JqY0NsYXNzOjpPYmpjQ2xhc3MoQ2xh
c3NTdHJ1Y3RQdHIgYUNsYXNzKQogewogfQogCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiBjbGFzc2VzQnlJc0EgPSAwOworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiYgY2xhc3Nlc0J5SXNBKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+PiBjbGFzc2VzQnlJc0E7CisgICAgcmV0dXJuIGNs
YXNzZXNCeUlzQTsKK30KIAogc3RhdGljIHZvaWQgX2NyZWF0ZUNsYXNzZXNCeUlzQUlmTmVjZXNz
YXJ5KCkKIHsKLSAgICBpZiAoIWNsYXNzZXNCeUlzQSkKLSAgICAgICAgY2xhc3Nlc0J5SXNBID0g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAo
IWNsYXNzZXNCeUlzQSgpKQorICAgICAgICBjbGFzc2VzQnlJc0EoKSA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMLCBOVUxMKSk7CiB9CiAKIE9iamNDbGFz
cyogT2JqY0NsYXNzOjpjbGFzc0ZvcklzQShDbGFzc1N0cnVjdFB0ciBpc2EpCiB7CiAgICAgX2Ny
ZWF0ZUNsYXNzZXNCeUlzQUlmTmVjZXNzYXJ5KCk7CiAKLSAgICBhdXRvIGFDbGFzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8T2JqY0NsYXNzKj4oY29uc3RfY2FzdDx2b2lkKj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoY2xhc3Nlc0J5SXNBLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSkpKTsKKyAgICBhdXRv
IGFDbGFzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8T2JqY0NsYXNzKj4oY29uc3RfY2FzdDx2b2lkKj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2xhc3Nlc0J5SXNBKCkuZ2V0KCksIChfX2JyaWRnZSBDRlR5
cGVSZWYpaXNhKSkpOwogICAgIGlmICghYUNsYXNzKSB7CiAgICAgICAgIGFDbGFzcyA9IG5ldyBP
YmpjQ2xhc3MoaXNhKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoY2xhc3Nlc0J5SXNB
LCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSwgYUNsYXNzKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoY2xhc3Nlc0J5SXNBKCkuZ2V0KCksIChfX2JyaWRnZSBDRlR5cGVSZWYpaXNhLCBh
Q2xhc3MpOwogICAgIH0KIAogICAgIHJldHVybiBhQ2xhc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU21hcnRSZXBsYWNlQ0YuY3BwCmluZGV4IDg1ZTliYzRhYTRlZGRmYjQ0NTM5NGIwZThkMzk2
MDdmNDJkMTI0ZWYuLjdkOTIwOGEzZmNlZDAyNjYzODI1MjAwMzZkMWQ2ODIyYWZhMWQ5NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCkBAIC0zMSwzOCArMzEs
MzcgQEAKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQ2hhcmFjdGVyU2V0Lmg+CiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBnZXRTbWFydFNldChib29sIGlz
UHJldmlvdXNDaGFyYWN0ZXIpCiB7Ci0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJl
ZiBwcmVTbWFydFNldDsKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHBvc3RT
bWFydFNldDsKLSAgICBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgc21hcnRTZXQgPSBpc1ByZXZp
b3VzQ2hhcmFjdGVyID8gcHJlU21hcnRTZXQgOiBwb3N0U21hcnRTZXQ7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+PiBwcmVTbWFy
dFNldDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZUNoYXJh
Y3RlclNldFJlZj4+IHBvc3RTbWFydFNldDsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFj
dGVyU2V0UmVmPiYgc21hcnRTZXQgPSBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gcHJlU21hcnRTZXQu
Z2V0KCkgOiBwb3N0U21hcnRTZXQuZ2V0KCk7CiAgICAgaWYgKCFzbWFydFNldCkgewotICAgICAg
ICBzbWFydFNldCA9IENGQ2hhcmFjdGVyU2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0KTsKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21hcnRT
ZXQsIGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7IikgOiBDRlNUUigi
KV0uLDs6P1wnIVwiJSotL30iKSk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRT
ZXQsIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRXaGl0ZXNwYWNl
QW5kTmV3bGluZSkpOyAgICAgICAgCisgICAgICAgIHNtYXJ0U2V0ID0gYWRvcHRDRihDRkNoYXJh
Y3RlclNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgICAgICBDRkNo
YXJhY3RlclNldEFkZENoYXJhY3RlcnNJblN0cmluZyhzbWFydFNldC5nZXQoKSwgaXNQcmV2aW91
c0NoYXJhY3RlciA/IENGU1RSKCIoW1wiXCcjJC8tYHsiKSA6IENGU1RSKCIpXS4sOzo/XCchXCIl
Ki0vfSIpKTsKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldC5nZXQoKSwgQ0ZD
aGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFdoaXRlc3BhY2VBbmROZXds
aW5lKSk7CisKICAgICAgICAgLy8gQWRkaW5nIENKSyByYW5nZXMKLSAgICAgICAgQ0ZDaGFyYWN0
ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgxMTAwLCAy
NTYpKTsgLy8gSGFuZ3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKLSAgICAgICAgQ0ZDaGFyYWN0
ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgyRTgwLCAz
NTIpKTsgLy8gQ0pLICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYpCi0gICAgICAg
IENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtl
KDB4MkZGMCwgNDY0KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMsIENKSyBTeW1ib2xzLCBI
aXJhZ2FuYSwgS2F0YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vLCBL
YW5idW4sICYgQm9wb21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCi0gICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MzIwMCwg
MjkzOTIpKTsgLy8gRW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dyYXBocyAoVW5pIEhhbiAmIEV4dCBB
KSwgJiBZaSAoMHgzMjAwIC0gMHhBNENGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJh
Y3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweEFDMDAsIDExMTgzKSk7IC8vIEhh
bmd1bCBTeWxsYWJsZXMgKDB4QUMwMCAtIDB4RDdBRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRB
ZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhGOTAwLCAzNTIpKTsg
Ly8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHhGOTAwIC0gMHhGQTVGKQotICAgICAg
ICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFr
ZSgweEZFMzAsIDMyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0
RikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwg
Q0ZSYW5nZU1ha2UoMHhGRjAwLCAyNDApKTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYw
MCAtIDB4RkZFRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShz
bWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGgg
RXhudGVuc2lvbiBCCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uo
c21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJp
bGl0eSBJZGVvZ3JhcGhzICgweDJGODAwIC0gMHgyRkExRCkKKyAgICAgICAgQ0ZDaGFyYWN0ZXJT
ZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHgxMTAw
LCAyNTYpKTsgLy8gSGFuZ3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKKyAgICAgICAgQ0ZDaGFy
YWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2Uo
MHgyRTgwLCAzNTIpKTsgLy8gQ0pLICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4MkZGMCwgNDY0KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMs
IENKSyBTeW1ib2xzLCBIaXJhZ2FuYSwgS2F0YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0
aWJpbGl0eSBKYW1vLCBLYW5idW4sICYgQm9wb21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCisg
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCks
IENGUmFuZ2VNYWtlKDB4MzIwMCwgMjkzOTIpKTsgLy8gRW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dy
YXBocyAoVW5pIEhhbiAmIEV4dCBBKSwgJiBZaSAoMHgzMjAwIC0gMHhBNENGKQorICAgICAgICBD
RkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdl
TWFrZSgweEFDMDAsIDExMTgzKSk7IC8vIEhhbmd1bCBTeWxsYWJsZXMgKDB4QUMwMCAtIDB4RDdB
RikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5n
ZXQoKSwgQ0ZSYW5nZU1ha2UoMHhGOTAwLCAzNTIpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRl
b2dyYXBocyAoMHhGOTAwIC0gMHhGQTVGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJh
Y3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweEZFMzAsIDMyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0RikKKyAgICAgICAgQ0ZDaGFy
YWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2Uo
MHhGRjAwLCAyNDApKTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYwMCAtIDB4RkZFRikK
KyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQo
KSwgQ0ZSYW5nZU1ha2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGggRXhudGVu
c2lvbiBCCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJp
bGl0eSBJZGVvZ3JhcGhzICgweDJGODAwIC0gMHgyRkExRCkKIAotICAgICAgICBpZiAoaXNQcmV2
aW91c0NoYXJhY3RlcikKLSAgICAgICAgICAgIHByZVNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldCwgQ0ZD
aGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFB1bmN0dWF0aW9uKSk7ICAg
ICAgIAotICAgICAgICAgICAgcG9zdFNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFpc1ByZXZpb3VzQ2hhcmFjdGVyKQorICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJT
ZXRVbmlvbihzbWFydFNldC5nZXQoKSwgQ0ZDaGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNo
YXJhY3RlclNldFB1bmN0dWF0aW9uKSk7CiAgICAgfQotICAgIHJldHVybiBzbWFydFNldDsKKyAg
ICByZXR1cm4gc21hcnRTZXQuZ2V0KCk7CiB9CiAKIGJvb2wgaXNDaGFyYWN0ZXJTbWFydFJlcGxh
Y2VFeGVtcHQoVUNoYXIzMiBjLCBib29sIGlzUHJldmlvdXNDaGFyYWN0ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0K
aW5kZXggMWNkNWQ5ZmRiOGExNDE5ZDM2N2MwODZlMGM2Y2E2M2RmZWQ2MzMyNS4uNTA5ZjIzYmFj
ZTFlZTVmYTYxN2Q4NWNiZGExNTY4ZDk5MzhiODU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtMTE5LDEw
ICsxMTksMTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJlbnQgeyAwIH07CiB9Owog
Ci1zdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBi
LCBmbG9hdCBhKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDb2xvcihmbG9h
dCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewogICAgIENHRmxvYXQgY29tcG9uZW50
c1s0XSA9IHsgciwgZywgYiwgYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xv
clNwYWNlUmVmKCksIGNvbXBvbmVudHMpOworICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cykpOwogfQogCiBzdHJ1Y3QgSGlzdG9y
aWNNZW1vcnlDYXRlZ29yeUluZm8gewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VV
c2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAKICAgICBbbV9sYXllci5nZXQoKSBz
ZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107CiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVu
dHNTY2FsZToyLjBdOwotICAgIFttX2xheWVyLmdldCgpIHNldEJhY2tncm91bmRDb2xvcjphZG9w
dENGKGNyZWF0ZUNvbG9yKDAsIDAsIDAsIDAuOCkpLmdldCgpXTsKKyAgICBbbV9sYXllci5nZXQo
KSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y3JlYXRlQ29sb3IoMCwgMCwgMCwgMC44KS5nZXQoKV07CiAg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgbm9ybWFsV2lkdGgs
IG5vcm1hbEhlaWdodCldOwogCiAgICAgb3ZlcmxheSgpLmxheWVyKCkuc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIobV9sYXllci5nZXQoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1
cnBvc2U6Ok5vbmUpOwpAQCAtMjgwLDE3ICsyODAsMTcgQEAgc3RhdGljIHZvaWQgc2hvd1RleHQo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHksIENHQ29sb3JSZWYgY29sb3Is
IGMKIAogc3RhdGljIHZvaWQgZHJhd0dyYXBoTGFiZWwoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBzdGF0aWMgQ0dDb2xv
clJlZiBibGFjayA9IGNyZWF0ZUNvbG9yKDAsIDAsIDAsIDEpOwotICAgIHNob3dUZXh0KGNvbnRl
eHQsIHggKyA1LCB5IC0gMywgYmxhY2ssIHRleHQpOwotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdo
aXRlID0gY3JlYXRlQ29sb3IoMSwgMSwgMSwgMSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgeCAr
IDQsIHkgLSA0LCB3aGl0ZSwgdGV4dCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxDR0NvbG9yUmVmPj4gYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBz
aG93VGV4dChjb250ZXh0LCB4ICsgNSwgeSAtIDMsIGJsYWNrLmdldCgpLmdldCgpLCB0ZXh0KTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiB3aGl0ZSA9
IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOworICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA0LCB5
IC0gNCwgd2hpdGUuZ2V0KCkuZ2V0KCksIHRleHQpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3Q3B1
SGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB5
MiwgUmluZ0J1ZmZlcjxmbG9hdD4mIGhpc3RvcnkpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYg
Y3B1Q29sb3IgPSBjcmVhdGVDb2xvcigwLCAxLCAwLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBjcHVDb2xvciA9IGNyZWF0ZUNvbG9yKDAsIDEs
IDAsIDEpOwogCi0gICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwg
Y3B1Q29sb3IpOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQs
IGNwdUNvbG9yLmdldCgpLmdldCgpKTsKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4
dCwgMSk7CiAKICAgICBpbnQgaSA9IDA7CkBAIC0zMjEsOCArMzIxLDggQEAgc3RhdGljIHZvaWQg
ZHJhd0dDSGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBm
bG9hdCB5MiwgUmkKIAogICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCAxKTsKIAot
ICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNhcGFjaXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAw
LjMsIDEpOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNh
cGFjaXR5Q29sb3IpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xv
clJlZj4+IGNhcGFjaXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAwLjMsIDEpOworICAgIENH
Q29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhcGFjaXR5Q29sb3IuZ2V0
KCkuZ2V0KCkpOwogCiAgICAgc2l6ZV90IGkgPSAwOwogCkBAIC0zMzUsOCArMzM1LDggQEAgc3Rh
dGljIHZvaWQgZHJhd0dDSGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZs
b2F0IHkxLCBmbG9hdCB5MiwgUmkKICAgICAgICAgaSsrOwogICAgIH0pOwogCi0gICAgc3RhdGlj
IENHQ29sb3JSZWYgc2l6ZUNvbG9yID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7Ci0g
ICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9yKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBzaXplQ29s
b3IgPSBjcmVhdGVDb2xvcigwLjYsIDAuNSwgMC45LCAxKTsKKyAgICBDR0NvbnRleHRTZXRTdHJv
a2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBzaXplQ29sb3IuZ2V0KCkuZ2V0KCkpOwogCiAgICAg
aSA9IDA7CiAKQEAgLTQ1NiwxMCArNDU2LDEwIEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6
OnBsYXRmb3JtRHJhdyhDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBDR1JlY3Qgdmlld0JvdW5k
cyA9IG1fb3ZlcmxheS0+Ym91bmRzKCk7CiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNvbnRleHQs
IHZpZXdCb3VuZHMpOwogCi0gICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3JGb3JMYWJlbHMgPSBj
cmVhdGVDb2xvcigwLjksIDAuOSwgMC45LCAxKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwg
MjAsIGNvbG9yRm9yTGFiZWxzLCBtYWtlU3RyaW5nKCIgICAgICAgIENQVTogIiwgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0KCksIDYsIEtlZXBUcmFpbGluZ1pl
cm9zKSkpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCAzMCwgY29sb3JGb3JMYWJlbHMsICIg
IEZvb3RwcmludDogIiArIGZvcm1hdEJ5dGVOdW1iZXIobWVtb3J5Rm9vdHByaW50KCkpKTsKLSAg
ICBzaG93VGV4dChjb250ZXh0LCAxMCwgNDAsIGNvbG9yRm9yTGFiZWxzLCAiICAgRXh0ZXJuYWw6
ICIgKyBmb3JtYXRCeXRlTnVtYmVyKGRhdGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY29sb3JGb3JM
YWJlbHMgPSBjcmVhdGVDb2xvcigwLjksIDAuOSwgMC45LCAxKTsKKyAgICBzaG93VGV4dChjb250
ZXh0LCAxMCwgMjAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCBtYWtlU3RyaW5nKCIgICAg
ICAgIENQVTogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0
KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSkpOworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCAz
MCwgY29sb3JGb3JMYWJlbHMuZ2V0KCkuZ2V0KCksICIgIEZvb3RwcmludDogIiArIGZvcm1hdEJ5
dGVOdW1iZXIobWVtb3J5Rm9vdHByaW50KCkpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwg
NDAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICAgRXh0ZXJuYWw6ICIgKyBmb3JtYXRC
eXRlTnVtYmVyKGRhdGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7CiAKICAgICBmbG9hdCB5
ID0gNTU7CiAgICAgZm9yIChhdXRvJiBjYXRlZ29yeSA6IGRhdGEuY2F0ZWdvcmllcykgewpAQCAt
NDgwLDggKzQ4MCw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtRHJhdyhD
R0NvbnRleHRSZWYgY29udGV4dCkKICAgICB5IC09IDU7CiAKICAgICBNb25vdG9uaWNUaW1lIG5v
dyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsg
MTAsIGNvbG9yRm9yTGFiZWxzLCAiICAgIEVkZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEu
dGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAx
MCwgeSArIDIwLCBjb2xvckZvckxhYmVscywgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0cmlu
ZyhkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiwgbm93KSk7CisgICAgc2hvd1RleHQoY29u
dGV4dCwgMTAsIHkgKyAxMCwgY29sb3JGb3JMYWJlbHMuZ2V0KCkuZ2V0KCksICIgICAgRWRlbiBH
QzogIiArIGdjVGltZXJTdHJpbmcoZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24sIG5vdykp
OworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsgMjAsIGNvbG9yRm9yTGFiZWxzLmdldCgp
LmdldCgpLCAiICAgIEZ1bGwgR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEZ1
bGxDb2xsZWN0aW9uLCBub3cpKTsKIAogICAgIGRyYXdDcHVIaXN0b3J5KGNvbnRleHQsIHZpZXdC
b3VuZHMuc2l6ZS53aWR0aCAtIDcwLCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRhLmNw
dSk7CiAgICAgZHJhd0dDSGlzdG9yeShjb250ZXh0LCB2aWV3Qm91bmRzLnNpemUud2lkdGggLSAx
NDAsIDAsIHZpZXdCb3VuZHMuc2l6ZS5oZWlnaHQsIGRhdGEuZ2NIZWFwU2l6ZSwgZGF0YS5jYXRl
Z29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ0hlYXBdLmRpcnR5U2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKaW5kZXggODIw
M2MwMzZhMzYxMjU3ZTUyZTgwNWQxZmY5NTg4NGM2YjQ4MWE2NC4uMzBkNWUwNTU1MTliY2EwMDNk
MjQ1NDVmNDNkZDIxMzcwY2YwMmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2VydGlmaWNhdGVDRldpbi5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDE5
ICszNSwxOSBAQCBzdGF0aWMgdm9pZCBkZWFsbG9jQ2VydENvbnRleHQodm9pZCogcHRyLCB2b2lk
KiBpbmZvKQogICAgICAgICBDZXJ0RnJlZUNlcnRpZmljYXRlQ29udGV4dChzdGF0aWNfY2FzdDxQ
Q0NFUlRfQ09OVEVYVD4ocHRyKSk7CiB9CiAKLXN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGVD
ZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+
IGNyZWF0ZUNlcnRDb250ZXh0RGVhbGxvY2F0b3IoKQogewogICAgIENGQWxsb2NhdG9yQ29udGV4
dCBhbGxvY0NvbnRleHQgPSB7CiAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGRlYWxsb2ND
ZXJ0Q29udGV4dCwgMAogICAgIH07Ci0gICAgcmV0dXJuIENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsICZhbGxvY0NvbnRleHQpOworICAgIHJldHVybiBhZG9wdENGKENGQWxs
b2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZhbGxvY0NvbnRleHQpKTsKIH0KIAog
UmV0YWluUHRyPENGRGF0YVJlZj4gY29weUNlcnRpZmljYXRlVG9EYXRhKFBDQ0VSVF9DT05URVhU
IGNlcnRpZmljYXRlKQogewotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjZXJ0RGVhbGxvYyA9
IGNyZWF0ZUNlcnRDb250ZXh0RGVhbGxvY2F0b3IoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPj4gY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29u
dGV4dERlYWxsb2NhdG9yKCk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGVDb3B5ID0g
Q2VydER1cGxpY2F0ZUNlcnRpZmljYXRlQ29udGV4dChjZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2Yo
KmNlcnRpZmljYXRlQ29weSksIGNlcnREZWFsbG9jKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2YoKmNlcnRpZmljYXRl
Q29weSksIGNlcnREZWFsbG9jLmdldCgpLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAwNTczMjVjMDYyZGJjZTVkODEyZmI0OGY4NDczMjU5ODYyYWVkNzQ5
Li4zMDU4ZWU4MTdmY2RmOTU4NGNiYjM2MTcxZjRjNmZjODQ3MTI3ZDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0x
MTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlv
biA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRX
aWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVy
aW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKIAog
I2lmIFVTRShDT1JFX1RFWFQpCi0gICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRmb3JtRGF0YShD
VEZvbnRSZWYsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5
bnRoZXRpY09ibGlxdWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9u
OjpIb3Jpem9udGFsLCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxh
cldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJl
bmRlcmluZywgQ3JlYXRpb25EYXRhKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZv
bnRQbGF0Zm9ybURhdGEoUmV0YWluUHRyPENURm9udFJlZj4mJiwgZmxvYXQgc2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkID0gZmFsc2UsIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IGZhbHNlLCBGb250
T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlh
bnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0g
VGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlvbkRhdGEqID0gbnVs
bHB0cik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCBhYTMxMzJiYWJmNzAyM2NmYTVmMzgwOGMyMzhl
OWFmZDNkZmJmYjg0Li5kMDJhNDZiM2EzYWY4Y2Q3MmQ4ODA5MmI5MzhlOWYyMjcxMGVjMjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zNSw3ICsz
NSw3IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BhdHRlcm4qIENHUGF0dGVy
blJlZjsKLXR5cGVkZWYgQ0dQYXR0ZXJuUmVmIFBsYXRmb3JtUGF0dGVyblB0cjsKK3R5cGVkZWYg
UmV0YWluUHRyPENHUGF0dGVyblJlZj4gUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VsaWYgVVNFKERJ
UkVDVDJEKQogaW50ZXJmYWNlIElEMkQxQml0bWFwQnJ1c2g7CiB0eXBlZGVmIElEMkQxQml0bWFw
QnJ1c2gqIFBsYXRmb3JtUGF0dGVyblB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGE4MjE1Y2Mw
NWZmMjJkMTI5MGYxNzA4MDE5MDU0MjFhMDE5NzA5NWEuLjA1ZDUyNTVlM2YzNmY3NGE3MDgwNzll
MWI3ZWI4NGYyNzU2OTI4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNjksMTAgKzY5LDExIEBA
CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgot
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAvLyBTb2Z0LWxpbmtpbmcgaGVh
ZGVycyBtdXN0IGJlIGluY2x1ZGVkIGxhc3Qgc2luY2UgdGhleSAjZGVmaW5lIGZ1bmN0aW9ucywg
Y29uc3RhbnRzLCBldGMuCiAjaW5jbHVkZSAiQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oIgpA
QCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQoKSBjb25zdCB7IHJldHVybiBtX2xlZ2libGVPdXRw
dXQuZ2V0KCk7IH0KICAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZlTWVkaWFTZWxl
Y3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpIGNvbnN0OwogI2VuZGlmCi0gICAgaW5saW5lIGRp
c3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0
aW9uUXVldWU7IH0KKyAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7
IHJldHVybiBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpOyB9CiAKICNpZiBIQVZFKEFWRk9VTkRB
VElPTl9MT0FERVJfREVMRUdBVEUpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
ICAgIFJldGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmPiB0YWtlUmVx
dWVzdEZvcktleVVSSShjb25zdCBTdHJpbmcmKTsKQEAgLTE5NSw3ICsxOTYsNyBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZj4gbV9zZWxlY3Rpb25H
cm91cDsKICNlbmRpZgogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX25vdGlmaWNhdGlvblF1ZXVl
OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fbm90aWZpY2F0aW9uUXVldWU7
CiAKICAgICBtdXRhYmxlIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fY2FWaWRlb0xheWVyOwog
ICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fdmlkZW9MYXllcldyYXBwZXI7CkBAIC0yNDQs
NyArMjQ1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGJvb2xTdHJpbmcoYm9vbCB2YWwpCiB9CiAj
ZW5kaWYKIAotc3RhdGljIENGQXJyYXlSZWYgY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpCitzdGF0
aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKQogewogICAg
IHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrZXlOYW1lc1tdID0gewogICAgICAgICBBVkNGQXNz
ZXRQcm9wZXJ0eUR1cmF0aW9uLApAQCAtMjU4LDEzICsyNTksMTMgQEAgc3RhdGljIENGQXJyYXlS
ZWYgY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpCiAjZW5kaWYKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlO
YW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMs
IHNpemVvZihrZXlOYW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7CiB9CiAKIHN0YXRpYyBDRkFycmF5UmVmIG1ldGFkYXRhS2V5TmFtZXMoKQogewot
ICAgIHN0YXRpYyBDRkFycmF5UmVmIGtleXMgPSBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCk7Ci0g
ICAgcmV0dXJuIGtleXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkFy
cmF5UmVmPj4ga2V5cyA9IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKTsKKyAgICByZXR1cm4ga2V5
cy5nZXQoKS5nZXQoKTsKIH0KIAogLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiBBVkNG
VGltZWRNZXRhZGF0YUdyb3VwLmggZXhwb3J0ZWQgdGhpcyBrZXkuCkBAIC0xMzc1LDcgKzEzNzYs
NyBAQCBBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKiBvd25lcikKICAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSA9PSBkaXNw
YXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpB
VkZXcmFwcGVyKCVwKSIsIHRoaXMpOwogCi0gICAgbV9ub3RpZmljYXRpb25RdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yubm90aWZp
Y2F0aW9uUXVldWUiLCAwKTsKKyAgICBtX25vdGlmaWNhdGlvblF1ZXVlID0gYWRvcHRPU09iamVj
dChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Lm5vdGlmaWNhdGlvblF1ZXVlIiwgMCkpOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVS
X0RFTEVHQVRFKQogICAgIG1fcmVzb3VyY2VMb2FkZXJDYWxsYmFja3MudmVyc2lvbiA9IGtBVkNG
QXNzZXRSZXNvdXJjZUxvYWRlcl9DYWxsYmFja3NWZXJzaW9uXzE7CkBAIC0xMzk1LDkgKzEzOTYs
NiBAQCBBVkZXcmFwcGVyOjp+QVZGV3JhcHBlcigpCiAgICAgZGVzdHJveVZpZGVvTGF5ZXIoKTsK
ICAgICBkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKTsKIAotICAgIGlmIChtX25vdGlmaWNhdGlvblF1
ZXVlKQotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fbm90aWZpY2F0aW9uUXVldWUpOwotCiAg
ICAgaWYgKGF2QXNzZXQoKSkgewogICAgICAgICBBVkNGQXNzZXRDYW5jZWxMb2FkaW5nKGF2QXNz
ZXQoKSk7CiAgICAgICAgIG1fYXZBc3NldCA9IDA7CkBAIC0xNTMwLDcgKzE1MjgsNyBAQCB2b2lk
IEFWRldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sIGluaGVy
aXRVUkkpCiAKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25zUmVmLmdldCgpLCBBVkNG
VVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIGNmUmVzdHJpY3Rpb25zLmdldCgpKTsK
IAotICAgIG1fYXZBc3NldCA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9w
dGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgpLCBvcHRpb25zUmVmLmdldCgp
LCBtX25vdGlmaWNhdGlvblF1ZXVlKSk7CisgICAgbV9hdkFzc2V0ID0gYWRvcHRDRihBVkNGVVJM
QXNzZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYu
Z2V0KCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKIAog
I2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkKICAgICBBU1NFUlQoY2FsbGJh
Y2tDb250ZXh0KCkpOwpAQCAtMTU2NywyNCArMTU2NSwyMyBAQCB2b2lkIEFWRldyYXBwZXI6OmNy
ZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpCiAjZW5kaWYKIAogICAgIC8v
IEZJWE1FOiBXZSBuZWVkIGEgd2F5IHRvIGNyZWF0ZSBhIEFWUGxheWVyIHdpdGhvdXQgYW4gQVZQ
bGF5ZXJJdGVtLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzk4Nzc3MzA+LgotICAgIEFWQ0ZQbGF5ZXJS
ZWYgcGxheWVyUmVmID0gQVZDRlBsYXllckNyZWF0ZVdpdGhQbGF5ZXJJdGVtQW5kT3B0aW9ucyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBhdlBsYXllckl0ZW0oKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSk7Ci0gICAgbV9hdlBsYXllciA9IGFkb3B0Q0YocGxheWVyUmVmKTsK
KyAgICBtX2F2UGxheWVyID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1B
bmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVm
LmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpKSk7CiAjaWYgSEFWRShBVkZPVU5EQVRJ
T05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09V
VFBVVF9TVVBQT1JUKQotICAgIEFWQ0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJs
ZWQocGxheWVyUmVmLCBGQUxTRSk7CisgICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNw
bGF5RW5hYmxlZChtX2F2UGxheWVyLmdldCgpLCBGQUxTRSk7CiAjZW5kaWYKIAogICAgIGlmICht
X2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKSkKLSAgICAgICAg
QVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkocGxheWVyUmVmLCBtX2QzZERldmljZS5n
ZXQoKSk7CisgICAgICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKG1fYXZQbGF5
ZXIuZ2V0KCksIG1fZDNkRGV2aWNlLmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVy
UmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBB
U1NFUlQoY2VudGVyKTsKIAotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2Vu
dGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJS
YXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNp
b25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJB
ZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFj
aywgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX2F2UGxheWVyLmdldCgpLCBD
Rk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAKICAg
ICAvLyBBZGQgYSB0aW1lIG9ic2VydmVyLCBhc2sgdG8gYmUgY2FsbGVkIGluZnJlcXVlbnRseSBi
ZWNhdXNlIHdlIGRvbid0IHJlYWxseSB3YW50IHBlcmlvZGljIGNhbGxiYWNrcyBidXQKICAgICAv
LyBvdXIgb2JzZXJ2ZXIgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuZXZlciBhIHNlZWsgaGFwcGVu
cy4KICAgICBjb25zdCBkb3VibGUgdmVyeUxvbmdJbnRlcnZhbCA9IDYwKjYwKjYwKjI0KjMwOwot
ICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1l
T2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYsIENNVGltZU1ha2UodmVyeUxvbmdJbnRlcnZh
bCwgMTApLCBtX25vdGlmaWNhdGlvblF1ZXVlLCAmcGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFj
aywgY2FsbGJhY2tDb250ZXh0KCkpKTsKKyAgICBtX3RpbWVPYnNlcnZlciA9IGFkb3B0Q0YoQVZD
RlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwobV9hdlBsYXllci5n
ZXQoKSwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFsLCAxMCksIG1fbm90aWZpY2F0aW9uUXVl
dWUuZ2V0KCksICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrLCBjYWxsYmFja0NvbnRleHQo
KSkpOwogfQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAm
JiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQpAQCAtMTYwNywyMiAr
MTYwNCwyMSBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllckl0ZW0oKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBDcmVhdGUgdGhlIHBsYXllciBpdGVtIHNvIHdlIGJlZ2luIGxvYWRp
bmcgbWVkaWEgZGF0YS4KLSAgICBBVkNGUGxheWVySXRlbVJlZiBpdGVtUmVmID0gQVZDRlBsYXll
ckl0ZW1DcmVhdGVXaXRoQXNzZXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZBc3NldCgpLCBtX25v
dGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxheWVySXRlbSA9IGFkb3B0Q0YoaXRlbVJlZik7
CisgICAgbV9hdlBsYXllckl0ZW0gPSBhZG9wdEYoQVZDRlBsYXllckl0ZW1DcmVhdGVXaXRoQXNz
ZXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZBc3NldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdl
dCgpKSk7CiAKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIgPSBDRk5vdGlmaWNh
dGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7CiAgICAgQVNTRVJUKGNlbnRlcik7CiAKLSAgICBD
Rk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCks
IG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3Rp
ZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZl
ckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRl
ciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRl
bVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRl
ckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxi
YWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENG
Tm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBD
Rk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCks
IG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBD
Rk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAg
Q0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgp
LCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZp
b3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQ
bGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRl
bVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkp
OwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0Nv
bnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1
ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2Fs
bGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0
aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJh
dGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJ
dGVtLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlh
dGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxi
YWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1TdGF0dXND
aGFuZ2VkTm90aWZpY2F0aW9uLCBtX2F2UGxheWVySXRlbS5nZXQoKSwgQ0ZOb3RpZmljYXRpb25T
dXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9u
Q2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9u
Q2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgbV9hdlBs
YXllckl0ZW0uZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlcklt
bWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwg
Y2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNl
ZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJdGVtLmdldCgp
LCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Cisg
ICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4
dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Mb2FkZWRUaW1lUmFuZ2Vz
Q2hhbmdlZE5vdGlmaWNhdGlvbiwgbV9hdlBsYXllckl0ZW0uZ2V0KCksIENGTm90aWZpY2F0aW9u
U3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2VkTm90aWZpY2F0
aW9uLCBtX2F2UGxheWVySXRlbS5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZp
b3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQ
bGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgbV9h
dlBsYXllckl0ZW0uZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZl
ckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRl
ciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRl
bUlzUGxheWJhY2tCdWZmZXJFbXB0eUNoYW5nZWROb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJdGVt
LmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVs
eSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNr
Q29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNr
QnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJdGVtLmdldCgpLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZO
b3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBu
b3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmlj
YXRpb24sIG1fYXZQbGF5ZXJJdGVtLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhh
dmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAgICAgLy8gRklYTUU6IEFyZSB0aGVyZSBvdGhlciBs
ZWdpYmxlIG91dHB1dCB0aGluZ3Mgd2UgbmVlZCB0byByZWdpc3RlciBmb3I/IGFzc2V0IGFuZCBo
YXNFbmFibGVkQXVkaW8gYXJlIG5vdCBleHBvc2VkIGJ5IEFWQ0YKIAogICAgIENGTm90aWZpY2F0
aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0
aW9uQ2FsbGJhY2ssIENBQ0ZDb250ZXh0TmVlZHNGbHVzaE5vdGlmaWNhdGlvbigpLCAwLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CkBAIC0xNzU0
LDE1ICsxNzUwLDE0IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSgpCiB7CiAg
ICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSglcCkiLCB0aGlzKTsK
IAotICAgIHN0YXRpYyBDRkFycmF5UmVmIHByb3BlcnR5S2V5TmFtZTsKLSAgICBpZiAoIXByb3Bl
cnR5S2V5TmFtZSkgewotICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga2V5TmFtZXNb
XSA9IHsgCisgICAgc3RhdGljIGF1dG8gcHJvcGVydHlLZXlOYW1lID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5TmFtZXNbXSA9IHsKICAgICAgICAgICAg
IEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUKICAgICAgICAgfTsKLSAgICAgICAgcHJvcGVydHlL
ZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXplb2Yo
a2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7
Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIGtleU5hbWVz
LCBzdGQ6OnNpemUoa2V5TmFtZXMpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgfSgp
KTsKIAotICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMo
YXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFj
aywgY2FsbGJhY2tDb250ZXh0KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25v
dXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCkuZ2V0KCks
IGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOwogfQog
CiB2b2lkIEFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNz
ZXRSZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0yMDAzLDcgKzE5OTgsNyBAQCB2b2lkIEFWRldyYXBw
ZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhl
IGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVD
b25maWd1cmF0aW9uKCkuCi0gICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXll
ckxheWVyQ3JlYXRlV2l0aEFWQ0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIo
KSwgbV9ub3RpZmljYXRpb25RdWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBhZG9wdENG
KEFWQ0ZQbGF5ZXJMYXllckNyZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGF2UGxheWVyKCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0coTWVkaWEs
ICJBVkZXcmFwcGVyOjpjcmVhdGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAiLCB0
aGlzLCB2aWRlb0xheWVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1MjA5OGE5
ZGNiNjU1ZTEzNjkuLmM2NzQ5ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUzMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1zdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYp
IENGX1JFVFVSTlNfUkVUQUlORUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0
ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29sb3JSZWY+
IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+
Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogewotICAg
IHJldHVybiBhZG9wdENGKFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
QEAgLTg5LDcgKzg5LDcgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNl
dDxGbGFncz4gZmxhZ3MpCiB7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9u
ZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgsNyArMTE4
LDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNnRmxvYXRD
b21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAKIENHQ29s
b3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYgKzEyNiwx
NiBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlm
IChhdXRvIHNyZ2IgPSBjb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAgICBzd2l0
Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBjYXNlIFBh
Y2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTogewotICAg
ICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29s
b3IoY29sb3IpOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKKyAgICAg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IHRyYW5z
cGFyZW50Q0dDb2xvciA9IGNyZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgcmV0dXJu
IHRyYW5zcGFyZW50Q0dDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAgICAgICAg
IHN0YXRpYyBDR0NvbG9yUmVmIGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKLSAg
ICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVhdGVDR0Nv
bG9yKGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCkuZ2V0KCk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0
ZSB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3Ig
PSBsZWFrQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwor
ICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4g
d2hpdGVDR0NvbG9yID0gY3JlYXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICByZXR1cm4g
d2hpdGVDR0NvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNl
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNH
LmNwcAppbmRleCBhM2ZiODlkNTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVhLi4yMGUx
Y2NhYmNkOGZlNzAzOWQ0NWNmOTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAgLTM1LDEz
ICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENGU3RyaW5n
UmVmJiBjb2xvclNwYWNlTmFtZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IG5hbWVkQ29sb3JTcGFjZSgpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
Pj4gY29sb3JTcGFjZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpOwotICAg
ICAgICBBU1NFUlQoY29sb3JTcGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkgPSBhZG9w
dENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3Rh
bnQpKTsKKyAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwotICAgIHJl
dHVybiBjb2xvclNwYWNlOworICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgpOwogfQog
CiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmlu
ZGV4IDFiYTllYmVjMmRkMmMwZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1ZWNhNjc0
NmExOWE4MTZiZGNjOGExMTZjOWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTU1
Niw3ICs1NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKCkK
ICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZm
aW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFz
ZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3Jt
UGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBh
dHRlcm4odXNlclRvQmFzZUNUTSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0
ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAg
ICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgwLDcgKzU4
MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0Nv
bnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9
IGFkb3B0Q0YobV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJU
b0Jhc2VDVE0pKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRl
cm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRm
b3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ0cuaAppbmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRiOTgwMTEw
N2RmMjkyLi4yNzE1OTI0ZDE0YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGVDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQxLDggQEAg
dHlwZWRlZiB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0UmVmIGNn
Q29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAgIDogbV9j
Z0NvbnRleHQoY2dDb250ZXh0KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFn
cyBmbGFncyA9IDApCisgICAgICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRleHQpKQog
I2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1fc2hvdWxk
SW5jbHVkZUNoaWxkV2luZG93cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1NTdlMTcx
ZjlhMTgzMzBkMjQuLmNlZDNhZGJhMmI0YzEyZjBlODIzYTA4OGQyNWZjMTVhYTg4OWE0MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAt
NDUsMjMgKzQ1LDIzIEBAIHN0YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQqLCBjb25z
dCB2b2lkKiwgc2l6ZV90IGNvdW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIENH
Q29udGV4dFJlZiBjcmVhdGVTY3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlU2NyYXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1bWVyQ2Fs
bGJhY2tzIGNhbGxiYWNrcyA9IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0YWluUHRy
PENHRGF0YUNvbnN1bWVyUmVmPiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVh
dGUoMCwgJmNhbGxiYWNrcykpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQREZDb250
ZXh0Q3JlYXRlKGNvbnN1bWVyLmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRv
cHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBjb250
ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAsIDApKTsK
IAogICAgIENHRmxvYXQgYmxhY2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0NvbnRleHRT
ZXRGaWxsQ29sb3IoY29udGV4dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9y
KGNvbnRleHQsIGJsYWNrKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4dC5nZXQo
KSwgYmxhY2spOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0KCksIGJs
YWNrKTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENHQ29udGV4
dFJlZiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gY3JlYXRlU2NyYXRjaENvbnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQgPSBjcmVh
dGVTY3JhdGNoQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgpOwogfQog
CiBQYXRoIFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2lu
dD4mIHBvaW50cykKQEAgLTIxMCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlDbG9zaW5n
U3VicGF0aHNBcHBsaWVyRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCoK
ICAgICB9CiB9CiAKLXN0YXRpYyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9zaW5nU3Vi
cGF0aHMoQ0dQYXRoUmVmIG9yaWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dNdXRhYmxl
UGF0aFJlZj4gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2luYWxQYXRo
KQogewotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsK
LSAgICBDR1BhdGhBcHBseShvcmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3VicGF0aHNB
cHBsaWVyRnVuY3Rpb24pOwotICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAgICBhdXRv
IHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoQXBwbHko
b3JpZ2luYWxQYXRoLCBwYXRoLmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGllckZ1bmN0
aW9uKTsKKyAgICBDR1BhdGhDbG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0dXJuIHBh
dGg7CiB9CiAKQEAgLTIyNyw5ICsyMjcsOCBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZs
b2F0UG9pbnQgJnBvaW50LCBXaW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBDR1BhdGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9yIG5vbi1j
bG9zZWQgcGF0aHMsIGFzIGEgd29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRoZSBwYXRo
IGZpcnN0LiAgUmFkYXIgNDc1ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8gdXNlCi0g
ICAgYXV0byBwYXRoID0gYWRvcHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBsYXRmb3Jt
UGF0aCgpKSk7Ci0gICAgYm9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0KCks
IDAsIHBvaW50LCBydWxlID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZhbHNlKTsKLSAg
ICByZXR1cm4gcmV0OworICAgIGF1dG8gcGF0aCA9IGNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMo
cGxhdGZvcm1QYXRoKCkpOworICAgIHJldHVybiBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0
KCksIG51bGxwdHIsIHBvaW50LCBydWxlID09IFdpbmRSdWxlOjpFdmVuT2RkKTsKIH0KIAogYm9v
bCBQYXRoOjpzdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRnVu
Y3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mIHN0cm9rZVN0eWxlQXBwbGllcikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3Bw
CmluZGV4IDNhZWM3NzU2ZGI4Y2QyNTBhZmVmMTBkODNmZGViMWRjYzkzY2Y5YzMuLjc2ZWE5YWY0
ZDQyMzI0OTQxYTg5N2ZhYTNlNWRmZGFiMjNkZjgxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNTMsNyArNTMsNyBAQCBz
dGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgY2FsbE9u
TWFpblRocmVhZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8p
KV0geyB9KTsKIH0KIAotQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKK1JldGFp
blB0cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKIHsKICAgICBGbG9hdFJl
Y3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdlKCkuc2l6ZSgpIH07CiAKQEAgLTY4LDcgKzY4
LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcg
aW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAg
IC8vIGluc3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4
ZWwgY3JhY2tzLgogICAgIGlmIChyZXBlYXRYKCkgJiYgcmVwZWF0WSgpKQotICAgICAgICByZXR1
cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgpLCBwYXR0ZXJu
VHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgp
LCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKSk7CiAK
ICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVw
LCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAg
ICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Miw3ICs4Miw3IEBA
IENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3Jt
SW1hZ2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5D
YWxsYmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9
OwotICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUoaW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRS
VUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVh
dGUoaW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDZm
MzIyYzM1YTlmOTkxNTZmOTE1Njk5YjYyYTZlNjUwNWNlYTFlYzIuLjYxNGM4MDJlZGQ0OGI1Y2Q5
ZmE0N2ZhM2Y4ZmZkYjk4MzM3MzY2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0
YUNvcmVUZXh0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmIGZvbnQsIGZsb2F0
IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3Jp
ZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBUZXh0
UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3JlYXRpb25EYXRhKiBjcmVhdGlvbkRh
dGEpCitGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRS
ZWY+JiYgZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3
aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBDcmVhdGlv
bkRhdGEqIGNyZWF0aW9uRGF0YSkKICAgICA6IEZvbnRQbGF0Zm9ybURhdGEoc2l6ZSwgc3ludGhl
dGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgdGV4
dFJlbmRlcmluZ01vZGUsIGNyZWF0aW9uRGF0YSkKIHsKICAgICBBU1NFUlRfQVJHKGZvbnQsIGZv
bnQpOwpAQCAtNDQsOSArNDQsOSBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KENURm9udFJlZiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbAogI2Vsc2UKICAg
ICBtX2ZvbnQgPSBmb250OwogI2VuZGlmCi0gICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IENURm9u
dEdldFN5bWJvbGljVHJhaXRzKGZvbnQpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7Ci0gICAg
bV9pc1N5c3RlbUZvbnQgPSBXZWJDb3JlOjppc1N5c3RlbUZvbnQoZm9udCk7Ci0gICAgYXV0byB2
YXJpYXRpb25zID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENURm9udENv
cHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFZhcmlhdGlvbkF0dHJpYnV0ZSkpKTsKKyAgICBtX2lz
Q29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMoZm9udC5nZXQoKSkgJiBr
Q1RGb250Q29sb3JHbHlwaHNUcmFpdDsKKyAgICBtX2lzU3lzdGVtRm9udCA9IFdlYkNvcmU6Omlz
U3lzdGVtRm9udChmb250LmdldCgpKTsKKyAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250LmdldCgp
LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOwogICAgIG1faGFzVmFyaWF0aW9ucyA9IHZh
cmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQodmFyaWF0aW9ucy5nZXQoKSk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5kZXggNzdl
MWMzZjE2MmYwNjYzZmI4NTNmYTIyNWFjMjQ4YjQ1NmU0MWFmNC4uZTNmMDkyNzAzNDhlN2E1YWVm
NzI2NmViNDcyZGRiYWU3M2JjMzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC0y
MTEsMTQgKzIxMSwxMyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoQ0dJbWFnZVJlZgogICAgIENWUGl4ZWxCdWZm
ZXJMb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKICAgICB2b2lkKiBkYXRhID0gQ1ZQaXhl
bEJ1ZmZlckdldEJhc2VBZGRyZXNzKHJnYkJ1ZmZlcik7CiAgICAgYXV0byByZXRhaW5lZFJHQkJ1
ZmZlciA9IGFkb3B0Q0YocmdiQnVmZmVyKTsKLSAgICBhdXRvIGNvbnRleHQgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGUoZGF0YSwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwg
OCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHJnYkJ1ZmZlciksIHNSR0JDb2xvclNwYWNl
UmVmKCksIChDR0JpdG1hcEluZm8pIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KTsKKyAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQ
ZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5mbykga0NH
SW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAg
UkVMRUFTRV9MT0coTWVkaWEsICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1
ZmZlcjogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlIHJldHVybmVkIG51bGxwdHIiKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byByZXRhaW5lZENvbnRleHQgPSBhZG9w
dENGKGNvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtl
KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBpbWFnZSk7Cisg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1h
Z2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKICAgICBDVlBpeGVs
QnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKIAogICAgIHJldHVybiBjb252
ZXJ0UGl4ZWxCdWZmZXIocmdiQnVmZmVyLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQppbmRleCA0NTExMDdiYmI0NjViZGUzOTU0NDlkYzA3OGQ4MDVhOGUx
NjRmOGE0Li4wMzIwOTY5ODhmY2RlMjE3MTc1OTMzNTAwMTM5MGViM2ZiYjk5YTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0xNDIsMTMgKzE0MiwxMyBA
QCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNo
YXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogb3B0
aW9uS2V5c1tdID0geyBrQ1RUeXBlc2V0dGVyT3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2ZWwgfTsK
ICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZsdHJGb3Jj
ZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogcnRs
T3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNob3J0VHlwZSwgJnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07Ci0gICAg
ICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rp
b25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFs
dWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICAg
ICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRpb25WYWx1
ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGx0clR5
cGVzZXR0ZXJPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9w
dGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gcnRsVHlwZXNldHRlck9wdGlvbnMgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBy
dGxPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3Ry
aW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKIAogICAgICAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwgc3RyaW5n
QXR0cmlidXRlcy5nZXQoKSB9OwogICAgICAgICAvLyBGSVhNRTogU29tZSBTREtzIGNvbXBsYWlu
IHRoYXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgYmVsb3cgY2Fubm90IGJlIG51bGwuCiAgICAgICAg
IElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOCi0gICAgICAgIFJldGFpblB0cjxDVFR5
cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBhZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdpdGhV
bmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywgMCwg
JmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBlc2V0dGVy
T3B0aW9ucykpOworICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVy
ID0gYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9u
cygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvLCBtX3J1bi5sdHIoKSA/IGx0
clR5cGVzZXR0ZXJPcHRpb25zLmdldCgpLmdldCgpIDogcnRsVHlwZXNldHRlck9wdGlvbnMuZ2V0
KCkuZ2V0KCkpKTsKICAgICAgICAgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5ECiAKICAg
ICAgICAgaWYgKCF0eXBlc2V0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4
IDc0OGVkYjk0MDA5ZmQyOGE4OTI1ZmRhZjI0ZjNiMGUyNTliYTZkMTguLmZhYWI2ZTE0ZjAyN2E0
NDRiZDZkZTI3MTJlNjY5NTRhNzY1NWRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAKQEAgLTYzLDkgKzYzLDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRm9udDo6Z2V0
Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgRm9udE8KIAogICAgIGlmICgh
ZW5hYmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0gMDsKLSAgICAgICAg
c3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk51bWJlclJlZj4+IHplcm9LZXJuaW5nVmFs
dWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckZsb2F0VHlwZSwgJnplcm8pKTsKICAgICAgICAga2V5c1tjb3VudF0gPSBrQ1RLZXJuQXR0cmli
dXRlTmFtZTsKLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWU7CisgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSB6ZXJvS2VybmluZ1ZhbHVlLmdldCgpLmdldCgpOwogICAgICAg
ICArK2NvdW50OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggY2VkYjAy
ZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOC4uYjYyMDE1ODM4MWI0YzBhYjQ3Mjcy
YmE0MTc2MWM1NTdkMWViMDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENHQ29udGV4dFJlZiBD
R0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCitzdGF0aWMgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQog
ewogICAgIEhCSVRNQVAgYml0bWFwID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oR2V0Q3VycmVudE9i
amVjdChoZGMsIE9CSl9CSVRNQVApKTsKIApAQCAtNTUsMTIgKzU1LDExIEBAIHN0YXRpYyBDR0Nv
bnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0bWFwQnl0
ZU9yZGVyMzJMaXR0bGUgfCAoaGFzQWxwaGEgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwotICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRh
LnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsRGF0YS5ieXRlc1Bl
clJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvKTsKKyAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVyKCksIHBp
eGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwgOCwgcGl4
ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcEluZm8pKTsK
IAogICAgIC8vIEZsaXAgY29vcmRzCi0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQs
IDAsIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNv
bnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5nZXQoKSwg
MCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29u
dGV4dC5nZXQoKSwgMSwgLTEpOwogICAgIAogICAgIC8vIFB1dCB0aGUgSERDIEluIGFkdmFuY2Vk
IG1vZGUgc28gaXQgd2lsbCBob25vciBhZmZpbmUgdHJhbnNmb3Jtcy4KICAgICBTZXRHcmFwaGlj
c01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2Uu
Y3BwCmluZGV4IDZhMTYwM2QyMWI2OGVjNWJlMjhmZDA2OTU5N2NkZDIyY2FmMjNkNmMuLjhlNWIz
ZTQyMjE0NzdlOTIxZDc4MjI1MTk0NTI2MmY5ZTBhOGU4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EZXZpY2UuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgTUdEZXZpY2VDbGFzcyBkZXZp
Y2VDbGFzcygpCiBTdHJpbmcgZGV2aWNlTmFtZSgpCiB7CiAjaWYgVEFSR0VUX09TX0lPUwotICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBkZXZpY2VOYW1lOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBkZXZpY2VOYW1lOwogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSAgICAg
ICAgZGV2aWNlTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihNR0NvcHlBbnN3ZXIoa01H
UURldmljZU5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZGV2aWNlTmFtZS5nZXQoKSA9IGFkb3B0
Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNlTmFtZSwg
bnVsbHB0cikpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZGV2aWNlTmFtZTsKKyAgICByZXR1cm4g
ZGV2aWNlTmFtZS5nZXQoKS5nZXQoKTsKICNlbHNlCiAgICAgcmV0dXJuICJpUGhvbmUiX3M7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4
IGM2NGE0YmNhMWFkOGU3YjcyYWYyMjYwM2ZiMWNjMDFmOTc2OWY2MjAuLjczNTkzM2YxNzIwODVi
OWU2NjkzYWQ0NGIyYWYxNjBiMzQwYzRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgZGVsZXRlRHJhZ0lt
YWdlKERyYWdJbWFnZVJlZikKIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lzdGVtRm9u
dChDR0Zsb2F0IHNpemUpCiB7CiAgICAgVUlGb250ICpmb250ID0gW1BBTDo6Z2V0VUlGb250Q2xh
c3MoKSBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOwotICAgIHJldHVybiBGb250Q2FzY2FkZShGb250
UGxhdGZvcm1EYXRhKENURm9udENyZWF0ZVdpdGhOYW1lKChDRlN0cmluZ1JlZilmb250LmZvbnRO
YW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSwgZm9udC5wb2ludFNpemUpKTsKKyAgICByZXR1cm4g
Rm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YShhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1l
KChDRlN0cmluZ1JlZilmb250LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSksIGZvbnQu
cG9pbnRTaXplKSk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVs
ZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgVGV4dElu
ZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIEZvbnRSZW5kZXJpbmdNb2RlLCBmbG9hdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRl
eCA5MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJlYzQyMWEzNDJkMzZiZjQxLi5hNjA4OGY3ZjZlODBk
YWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0xMjQsMTggKzEyNCwzOCBAQCB0eXBl
ZGVmIGVudW0gewogICAgIElnbm9yZUF1dG9yZWxlYXNlUG9vbAogfSBBdXRvcmVsZWFzZVBvb2xP
cGVyYXRpb247CiAKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVsZWFzZVNv
dXJjZTsKLXN0YXRpYyBDRk11dGFibGVBcnJheVJlZiBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXk7
CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4mIHdlYlRocmVhZFJlbGVhc2VT
b3VyY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29w
U291cmNlUmVmPj4gd2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKKyAgICByZXR1cm4gd2ViVGhyZWFk
UmVsZWFzZVNvdXJjZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4m
IHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4+IHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsK
KyAgICByZXR1cm4gd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworfQogCiBzdGF0aWMgTG9jayBk
ZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwot
c3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CisKK3N0
YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgZGVsZWdhdGVTb3VyY2UoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPj4g
ZGVsZWdhdGVTb3VyY2U7CisgICAgcmV0dXJuIGRlbGVnYXRlU291cmNlOworfQorCiBzdGF0aWMg
Qk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRp
YyBCT09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CiAjZW5kaWYKIAotc3RhdGljIENGUnVuTG9v
cE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworc3RhdGljIFJldGFp
blB0cjxDRlJ1bkxvb3BPYnNlcnZlclJlZj4mIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVy
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9vcE9ic2Vy
dmVyUmVmPj4gbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7CisgICAgcmV0dXJuIG1haW5S
dW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworfQorCiBzdGF0aWMgQk9PTCBtYWluVGhyZWFkSGFz
UGVuZGluZ0F1dG9VbmxvY2s7CiAKIHN0YXRpYyBMb2NrIHN0YXJ0dXBMb2NrOwpAQCAtMjM0LDcg
KzI1NCw3IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5TSW52
b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUKGRlbGVnYXRlU291cmNlKTsKKyAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UoKSk7CiAgICAg
ZGVsZWdhdGVMb2NrLmxvY2soKTsKIAogICAgIGRlbGVnYXRlSW52b2NhdGlvbigpID0gV1RGTW92
ZShpbnZvY2F0aW9uKTsKQEAgLTI1NSw3ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdh
dGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAgICAgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0o
KSk7CiAgICAgICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIAotICAgICAgICBDRlJ1bkxvb3BTb3Vy
Y2VTaWduYWwoZGVsZWdhdGVTb3VyY2UpOworICAgICAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwo
ZGVsZWdhdGVTb3VyY2UoKS5nZXQoKSk7CiAgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxv
b3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7CkBAIC0y
OTYsNyArMzE2LDcgQEAgdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQodm9pZCheZGVsZWdh
dGVCbG9jaykoKSkKIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKIHsKICAg
ICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZSk7CisgICAgQVNTRVJUKHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKSk7CiAKICNp
ZiBMT0dfUkVMRUFTRVMKICAgICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbbWFpbiB0aHJlYWRdOiAl
QCIsIG9iaik7CkBAIC0zMDQsMTAgKzMyNCwxMCBAQCB2b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVs
ZWFzZShpZCBvYmopCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYlRocmVhZFJlbGVh
c2VMb2NrKTsKIAotICAgIGlmIChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPT0gbmlsKQotICAg
ICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKTsKLSAgICBDRkFycmF5QXBwZW5kVmFs
dWUoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5LCBvYmopOwotICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChXZWJUaHJlYWRSZWxlYXNlU291cmNlKTsKKyAgICBpZiAod2ViVGhyZWFkUmVsZWFzZU9i
akFycmF5KCkgPT0gbmlsKQorICAgICAgICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwg
bnVsbHB0cikpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZSh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSwgb2JqKTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwod2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxvb3BXYWtlVXAod2ViVGhyZWFkUnVuTG9v
cCk7CiB9CiAKQEAgLTQwNCw5ICs0MjQsOSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJUaHJlYWRS
ZWxlYXNlU291cmNlKHZvaWQqKQogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gb2Jq
ZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVs
ZWFzZUxvY2spOwotICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VP
YmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVN
dXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsKLSAgICAg
ICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsK
KyAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5n
ZXQoKSkpIHsKKyAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRh
YmxlQ29weShudWxscHRyLCAwLCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpOwor
ICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3Myw3ICs0OTMsNyBAQCBzdGF0
aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVu
TG9vcEFjdGl2aXR5LCB2b2lkKgogICAgICAgICByZXR1cm47CiAKICAgICBtYWluVGhyZWFkSGFz
UGVuZGluZ0F1dG9VbmxvY2sgPSBOTzsKLSAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1
bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKIAogICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIH0KQEAgLTQ4NCw3
ICs1MDQsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCkKIAogICAgIGlm
ICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBtYWluVGhyZWFkSGFzUGVuZGluZ0F1
dG9VbmxvY2sgPSBZRVM7Ci0gICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7ICAgIAorICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRD
dXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7CiAgICAgICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgICAgIENGUnVu
TG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogICAgIH0KQEAgLTU1NiwxMiArNTc2LDEy
IEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5Mb29wRW5h
YmxlTmVzdGVkRnJvbU1haW5UaHJlYWQoKQogewotICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVy
KENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiBzdGF0aWMgdm9pZCBfV2ViUnVuTG9vcERpc2Fi
bGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsgCisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQoKQpAQCAt
NjQyLDggKzY2Miw4IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAgICAgQ0ZS
dW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2Vy
dmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5k
bGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKLSAgICBXZWJUaHJlYWRSZWxlYXNlU291cmNlID0g
Q0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNvdXJjZUNvbnRleHQp
OwotICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCBXZWJUaHJlYWRSZWxl
YXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIHdlYlRocmVhZFJlbGVhc2VT
b3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVs
ZWFzZVNvdXJjZUNvbnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2Uod2ViVGhyZWFkUnVu
TG9vcCwgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOwogCiAgICAgcGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQgPSBfQ0ZSdW5Mb29w
U2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQoWUVTKTsKIApAQCAtNjc5LDE2ICs2
OTksMTYgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogCiAgICAgQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlRGVs
ZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRl
KG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOworICAgIGRlbGVnYXRlU291cmNl
KCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVT
b3VyY2VDb250ZXh0KSk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRlIGNhbGxi
YWNrcyB3aGlsZSBzY3JvbGxpbmcsIGJ1dCB0aGVyZSBtaWdodCBiZQogICAgIC8vIG9uZSBvdXRz
dGFuZGluZyB3aGVuIHdlIHN0YXJ0LiAgQWRkIHRoZSBzb3VyY2UgZm9yIGFsbCBjb21tb24gcnVu
IGxvb3AKICAgICAvLyBtb2RlcyBzbyB3ZSBkb24ndCBibG9jayB0aGUgd2ViIHRocmVhZCB3aGls
ZSBzY3JvbGxpbmcuCi0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVnYXRlU291
cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5M
b29wLCBkZWxlZ2F0ZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAg
ICAgc0FzeW5jRGVsZWdhdGVzKCkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdKTsKIAotICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyID0gQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29w
RXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxwdHIpOworICAg
IG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkgPSBhZG9wdENGKENGUnVuTG9vcE9ic2Vy
dmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4
aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRyKSk7CiAKICAg
ICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAgICBwdGhyZWFkX2F0dHJfaW5pdCgmdGF0dHIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1
bi5jcHAKaW5kZXggZWZhODQ2NDViYTM5OGE0YmUxYmNkZTJkZWMzZDAxMDhhNDM5NzU1My4uY2E5
OGE4ZmNiNDk3NjI1MWEyY2MxOWJkY2YyNzFmN2Y2NDk2ZTMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCkBAIC0xMTIs
MTQgKzExMiwxOSBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgV1RGOjpWZWN0b3I8V2ViVGhyZWFk
QmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwogCiBzdGF0aWMgTG9jayBydW5RdWV1ZU11dGV4Owot
c3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBydW5Tb3VyY2U7CiBzdGF0aWMgV2ViVGhyZWFkUnVu
UXVldWUqIHJ1blF1ZXVlOwogCitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4m
IHJ1blNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1
bkxvb3BTb3VyY2VSZWY+PiBydW5Tb3VyY2U7CisgICAgcmV0dXJuIHJ1blNvdXJjZTsKK30KKwog
c3RhdGljIHZvaWQgSGFuZGxlUnVuU291cmNlKHZvaWQgKmluZm8pCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGluZm8pOwogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgQVNTRVJU
KHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsKICAgICBBU1NFUlQocnVuUXVl
dWUpOwogCiAgICAgV2ViVGhyZWFkUnVuUXVldWUgcXVldWVDb3B5OwpAQCAtMTQwLDcgKzE0NSw3
IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwgYm9vbCBz
eW5jaHJvbm91cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChydW5Tb3Vy
Y2UpOworICAgIEFTU0VSVChydW5Tb3VyY2UoKSk7CiAgICAgQVNTRVJUKHJ1blF1ZXVlKTsKIAog
ICAgIFdlYlRocmVhZEJsb2NrU3RhdGUqIHN0YXRlID0gMDsKQEAgLTE1Miw3ICsxNTcsNyBAQCBz
dGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9jaykodm9pZCksIGJvb2wgc3luY2hy
b25vdXMpCiAgICAgICAgIHJ1blF1ZXVlLT5hcHBlbmQoV2ViVGhyZWFkQmxvY2soYmxvY2ssIHN0
YXRlKSk7CiAgICAgfQogCi0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSk7Cisg
ICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxv
b3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKIAogICAgIGlmIChzeW5jaHJvbm91cykgewpA
QCAtMTY5LDE1ICsxNzQsMTUgQEAgdm9pZCBXZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lk
KSkKIHZvaWQgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCkKIHsKICAgICBBU1NFUlQoIXJ1blF1ZXVl
KTsKLSAgICBBU1NFUlQoIXJ1blNvdXJjZSk7CisgICAgQVNTRVJUKCFydW5Tb3VyY2UoKSk7CiAK
ICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25jZSgmcHJl
ZCwgXnsKICAgICAgICAgcnVuUXVldWUgPSBuZXcgV2ViVGhyZWFkUnVuUXVldWU7CiAKLSAgICAg
ICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250ZXh0ID0gezAsIE5VTEwsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEhhbmRsZVJ1blNvdXJjZX07
Ci0gICAgICAgIHJ1blNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAtMSwgJnJ1
blNvdXJjZUNvbnRleHQpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoV2ViVGhyZWFkUnVu
TG9vcCgpLCBydW5Tb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAgIENGUnVu
TG9vcFNvdXJjZUNvbnRleHQgcnVuU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
SGFuZGxlUnVuU291cmNlIH07CisgICAgICAgIHJ1blNvdXJjZSgpID0gYWRvcHRDRihDRlJ1bkxv
b3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZydW5Tb3VyY2VDb250ZXh0KSk7CisgICAgICAg
IENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29wKCksIHJ1blNvdXJjZSgpLmdldCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggOGYzN2RkNzFmMDc3
NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0NjZiYS4uYTQ3ZTM0M2Y0ZGNhMDM2ZmVhZWZkM2MxMGQ1
ZjI0MGUzNGI5ZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bv
d2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dl
ck9ic2VydmVyTWFjLmNwcApAQCAtMzUsNyArMzUsNyBAQCBQb3dlck9ic2VydmVyOjpQb3dlck9i
c2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCiAgICAgLCBtX3Bv
d2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxwdHIpCiAgICAg
LCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCi0gICAgLCBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkKKyAgICAs
IG1fZGlzcGF0Y2hRdWV1ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5Qb3dlck9ic2VydmVyIiwgMCkpKQogewogICAgIG1fcG93ZXJDb25uZWN0
aW9uID0gSU9SZWdpc3RlckZvclN5c3RlbVBvd2VyKHRoaXMsICZtX25vdGlmaWNhdGlvblBvcnQs
IFtdKHZvaWQqIGNvbnRleHQsIGlvX3NlcnZpY2VfdCBzZXJ2aWNlLCB1aW50MzJfdCBtZXNzYWdl
VHlwZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50KSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFBvd2Vy
T2JzZXJ2ZXIqPihjb250ZXh0KS0+ZGlkUmVjZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0aW9uKHNl
cnZpY2UsIG1lc3NhZ2VUeXBlLCBtZXNzYWdlQXJndW1lbnQpOwpAQCAtNDMsNyArNDMsNyBAQCBQ
b3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2Vy
T25IYW5kZXIpCiAgICAgaWYgKCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBv
cnQsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hR
dWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiB9CiAKIFBv
d2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKCkKQEAgLTUxLDggKzUxLDYgQEAgUG93ZXJPYnNl
cnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQogICAgIGlmICghbV9wb3dlckNvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKLQog
ICAgIElPRGVyZWdpc3RlckZvclN5c3RlbVBvd2VyKCZtX25vdGlmaWVyUmVmZXJlbmNlKTsKICAg
ICBJT1NlcnZpY2VDbG9zZShtX3Bvd2VyQ29ubmVjdGlvbik7CiAgICAgSU9Ob3RpZmljYXRpb25Q
b3J0RGVzdHJveShtX25vdGlmaWNhdGlvblBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKaW5kZXggMTU4NmQ3YmI3YWYyNTkzMTE2NmQyNmVj
NWRmYzQ2OTNhOGY2Mjg5YS4uYTgwYjYyMDc1YzAxZGMxNDlmODMxMWM3NDk0YzgxMzI5YWM2MDU5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KICNp
bXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3
ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0aW9uOwog
ICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAgaW9fb2Jq
ZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0
Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rpc3BhdGNoUXVl
dWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAwYjc3MGNmYjEzM2YzYThhNGU3ZGI2ZGI4
YzgwZmY2MjVjMjM5MjQ5Li5kM2YxYWM3MjliNWI1Y2RlNjNkYjQ0YzAwNTI3YzA5ODYzYzgyYTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQogCiAjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDx3dGYvT1NP
YmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2Ft
cGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlv
Q29udmVydGVyUmVmOwpAQCAtNjMsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vz
c1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUpOwogICAgIE9TU3RhdHVzIHBy
b3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZlckxpc3Qq
LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOwogCi0gICAgZGlzcGF0Y2hfcXVldWVf
dCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVGltZSBtX2xvd1dhdGVyVGltZSB7IGtD
TVRpbWVJbnZhbGlkIH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRw
dXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0KaW5kZXggYzc5YTQ3OTYyNDAyYmIxMzI5MzNjODdiZmU5OGQyMzdmNTZlZTA2OS4u
Y2NjOGRkM2E5ZDRmMGZkYTg4OTMzZjBmZDFlMjgxZGUzYWRlOTdlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTUyLDE0ICs1MiwxMyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCi0gICAgOiBtX3NlcmlhbERpc3BhdGNo
UXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkg
fQogICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9XX1dBVEVS
X1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQogewogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQogewotICAgIGRpc3BhdGNoX3Jl
bGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBpZiAobV9jb252ZXJ0ZXIpIHsKICAg
ICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKICAgICAgICAgbV9jb252
ZXJ0ZXIgPSBudWxscHRyOwpAQCAtODksNyArODgsNyBAQCBib29sIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxi
YQogCiB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBk
aXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5j
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1
ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CiAgICAgICAgIGF1dG8gZXJy
b3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgp
KTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxl
ZCAlZCIsIGVycm9yKTsKQEAgLTUxMCw3ICs1MDksNyBAQCB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIp
CiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01T
YW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNw
YXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdl
dCgpLCBeewogICAgICAgICBpZiAobV9pc0VuY29kaW5nKQogICAgICAgICAgICAgcHJvY2Vzc1Nh
bXBsZUJ1ZmZlcihidWZmZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggYzA1ODM3NDcwYjFjODI3MmRlN2M4OWM0MTRiYTE4
YTBmMGU5ZTljZC4uMzc2YTVjZmJlYWIxYTE0NmYyOTBiMmNiMjQzYzVjMTMzMmRkNzRmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8
VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAK
IHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsK
IHR5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXByZXNzaW9u
U2Vzc2lvblJlZjsKQEAgLTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lk
IHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywg
VlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKIAotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1
ZXVlX3Q+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0
cHV0Q29kZWNUeXBlIHsga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCB9OwogCiAgICAgUmV0YWluUHRy
PENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGUwM2U3NzBmMGNhYTliZGM2
YjE2ZDVhYzc0YmIzNzg2ZGY4ZjRhZDcuLjE3Njc5OTc0MWJkNGZiYjk5MDk5YWQ4NDM0ZWY2YzJm
NDZiOGFiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tCkBAIC00OCwxNCArNDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUKIH0KIAog
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
Q01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCi0gICAgOiBtX3NlcmlhbERpc3BhdGNo
UXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkg
fQogICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQogewogfQogCiBW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
KQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBp
ZiAobV92dFNlc3Npb24pIHsKICAgICAgICAgVlRDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRl
KG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICAgICAgbV92dFNlc3Npb24gPSBudWxscHRyOwpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0Qml0c1Bl
clNlY29uZCh1bnNpZ25lZCBiaXRSYXRlKQogCiB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsK
ICAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMo
bV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CiAKQEAgLTE2NSw3ICsxNjQsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVl
LCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewog
ICAgICAgICBpZiAoIW1faXNFbmNvZGluZykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggM2Ni
ZThjZWE2ODVhNTQ1ODgyMGRmMjg4YmRmNmNhNmRlYWIyM2I5Yi4uZjg2MTlmNmExOTE4YWYwNjBl
MmEwNWUwNjMxODJmNTRlODZhMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9TZXNzaW9uOwpAQCAtNzcsNyArNzgsNyBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0c0xpc3Rl
bmVyPiBtX2xpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVkF1ZGlvU2Vzc2lvbj4gbV9hdWRpb1Nl
c3Npb247CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV91cGRhdGVEZXZpY2VTdGF0ZVF1
ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0ciB9Owor
ICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsKICAgICBM
b2NrIG1fbG9jazsKICAgICBBdWRpb1Nlc3Npb25TdGF0ZSBtX2F1ZGlvU2Vzc2lvblN0YXRlIHsg
QXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggYjFiNDdhZjI5YzRhNDQ1
MmZjODEwMDNiYTM1ODZkOTAyZTg2YWU5Zi4uZWY5YmUxMDZiYmQ0ZWExNjg0NGVlNzA5YzYwYTI1
OGNjNjJjZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KQEAgLTg3LDkgKzg3LDkgQEAgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlciYgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG8K
IH0KIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlcigpCi0gICAgOiBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgIDogbV9kaXNwYXRjaFF1ZXVlKGFk
b3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSkK
IHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhp
cywgbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spXSB7CiAgICAgICAgIGNyZWF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgIH0pLmdldCgpKTsK
IH0KQEAgLTExMyw3ICsxMTMsNiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXI6OmNyZWF0ZUF1ZGlvU2Vzc2lvbigpCiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsKLSAgICBk
aXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7CiAgICAgW21fbGlzdGVuZXIgaW52YWxp
ZGF0ZV07CiAgICAgbV9saXN0ZW5lciA9IG51bGxwdHI7CiB9CkBAIC0xNTcsMTMgKzE1NiwxMyBA
QCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0Nh
cHR1cmVEZXZpY2VzKCkKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Np
b25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlv
U2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfc3luYyhtX2Rpc3BhdGNo
UXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10geworICAgICAgICBkaXNwYXRjaF9zeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAgICAgICAgICBhY3Rp
dmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgICAgICB9KS5nZXQoKSk7CiAgICAgfQogCiAgICAgVmVj
dG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gbmV3QXVkaW9EZXZpY2VzOwotICAgIGRp
c3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoWyZdIHsKKyAgICBkaXNw
YXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFsmXSB7CiAgICAg
ICAgIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZXMo
KTsKICAgICB9KS5nZXQoKSk7CiAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3ZlKG5l
d0F1ZGlvRGV2aWNlcykpOwpAQCAtMTc0LDEyICsxNzMsMTIgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2kKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6
SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vzc2lvblN0
YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBt
YWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRlQXVk
aW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9CiAKLSAgICBkaXNwYXRjaF9h
c3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgeworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbmV3QXVkaW9EZXZpY2Vz
ID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgICAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQobWFrZUJsb2NrUHRyKFt0aGlzLCBj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgbmV3QXVkaW9EZXZpY2VzID0gV1RGTW92
ZShuZXdBdWRpb0RldmljZXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHNldEF1ZGlvQ2Fw
dHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKQEAgLTI1NCw3ICsyNTMsNyBA
QCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVBbGxEZXZp
Y2VzUXVlcnkoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0
ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0aXZlKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIGRpc3BhdGNo
X2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAg
ICAgICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSAhPSBBdWRpb1Nlc3Npb25TdGF0ZTo6Tm90
TmVlZGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggOGIxOGZmMTI5MjU3ODkzNzkxNWVhYTZhNDk5
ODM3OTE3MDUxODMwOC4uNzhlYzA2Yjc0ZTQ3MmJkNjM4YTlmNWU5MzcwYmYyZjZiOGY5YjI2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKIH07CiAKICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKLVdFQkNPUkVfRVhQT1JUIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5n
UmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0gV1RGOjpu
dWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0
aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxvcHQpOwogI2VuZGlmCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwCmluZGV4IGEzNzg1MGQ3NmViZGU4ODRiMjJkODkwMGRlZTM2Zjg0Yzg0
NTE2YWIuLmNlZTVkN2VhY2JjYjYyMTBiMjI5ZGNlYWM4N2I0NmY0ZmJkOGVjZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmNwcApAQCAtNzIsMTcgKzcyLDE2IEBAIGJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OnBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQorUmV0YWluUHRyPENGVVJMQXV0
aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNv
cmVDaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0
aGF0LgogCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFk
b3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkpOwotICAg
IFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlID0gYWRv
cHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7Ci0gICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBw
cm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVuZ2UucHJl
dmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVS
TFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3Jl
ZGVudGlhbCgpKTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IGNyZWF0ZUNGKGNvcmVDaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgIHJldHVybiBhZG9wdENGKENGVVJMQXV0aENo
YWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCks
IGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWls
dXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSkpOwog
fQogCi1DRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNy
ZWRlbnRpYWwpCitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVhdGVDRihjb25zdCBD
cmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKIHsKICAgICBDRlVSTENyZWRlbnRpYWxQZXJzaXN0
ZW5jZSBwZXJzaXN0ZW5jZSA9IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7CiAgICAg
c3dpdGNoIChjb3JlQ3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpKSB7CkBAIC05OCwxMCArOTcsMTAg
QEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVk
ZW50aWFsKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAg
cmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxD
cmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IDAsIHBlcnNpc3RlbmNlKSk7CiB9CiAKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNG
KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQorUmV0YWluUHRyPENGVVJMUHJvdGVj
dGlvblNwYWNlUmVmPiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkK
IHsKICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IGtDRlVS
TFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CiAgICAgc3dpdGNoIChjb3JlU3BhY2Uuc2VydmVy
VHlwZSgpKSB7CkBAIC0xNjUsNyArMTY0LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3Jl
YXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFjZUNy
ZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFj
ZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIHNjaGVtZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VD
cmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlU3Bh
Y2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBzY2hlbWUpKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJl
ZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5oCmluZGV4IDg5YTkzNTI4OWFkNzlkNDBiMzdkZDIwM2E4
MGU5ZThkZjcxMWIyNmUuLjcwZjUwMjA1ZWIyYmRhMDgxNmJiZDA4OGM0NmNkYWFiOWM0NTMyMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
IAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxQcml2Lmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNl
KiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKQEAgLTM4LDkgKzM5LDkgQEAgY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogCi1DRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKLUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50
aWFsJik7Ci1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9u
U3BhY2UmKTsKK1JldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNyZWF0ZUNGKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CitSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9u
U3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogQ3JlZGVudGlhbCBj
b3JlKENGVVJMQ3JlZGVudGlhbFJlZik7CiBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3Rl
Y3Rpb25TcGFjZVJlZik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCmluZGV4IDZlYTMwMTIzOTU2
ZWRiZDMwOWQ2Y2UwZWFmZmU3ODNkNzM4ZTZkZmMuLjFmYTg5YmFlMWRlMWNiMDc2M2UwN2M2MWE0
MThhMzFjY2VmNTViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCkBAIC01OCwxMCArNTgsMTAg
QEAgYm9vbCBjZXJ0aWZpY2F0ZXNNYXRjaChTZWNUcnVzdFJlZiB0cnVzdDEsIFNlY1RydXN0UmVm
IHRydXN0MikKIFJldGFpblB0cjxDRkFycmF5UmVmPiBDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmlj
YXRlQ2hhaW5Gcm9tU2VjVHJ1c3QoU2VjVHJ1c3RSZWYgdHJ1c3QpCiB7CiAgICAgYXV0byBjb3Vu
dCA9IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVDb3VudCh0cnVzdCk7Ci0gICAgYXV0byBjZXJ0aWZp
Y2F0ZUNoYWluID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpOworICAgIGF1dG8gY2VydGlmaWNhdGVDaGFpbiA9IGFkb3B0Q0YoQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICBDRkFycmF5QXBwZW5kVmFs
dWUoY2VydGlmaWNhdGVDaGFpbiwgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgodHJ1c3Qs
IGkpKTsKLSAgICByZXR1cm4gYWRvcHRDRigoQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKTsK
KyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNlcnRpZmljYXRlQ2hhaW4uZ2V0KCksIFNlY1Ry
dXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRydXN0LCBpKSk7CisgICAgcmV0dXJuIGNlcnRpZmlj
YXRlQ2hhaW47CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggMDc1
MmNhMTA1NTJmZGIxYTdjMzU3NTkzMmEyMzJhYWViZWRjNWQ2MC4uMDY4YmVkMDU1MzA0MjU4ZDhk
OWM3MGZiNTMxZjZhNDkzNzUzNTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCkBAIC0z
NiwxNyArMzYsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotc3RhdGljIGlubGlu
ZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKK3N0YXRpYyBpbmxpbmUgUmV0
YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNw
YWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBhdXRv
IHN0b3JhZ2UgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCkpOwotICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ29weURlZmF1
bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2UuZ2V0KCksIHByb3RlY3Rpb25T
cGFjZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNvcHlEZWZh
dWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlLmdldCgpLCBwcm90ZWN0aW9u
U3BhY2UpKTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNp
c3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewot
ICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25T
cGFjZSkpOwotICAgIGF1dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlQ0YuZ2V0KCkpKTsKLSAgICByZXR1cm4g
Y29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOworICAgIHJldHVybiBjb3JlKGNvcHlDcmVkZW50aWFs
RnJvbVByb3RlY3Rpb25TcGFjZShjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpLmdldCgpKS5nZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAppbmRleCA1ZWE0NDhm
Y2U3NzNlMDM5NGQ3NGZkN2IxZjljMzc2MzY5Y2Q5ZjgzLi5iYjgzZGZmNGEyOWJmZDk3ZmI1MDVh
NDkzYjg5NGIxOGUxMTZmNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCkBAIC02Myw4ICs2Myw4IEBAIENGUnVu
TG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKIAogICAgICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEg
c291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhp
dGluZy4KICAgICAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGN0eHQgPSB7MCwg
KHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5
UGVyZm9ybX07Ci0gICAgICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNl
ID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KTsKLSAgICAgICAgICAgICAgICBD
RlJ1bkxvb3BBZGRTb3VyY2UobG9hZGVyUnVuTG9vcE9iamVjdCwgYm9ndXNTb3VyY2UsIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAgICAgICAgICAgYXV0byBib2d1c1NvdXJjZSA9IGFk
b3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KSk7CisgICAgICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKGxvYWRlclJ1bkxvb3BPYmplY3QsIGJvZ3VzU291cmNlLmdl
dCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgICAgICAgICAgICAgbG9hZGVyUnVu
TG9vcENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCA1ZDdkNzk2MTQ0NjVmY2FiNWJk
NmI2NDE4ZTA2MGY2OGViMDk0YTRhLi5hNTFiZGI4ZTMyNWIzMzc2ZDE0YzZmNGY1ZTgwN2QzODFk
YmI4ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtNzks
MTYgKzc5LDE2IEBAIHN0YXRpYyBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHRvQ0ZI
VFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeShIVFRQQ29vCiAgICAgcmV0dXJuIENGSFRUUENv
b2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9w
dGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
Q0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4g
Y29va2llQWNjZXB0UG9saWN5KQogewogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eUtl
eXNbXSA9IHsgX2tDRlVSTFN0b3JhZ2VTZXNzaW9uSXNQcml2YXRlIH07CiAgICAgY29uc3Qgdm9p
ZCogc2Vzc2lvblByb3BlcnR5VmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07Ci0gICAgQ0ZE
aWN0aW9uYXJ5UmVmIHNlc3Npb25Qcm9wZXJ0aWVzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHNlc3Npb25Qcm9wZXJ0eUtleXMsIHNlc3Npb25Qcm9wZXJ0eVZhbHVl
cywgc2l6ZW9mKHNlc3Npb25Qcm9wZXJ0eUtleXMpIC8gc2l6ZW9mKCpzZXNzaW9uUHJvcGVydHlL
ZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lv
biA9IF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkZW50
aWZpZXIsIHNlc3Npb25Qcm9wZXJ0aWVzKTsKKyAgICBhdXRvIHNlc3Npb25Qcm9wZXJ0aWVzID0g
YWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvblBy
b3BlcnR5S2V5cywgc2Vzc2lvblByb3BlcnR5VmFsdWVzLCBzaXplb2Yoc2Vzc2lvblByb3BlcnR5
S2V5cykgLyBzaXplb2YoKnNlc3Npb25Qcm9wZXJ0eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0
byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25DcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRpZmllciwgc2Vzc2lvblByb3BlcnRpZXMuZ2V0KCkpKTsK
ICAgICAKICAgICAvLyBUaGUgcHJpdmF0ZSBzdG9yYWdlIHNlc3Npb24gc2hvdWxkIGhhdmUgdGhl
IHNhbWUgcHJvcGVydGllcyBhcyB0aGUgZGVmYXVsdCBzdG9yYWdlIHNlc3Npb24sCiAgICAgLy8g
d2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgaXQgc2hvdWxkIGJlIGluLW1lbW9yeSBvbmx5IHN0b3Jh
Z2UuCi0gICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2Fj
aGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBhdXRvIGNhY2hl
ID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIENGVVJMQ2FjaGVTZXREaXNrQ2FwYWNp
dHkoY2FjaGUuZ2V0KCksIDApOwogICAgIGF1dG8gZGVmYXVsdENhY2hlID0gYWRvcHRDRihDRlVS
TENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIENGVVJMQ2FjaGVTZXRNZW1vcnlDYXBh
Y2l0eShjYWNoZS5nZXQoKSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KGRlZmF1bHRDYWNoZS5n
ZXQoKSkpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvCiAgICAg
ICAgIGNmQ29va2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFj
Y2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZSk7CiAgICAgfQogCi0gICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgYXV0byBjb29raWVT
dG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgQ0ZIVFRQQ29v
a2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBjZkNv
b2tpZUFjY2VwdFBvbGljeSk7CiAgICAgCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rp
b25TcGFjZUNGTmV0LmNwcAppbmRleCBjYjA4YjkzNzM1MDlhNTAwNzkyNzQ2OGMwNzZjZjgyZTY1
ZDViMDdlLi44NzM3YzRjNzE0ZjY1ZGU0YzA0NmQ1OTE3MDYyMWE5YWE1ZTcwNmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rp
b25TcGFjZUNGTmV0LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGJvb2wgUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0
CiB7Ci0gICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBjZlNwYWNlID0gYWRv
cHRDRihjcmVhdGVDRigqdGhpcykpOworICAgIGF1dG8gY2ZTcGFjZSA9IGNyZWF0ZUNGKCp0aGlz
KTsKICAgICByZXR1cm4gY2ZTcGFjZSAmJiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlY2VpdmVzQ3Jl
ZGVudGlhbFNlY3VyZWx5KGNmU3BhY2UuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCAyZDRlZmY1MDVjYzQxM2EwY2Q2NTIzY2IwOWMwNDRjNGI0OWU4NTVkLi42YmYzY2MyMDQw
NDBiOGFmZTkyNGM3ZjlmNTUxM2Q3YTVjMmIxNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTM4OSw3ICszODksNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJh
c2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaAogICAgICAgICAgICAgICAg
ICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMg
YSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9j
b250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRp
b24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZh
aWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihj
cmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwg
PSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQpAQCAtNDM2LDExICs0MzYsMTEgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UKICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLnNldChmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCB3ZWJD
cmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAg
ICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVu
dGlhbCkpOworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBjcmVhdGVDRih3ZWJDcmVk
ZW50aWFsKTsKICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9j
b25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVjdGlv
bikgewotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwg
PSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgYXV0byBjZkNyZWRlbnRp
YWwgPSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3Jl
ZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICB9CiAKQEAgLTU1OSw4ICs1NTksOCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogCiAgICAgICAgICAgICAvLyBNdXN0IGFkZCBhIHNv
dXJjZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRp
bmcuCiAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGN0eHQgPSB7IDAsICh2b2lk
KikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZv
cm0gfTsKLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENGUnVu
TG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
ICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUo
MCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBi
b2d1c1NvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAgICAgICAgICAgIHNl
bS5zaWduYWwoKTsKIAogICAgICAgICAgICAgd2hpbGUgKHRydWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAppbmRleCAxZmU2OTAyNGJjYmZiOGQ3N2JhYjk4YTkxYTNjYTgxNTlm
YmE0ZTAzLi4zYzgyYmMzYjRjNjg1OWI4YmE5NGEzMmJlOWE0MjZhODM5OTZlYzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTExMCw4ICsxMTAsOCBAQCBzdGF0aWMg
Q0ZSdW5Mb29wUmVmIGdldFJ1bkxvb3AoKQogCiAgICAgICAgICAgICAvLyBNdXN0IGFkZCBhIHNv
dXJjZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRp
bmcuCiAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGN0eHQgPSB7IDAsICh2b2lk
KikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZv
cm0gfTsKLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENGUnVu
TG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
ICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUo
MCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBi
b2d1c1NvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAgICAgICAgICAgIHNl
bS5zaWduYWwoKTsKIAogICAgICAgICAgICAgd2hpbGUgKHRydWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCmluZGV4IGY2ZTFiOWI1ZDNhNWJhN2FlMzVhNzc5MjNkNTZkNTNlYWUzMjcxOTkuLmI3ZWY1
Yjg3NTg0ZmZiYjY2YWY3ZDlhMTEzZjQzMDZkOTE1YTE2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCkBAIC0xNjcsNTEgKzE2Nyw1MSBAQCBzdGF0aWMgQ0ZVUkxSZWYgc2l0ZUZvckNvb2tpZXMo
UmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLAogICAgIGNh
c2UgUmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uOjpTYW1lU2l0ZToKICAgICAg
ICAgcmV0dXJuIHVybDsKICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3Np
dGlvbjo6Q3Jvc3NTaXRlOgotICAgICAgICBzdGF0aWMgQ0ZVUkxSZWYgZW1wdHlVUkwgPSBDRlVS
TENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgQ0ZTVFIoIiIpLCBudWxscHRyKTsKLSAgICAgICAg
cmV0dXJuIGVtcHR5VVJMOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGVVJMUmVmPj4gZW1wdHlVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxs
cHRyLCBDRlNUUigiIiksIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5VVJMLmdldCgp
LmdldCgpOwogICAgIH0KIH0KICNlbmRpZgogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKQogewotICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgY2ZSZXF1
ZXN0OworICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBjZlJlcXVlc3Q7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFJlc291cmNlUmVxdWVzdDo6dXJsKCkuY3Jl
YXRlQ0ZVUkwoKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVz
ID0gUmVzb3VyY2VSZXF1ZXN0OjpmaXJzdFBhcnR5Rm9yQ29va2llcygpLmNyZWF0ZUNGVVJMKCk7
CiAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCA9IFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVv
dXRJbnRlcnZhbCgpID8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgOiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CiAgICAgaWYgKG1f
Y2ZSZXF1ZXN0KSB7Ci0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFi
bGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJM
KGNmUmVxdWVzdCwgdXJsLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3Vt
ZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwotICAgICAgICBD
RlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QsIHRvUGxhdGZvcm1SZXF1ZXN0Q2Fj
aGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0
SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0aW1lb3V0SW50ZXJ2YWwpOworICAgICAgICBjZlJlcXVlc3Qg
PSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0Lmdl
dCgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QuZ2V0KCksIHVybC5n
ZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChjZlJlcXVlc3Qu
Z2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9s
aWN5KGNhY2hlUG9saWN5KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVy
dmFsKGNmUmVxdWVzdC5nZXQoKSwgdGltZW91dEludGVydmFsKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwuZ2V0KCksIHRv
UGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVvdXRJbnRlcnZh
bCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBjZlJlcXVlc3QgPSBhZG9w
dENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVx
dWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFy
dHlGb3JDb29raWVzLmdldCgpKSk7CiAKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1l
dGhvZChjZlJlcXVlc3QsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAg
ICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QuZ2V0KCksIGh0dHBN
ZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIGlmIChodHRwUGlwZWxpbmlu
Z0VuYWJsZWQoKSkKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkUGlwZWxpbmVIVFRQKGNm
UmVxdWVzdCwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFBpcGVs
aW5lSFRUUChjZlJlcXVlc3QuZ2V0KCksIHRydWUsIHRydWUpOwogCiAgICAgaWYgKHJlc291cmNl
UHJpb3JpdGllc0VuYWJsZWQoKSkgewotICAgICAgICBDRlVSTFJlcXVlc3RTZXRSZXF1ZXN0UHJp
b3JpdHkoY2ZSZXF1ZXN0LCB0b1BsYXRmb3JtUmVxdWVzdFByaW9yaXR5KHByaW9yaXR5KCkpKTsK
KyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdC5nZXQoKSwg
dG9QbGF0Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CiAKICAgICAgICAgLy8gVXNl
ZCBieSBQTFQgdG8gaWdub3JlIHZlcnkgbG93IHByaW9yaXR5IGJlYWNvbiBhbmQgcGluZyBsb2Fk
cy4KICAgICAgICAgaWYgKHByaW9yaXR5KCkgPT0gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlM
b3cpCi0gICAgICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVl
c3QsIENGU1RSKCJXS1ZlcnlMb3dMb2FkUHJpb3JpdHkiKSwga0NGQm9vbGVhblRydWUpOworICAg
ICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgp
LCBDRlNUUigiV0tWZXJ5TG93TG9hZFByaW9yaXR5IiksIGtDRkJvb2xlYW5UcnVlKTsKICAgICB9
CiAKLSAgICBzZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LCBodHRwSGVhZGVyRmllbGRzKCkpOwor
ICAgIHNldEhlYWRlckZpZWxkcyhjZlJlcXVlc3QuZ2V0KCksIGh0dHBIZWFkZXJGaWVsZHMoKSk7
CiAKLSAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29va2llcyhjZlJlcXVlc3Qs
IGFsbG93Q29va2llcygpKTsKKyAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29v
a2llcyhjZlJlcXVlc3QuZ2V0KCksIGFsbG93Q29va2llcygpKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0
LCBDRlNUUigiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIiksIHNp
dGVGb3JDb29raWVzKG1fc2FtZVNpdGVEaXNwb3NpdGlvbiwgdXJsLmdldCgpKSk7CisgICAgX0NG
VVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiX2tD
RkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIiksIHNpdGVGb3JDb29raWVz
KG1fc2FtZVNpdGVEaXNwb3NpdGlvbiwgdXJsLmdldCgpKSk7CiAKICAgICBpbnQgaXNUb3BTaXRl
ID0gbV9pc1RvcFNpdGU7CiAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBpc1RvcFNpdGVDRiA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwga0NGTnVtYmVySW50VHlwZSwgJmlzVG9w
U2l0ZSkpOwotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwg
Q0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlpc1RvcFNpdGUiKSwgaXNUb3BTaXRl
Q0YuZ2V0KCkpOworICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVz
dC5nZXQoKSwgQ0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlpc1RvcFNpdGUiKSwg
aXNUb3BTaXRlQ0YuZ2V0KCkpOwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBmYWxsYmFja0NvdW50
ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXpl
KCk7CkBAIC0yMjIsNTEgKzIyMiw1MSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2Rp
bmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoZW5jb2RpbmdGYWxs
YmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVuY29kaW5nKSk7CiAg
ICAgfQotICAgIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShjZlJl
cXVlc3QsIGVuY29kaW5nRmFsbGJhY2tzLmdldCgpKTsKKyAgICBzZXRDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoY2ZSZXF1ZXN0LmdldCgpLCBlbmNvZGluZ0ZhbGxiYWNr
cy5nZXQoKSk7CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIFN0cmluZyBw
YXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlvbigpOwogICAgIGlmICghcGFydGl0aW9uLmlzTnVsbCgp
ICYmICFwYXJ0aXRpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0cmluZyA9
IHBhcnRpdGlvbi51dGY4KCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFydGl0
aW9uVmFsdWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3Ro
KCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UpKTsKLSAgICAgICAgX0NGVVJMUmVxdWVz
dFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXks
IHBhcnRpdGlvblZhbHVlLmdldCgpKTsKKyAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29s
UHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXksIHBhcnRp
dGlvblZhbHVlLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fY2ZSZXF1ZXN0ID0gYWRv
cHRDRihjZlJlcXVlc3QpOworICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVlc3QpOwog
fQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKIHsK
LSAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZj4gY2ZSZXF1ZXN0OwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiB1cmwgPSBSZXNvdXJjZVJlcXVlc3Q6OnVybCgpLmNyZWF0ZUNGVVJMKCk7CiAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBmaXJzdFBhcnR5Rm9yQ29va2llcyA9IFJlc291cmNlUmVxdWVzdDo6Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKS5jcmVhdGVDRlVSTCgpOwogICAgIGRvdWJsZSB0aW1lb3V0SW50
ZXJ2YWwgPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA/IFJlc291cmNl
UmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpIDogUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVm
YXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogICAgIGlmIChtX2NmUmVxdWVzdCkgewotICAgICAgICBj
ZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5n
ZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QsIHVybC5nZXQoKSk7
Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChjZlJlcXVlc3QsIGZpcnN0
UGFydHlGb3JDb29raWVzLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0Q2FjaGVQb2xp
Y3koY2ZSZXF1ZXN0LCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkp
KTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVydmFsKGNmUmVxdWVzdCwgdGlt
ZW91dEludGVydmFsKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSkpOworICAgICAgICBDRlVSTFJl
cXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LmdldCgpLCB1cmwuZ2V0KCkpOworICAgICAgICBDRlVSTFJl
cXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29v
a2llcy5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVz
dC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7Cisg
ICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QuZ2V0KCksIHRp
bWVvdXRJbnRlcnZhbCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVx
dWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9s
aWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVz
LmdldCgpKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVN
dXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBv
bGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSkpOwog
CiAgICAgRm9ybURhdGEqIGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKICAgICBpZiAoZm9ybURhdGEg
JiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNm
UmVxdWVzdCwgZm9ybURhdGEpOworICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShjZlJlcXVl
c3QuZ2V0KCksIGZvcm1EYXRhKTsKIAotICAgIGlmIChSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVm
PiBib2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3Ry
ZWFtKGNmUmVxdWVzdCkpKSB7CisgICAgaWYgKFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGJv
ZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0o
Y2ZSZXF1ZXN0LmdldCgpKSkpIHsKICAgICAgICAgLy8gRm9yIHN0cmVhbXMsIHByb3ZpZGUgYSBD
b250ZW50LUxlbmd0aCB0byBhdm9pZCB1c2luZyBjaHVua2VkIGVuY29kaW5nLCBhbmQgdG8gZ2V0
IGFjY3VyYXRlIHRvdGFsIGxlbmd0aCBpbiBjYWxsYmFja3MuCiAgICAgICAgIGlmIChSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxlbmd0aFN0cmluZyA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGUmVhZFN0cmVhbUNvcHlQcm9wZXJ0eShib2R5U3RyZWFtLmdldCgpLCBmb3JtRGF0
YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpKSkpKSB7Ci0gICAgICAgICAgICBDRlVSTFJlcXVl
c3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShjZlJlcXVlc3QsIENGU1RSKCJDb250ZW50LUxlbmd0
aCIpLCBsZW5ndGhTdHJpbmcuZ2V0KCkpOworICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRU
UEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1MZW5ndGgi
KSwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKICAgICAgICAgICAgIC8vIFNpbmNlIHJlc291cmNlIHJl
cXVlc3QgaXMgYWxyZWFkeSBtYXJrZWQgdXBkYXRlZCwgd2UgbmVlZCB0byBrZWVwIGl0IHVwIHRv
IGRhdGUgdG9vLgogICAgICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCk7
CiAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50TGVuZ3RoLCBsZW5ndGhTdHJpbmcuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
bV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7CisgICAgbV9jZlJlcXVlc3QgPSBXVEZN
b3ZlKGNmUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291
cmNlUmVxdWVzdCgpCkBAIC0zNTUsMTAgKzM1NSwxMCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikK
IHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKIAotICAgIGF1dG8gY2ZSZXF1ZXN0ID0g
Q0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpOworICAg
IGF1dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgw
LCBtX2NmUmVxdWVzdC5nZXQoKSkpOwogICAgIGlmIChzdG9yYWdlU2Vzc2lvbikKLSAgICAgICAg
X0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdCwgc3RvcmFnZVNlc3Npb24p
OwotICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworICAgICAgICBfQ0ZVUkxS
ZXF1ZXN0U2V0U3RvcmFnZVNlc3Npb24oY2ZSZXF1ZXN0LmdldCgpLCBzdG9yYWdlU2Vzc2lvbik7
CisgICAgbV9jZlJlcXVlc3QgPSBXVEZNb3ZlKGNmUmVxdWVzdCk7CiB9CiAKICNlbmRpZiAvLyBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
aW5kZXggODBiZDY2ZDc4ZDQxYTc1MGEyNjBlZWJjOWY2N2Y0YmNiNmZiZTIxMS4uODY0YmI5OTcz
MTA4OWMyMzY1ZWIxNWQ5M2EyOWNmZTMxZjg0ODA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCkBAIC0xNzMsNyArMTczLDcgQEAgQ29va2llU3RvcmFnZU9ic2VydmVy
JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpIGNvbnN0CiAg
ICAgcmV0dXJuICptX2Nvb2tpZVN0b3JhZ2VPYnNlcnZlcjsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
ciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gY29va2llQWNjZXB0UG9saWN5KQor
UmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vz
c2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9s
aWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3Bl
cnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25z
dCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpbwogICAgIC8vIEZJWE1FOiBV
c2UgX0NGSFRUUENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0IHdoZW4gVVNFKENGTkVUV09SSykgaXMg
ZGVmaW5lZCBpbiBXZWJLaXQgZm9yIGNvbnNpc3RlbmN5LgogICAgIENGSFRUUENvb2tpZVN0b3Jh
Z2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgbnNDb29raWVBY2Nl
cHRQb2xpY3kpOwogCi0gICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gc3RvcmFnZVNlc3Npb247CiB9CiAKIFJldGFpblB0cjxOU0FycmF5PiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246Omh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3Rv
cmFnZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCA0NTVhN2E2MmNjMTI0MTYw
Y2Q4YmU5MmQ3NDkzMTIzYmE2ODZlNGZmLi4zNTc3NDBmMjI1NmY5ODkwYmE3MWEzNjM4ZWY1NzA3
ZTcxYTlkOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC0zOSw3ICszOSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIDxyZGFyOi8vcHJvYmxlbS80NjMzMjg5Mz4gUmVnaXN0
ZXIgLm1qcyBmaWxlcyBhcyB3aGF0ZXZlciBVVEkgaW5kaWNhdGVzIEphdmFTY3JpcHQKLXN0YXRp
YyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCitzdGF0aWMg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgp
CiB7CiAgICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewogICAgICAgICBDRlNUUigibWpzIikKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBjcmVhdGVFeHRlbnNpb25Ub01J
TUVUeXBlTWFwKCkKICAgICB9OwogCiAgICAgQVNTRVJUKHNpemVvZihrZXlzKSA9PSBzaXplb2Yo
dmFsdWVzKSk7Ci0gICAgcmV0dXJuIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihr
ZXlzKSAvIHNpemVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIHJldHVybiBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZr
ZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNpemVvZihDRlN0cmlu
Z1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpKTsKIH0KIAogdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENG
VVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCkBAIC02
NiwxMSArNjYsMTEgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9u
c2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUwKICAgICAgICAgaWYgKFsoX19i
cmlkZ2UgTlNVUkwgKil1cmwgaXNGaWxlVVJMXSkgewogICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJs
KSk7CiAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGlj
IENGRGljdGlvbmFyeVJlZiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBl
TWFwKCk7Ci0gICAgICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG11dGFibGVFeHRlbnNp
b24gPSBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4
dGVuc2lvbi5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJs
ZUV4dGVuc2lvbiwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gYWRvcHRDRiht
dXRhYmxlRXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlwZSA9
IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAsIGV4dGVuc2lv
bi5nZXQoKSkpCisgICAgICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVU
eXBlTWFwKCk7CisgICAgICAgICAgICAgICAgYXV0byBtdXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVu
c2lvbi5nZXQoKSkpOworICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVF
eHRlbnNpb24uZ2V0KCksIE5VTEwpOworICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IFdURk1v
dmUobXV0YWJsZUV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gbmV3TUlNRVR5
cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLmdldCgp
LmdldCgpLCBleHRlbnNpb24uZ2V0KCkpKQogICAgICAgICAgICAgICAgICAgICB1cGRhdGVkTUlN
RVR5cGUgPSBuZXdNSU1FVHlwZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCmluZGV4IGJiMTE2YTlkZmYzZTgwMjQ5ZTNjMWZmMTBlZTkxMjljNzA1NmZkMTUuLjRm
YTUwZTQ2YjA5NDk2Y2RlZTA3Mzk2NDVjODRmMWQ3YTQ2OWZmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0KQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gV2hlbiB3ZSBkaXNh
YmxlZCBjb250ZW50IHNuaWZmaW5nIGZvciBmaWxlIFVSTHMgd2UgY2F1c2VkIHByb2JsZW1zIHdp
dGggdGhlc2UgMTAwKyBleHRlbnNpb25zIHRoYXQgQ29yZVR5cGVzCiAvLyBkb2Vzbid0IGtub3cg
YWJvdXQuCiAvLyBJZiBDb3JlVHlwZXMgaXMgZXZlciBicm91Z2h0IHVwIHRvIHNwZWVkIHdlIGNh
biByZW1vdmUgdGhpcyB0YWJsZSBhbmQgYXNzb2NpYXRlZCBjb2RlLgotc3RhdGljIENGRGljdGlv
bmFyeVJlZiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKK3N0YXRpYyBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKIHsKICAgICBD
RlN0cmluZ1JlZiBrZXlzW10gPSB7CiAgICAgICAgIENGU1RSKCJhaSIpLApAQCAtMjg4LDcgKzI4
OCw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1h
cCgpCiAgICAgfTsKIAogICAgIEFTU0VSVChzaXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVlcykp
OwotICAgIHJldHVybiBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNv
bnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykvc2l6
ZW9mKENGU3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25z
dCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwogfQogCiB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKQEAgLTMwNCwxMSArMzA0
LDExIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNm
UmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9u
KSB7CiAgICAgICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcwMDczODk+IENvcmVUeXBl
cyBVVEkgbWFwIGlzIG1pc3NpbmcgMTAwKyBmaWxlIGV4dGVuc2lvbnMgdGhhdCBHYXRlS2VlcGVy
IGtuZXcgYWJvdXQKICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoaXMgcmFkYXIgaXMgcmVzb2x2
ZWQsIHdlIGNhbiByZW1vdmUgdGhpcyBmaWxlOi8vIHVybCBzcGVjaWZpYyBjb2RlLgotICAgICAg
ICAgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9uTWFwID0gY3JlYXRlRXh0
ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOwotICAgICAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1Jl
ZiBtdXRhYmxlRXh0ZW5zaW9uID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5n
TG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24sIE5VTEwpOwotICAgICAgICAgICAgICAgIGV4dGVu
c2lvbiA9IGFkb3B0Q0YobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5z
aW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4+IGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlN
RVR5cGVNYXAoKTsKKyAgICAgICAgICAgICAgICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0
ZW5zaW9uLmdldCgpKSk7CisgICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJs
ZUV4dGVuc2lvbi5nZXQoKSwgTlVMTCk7CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RG
TW92ZShtdXRhYmxlRXh0ZW5zaW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJp
bmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLmdldCgpLmdldCgpLCBleHRl
bnNpb24uZ2V0KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBHYXRla2VlcGVyLWJhc2VkIG1h
cCBkb2Vzbid0IGhhdmUgYSBNSU1FIHR5cGUsIHdlJ2xsIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQg
aXQgc2hvdWxkIGJlIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IDVmMzZkMDgzMTQ4NmM5ZDllNGZjOTNiOWJkZjFkNjE3
N2MyMGU2NDAuLmU4N2IxMjcwYzc0ZTZkNDJjMTY1ZDFhODdjY2Q4NjZhNWI5Yzc4ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1t
CkBAIC03MSwyMyArNzEsMjMgQEAgc3RhdGljIGJvb2wgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJh
Y3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIAogc3RhdGljIENGU3RyaW5nVG9rZW5pemVyUmVmIHRv
a2VuaXplckZvclN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiB7Ci0gICAgc3RhdGljIENGTG9jYWxl
UmVmIGxvY2FsZSA9IG51bGxwdHI7Ci0gICAgaWYgKCFsb2NhbGUpIHsKLSAgICAgICAgY29uc3Qg
Y2hhciogdGVtcCA9IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KHRlbXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZh
bHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgICAgIGxvY2FsZSA9IENGTG9jYWxlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSk7Ci0gICAgICAgIGlm
ICghbG9jYWxlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIHN0YXRp
YyBhdXRvIGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGNvbnN0IGNo
YXIqIGxvY2FsSUQgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKKyAgICAgICAgYXV0byBj
dXJyZW50TG9jYWxlSUQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihsb2NhbElE
KSwgc3RybGVuKGxvY2FsSUQpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxs
b2NhdG9yTnVsbCkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQuZ2V0KCkpKTsKKyAgICB9KCkpOworCisg
ICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ0ZSYW5nZSBl
bnRpcmVSYW5nZSA9IENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKHN0cikpOyAgICAK
IAotICAgIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXIgPSBudWxscHRyOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdUb2tlbml6ZXJSZWY+
PiB0b2tlbml6ZXI7CiAgICAgaWYgKCF0b2tlbml6ZXIpCi0gICAgICAgIHRva2VuaXplciA9IENG
U3RyaW5nVG9rZW5pemVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0ciwgZW50aXJlUmFu
Z2UsIGtDRlN0cmluZ1Rva2VuaXplclVuaXRXb3JkQm91bmRhcnksIGxvY2FsZSk7CisgICAgICAg
IHRva2VuaXplci5nZXQoKSA9IGFkb3B0Q0YoQ0ZTdHJpbmdUb2tlbml6ZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RyLCBlbnRpcmVSYW5nZSwga0NGU3RyaW5nVG9rZW5pemVyVW5pdFdv
cmRCb3VuZGFyeSwgbG9jYWxlLmdldCgpLmdldCgpKSk7CiAgICAgZWxzZQotICAgICAgICBDRlN0
cmluZ1Rva2VuaXplclNldFN0cmluZyh0b2tlbml6ZXIsIHN0ciwgZW50aXJlUmFuZ2UpOwotICAg
IHJldHVybiB0b2tlbml6ZXI7CisgICAgICAgIENGU3RyaW5nVG9rZW5pemVyU2V0U3RyaW5nKHRv
a2VuaXplci5nZXQoKS5nZXQoKSwgc3RyLCBlbnRpcmVSYW5nZSk7CisgICAgcmV0dXJuIHRva2Vu
aXplci5nZXQoKS5nZXQoKTsKIH0KIAogLy8gU2ltcGxlIGNhc2U6IEEgd29yZCBpcyBhIHN0cmVh
bSBvZiBjaGFyYWN0ZXJzIGRlbGltaXRlZCBieSBhIHNwZWNpYWwgc2V0IG9mIHdvcmQtZGVsaW1p
dGluZyBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKaW5kZXggNGQ4YzVjNjA2ZDVjNTU4N2YyYzk1YWYyZGE2YmZkYmYwMjY5ZGM5
NC4uMzA0YjFmZDJhZGU4YTc0NzI2ZTJmNThjODIyNTExMTVlNGIwNTIzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC01NywxMyArNTcs
MTEgQEAgR0RJT2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUs
IENHQ29udGV4dFJlZiAqdGFyZ2V0UmVmKQogICAgIGlmICghdGFyZ2V0UmVmIHx8ICFoYm1wKQog
ICAgICAgICByZXR1cm4gaGJtcDsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBDb250ZXh0ID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJt
cEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggKiA0
LCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1h
Z2VBbHBoYU5vbmVTa2lwRmlyc3QpOworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJt
cEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LCBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoICog
NCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJ
bWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuIEdESU9iamVjdDxIQklUTUFQPigpOwogCi0gICAgKnRhcmdldFJlZiA9IGJpdG1h
cENvbnRleHQ7CisgICAgKnRhcmdldFJlZiA9IGJpdG1hcENvbnRleHQubGVha1JlZigpOwogICAg
IHJldHVybiBoYm1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggMGNmMTdkZTI3NDQ1ZDNjNjg5ZDdlZTc4NTJiMTAwMGMxZmM0OTk1ZC4uODg3
YTNhNTg4ZGQ4NmQwOTU3NWJhYWMzZjVkMmYwNzM5ZDQzMGJmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTUyLDM2ICsxNTIsMjUgQEAgc3RhdGlj
IHZvaWQgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdyYWRpZW50KHZvaWQgKmluZm8sIGNvbnN0IENH
RmxvYXQgKmluRGF0YSwgQ0cKIAogc3RhdGljIENHRnVuY3Rpb25SZWYgZ2V0U2hhcmVkRnVuY3Rp
b25SZWYoSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlv
bikKIHsKLSAgICBDR0Z1bmN0aW9uUmVmIGZ1bmN0aW9uID0gbnVsbHB0cjsKLQotICAgIHN0YXRp
YyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiogbGluZWFyRnVuY3Rpb25S
ZWZzOwotICAgIHN0YXRpYyBIYXNoTWFwPElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiog
ZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8SU9TR3JhZGllbnRSZWYsIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPj4+IGxpbmVhckZ1bmN0
aW9uUmVmczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFkaWVudFJl
ZiwgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+Pj4gZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CiAK
ICAgICBpZiAoaW50ZXJwb2xhdGlvbiA9PSBMaW5lYXJJbnRlcnBvbGF0aW9uKSB7Ci0gICAgICAg
IGlmICghbGluZWFyRnVuY3Rpb25SZWZzKQotICAgICAgICAgICAgbGluZWFyRnVuY3Rpb25SZWZz
ID0gbmV3IEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+OwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBmdW5jdGlvbiA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRp
ZW50KTsKLSAgICAKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+
Z2V0KGdyYWRpZW50KTsKICAgICAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICAgICAgc3Rh
dGljIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzID0g
IHsgMCwgaW50ZXJwb2xhdGVMaW5lYXJHcmFkaWVudCwgMCB9OwotICAgICAgICAgICAgbGluZWFy
RnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlvbkNyZWF0ZShn
cmFkaWVudCwgMSwgbnVsbHB0ciwgNCwgbnVsbHB0ciwgJmxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tz
KSk7CisgICAgICAgICAgICBsaW5lYXJGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rp
b24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoZ3JhZGllbnQsIDEsIG51bGxwdHIsIDQsIG51
bGxwdHIsICZsaW5lYXJGdW5jdGlvbkNhbGxiYWNrcykpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHJldHVybiBmdW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLmdldCgpOwogICAgIH0K
IAotICAgIGlmICghZXhwb25lbnRpYWxGdW5jdGlvblJlZnMpCi0gICAgICAgIGV4cG9uZW50aWFs
RnVuY3Rpb25SZWZzID0gbmV3IEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+
OwotICAgIGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+
Z2V0KGdyYWRpZW50KTsKLQorICAgIGF1dG8gZnVuY3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9u
UmVmcy0+Z2V0KGdyYWRpZW50KTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIHN0YXRp
YyBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBleHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tz
ID0gIHsgMCwgaW50ZXJwb2xhdGVFeHBvbmVudGlhbEdyYWRpZW50LCAwIH07Ci0gICAgICAgIGV4
cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGllbnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlv
bkNyZWF0ZShncmFkaWVudCwgMSwgMCwgNCwgMCwgJmV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFj
a3MpKTsKKyAgICAgICAgZXhwb25lbnRpYWxGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVu
Y3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoZ3JhZGllbnQsIDEsIDAsIDQsIDAsICZl
eHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tzKSkpOwogICAgIH0KLQotICAgIHJldHVybiBmdW5j
dGlvbjsKKyAgICByZXR1cm4gZnVuY3Rpb24uZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdB
eGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBJT1NHcmFkaWVudFJlZiBncmFkaWVu
dCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgY29uc3QgRmxvYXRQb2ludCYgc3RvcFBv
aW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCmluZGV4IGJlNjYwNzhh
ODNkMGNhNDliNzFhMWZiNTNjMjNhOGM2YjgxZDc2N2UuLjVhOWJiYzcxNWM5ZTVjODQzYWFmMmI5
MTVkZDg4ZjcyZWZhMTllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29j
b2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
Y29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIAotc3Rh
dGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEo
Q0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJl
Zj4gY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNl
RGF0YSkKIHsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZTsKICAgICBhdXRvIHVuYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJv
bURhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXJlc3BvbnNlRGF0YSBlcnJvcjpudWxscHRyXSk7CkBA
IC01Myw3ICs1Myw3IEBAIHN0YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9u
c2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhCiAgICAgfQogCiAgICAgaWYg
KCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKLSAg
ICAgICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9f
YnJpZGdlIENGVVJMUmVmKXJlc3BvbnNlLlVSTCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3Bv
bnNlLk1JTUVUeXBlLCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgsIChfX2JyaWRnZSBD
RlN0cmluZ1JlZilyZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VB
bGxvd2VkKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUs
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKIAogICAgIE5TSFRUUFVSTFJlc3BvbnNlICpo
dHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKIApAQCAtNjQsNyAr
NjQsNyBAQCBzdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJl
c3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYQogICAgIGZvciAoTlNTdHJpbmcgKmhlYWRl
ckZpZWxkIGluIFtoZWFkZXJGaWVsZHMga2V5RW51bWVyYXRvcl0pCiAgICAgICAgIENGSFRUUE1l
c3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKGh0dHBNZXNzYWdlLmdldCgpLCAoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpaGVhZGVyRmllbGQsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilbaGVhZGVyRmllbGRz
IG9iamVjdEZvcktleTpoZWFkZXJGaWVsZF0pOwogCi0gICAgcmV0dXJuIENGVVJMUmVzcG9uc2VD
cmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVS
TFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VB
bGxvd2VkKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBS
ZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2Uu
VVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwogfQog
CiBzdGF0aWMgdm9pZCBjb252ZXJ0TUlNRVR5cGUoQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBl
KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJvcGVyCiAgICAgaWYgKENG
R2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZXNwb25zZSA9IGFkb3B0
Q0YoY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKSk7Cisg
ICAgYXV0byByZXNwb25zZSA9IGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJl
c3BvbnNlRGF0YSk7CiAgICAgaWYgKCFyZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFh
OWY3MTlkNjUxZmE4YWVkMTlmNmVmZjA1MTU3ZjA5NTJkYmVlMTEuLmM1MzdlYTI4ZDkxYzUwNWEy
NThiOWM4MDZlN2U4M2NlMmNmNDBlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00NTEsNyArNDUxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6Om5ld1Rl
c3RpbmdTZXNzaW8KICAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBm
b3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90aGVy
d2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4
NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0i
LCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihX
ZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAog
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAg
IGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVB
UEkoKSkgewpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgYm9vbCBzaG91bGRVCiAgICAg
UmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlmaWVy
QmFzZSwgIi5Qcml2YXRlQnJvd3NpbmcuIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS5j
cmVhdGVDRlN0cmluZygpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAg
ICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKICAgICBlbHNlIGlmIChzZXNz
aW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAgICAgc3Rv
cmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZUNGU3Rv
cmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKGNmSWRlbnRpZmllci5nZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYTQyMzM0ZWMw
Y2ExYWQwNTAyM2VjYmY3OGQxMzFkMDFiM2VmMzZmLi40ODU3ZTU5Njc3ZjkxMGYzMzFlMmQ2ZmEz
MTk4ZjAzZDVmNGE0NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCkBAIC02Myw2ICs2Myw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Q0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAjZW5kaWYKIApA
QCAtNTU3LDcgKzU1OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFdlJ2QgbGlrZSB0byBi
ZSBhYmxlIHRvIGRvIHRoaXMgd2l0aG91dCB0aGUgI2lmZGVmLCBidXQgV29ya1F1ZXVlICsgQmlu
YXJ5U2VtYXBob3JlIGlzbid0IGdvb2QgZW5vdWdoIHNpbmNlCiAgICAgLy8gbXVsdGlwbGUgcmVx
dWVzdHMgdG8gY2xlYXIgdGhlIGNhY2hlIGNhbiBjb21lIGluIGJlZm9yZSBwcmV2aW91cyByZXF1
ZXN0cyBjb21wbGV0ZSwgYW5kIHdlIG5lZWQgdG8gd2FpdCBmb3IgYWxsIG9mIHRoZW0uCiAgICAg
Ly8gSW4gdGhlIGZ1dHVyZSB1c2luZyBXb3JrUXVldWUgYW5kIGEgY291bnRpbmcgc2VtYXBob3Jl
IHdvdWxkIHdvcmssIGFzIHdvdWxkIFdvcmtRdWV1ZSBzdXBwb3J0aW5nIHRoZSBsaWJkaXNwYXRj
aCBjb25jZXB0IG9mICJ3b3JrIGdyb3VwcyIuCi0gICAgZGlzcGF0Y2hfZ3JvdXBfdCBtX2NsZWFy
Q2FjaGVEaXNwYXRjaEdyb3VwIHsgbnVsbHB0ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNo
X2dyb3VwX3Q+IG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXA7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNjBhZjkzZGRmNTFk
ZTc5MDMyNjQ1NDZjNmIwMzRiYTFiNWJhNTcyZS4uNWZiZTgxZDY4NmI5Yzc0ZDdkZWI5Njg1NjQw
MzgxM2ZlNjdlZGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTkxLDkgKzE5MSw5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2FsbFRpbWUgbW9kaWZpZWRTCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNo
ZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKQot
ICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRl
KCk7CisgICAgICAgIG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRp
c3BhdGNoX2dyb3VwX2NyZWF0ZSgpKTsKIAotICAgIGF1dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVE
aXNwYXRjaEdyb3VwOworICAgIGF1dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3Vw
LmdldCgpOwogICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbW9kaWZpZWRTaW5jZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFttb2RpZmllZFNpbmNlLCAmYWdncmVnYXRvcl0oTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggYjVlMGQxYTNkNTEyNTNhNTAw
M2RlNjVlNTg2OTc5ZTRkOGMyZDA4MC4uYjBmOWE1OWJiMmMwODM3ODVjODU5Y2I3MDE1OTE4YTNh
NjQxMTYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya1Byb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTk3LDkgKzk3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9u
UGFyYW0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKICAgICBp
ZiAobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCkgewotICAgICAgICBkaXNwYXRjaF9ncm91cF93
YWl0KG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7Ci0g
ICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCk7Ci0gICAg
ICAgIG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSAwOworICAgICAgICBkaXNwYXRjaF9ncm91
cF93YWl0KG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9S
RVZFUik7CisgICAgICAgIG1fY2xlYXJDYWNoZURpc3BhdGNoR3JvdXAgPSBudWxscHRyOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDRmNmIx
ODRmZjQwZDk5Mjg4ZWI2MDYwYTdjNTg4NmIzNzM2YzRiODMuLmQ5YjUzMDMzNThkNjQ3ODY2Yzlh
YjZhNTdjYzE3YmRlYTk0MmY4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKQEAgLTQ1OCwxMCArNDU4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxSZWNl
aXZlU291cmNlKCk7CiAKICAgICBtYWNoX3BvcnRfdCBtX3NlbmRQb3J0IHsgTUFDSF9QT1JUX05V
TEwgfTsKLSAgICBkaXNwYXRjaF9zb3VyY2VfdCBtX3NlbmRTb3VyY2UgeyBudWxscHRyIH07Cisg
ICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfc291cmNlX3Q+IG1fc2VuZFNvdXJjZTsKIAogICAgIG1h
Y2hfcG9ydF90IG1fcmVjZWl2ZVBvcnQgeyBNQUNIX1BPUlRfTlVMTCB9OwotICAgIGRpc3BhdGNo
X3NvdXJjZV90IG1fcmVjZWl2ZVNvdXJjZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxk
aXNwYXRjaF9zb3VyY2VfdD4gbV9yZWNlaXZlU291cmNlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PE1hY2hNZXNzYWdlPiBtX3BlbmRpbmdPdXRnb2luZ01hY2hNZXNzYWdlOwogICAgIGJvb2wgbV9p
c0luaXRpYWxpemluZ1NlbmRTb3VyY2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDhkOWNkZTA4ZjQ2
NzE0MWE5MGQ4ZWFmOWRkNzg1Yjc5MDM4ZDU4ZWUuLjkwYmRmMjQ4NzYyNDljZWYxNzFiYzkyZDc2
NmU3NGUwMmQ0MTg0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTE0Nyw4ICsxNDcsNyBAQCB2b2lkIENvbm5lY3Rp
b246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgQVNTRVJUKG1fcmVjZWl2ZVBvcnQpOwogCiAg
ICAgLy8gVW5yZWdpc3RlciBvdXIgcG9ydHMuCi0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbCht
X3NlbmRTb3VyY2UpOwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZW5kU291cmNlKTsKKyAgICBk
aXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1fc2VuZFNvdXJjZS5nZXQoKSk7CiAgICAgbV9zZW5kU291
cmNlID0gbnVsbHB0cjsKICAgICBtX3NlbmRQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiAKQEAgLTE1
Nyw4ICsxNTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZv
aWQgQ29ubmVjdGlvbjo6Y2FuY2VsUmVjZWl2ZVNvdXJjZSgpCiB7Ci0gICAgZGlzcGF0Y2hfc291
cmNlX2NhbmNlbChtX3JlY2VpdmVTb3VyY2UpOwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9yZWNl
aXZlU291cmNlKTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1fcmVjZWl2ZVNvdXJjZS5n
ZXQoKSk7CiAgICAgbV9yZWNlaXZlU291cmNlID0gbnVsbHB0cjsKICAgICBtX3JlY2VpdmVQb3J0
ID0gTUFDSF9QT1JUX05VTEw7CiB9CkBAIC0yMzAsMTEgKzIyOCwxMSBAQCBib29sIENvbm5lY3Rp
b246Om9wZW4oKQogICAgIC8vIENoYW5nZSB0aGUgbWVzc2FnZSBxdWV1ZSBsZW5ndGggZm9yIHRo
ZSByZWNlaXZlIHBvcnQuCiAgICAgc2V0TWFjaFBvcnRRdWV1ZUxlbmd0aChtX3JlY2VpdmVQb3J0
LCBNQUNIX1BPUlRfUUxJTUlUX0xBUkdFKTsKIAotICAgIG1fcmVjZWl2ZVNvdXJjZSA9IGRpc3Bh
dGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2Vp
dmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKLSAgICBkaXNw
YXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIobV9yZWNlaXZlU291cmNlLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIHsKKyAgICBtX3JlY2VpdmVTb3VyY2UgPSBh
ZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVf
TUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hR
dWV1ZSgpKSk7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2
ZVNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7
CiAgICAgICAgIHJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKTsKICAgICB9KTsKLSAgICBkaXNw
YXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsK
KyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5n
ZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1f
cmVjZWl2ZVBvcnRdIHsKICNpZiAhUExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAgbWFjaF9wb3J0
X3VuZ3VhcmQobWFjaF90YXNrX3NlbGYoKSwgcmVjZWl2ZVBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8
bWFjaF9wb3J0X2NvbnRleHRfdD4ocHJvdGVjdGVkVGhpcy5nZXQoKSkpOwogI2VuZGlmCkBAIC0y
NDMsMTAgKzI0MSwxMCBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogCiAgICAgcmVmKCk7CiAg
ICAgZGlzcGF0Y2hfYXN5bmMobV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSwgXnsK
LSAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fcmVjZWl2ZVNvdXJjZSk7CisgICAgICAgIGRpc3Bh
dGNoX3Jlc3VtZShtX3JlY2VpdmVTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGlmIChtX3NlbmRT
b3VyY2UpCi0gICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5kU291cmNlKTsKKyAgICAg
ICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3NlbmRTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGRl
cmVmKCk7CiAgICAgfSk7CkBAIC0zNzEsMjAgKzM2OSwyMCBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlcikKIAogdm9pZCBD
b25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNvdXJjZSgpCiB7Ci0gICAgbV9zZW5kU291cmNlID0g
ZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1NFTkQsIG1f
c2VuZFBvcnQsIERJU1BBVENIX01BQ0hfU0VORF9ERUFEIHwgRElTUEFUQ0hfTUFDSF9TRU5EX1BP
U1NJQkxFLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKKyAgICBtX3NlbmRT
b3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09V
UkNFX1RZUEVfTUFDSF9TRU5ELCBtX3NlbmRQb3J0LCBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCB8
IERJU1BBVENIX01BQ0hfU0VORF9QT1NTSUJMRSwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNo
UXVldWUoKSkpOwogICAgIG1faXNJbml0aWFsaXppbmdTZW5kU291cmNlID0gdHJ1ZTsKIAotICAg
IGRpc3BhdGNoX3NvdXJjZV9zZXRfcmVnaXN0cmF0aW9uX2hhbmRsZXIobV9zZW5kU291cmNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyldIHsKKyAgICBkaXNwYXRjaF9z
b3VyY2Vfc2V0X3JlZ2lzdHJhdGlvbl9oYW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5k
U291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2lzSW5pdGlhbGl6aW5nU2Vu
ZFNvdXJjZSA9IGZhbHNlOwogICAgICAgICByZXN1bWVTZW5kU291cmNlKCk7CiAgICAgfSk7Ci0g
ICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNl
X3NldF9ldmVudF9oYW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9IGRpc3BhdGNo
X3NvdXJjZV9nZXRfZGF0YShtX3NlbmRTb3VyY2UpOworICAgICAgICB1bnNpZ25lZCBsb25nIGRh
dGEgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEobV9zZW5kU291cmNlLmdldCgpKTsKIAogICAg
ICAgICBpZiAoZGF0YSAmIERJU1BBVENIX01BQ0hfU0VORF9ERUFEKSB7CiAgICAgICAgICAgICBj
b25uZWN0aW9uRGlkQ2xvc2UoKTsKQEAgLTQwMCw3ICszOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246
OmluaXRpYWxpemVTZW5kU291cmNlKCkKIAogICAgIGlmIChNQUNIX1BPUlRfVkFMSUQobV9zZW5k
UG9ydCkpIHsKICAgICAgICAgbWFjaF9wb3J0X3Qgc2VuZFBvcnQgPSBtX3NlbmRQb3J0OwotICAg
ICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgXnsK
KyAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2Uu
Z2V0KCksIF57CiAgICAgICAgICAgICAvLyBSZWxlYXNlIG91ciBzZW5kIHJpZ2h0LgogICAgICAg
ICAgICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNhZmVseShzZW5kUG9ydCk7CiAgICAgICAgIH0pOwpA
QCAtNTgwLDcgKzU3OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFu
ZGxlcigpCiAgICAgICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRSaWdodFNhZmVseShwcmV2aW91
c05vdGlmaWNhdGlvblBvcnQpOwogCiAgICAgICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgp
OwotICAgICAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2VuZFNvdXJjZSk7CisgICAgICAgICAg
ICBkaXNwYXRjaF9yZXN1bWUobV9zZW5kU291cmNlLmdldCgpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQppbmRleCA1YjY4ODRiZmYyOWY4ZjRm
OGRkYWMzNWVlZmNlZTgyZTg1ZDVjMjkzLi41ODc2MDkwNjA4ZDlhZmM4OGUzNDFjNWRmZjczZjVi
MzEwZWZhODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0
V2ViQnJvd3NlckNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZh
dWx0V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAtMzEsNiArMzEsOCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNo
ZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50
aXRsZW1lbnRzLmg+CkBAIC0xMTksNyArMTIxLDExIEBAIHN0YXRpYyBib29sIGRldGVybWluZUlU
UFN0YXRlSW50ZXJuYWwoYm9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmluZyYK
ICAgICByZXR1cm4gcmVzdWx0ICE9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAKLXN0
YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdfaXRwUXVldWU7CitzdGF0aWMgT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4mIGl0cFF1ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4+IGl0cFF1ZXVlOworICAgIHJldHVybiBpdHBR
dWV1ZTsKK30KIAogdm9pZCBkZXRlcm1pbmVJVFBTdGF0ZSgpCiB7CkBAIC0xMzAsMTQgKzEzNiwx
MyBAQCB2b2lkIGRldGVybWluZUlUUFN0YXRlKCkKICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IElU
UFN0YXRlOjpJbml0aWFsaXppbmc7CiAgICAgYm9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIgPSBs
aW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoU2Vzc2lvbkNsZWFu
dXBCeURlZmF1bHQpOwogCi0gICAgZ19pdHBRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLldlYktpdC5pdHBDaGVja1F1ZXVlIiwgTlVMTCk7CisgICAgaXRwUXVldWUoKSA9
IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0
cENoZWNrUXVldWUiLCBOVUxMKSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhnX2l0cFF1ZXVlLCBb
YXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9h
c3luYyhpdHBRdWV1ZSgpLmdldCgpLCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVu
dGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRD
b3B5KCldIHsKICAgICAgICAgZ19jdXJyZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUlu
dGVybmFsKGFwcFdhc0xpbmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0
ZTo6RW5hYmxlZCA6IElUUFN0YXRlOjpEaXNhYmxlZDsKIAogICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW10gewotICAgICAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShnX2l0cFF1ZXVl
KTsKLSAgICAgICAgICAgIGdfaXRwUXVldWUgPSBudWxscHRyOworICAgICAgICAgICAgaXRwUXVl
dWUoKSA9IG51bGxwdHI7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTQ5LDEwICsxNTQs
MTAgQEAgYm9vbCBkb2VzQXBwSGF2ZUlUUEVuYWJsZWQoKQogICAgIGlmIChnX2N1cnJlbnRJVFBT
dGF0ZSA+IElUUFN0YXRlOjpJbml0aWFsaXppbmcpCiAgICAgICAgIHJldHVybiBnX2N1cnJlbnRJ
VFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxlZDsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGdfaXRw
UXVldWUpOworICAgIFJFTEVBU0VfQVNTRVJUKGl0cFF1ZXVlKCkpOwogCiAgICAgX19ibG9jayBi
b29sIGlzSVRQRW5hYmxlZDsKLSAgICBkaXNwYXRjaF9zeW5jKGdfaXRwUXVldWUsIF57CisgICAg
ZGlzcGF0Y2hfc3luYyhpdHBRdWV1ZSgpLmdldCgpLCBeewogICAgICAgICBpc0lUUEVuYWJsZWQg
PSBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxlZDsKICAgICB9KTsKICAgICBy
ZXR1cm4gaXNJVFBFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VNYWluLm1tCmluZGV4IGFiMDYzNGYxYWM2NTUzNzczNDgxODUwMmE5MTQzZDFhZGQx
MTQ4MzguLjc4ZWFmZjQ1MjA0ODdjYzNkY2UzMDVlMDU0NDFiMTZjNzc4MTc0NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIHZvaWQgc2V0QXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlKCkKIAogc3Rh
dGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiB7
Ci0gICAgc3RhdGljIHhwY19vYmplY3RfdCBwcmlvcml0eUJvb3N0TWVzc2FnZSA9IG51bGxwdHI7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4+IHBy
aW9yaXR5Qm9vc3RNZXNzYWdlOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1
ZShwZWVyLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApKTsKICAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVy
LCBeKHhwY19vYmplY3RfdCBldmVudCkgewpAQCAtMTE4LDE5ICsxMTgsMTggQEAgc3RhdGljIHZv
aWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAg
ICAgICAgICAgICAgIGR1cDIoZmQsIFNUREVSUl9GSUxFTk8pOwogCiAgICAgICAgICAgICAgICAg
ZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAg
ICAgICAgICBpbml0aWFsaXplckZ1bmN0aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0
TWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVl
ciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpLmdldCgpKTsKIAogICAgICAgICAg
ICAgICAgICAgICBzZXRBcHBsZUxhbmd1YWdlc1ByZWZlcmVuY2UoKTsKICAgICAgICAgICAgICAg
ICB9KTsKIAotICAgICAgICAgICAgICAgIGlmIChwcmlvcml0eUJvb3N0TWVzc2FnZSkKLSAgICAg
ICAgICAgICAgICAgICAgeHBjX3JlbGVhc2UocHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAg
ICAgICAgICAgIHByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgLy8gTGVhayBhIGJvb3N0IG9udG8gdGhlIE5ldHdvcmtQcm9j
ZXNzLgogICAgICAgICAgICAgaWYgKCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
dmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAicHJlLWJvb3RzdHJhcCIpKSB7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0KCFwcmlvcml0eUJvb3N0TWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgcHJpb3Jp
dHlCb29zdE1lc3NhZ2UgPSB4cGNfcmV0YWluKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQoIXByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0
eUJvb3N0TWVzc2FnZS5nZXQoKSA9IGV2ZW50OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBoYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAyNTgzYzkzNTFiOTc4NGM0MzliOTk4MDk2Yzc3
MzFlNDM1ZDQyMjMyLi42Y2VmODdmM2M0NjQxNzlkZjc2NjJmZGMzOTkyM2EwNjEzZTIxZDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC02Myw3ICs2
Myw3IEBAIHN0YXRpYyB2b2lkIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIs
IHZvaWQgKmluZm8pCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+
ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VE
ZWFsbG9jYXRvcigpCiB9CiAgICAgCi1zdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlU2hhcmVh
YmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCitzdGF0
aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxs
b2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBDRkFsbG9jYXRvckNv
bnRleHQgY29udGV4dCA9IHsgMCwKICAgICAgICAgcmVzb3VyY2UsCkBAIC03Niw3ICs3Niw3IEBA
IHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9y
KFNoYXJlYWJsZVJlc291cmNlKiByZXNvCiAgICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUK
ICAgICB9OwogCi0gICAgcmV0dXJuIENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsICZjb250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOwogfQogI2VuZGlmCiAKQEAgLTg1LDggKzg1LDgg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1
ZmZlcigpCiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVy
IGlzIGRlYWxsb2NhdGVkLgogCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkFsbG9jYXRv
clJlZj4gZGVhbGxvY2F0b3IgPSBhZG9wdENGKGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxv
Y2F0b3IodGhpcykpOwotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXpl
KCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOworICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVT
aGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOworICAgIGF1dG8gY2ZEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHN0YXRpY19jYXN0PENGSW5kZXg+
KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRl
cz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBz
aXplKCksIFtdKHZvaWQqIGRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHAKaW5kZXggZDAyNDI5MDhkNGM5ZjRmZmQxODViZDhlMWE1MzA1ODlkZjhh
ZWUwMy4uMzM3YzkzNjQ3MzI4NTdkMjcxMTRmOTQwMDRjY2QyYzUxOTk2ODI0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTU0MSw4ICs1NDEs
NyBAQCBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+
JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChkYXRhUmVmZXJl
bmNlLmRhdGEoKSk7Ci0gICAgQ0ZOdW1iZXJSZWYgbnVtYmVyID0gQ0ZOdW1iZXJDcmVhdGUoMCwg
bnVtYmVyVHlwZSwgZGF0YVJlZmVyZW5jZS5kYXRhKCkpOwotICAgIHJlc3VsdCA9IGFkb3B0Q0Yo
bnVtYmVyKTsKKyAgICByZXN1bHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIG51bWJlclR5
cGUsIGRhdGFSZWZlcmVuY2UuZGF0YSgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU4
MSwxMSArNTgwLDExIEBAIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4mIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVu
Y2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmcgPSBD
RlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVy
ZW5jZS5zaXplKCksIGVuY29kaW5nLCBmYWxzZSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVm
ZXJlbmNlLnNpemUoKSwgZW5jb2RpbmcsIGZhbHNlKSk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9IGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICBy
ZXN1bHQgPSBXVEZNb3ZlKHN0cmluZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rpbmcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Zy5jcHAKaW5kZXggNjNlM2FmNDFkYTA1NTc5YmI1NDJhMmU2Njc4ODk4MzEwZTU1ZDliOC4uYTM5
NDA2NDlmZGJmMmRlZDQ4NGE0ZTI2MTAyYjkyMWNjMjgwNzhmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAK
QEAgLTM4NCw3ICszODQsNyBAQCBzdGF0aWMgTWFsbG9jUHRyPHVpbnQ4X3QsIEhpc3RvcnlFbnRy
eURhdGFFbmNvZGVyTWFsbG9jPiBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudAogCiBzdGF0aWMgUmV0
YWluUHRyPENGRGF0YVJlZj4gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3QgRnJh
bWVTdGF0ZSYgZnJhbWVTdGF0ZSkKIHsKLSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1h
bGxvY0RlYWxsb2NhdG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZB
bGxvY2F0b3JSZWY+PiBmYXN0TWFsbG9jRGVhbGxvY2F0b3I7CiAKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAg
LTQwMSwxMyArNDAxLDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbmNvZGVTZXNz
aW9uSGlzdG9yeUVudHJ5RGF0YShjb25zdCBGcmFtZVN0YXRlJiBmcmFtCiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgbnVsbHB0ciwgLy8gcHJlZmVycmVkU2l6ZQogICAgICAgICB9OwotICAg
ICAgICBmYXN0TWFsbG9jRGVhbGxvY2F0b3IgPSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAmY29udGV4dCk7CisgICAgICAgIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQo
KSA9IGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRl
eHQpKTsKICAgICB9KTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplOwogICAgIGF1dG8gYnVmZmVy
ID0gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoZnJhbWVTdGF0ZSwgYnVmZmVyU2l6ZSk7
CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYnVmZmVyLmxlYWtQdHIoKSwgYnVmZmVyU2l6ZSwgZmFzdE1hbGxvY0Rl
YWxsb2NhdG9yKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9D
b3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5sZWFrUHRyKCksIGJ1ZmZlclNpemUsIGZh
c3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKS5nZXQoKSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRGljdGlvbmFyeShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPENGU3RyaW5nUmVmLCBDRlR5cGVSZWY+PiBrZXlWYWx1ZVBhaXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2Fj
aGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNv
b2tpZUNhY2hlQ29jb2EubW0KaW5kZXggMmRmMjMzNWQ5YzVhZGZhYjVhNmJlOTJjOWM3N2MyMDU3
YjY5OWUyYS4uYmRkYmIwODlkZWViNWVmZWYyY2U3MmVmMjNlYTNjOTYwMTA0MDBiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2Fj
aGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24oKQogICAgIGlmICgh
bV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKSB7CiAgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9
IG1ha2VTdHJpbmcoIldlYktpdEluUHJvY2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJ
RCgpKTsKICAgICAgICAgYXV0byBjb29raWVBY2NlcHRQb2xpY3kgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb29raWVBY2NlcHRQb2xp
Y3koKTsKLSAgICAgICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3Jl
YXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGNvb2tpZUFjY2VwdFBvbGljeSkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0g
V2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgICAgIGF1dG8gY29va2ll
U3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgICAgICBtX2lu
TWVtb3J5U3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCksIFdURk1vdmUoc3RvcmFnZVNlc3Np
b24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpLCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OklzSW5N
ZW1vcnlDb29raWVTdG9yZTo6WWVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDA2MWYyNjY5OGQ4ZmFjY2ExMzcx
NzA0NGVkYTI2MDg2MWM2ODhhZGYuLmQ0ODJiNDJlMGMyNTQxMjc3Yzk0YTQ1ZGZjZmI1YjAxOTQ1
MTExNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xNTcsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2Fp
dGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWZlcnJlZFJl
bmRlcmluZ1VwZGF0ZVdoaWxlV2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9Owog
Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2NvbW1pdFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRp
c3BhdGNoX3F1ZXVlX3Q+IG1fY29tbWl0UXVldWU7CiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZs
dXNoZXI+IG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICBIYXNoU2V0PFJlbW90
ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcio+IG1fZGlzcGxheVJlZnJlc2hNb25pdG9y
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQppbmRleCA5OTkyODcxYjFjMDBlODIxMGNiNjZkZWJkMjhlZTZiMDhkYjEyNGQ1Li5hMzg4
MTMzNWE0ZWY3ZGEwYTI4ZmI3NjAyYjhhMjk3YTgwNjg1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC02NSw3ICs2NSw3
IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0
aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwogICAgIG1fcm9vdExheWVyLT5z
ZXROYW1lKCJkcmF3aW5nIGFyZWEgcm9vdCIpOwogCi0gICAgbV9jb21taXRRdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLkNvbW1pdFF1ZXVlIiwgbnVsbHB0cik7CisgICAgbV9jb21taXRRdWV1
ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuQ29tbWl0UXVldWUiLCBudWxs
cHRyKSk7CiAKICAgICAvLyBJbiBvcmRlciB0byBlbnN1cmUgdGhhdCB3ZSBnZXQgYSB1bmlxdWUg
RGlzcGxheVJlZnJlc2hNb25pdG9yIHBlci1EcmF3aW5nQXJlYSAobmVjZXNzYXJ5IGJlY2F1c2Ug
RGlzcGxheVJlZnJlc2hNb25pdG9yCiAgICAgLy8gaXMgZHJpdmVuIGJ5IHRoaXMgY2xhc3MpLCBn
aXZlIGVhY2ggcGFnZSBhIHVuaXF1ZSBEaXNwbGF5SUQgZGVyaXZlZCBmcm9tIFdlYlBhZ2UncyB1
bmlxdWUgSUQuCkBAIC03OCwxMCArNzgsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAg
ICAgICBzZXRWaWV3RXhwb3NlZFJlY3Qodmlld0V4cG9zZWRSZWN0KTsKIH0KIAotUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCi17Ci0gICAg
ZGlzcGF0Y2hfcmVsZWFzZShtX2NvbW1pdFF1ZXVlKTsKLX0KK1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKSA9IGRlZmF1bHQ7CiAKIHZvaWQg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7CkBAIC00MTIs
NyArNDA5LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVy
aW5nKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1
c2hlcjsKIAogICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLmlkZW50aWZpZXIoKTsKLSAgICBk
aXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1v
dmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1f
Y29tbWl0UXVldWUuZ2V0KCksIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5n
U3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZs
dXNoKCk7CiAKICAgICAgICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAppbmRleCBhODY3MWZmMTk2MTBi
NjFiZDY5ZGZmMjRkNTY2YjZiYzI1MGQ5ZTNlLi45NWVmMjI5NGE5NzZmODQ0ZWMzYTQ5NWViYmJl
M2IzZmQ5NmE3NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCkKICAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Ig
c2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90ZWhyd2lz
ZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+
KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBn
ZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJD
b3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlm
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEko
KSkgewpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5z
dXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwogCiAgICAgUmV0
YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIGlmIChz
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENG
KFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkp
KTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFn
ZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VT
ZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VT
ZXNzaW9uRm9ySWRlbnRpZmllcihjZklkZW50aWZpZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggY2JkNTBiNmZj
YTg1NTcxNWMyYzdjYzNkNjAxMmFiZDE4MmU0MDI4MC4uOTdjMzc5Y2VlNjZiNDkwODY5MWFmMGRm
MWVjYjY2OWJlM2I2NWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZp
ZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViS2l0TGVn
YWN5L1dlYk5TVmlld0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXdQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtNTksMTEgKzYwLDExIEBAIHN0YXRpYyBpbnQgY29tcGFyZVBhZ2VSZWN0
cyhjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmFycmF5KTsKIHN0YXRpYyBjb25zdCBmbG9h
dCBQQUdFX1dJRFRIX0lOU0VUICAgICA9IDQuMCAqIDIuMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBQ
QUdFX0hFSUdIVF9JTlNFVCAgICA9IDQuMCAqIDIuMDsKIAotc3RhdGljIENHQ29sb3JSZWYgY3Jl
YXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQor
c3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRl
KENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxwaGEpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFj
ZVJlZiBncmF5U3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+PiBncmF5U3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKSk7CiAgICAgY29uc3QgQ0dG
bG9hdCBjb21wb25lbnRzW10gPSB7IHdoaXRlLCBhbHBoYSB9OwotICAgIHJldHVybiBDR0NvbG9y
Q3JlYXRlKGdyYXlTcGFjZSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShncmF5U3BhY2UuZ2V0KCkuZ2V0KCksIGNvbXBvbmVudHMpKTsKIH0KIAogQGltcGxl
bWVudGF0aW9uIFdlYlBERlZpZXcgewpAQCAtODMsMTQgKzg0LDE0IEBAICsgKE5TQXJyYXkgKilz
dXBwb3J0ZWRNSU1FVHlwZXMKIAogKyAoQ0dDb2xvclJlZilzaGFkb3dDb2xvcgogewotICAgIHN0
YXRpYyBDR0NvbG9yUmVmIHNoYWRvd0NvbG9yID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0
ZSgwLCAyLjAgLyAzKTsKLSAgICByZXR1cm4gc2hhZG93Q29sb3I7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gc2hhZG93Q29sb3IgPSBjcmVhdGVDR0Nv
bG9yV2l0aERldmljZVdoaXRlKDAsIDIuMCAvIDMpOworICAgIHJldHVybiBzaGFkb3dDb2xvci5n
ZXQoKS5nZXQoKTsKIH0KIAogKyAoQ0dDb2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICBz
dGF0aWMgQ0dDb2xvclJlZiBiYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmlj
ZVdoaXRlKDIwNC4wIC8gMjU1LCAxKTsKLSAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJhY2tncm91bmRD
b2xvciA9IGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hpdGUoMjA0LjAgLyAyNTUsIDEpOworICAg
IHJldHVybiBiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkuZ2V0KCk7CiB9CiAKIC8vIFRoaXMgaXMgYSBz
ZWNyZXQgcHJvdG9jb2wgZm9yIFdlYkRhdGFTb3VyY2UgYW5kIFdlYkZyYW1lVmlldyB0byBvZmZl
ciB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudCAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCmlu
ZGV4IDFmYjUxOGY4NzRiODNlNjRhZmU1ZmY0OThkMWVmNTFjZTMxODVmYzguLmFlYjRkOGYxNmZk
ZGIwMjU1MTA4YjJhMDBlYjlmNjcyMTVmMTc2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVtZW50RGljdGlvbmFyeS5tbQpAQCAtNTAsMTEgKzUwLDE1
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBsb29rdXBUYWJsZSA9IE5VTEw7CitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURp
Y3Rpb25hcnlSZWY+JiBsb29rdXBUYWJsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPj4gbG9va3VwVGFibGU7CisgICAgcmV0
dXJuIGxvb2t1cFRhYmxlOworfQogCiBzdGF0aWMgdm9pZCBhZGRMb29rdXBLZXkoTlNTdHJpbmcg
KmtleSwgU0VMIHNlbGVjdG9yKQogewotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGxvb2t1cFRh
YmxlLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5LCBzZWxlY3Rvcik7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUobG9va3VwVGFibGUoKS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtl
eSwgc2VsZWN0b3IpOwogfQogCiBzdGF0aWMgdm9pZCBjYWNoZVZhbHVlRm9yS2V5KGNvbnN0IHZv
aWQgKmtleSwgY29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKnNlbGYpCkBAIC03NiwxMCArODAsMTAg
QEAgKyAodm9pZClpbml0aWFsaXplCiAKICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRhYmxlCiB7
Ci0gICAgaWYgKGxvb2t1cFRhYmxlKQorICAgIGlmIChsb29rdXBUYWJsZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBsb29rdXBUYWJsZSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCBOVUxMKTsKKyAgICBsb29rdXBUYWJsZSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgTlVMTCkpOwogCiAgICAgYWRkTG9va3VwS2V5KFdlYkVsZW1lbnRET01Ob2Rl
S2V5LCBAc2VsZWN0b3IoX2RvbU5vZGUpKTsKICAgICBhZGRMb29rdXBLZXkoV2ViRWxlbWVudEZy
YW1lS2V5LCBAc2VsZWN0b3IoX3dlYkZyYW1lKSk7CkBAIC0xMjUsNyArMTI5LDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAKIC0gKHZvaWQpX2ZpbGxDYWNoZQogewotICAgIENGRGljdGlvbmFyeUFwcGx5
RnVuY3Rpb24obG9va3VwVGFibGUsIGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilz
ZWxmKTsKKyAgICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKGxvb2t1cFRhYmxlKCkuZ2V0KCks
IGNhY2hlVmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilzZWxmKTsKICAgICBfY2FjaGVDb21w
bGV0ZSA9IFlFUzsKIH0KIApAQCAtMTQ5LDEyICsxNTMsMTIgQEAgLSAoaWQpb2JqZWN0Rm9yS2V5
OihpZClrZXkKICAgICBpZiAodmFsdWUgfHwgX2NhY2hlQ29tcGxldGUgfHwgW19uaWxWYWx1ZXMg
Y29udGFpbnNPYmplY3Q6a2V5XSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgU0VMIHNl
bGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShsb29rdXBUYWJsZSwgKF9fYnJpZGdlIENGVHlwZVJlZilrZXkpKSk7CisgICAgU0VM
IHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25h
cnlHZXRWYWx1ZShsb29rdXBUYWJsZSgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWtleSkp
KTsKICAgICBpZiAoIXNlbGVjdG9yKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHZhbHVlID0g
W3NlbGYgcGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXTsKIAotICAgIE5TVUludGVnZXIgbG9va3Vw
VGFibGVDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGxvb2t1cFRhYmxlKTsKKyAgICBOU1VJ
bnRlZ2VyIGxvb2t1cFRhYmxlQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChsb29rdXBUYWJs
ZSgpLmdldCgpKTsKICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgaWYgKCFfY2FjaGUpCiAgICAg
ICAgICAgICBfY2FjaGUgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6bG9va3VwVGFibGVDb3VudF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggZDAwOGZiYmEyOGYyMTk4ZjhiMDkxYmIzYzNhMmVlN2M4MzIwMzU1
Yi4uNWIwZWU4YTNhYzhjMzMzYjZlZTM0NGNkZDljM2I1NTc2NWMyNmZmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTI2MywyOCArMTI2MywzMiBA
QCBzdGF0aWMgQ0ZTZXRDYWxsQmFja3MgTm9uUmV0YWluaW5nU2V0Q2FsbGJhY2tzID0gewogICAg
IENGSGFzaAogfTsKIAotc3RhdGljIENGTXV0YWJsZVNldFJlZiBhbGxXZWJWaWV3c1NldDsKK3N0
YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiYgYWxsV2ViVmlld3NTZXQoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPj4gYWxsV2Vi
Vmlld3NTZXQ7CisgICAgcmV0dXJuIGFsbFdlYlZpZXdzU2V0OworfQogCiArICh2b2lkKV9tYWtl
QWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogewotICAgIGlmICghYWxs
V2ViVmlld3NTZXQpCisgICAgaWYgKCFhbGxXZWJWaWV3c1NldCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0IG1ha2VPYmpl
Y3RzUGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXTsKKyAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNl
dCAqKWFsbFdlYlZpZXdzU2V0KCkuZ2V0KCkgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6c2Vs
ZWN0b3JdOwogfQogCiAtICh2b2lkKV9yZW1vdmVGcm9tQWxsV2ViVmlld3NTZXQKIHsKLSAgICBp
ZiAoYWxsV2ViVmlld3NTZXQpCi0gICAgICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NT
ZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgaWYgKGFsbFdlYlZpZXdzU2V0KCkp
CisgICAgICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NTZXQoKS5nZXQoKSwgKF9fYnJp
ZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogLSAodm9pZClfYWRkVG9BbGxXZWJWaWV3c1NldAog
ewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCi0gICAgICAgIGFsbFdlYlZpZXdzU2V0ID0gQ0ZT
ZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpOworICAg
IGlmICghYWxsV2ViVmlld3NTZXQoKSkKKyAgICAgICAgYWxsV2ViVmlld3NTZXQoKSA9IGFkb3B0
Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3Mp
KTsKIAotICAgIENGU2V0U2V0VmFsdWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVS
ZWYpc2VsZik7CisgICAgQ0ZTZXRTZXRWYWx1ZShhbGxXZWJWaWV3c1NldCgpLmdldCgpLCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwogfQogCiBAZW5kCkBAIC0yMjMwLDcgKzIyMzQsNyBAQCAr
ICh2b2lkKWNsb3NlQWxsV2ViVmlld3MKICAgICBXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNo
QWxsUGVuZGluZ1VubG9hZEV2ZW50cygpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNsb3NlIHRoZSBX
ZWJWaWV3cyBpbiBhIHJhbmRvbSBvcmRlci4gQ2hhbmdlIHRoaXMgaWYgY2xvc2Ugb3JkZXIgaXMg
aW1wb3J0YW50LgotICAgIGZvciAoV2ViVmlldyAqd2ViVmlldyBpbiBbKF9fYnJpZGdlIE5TU2V0
ICopYWxsV2ViVmlld3NTZXQgYWxsT2JqZWN0c10pCisgICAgZm9yIChXZWJWaWV3ICp3ZWJWaWV3
IGluIFsoX19icmlkZ2UgTlNTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIGFsbE9iamVjdHNd
KQogICAgICAgICBbd2ViVmlldyBjbG9zZV07CiB9CiAKQEAgLTY5MTEsNyArNjkxNSw3IEBAICsg
KEJPT0wpX2RpZFNldENhY2hlTW9kZWwKICsgKFdlYkNhY2hlTW9kZWwpX21heENhY2hlTW9kZWxJ
bkFueUluc3RhbmNlCiB7CiAgICAgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gV2ViQ2FjaGVN
b2RlbERvY3VtZW50Vmlld2VyOwotICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNN
dXRhYmxlU2V0ICopYWxsV2ViVmlld3NTZXQgb2JqZWN0RW51bWVyYXRvcl07CisgICAgTlNFbnVt
ZXJhdG9yICplbnVtZXJhdG9yID0gWyhOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdl
dCgpIG9iamVjdEVudW1lcmF0b3JdOwogICAgIHdoaWxlIChXZWJQcmVmZXJlbmNlcyAqcHJlZmVy
ZW5jZXMgPSBbW2VudW1lcmF0b3IgbmV4dE9iamVjdF0gcHJlZmVyZW5jZXNdKQogICAgICAgICBj
YWNoZU1vZGVsID0gc3RkOjptYXgoY2FjaGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxd
KTsKICAgICByZXR1cm4gY2FjaGVNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggNTExYTkyYjcyZDFjYTBkMjMzZDQ5MWMzMDAx
OTYzNDMxY2M2NGQyYS4uOGYyNzE2MmJiYWYxOGVlMWMxMThiOTUxMWY1MWI0N2U0NDg1Nzc0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAK
QEAgLTE5Nyw5ICsxOTcsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNX
aXRoQ2FjaGUoSVByb3BlcnR5QmFnKiogb3JpZ2lucykKICAgICBmb3IgKGF1dG8mIGNvcmVPcmln
aW4gOiBjb3JlT3JpZ2lucykKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5SXRlbS5n
ZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUlu
c3RhbmNlKGNvcmVPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSkpKTsKIAotICAgIFJldGFp
blB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKLSAgICAg
ICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0KKyAgICBhdXRv
IGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwogICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmlu
Z1JlZihfYnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0
aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggZWEwYjY3NTFjNTU0ZTgy
N2RjOTgyNTVjZDRhNzE1N2YxZDVhZDJiMi4uMWQyNzAyYWRiMDgyNzdjNDQ1MDhkM2RmYmRjNDI3
OTg2ZGNmYzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxv
YWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5l
dC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50
aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCBfSW5fbwogICAgIGlm
ICghd2ViQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0
ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSkpOworICAgIGF1dG8gY2ZDcmVkZW50aWFs
ID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpKTsKIAogICAgIGlmIChtX2Rv
d25sb2FkKQogICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdl
dCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9p
ZCBXZWJEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0
aENoYWxsZW5nZVJlZiBjaGFsbGUKICAgICBpZiAoIUNGVVJMQXV0aENoYWxsZW5nZUdldFByZXZp
b3VzRmFpbHVyZUNvdW50KGNoYWxsZW5nZSkpIHsKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50
aWFsID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5j
cmVkZW50aWFsU3RvcmFnZSgpLmdldChlbXB0eVN0cmluZygpLCBjb3JlKENGVVJMQXV0aENoYWxs
ZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpKSk7CiAgICAgICAgIGlmICghY3JlZGVu
dGlhbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxS
ZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAg
ICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAg
ICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIGNmQ3JlZGVu
dGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXggZDViZWVmODJlOTkwODkx
YTcyZTZiNGZjNGJlMzc4ODMwYWI2YWM5MC4uZmYzNGFkMDczN2EyNmQyYTE3M2VjZGJiOWI5Njdi
NTllMTZiZTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0z
NzAsMTQgKzM3MCwxMiBAQCBzdGF0aWMgYm9vbCBwcmVwYXJlRGV2aWNlKElEaXJlY3QzRERldmlj
ZTkqIGRldmljZSwgY29uc3QgQ0dSZWN0JiBib3VuZHMsIElEaXJlYwogCiBzdGF0aWMgQ0dSZWN0
IHVwZGF0ZUJvdW5kcyhDQVJlbmRlclVwZGF0ZSogdXBkYXRlKQogewotICAgIENHU1JlZ2lvbk9i
aiByZ24gPSBDQVJlbmRlclVwZGF0ZUNvcHlSZWdpb24odXBkYXRlKTsKKyAgICBhdXRvIHJnbiA9
IGFkb3B0Q0YoQ0FSZW5kZXJVcGRhdGVDb3B5UmVnaW9uKHVwZGF0ZSkpOwogICAgIGlmICghcmdu
KQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKIAogICAgIENHUmVjdCByZXN1bHQ7Ci0gICAg
Q0dFcnJvciBlcnJvciA9IENHU0dldFJlZ2lvbkJvdW5kcyhyZ24sICZyZXN1bHQpOwotICAgIENH
U1JlbGVhc2VSZWdpb24ocmduKTsKLQorICAgIENHRXJyb3IgZXJyb3IgPSBDR1NHZXRSZWdpb25C
b3VuZHMocmduLmdldCgpLCAmcmVzdWx0KTsKICAgICByZXR1cm4gZXJyb3IgPT0ga0NHRXJyb3JT
dWNjZXNzID8gcmVzdWx0IDogQ0dSZWN0WmVybzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggYjQxNjhiZjg0MTkxZThh
MTE0MzlkOTAwMzJmZTg5ZWE0ZDI2ZjcwNC4uNDNjYzFiYTI2Nzc4YThkYWE2MGUxMGYwZTJjZDNj
MDYxNTQxNmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxp
emFibGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6
YWJsZVN0cmluZ3MuY3BwCkBAIC02NywxNyArNjcsMTcgQEAgc3RhdGljIExvY2FsaXplZFN0cmlu
Z01hcCBmcmFtZXdvcmtMb2NTdHJpbmdzKCkKIGNsYXNzIExvY2FsaXplZFN0cmluZyB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxpemVkU3RyaW5nKTsKIHB1YmxpYzoKLSAgICBMb2Nh
bGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQotICAgICAgICA6IG1fY2ZTdHJpbmcoc3Ry
aW5nKQorICAgIExvY2FsaXplZFN0cmluZyhSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiYgc3RyaW5n
KQorICAgICAgICA6IG1fY2ZTdHJpbmcoV1RGTW92ZShzdHJpbmcpKQogICAgIHsKLSAgICAgICAg
QVNTRVJUX0FSRyhzdHJpbmcsIHN0cmluZyk7CisgICAgICAgIEFTU0VSVChtX2NmU3RyaW5nKTsK
ICAgICB9CiAKICAgICBvcGVyYXRvciBMUENUU1RSKCkgY29uc3Q7Ci0gICAgb3BlcmF0b3IgQ0ZT
dHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmU3RyaW5nOyB9CisgICAgb3BlcmF0b3IgQ0ZT
dHJpbmdSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmU3RyaW5nLmdldCgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgQ0ZTdHJpbmdSZWYgbV9jZlN0cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IG1fY2ZTdHJpbmc7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9zdHJpbmc7CiB9OwogCkBAIC04Niw3
ICs4Niw3IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAg
aWYgKCFtX3N0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3N0cmluZy53aWRlQ2hh
cmFjdGVycygpLmRhdGEoKTsKIAotICAgIG1fc3RyaW5nID0gbV9jZlN0cmluZzsKKyAgICBtX3N0
cmluZyA9IG1fY2ZTdHJpbmcuZ2V0KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsg
aSA8IG1fc3RyaW5nLmxlbmd0aCgpOyBpKyspCiAgICAgICAgIGlmIChtX3N0cmluZ1tpXSA9PSAn
QCcgJiYgKG1fc3RyaW5nW2kgLSAxXSA9PSAnJScgfHwgKGkgPiAyICYmIG1fc3RyaW5nW2kgLSAx
XSA9PSAnJCcgJiYgbV9zdHJpbmdbaSAtIDJdID49ICcxJyAmJiBtX3N0cmluZ1tpIC0gMl0gPD0g
JzknICYmIG1fc3RyaW5nW2kgLSAzXSA9PSAnJScpKSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0
aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2FsaXphYmxlU3Ry
aW5nc0J1bmRsZSogc3RyaW5ncwogICAgIHJldHVybiBzdHJpbmdzQnVuZGxlLT5idW5kbGU7CiB9
CiAKLXN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJM
b2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5
KQorc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29weUxvY2FsaXplZFN0cmluZ0Zyb21C
dW5kbGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxlLCBjb25zdCBT
dHJpbmcmIGtleSkKIHsKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90Rm91bmQgPSBDRlNUUigi
bG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRp
YyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJs
ZVN0cmluZ3NCdW5kbGUqIHN0CiAgICAgaWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBub3RG
b3VuZDsKIAotICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENGQ29weUxvY2FsaXplZFN0cmluZ1dp
dGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGJ1bmRsZSwgbm90
Rm91bmQsIDApOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRkNvcHlMb2NhbGl6ZWRTdHJp
bmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBidW5kbGUs
IG5vdEZvdW5kLCAwKSk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCAhPSBub3RG
b3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBr
ZXkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwYWZmYjQ1YTE3ZmJiYzk4YzcwYWVlODJi
NWViOWVlYTUyYzY4ZjA3Li41YmJkZWNhYWU1Mzk2MjE1MzM4YjkxNDBiMmNiNmIwZjA0Y2RiMzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xMTcs
NyArMTE3LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1ZhbHVlRm9y
UHJlZmVyZW5jZXNWYWx1ZShDRlByb3BlcnR5TGlzdFJlZiB2CiAKIC8vIFdlYlByZWZlcmVuY2Vz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotc3RhdGljIENGRGljdGlvbmFyeVJlZiBkZWZhdWx0U2V0dGluZ3M7CitzdGF0
aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGRlZmF1bHRTZXR0aW5ncygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBkZWZhdWx0
U2V0dGluZ3M7CisgICAgcmV0dXJuIGRlZmF1bHRTZXR0aW5nczsKK30KIAogUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBXZWJQcmVmZXJlbmNlczo6bV9hcHBsaWNhdGlvbklkID0ga0NGUHJlZmVyZW5j
ZXNDdXJyZW50QXBwbGljYXRpb247CiAjZW5kaWYKQEAgLTIxNCwxNTcgKzIxOCwxNTcgQEAgQ0ZT
dHJpbmdSZWYgV2ViUHJlZmVyZW5jZXM6OmFwcGxpY2F0aW9uSWQoKQogdm9pZCBXZWJQcmVmZXJl
bmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiB7CiAjaWYgVVNFKENGKQotICAgIGlm
IChkZWZhdWx0U2V0dGluZ3MpCisgICAgaWYgKGRlZmF1bHRTZXR0aW5ncygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGRlZmF1bHRzID0gQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIGRlZmF1bHRzID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIElO
SVRJQUxJWkVfREVGQVVMVF9QUkVGRVJFTkNFU19ESUNUSU9OQVJZX0ZST01fR0VORVJBVEVEX1BS
RUZFUkVOQ0VTOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGaXhlZEZv
bnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3IikpOwotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQXJp
YWwiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEN1
cnNpdmVGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOwotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGYW50YXN5Rm9udFByZWZl
cmVuY2VLZXkpLCBDRlNUUigiQ29taWMgU2FucyBNUyIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIlNlZ29lIFVJIFN5bWJvbCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIw
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5p
bXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5IikpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNU
UigiMTMiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFu
IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3IikpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTZXJpZkZvbnRQ
cmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIpKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZl
cmVuY2VLZXkpLCBDRlNUUigiQXJpYWwiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSksIENGU1RS
KCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ29taWMg
U2FucyBNUyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlNlZ29lIFVJIFN5
bWJvbCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
V2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNaW5pbXVtTG9n
aWNhbEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5IikpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVm
ZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZlcmVuY2VLZXkp
LCBDRlNUUigiMTMiKSk7CiAKICAgICBTdHJpbmcgZGVmYXVsdERlZmF1bHRFbmNvZGluZyhXRUJf
VUlfU1RSSU5HKCJJU08tODg1OS0xIiwgIlRoZSBkZWZhdWx0LCBkZWZhdWx0IGNoYXJhY3RlciBl
bmNvZGluZyBvbiBXaW5kb3dzIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZh
dWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5j
ZUtleSksIENGU1RSKCIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
VGV4dEFyZWFzQXJlUmVzaXphYmxlUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJTZWN1
cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1RvcE5hdmlnYXRpb25Ub0Rh
dGFVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RnJhbWVGbGF0dGVu
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NSZWdpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0Vu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxv
d0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGlzcGxheUltYWdl
c0tleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0TG9hZFNpdGVJY29uc0tleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEJhY2tGb3J3YXJkQ2Fj
aGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkpLCBDRlNUUigiMTgwMCIpKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZhbGVudHNQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0U2hvd3NVUkxzSW5Ub29sVGlwc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93c1Rvb2xU
aXBPdmVyVHJ1bmNhdGVkVGV4dFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQREZEaXNwbGF5TW9k
ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMSIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UERGU2NhbGVGYWN0b3JQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNo
b3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxh
eUNhcHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlUZXh0RGVzY3Jp
cHRpb25zUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdO
YW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvdWxk
UHJpbnRCYWNrZ3JvdW5kc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRUZXh0QXJlYXNB
cmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFs
bG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFT
Y3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0WFNT
QXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQbHVnaW5z
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU1JlZ2lvbnNFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFsbG93QW5p
bWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXREaXNwbGF5SW1h
Z2VzS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMb2FkU2l0ZUljb25zS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSksIENGU1RSKCIxODAwIikpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRUYWJU
b0xpbmtzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVLZXlF
cXVpdmFsZW50c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG93c1VSTHNJblRvb2xU
aXBzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0
ZWRUZXh0UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVy
ZW5jZUtleSksIENGU1RSKCIxIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXkpLCBDRlNUUigi
MCIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRT
aG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvdWxk
RGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGlua0JlaGF2aW9yU3RyaW5nUmVmID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiksIFdlYktpdEVk
aXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXkpLCBs
aW5rQmVoYXZpb3JTdHJpbmdSZWYuZ2V0KCkpOwotCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEhpc3RvcnlJdGVtTGltaXRLZXkpLCBDRlNUUigiMTAwMCIp
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SGlzdG9y
eUFnZUluRGF5c0xpbWl0S2V5KSwgQ0ZTVFIoIjciKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEljb25EYXRhYmFzZUxvY2F0aW9uS2V5KSwgQ0ZTVFIo
IiIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SWNv
bkRhdGFiYXNlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdUeXBl
UHJlZmVyZW5jZUtleSksIENGU1RSKCIyIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRGb250U21vb3RoaW5nQ29udHJhc3RQcmVmZXJlbmNlS2V5KSwg
Q0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYkNvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKEFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmdQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEVkaXRhYmxl
TGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5nZXQoKSk7
CisKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0
SGlzdG9yeUl0ZW1MaW1pdEtleSksIENGU1RSKCIxMDAwIikpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRL
ZXkpLCBDRlNUUigiNyIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkpLCBDRlNUUigiIikpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJY29uRGF0
YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ1R5
cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdDb250cmFzdFByZWZlcmVu
Y2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZlcmVuY2VLZXkp
LCBDRlNUUigiMiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIo
QWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKIAogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gY2FjaGVNb2RlbFJlZiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9y
bWF0KDAsIDAsIENGU1RSKCIlZCIpLCBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpKTsKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFBy
ZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkp
LCBjYWNoZU1vZGVsUmVmLmdldCgpKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250cm9sc1ByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFBhaW50TmF0aXZlQ29udHJvbHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNl
SGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3dEZWJ1Z0Jv
cmRlcnNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
KyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SHlw
ZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNZWRpYVBsYXli
YWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNZWRpYVBsYXli
YWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmVQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQ
bGF5YmFja0FsbG93c0lubGluZVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1h
dGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlcXVlc3RBbmlt
YXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZ1bGxTY3JlZW5FbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5QW5kUnVubmluZ09mSW5zZWN1cmVDb250
ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5QW5kUnVubmluZ09m
SW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDdXN0b21FbGVtZW50c0Vu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q3VzdG9tRWxlbWVudHNFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlv
bnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNDb21w
b3NpdGVPcGVyYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwog
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYkFuaW1h
dGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdExpbmtQcmVsb2FkRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRMaW5rUHJlbG9hZEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRNZWRpYVByZWxvYWRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE1l
ZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREYXRhVHJhbnNm
ZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGF0YVRyYW5zZmVy
SXRlbXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SW5zcGVjdG9yQWRkaXRpb25z
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJbnNwZWN0b3JBZGRpdGlvbnNF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VmlzdWFsVmlld3BvcnRBUElFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFZpc3VhbFZpZXdwb3J0QVBJRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU09NVmlld1Njcm9sbGluZ0FQSUVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRSZXNpemVPYnNlcnZlckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNU
UihXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlcXVl
c3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlcXVl
c3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QXN5bmNDbGlw
Ym9hcmRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFzeW5jQ2xpcGJv
YXJkQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvbnRhY3RQaWNrZXJBUElF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENvbnRhY3RQaWNrZXJBUElFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFu
ZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXNwZWN0UmF0aW9P
ZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRX
ZWJTUUxFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYlNRTEVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NJbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGll
c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NJbmRpdmlkdWFsVHJhbnNm
b3JtUHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNwZWVjaFJlY29n
bml0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTcGVlY2hSZWNvZ25p
dGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRPdmVyc2Nyb2xsQmVoYXZpb3JF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE92ZXJzY3JvbGxCZWhhdmlvckVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIGRlZmF1bHRTZXR0
aW5ncyA9IGRlZmF1bHRzOworICAgIGRlZmF1bHRTZXR0aW5ncygpID0gV1RGTW92ZShkZWZhdWx0
cyk7CiAjZW5kaWYKIH0KIApAQCAtMzc5LDcgKzM4Myw3IEBAIFJldGFpblB0cjxDRlByb3BlcnR5
TGlzdFJlZj4gV2ViUHJlZmVyZW5jZXM6OnZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSkKICAg
ICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIHJldHVybiBDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleSk7CisgICAgcmV0dXJuIENGRGljdGlv
bmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncygpLmdldCgpLCBrZXkpOwogfQogCiB2b2lkIFdl
YlByZWZlcmVuY2VzOjpzZXRWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXksIENGUHJvcGVydHlM
aXN0UmVmIHZhbHVlKQpAQCAtNjIwLDcgKzYyNCw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNv
cHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChvbWl0RGVmYXVsdHMpIHsKLSAg
ICAgICAgICAgIENGVHlwZVJlZiBkZWZhdWx0VmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShk
ZWZhdWx0U2V0dGluZ3MsIGtleXNbaV0pOworICAgICAgICAgICAgQ0ZUeXBlUmVmIGRlZmF1bHRW
YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0aW5ncygpLmdldCgpLCBrZXlz
W2ldKTsKICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWUgJiYgQ0ZFcXVhbChkZWZhdWx0VmFs
dWUsIHZhbHVlc1tpXSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZjU1NGI5
NWQ1MDRhOTM5NTdkYTkxYzk2MGYyYmUwMDFlOTk5YTNhLi40MzVjNzRkNjhjNTlmYWFhNWQ4OTgx
YzY4ODc5ZjIzNGQwNDA4NDQ2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0
cjw+IG1vcmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHA6CisgICAg
ICAgIChjcmVhdGVCaXRtYXBDb250ZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9Q
aXhlbER1bXBTdXBwb3J0Q0cuaDoKKyAgICAgICAgKEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRv
cHRpbmdCaXRtYXBBbmRDb250ZXh0KToKKyAgICAgICAgKEJpdG1hcENvbnRleHQ6OkJpdG1hcENv
bnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToK
KyAgICAgICAgKFdlYlRocmVhZExvY2tBZnRlckRlbGVnYXRlQ2FsbGJhY2tzSGF2ZUNvbXBsZXRl
ZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3Bw
OgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKiBJ
bWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
SW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6CisgICAgICAgIChJbWFnZURpZmY6OlBs
YXRmb3JtSW1hZ2U6OnBpeGVscyBjb25zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9j
Zy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlQ0dDb250ZXh0RnJv
bUNHSW1hZ2UpOgorICAgICAgICAoV1RSOjpjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UpOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0
ZWQpOgorCiAyMDIxLTAzLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wcm92ZSBBcHBsZUxhbmd1YWdlc1Rlc3QuVXBkYXRlQXBwbGVMYW5ndWFnZXMgQVBJ
IHRlc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBv
cnRDRy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3Bw
CmluZGV4IDViYzA0MDNiODExYmM2NTVkZDIwZmEyZDQwOTIyOTlmMGU0MDdkODUuLjhlNmRkNWZl
ZDdkMmMyZWIzOWJjZWViYjFkNDY4Y2NlZDU5MjhjZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFJlZlB0
cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBz
aXplX3QgcGl4ZWxzSGlnaCwKICAgICAKICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0
aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHByZXZlbnRzIGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4g
dGhlIGltYWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZVJHQigpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4
dENyZWF0ZShidWZmZXIsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xv
clNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShidWZmZXIsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBj
b2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiRHVtcFJlbmRlclRyZWU6IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAl
enUsIDgsICV6dSwgJXAsIDB4JXgpIGZhaWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhl
bHNXaWRlLCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7CiAgICAgICAgIGZyZWUoYnVm
ZmVyKTsKQEAgLTEzNCw2ICsxMzQsNiBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dChzaXplX3QgcGl4ZWxzV2lkZSwgc2l6ZV90IHBpeGVsc0hpZ2gsCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVh
dGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChidWZmZXIsIGNvbnRleHQpOworICAgIHJldHVy
biBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChidWZmZXIs
IFdURk1vdmUoY29udGV4dCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nn
L1BpeGVsRHVtcFN1cHBvcnRDRy5oCmluZGV4IDQxMjRiMGNhZWRjZTczOGY0NjQ2Y2RjMzhhN2I1
MTZhMWE3NjFjMDguLmI3OTRiMjE5OGVkOGEwYWExNDcyZDMwYjkzYTNhYmZhY2M3MDI3YTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCkBAIC00Nyw5
ICs0Nyw5IEBAIHR5cGVkZWYgSEJJVE1BUCBQbGF0Zm9ybUJpdG1hcEJ1ZmZlcjsKIAogY2xhc3Mg
Qml0bWFwQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPEJpdG1hcENvbnRleHQ+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBB
bmRDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCisgICAgc3RhdGljIFJlZjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCeUFkb3B0aW5nQml0bWFw
QW5kQ29udGV4dChQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0NvbnRl
eHRSZWY+JiYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJp
dG1hcENvbnRleHQoYnVmZmVyLCBjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJpdG1hcENvbnRleHQoYnVmZmVyLCBXVEZNb3ZlKGNvbnRleHQpKSk7CiAgICAgfQogCiAg
ICAgfkJpdG1hcENvbnRleHQoKQpAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAKLSAgICBCaXRtYXBDb250ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250
ZXh0UmVmIGNvbnRleHQpCisgICAgQml0bWFwQ29udGV4dChQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBi
dWZmZXIsIFJldGFpblB0cjxDR0NvbnRleHRSZWY+JiYgY29udGV4dCkKICAgICAgICAgOiBtX2J1
ZmZlcihidWZmZXIpCi0gICAgICAgICwgbV9jb250ZXh0KGFkb3B0Q0YoY29udGV4dCkpCisgICAg
ICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgewogICAgIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDNkY2U1YWM1YzMyOTFh
MzYyZTQ3ZWI0MjBlNzc3MjFlODJiNWI0YzQuLmI1MWUxYWVmZTJkZmY2YWNlZWI3NjQzYjNiNDMy
ZjIxZTQwNzliYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KQEAgLTEwMCw2ICsxMDAsNyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBv
cnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNp
bXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2Uu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4K
QEAgLTE4MTAsMjAgKzE4MTEsMTggQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0
ZW50U3RhdGUoY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXQKIC8vIGxvY2sg
dG8gcHJldmVudCBwb3RlbnRpYWxseSByZS1lbnRlcmluZyBXZWJDb3JlLgogc3RhdGljIHZvaWQg
V2ViVGhyZWFkTG9ja0FmdGVyRGVsZWdhdGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKCkKIHsKLSAg
ICBkaXNwYXRjaF9zZW1hcGhvcmVfdCBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGRpc3BhdGNoX3NlbWFw
aG9yZV9jcmVhdGUoMCk7CisgICAgYXV0byBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGFkb3B0T1NPYmpl
Y3QoZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgwKSk7CiAgICAgV2ViVGhyZWFkUnVuKF57Ci0g
ICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUpOworICAg
ICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKGRlbGVnYXRlU2VtYXBob3JlLmdldCgpKTsK
ICAgICB9KTsKIAotICAgIHdoaWxlIChkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChkZWxlZ2F0ZVNl
bWFwaG9yZSwgRElTUEFUQ0hfVElNRV9OT1cpKSB7CisgICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFw
aG9yZV93YWl0KGRlbGVnYXRlU2VtYXBob3JlLmdldCgpLCBESVNQQVRDSF9USU1FX05PVykpIHsK
ICAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgICAgICBbW05TUnVuTG9vcCBjdXJy
ZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0Rh
dGUgZGlzdGFudFBhc3RdXTsKICAgICAgICAgfQogICAgIH0KIAogICAgIFdlYlRocmVhZExvY2so
KTsKLQotICAgIGRpc3BhdGNoX3JlbGVhc2UoZGVsZWdhdGVTZW1hcGhvcmUpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0
V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNw
cAppbmRleCBhOWJhNjkxODMxMThiYjgzMjNjOGQ0OWIxZmQzMzlhNTFmNTM5YjYwLi4zOTVkMzAy
N2I5ZDg3ZWE4OTU2ZTZiMDAwODdjNjIxNDhhMjY3ZDhlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydFdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwCkBAIC05MCw4ICs5MCw3IEBAIFJl
ZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBv
bnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHQ29s
b3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNl
UkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KGluZm8uYm1CaXRzLCBpbmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywg
Y29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRGaXJzdCk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwg
OCwgaW5mby5ibVdpZHRoQnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICNlbGlmIFVTRShD
QUlSTykgCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Y3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25lZCBjaGFyKilpbmZvLmJtQml0cywgQ0FJUk9fRk9STUFU
X0FSR0IzMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIGluZm8uYm1XaWR0aEJ5dGVzKTsg
CkBAIC0xMTIsNSArMTExLDUgQEAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENv
bnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWUKICAgICBhdXRvIGNv
bnRleHQgPSByZW5kZXJUYXJnZXQuZ2V0KCk7CiAjZW5kaWYgCiAKLSAgICByZXR1cm4gQml0bWFw
Q29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBjb250ZXh0
KTsKKyAgICByZXR1cm4gQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENv
bnRleHQoYml0bWFwLCBXVEZNb3ZlKGNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCmluZGV4IDAxYzUzMWE5YjZhY2U4ZTgxNjk0
OGY2NzZjZTYzMWY1Mjc5NGI2YzQuLjRlYzljMjBlOTgwZjVlMDdlZmYzMzM2OGFmOTgxZjViOGI0
OTdiMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRp
b25DRy5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNH
LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBO
RyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgQ0dD
b250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCitz
dGF0aWMgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2Uo
Q0dJbWFnZVJlZiBpbWFnZSkKIHsKICAgICBzaXplX3QgcGl4ZWxzV2lkZSA9IENHSW1hZ2VHZXRX
aWR0aChpbWFnZSk7CiAgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlKTsKQEAgLTUzLDE1ICs1MywxNSBAQCBzdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29u
dGV4dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCiAKICAgICAvLyBDcmVhdGluZyB0aGlz
IGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xv
ciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRv
IGl0LgogICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdl
dCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBwaXhlbHNXaWRl
LCBwaXhlbHNIaWdoKSwgaW1hZ2UpOworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0Lmdl
dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gpLCBpbWFnZSk7CiAg
ICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250
ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYgd2tJbWFnZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UoV0tJbWFnZVJlZiB3a0ltYWdlKQogewog
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKFdLSW1hZ2VDcmVhdGVDR0ltYWdlKHdrSW1hZ2UpKTsK
ICAgICByZXR1cm4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoaW1hZ2UuZ2V0KCkpOwpAQCAt
MTU4LDcgKzE1OCw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKFNuYXBzaG90UmVzdWx0VHlwZSBzbmFwc2hvCiAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoImR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkOiBpbWFnZSBpcyBudWxs
XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0ID0g
YWRvcHRDRihjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2Uod2tJbWFnZSkpOworICAgICAgICBjb250
ZXh0ID0gY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKHdrSW1hZ2UpOwogICAgICAgICBpbWFnZVNp
emUgPSBXS0ltYWdlR2V0U2l6ZSh3a0ltYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
bmFwc2hvdFJlc3VsdFR5cGU6OldlYlZpZXc6CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoU25hcHNob3RSZXN1
bHRUeXBlIHNuYXBzaG8KICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdlIGlzIG51bGxcbiIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQgPSBhZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZy
b21DR0ltYWdlKGltYWdlLmdldCgpKSk7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVDR0NvbnRl
eHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlU2l6ZSA9IFdLU2l6ZU1h
a2UoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5n
ZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="442087"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422881</attachid>
            <date>2021-03-10 15:26:02 -0800</date>
            <delta_ts>2021-03-10 17:40:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223030-20210310152601.patch</filename>
            <type>text/plain</type>
            <size>217861</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGNkODg5YWM0NDRjNGRjMzdjZmMwYzYxYzViNDNmODg2MTQ5ODQxLi5jMTY0YmZkYTczMzU0ZDJm
NmJkZWZjMThlY2NiNTBhZTFjM2Q5NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToK
KwogMjAyMS0wMy0xMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBleGVjdXRlTW9kdWxlUHJvZ3JhbSBuZWVkcyB0byBlbnN1cmUgbW9kdWxlIGFyZ3Vt
ZW50IGFycmF5IGlzIHN0aWxsIGluIHNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4MmQ1ZmQ2YWQ3MTgyNGFhNmRlODBh
OTAxYTA3MzMwNTdkZWViMDQuLjhlNGFlMzlkZWJjOGM2N2U2NDcxYTlmZjY2Yzg0ZDcwMGQ2OTk0
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1v
cmUgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUpOgorICAgICAgICAqIHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICog
d3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV1RGOjpN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnVuaW5zdGFsbCk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6aG9sZE9mZik6CisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcDoK
KyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXVEY6OldvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUp
OgorICAgICAgICAqIHd0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHA6CisgICAgICAgIChXVEY6
OlN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6YWxsb2NhdG9yKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcpOgorCiAyMDIxLTAzLTEwICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugc3RkOjpmb3J3YXJkIGZvciBmb3J3YXJkaW5n
IHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBXVEZNb3ZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YyYWI0ZDlkYThi
MTAwZTBlMDEyODEwNmIyNGMxNDQ3YzYwNjgxYi4uMDAzYzFiOTYyNzIxZjEzNmEzZmYxY2Y1ZDg0
YzBmYjU0ZDhkOGY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8
PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OmNsYXNzZXNCeUlzQSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6T2JqY0NsYXNzOjpjbGFzc0ZvcklzQSk6CisgICAgICAgICogZWRpdGluZy9TbWFydFJlcGxh
Y2VDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTbWFydFNldCk6CisgICAgICAgICogcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBs
YXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3R3JhcGhMYWJlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmF3Q3B1SGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
R0NIaXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0
Zm9ybURyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNlcnRDb250ZXh0RGVhbGxvY2F0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUNlcnRpZmljYXRlVG9EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpkaXNwYXRjaFF1ZXVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZU1ldGFkYXRhS2V5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6bWV0YWRhdGFLZXlOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6On5BVkZXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmNyZWF0ZVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjcmVhdGVQ
bGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmNoZWNrUGxheWFiaWxp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlQVZDRlZpZGVvTGF5ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAo
V1RGOjpSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OjpjcmVhdGVWYWx1ZUZvcktleSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29s
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lZENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyYXRjaENvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6c2NyYXRjaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Y29weUNHUGF0aENsb3NpbmdT
dWJwYXRocyk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpj
b2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0dDb250ZXh0V2l0aEhEQyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RldmljZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y2FzY2FkZUZvclN5c3RlbUZvbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAg
KHdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAod2ViVGhyZWFkUmVsZWFzZU9iakFy
cmF5KToKKyAgICAgICAgKGRlbGVnYXRlU291cmNlKToKKyAgICAgICAgKG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyKToKKyAgICAgICAgKFNlbmREZWxlZ2F0ZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAgKEhhbmRsZVdlYlRocmVhZFJl
bGVhc2VTb3VyY2UpOgorICAgICAgICAoTWFpblJ1bkxvb3BBdXRvVW5sb2NrKToKKyAgICAgICAg
KF9XZWJUaHJlYWRBdXRvTG9jayk6CisgICAgICAgIChfV2ViUnVuTG9vcEVuYWJsZU5lc3RlZEZy
b21NYWluVGhyZWFkKToKKyAgICAgICAgKF9XZWJSdW5Mb29wRGlzYWJsZU5lc3RlZEZyb21NYWlu
VGhyZWFkKToKKyAgICAgICAgKFJ1bldlYlRocmVhZCk6CisgICAgICAgIChTdGFydFdlYlRocmVh
ZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBv
d2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUG93
ZXJPYnNlcnZlck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpBVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldENhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVBbGxEZXZp
Y2VzUXVlcnkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbzo6Y2VydGlmaWNhdGVDaGFpbkZyb21TZWNUcnVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkZXJSdW5Mb29wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0
aW9uU3BhY2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U6OnJl
Y2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRSdW5Mb29wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpdGVGb3JDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1Rl
eHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5pemVyRm9yU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YWxsb2NJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2hhcmVkRnVuY3Rpb25SZWYpOgorICAgICAgICAqIHRl
c3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRl
c3RTdXBwb3J0OjpjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlVGVzdFN1cHBvcnQ6OmNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9u
YXJ5KToKKwogMjAyMS0wMy0xMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBJbXByb3ZlIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIGludGVycG9sYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMDRkYTkyYTZjNTFhYWQ2ODRjN2ZmYzkwOWEzYmMyNjY1MmEyZTRkNi4uNjVl
YTA0ODEyMDM2MTlmMjg4ZDRmMTNjOWQzNjZmYzYyMjBhNjAxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NSBAQAorMjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
bmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25u
ZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxp
ZGF0ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNhbmNlbFJlY2VpdmVTb3VyY2UpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6aW5pdGlhbGl6ZVNlbmRTb3VyY2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWNl
aXZlU291cmNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdl
YkJyb3dzZXJDaGVja3MubW06CisgICAgICAgIChXZWJLaXQ6Oml0cFF1ZXVlKToKKyAgICAgICAg
KFdlYktpdDo6ZGV0ZXJtaW5lSVRQU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojpkb2VzQXBwSGF2
ZUlUUEVuYWJsZWQpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZp
Y2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6
OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNz
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0
ZVJlbmRlcmluZyk6CisKIDIwMjEtMDMtMTAgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gQWRkIGFkZGl0aW9uYWwgdGVsZW1ldHJ5IHRvIFdlYkNvbnRlbnQg
c2FuZGJveCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMDRkYmVlYzg2NmFiNDc2MGMwYzZkMDBj
ZjU5NWM1MmQyNTFkZjcyMi4uMTFkMzllZTU3MzA0ZmEyODAxZDFmY2I4MTMzYmFjYjk5M2IyZTAx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMy0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAv
IE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIDIyMzAzMF9SZXRhaW5QdHIKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKToKKwogMjAyMS0wMy0wNSAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQnVt
cCBjbWFrZV9taW5pbXVtX3JlcXVpcmVkIHZlcnNpb24gdG8gMy4xMiBvciBsYXRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDc3ZjU4YjA2MDcyMTk3Yjg1MzQ2ZWU3NTUxZTE2MDEy
ZTQ1ZTdkOTMuLjI3M2EzNTNhOGFmNjdhMTEwN2FkNWY5MzEyYzNhNWQ1NzQ5ZWFlYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI8PiAv
IE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAo
Y3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSk6CisgICAgICAgICgrW1dlYlBERlZpZXcgc2hh
ZG93Q29sb3JdKToKKyAgICAgICAgKCtbV2ViUERGVmlldyBiYWNrZ3JvdW5kQ29sb3JdKToKKwog
MjAyMS0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
ZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGlu
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDliMjQ5ZTEzM2VmOWQxOTlm
NTBlYWMxYmQyZjA3Nzg0Y2E2MDQ5OTYuLjk4NGU5YjIzMmY0MDA3YTQ2Y2FmMDk1MzBlNjYxMjEw
Zjg1MTQ4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBSZXRhaW5QdHI8PiAvIE9TT2JqZWN0UHRyPD4gbW9yZSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWlzYy9XZWJFbGVtZW50RGljdGlv
bmFyeS5tbToKKyAgICAgICAgKGxvb2t1cFRhYmxlKToKKyAgICAgICAgKGFkZExvb2t1cEtleSk6
CisgICAgICAgICgrW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGluaXRpYWxpemVMb29rdXBUYWJsZV0p
OgorICAgICAgICAoLVtXZWJFbGVtZW50RGljdGlvbmFyeSBfZmlsbENhY2hlXSk6CisgICAgICAg
ICgtW1dlYkVsZW1lbnREaWN0aW9uYXJ5IG9iamVjdEZvcktleTpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX21ha2VBbGxXZWJWaWV3c1BlcmZv
cm1TZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfcmVtb3ZlRnJvbUFsbFdlYlZpZXdz
U2V0XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2FkZFRvQWxsV2ViVmlld3NTZXRdKToKKyAgICAg
ICAgKCtbV2ViVmlldyBjbG9zZUFsbFdlYlZpZXdzXSk6CisgICAgICAgICgrW1dlYlZpZXcgX21h
eENhY2hlTW9kZWxJbkFueUluc3RhbmNlXSk6CisKIDIwMjEtMDMtMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDU1NQYXJzZXJDb250ZXh0OjplbmZv
cmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgYXMgaXQgaXMgdW51c2VkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzE2OTNkY2JlMmQ2MTdhMWU2NTg5ZTgxZmZjOGNiNDdkMGM4
ZmFlNi4uNmY3NjM1ODE5NmJjOTU5OTZlOTM0ODE4OTBkMWRmYmFiZWIzNmNiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTEwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFJldGFpblB0cjw+IC8gT1NP
YmplY3RQdHI8PiBtb3JlIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkFw
cGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAqIFdlYkRvd25sb2Fk
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcDoKKyAgICAg
ICAgKFdLUUNBOjp1cGRhdGVCb3VuZHMpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5n
cy5jcHA6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6OkxvY2FsaXplZFN0cmluZyk6CisgICAg
ICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIENGU3RyaW5nUmVmIGNvbnN0KToKKyAgICAg
ICAgKExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUiBjb25zdCk6CisgICAgICAgIChj
b3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZSk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMu
Y3BwOgorICAgICAgICAoZGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2Vz
Ojppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjp2
YWx1ZUZvcktleSk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVu
Y2VzVG9DRlByZWZlcmVuY2VzKToKKwogMjAyMS0wMy0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHByZWZlcmVuY2UgcmVzZXRpbmcgdG8gV2ViS2l0TGVn
YWN5IFdpbmRvd3MgdG8gc2ltcGxpZnkgdGVzdGluZyByZXNldApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCAxODUwYzRkNzA5MmM1MDFjYjJjZDkxZTExMGEyZTY3
ZDVjYzI4NTM4Li5kMWJmNzEzY2JjOTZjNDZjZjliMDY3YzNjOWZmZTllNTNmODFiNmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQpAQCAtMjc1LDEzICsyNzUsMTIg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKICAg
ICBpZiAobV9yZWxheUNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHhwY19jb25u
ZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2Uo
V0lSWFBDTWFjaFBvcnROYW1lLCBtX3hwY1F1ZXVlLCAwKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24g
PSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoV0lSWFBD
TWFjaFBvcnROYW1lLCBtX3hwY1F1ZXVlLCAwKSk7CiAgICAgaWYgKCFjb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3JlbGF5Q29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKGNvbm5lY3Rpb24sIG1feHBjUXVldWUsIHRoaXMpKTsK
KyAgICBtX3JlbGF5Q29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uKGNvbm5lY3Rpb24uZ2V0KCksIG1feHBjUXVldWUsIHRoaXMpKTsKICAgICBtX3Jl
bGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoQCJzeW4iLCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxl
IG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUgWFBDIGNvbm5lY3Rpb24uCi0gICAgeHBjX3JlbGVh
c2UoY29ubmVjdGlvbik7CiAKICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRl
VGFyZ2V0SWRlbnRpZmllcikgewogICAgICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYSBkZWJ1Z2dh
YmxlIHdhaXRpbmcgdG8gYmUgYXV0b21hdGljYWxseSBpbnNwZWN0ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKaW5kZXggYzMxNjM4ZjRlMmRi
ZTIwYjFmMDM4M2RjZjcwZjdhOGQ1YTI2MGNmYy4uMGRhODg1ZGVhYjg2YWE4ZDg5YjYzZjUyOGI3
ZTYzYzMzZTQ4NGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNw
YXRjaC5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5o
PgogI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW1wb3J0IDx3dGYvc3Bp
L2Rhcndpbi9YUENTUEkuaD4KIApAQCAtNjMsOCArNjQsOCBAQCBwcml2YXRlOgogICAgIC8vIFdl
IG1ha2Ugc3VyZSB0aGF0IG1fY2xpZW50IGlzIHRocmVhZCBzYWZlIGFuZCBpbW1lZGlhdGVseSBj
bGVhcmVkIGluIGNsb3NlKCkuCiAgICAgTG9jayBtX211dGV4OwogCi0gICAgeHBjX2Nvbm5lY3Rp
b25fdCBtX2Nvbm5lY3Rpb247Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlOworICAgIE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKKyAgICBPU09iamVjdFB0
cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3F1ZXVlOwogICAgIENsaWVudCogbV9jbGllbnQ7CiAgICAg
Ym9vbCBtX2Nsb3NlZCB7IGZhbHNlIH07CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KaW5kZXggODEzYzE2MzBl
M2Q2YTBjYmIxNjhiMjc2YzY1MGUwNTcxNzIzYmU3MC4uYjUwMmUyOTM1ZjBmODU2YWExZjIyYmU1
MDQyNGFjM2E3ODU3MjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLm1tCkBAIC01MSwxOCArNTEsMTUgQEAgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90
IGNvbm4KICAgICAsIG1fcXVldWUocXVldWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7Ci0g
ICAgZGlzcGF0Y2hfcmV0YWluKG1fcXVldWUpOwotCi0gICAgeHBjX3JldGFpbihtX2Nvbm5lY3Rp
b24pOwotICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLCBt
X3F1ZXVlKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rp
b24sIF4oeHBjX29iamVjdF90IG9iamVjdCkgeworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJn
ZXRfcXVldWUobV9jb25uZWN0aW9uLmdldCgpLCBtX3F1ZXVlLmdldCgpKTsKKyAgICB4cGNfY29u
bmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIF4oeHBjX29iamVj
dF90IG9iamVjdCkgewogICAgICAgICBoYW5kbGVFdmVudChvYmplY3QpOwogICAgIH0pOwogCiAg
ICAgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiB0aGUgeHBjX2Nvbm5lY3Rpb24gcmVjZWl2ZXMg
WFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRC4KICAgICByZWYoKTsKIAotICAgIHhwY19jb25u
ZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24pOworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZSht
X2Nvbm5lY3Rpb24uZ2V0KCkpOwogfQogCiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjp+
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbigpCkBAIC04Myw3ICs4MCw3IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSgpCiAgICAgbV9jbG9z
ZWQgPSB0cnVlOwogICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKIAotICAgIGRpc3BhdGNoX2FzeW5j
KG1fcXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZS5nZXQoKSwgXnsKICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dl
ciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRoZSBxdWV1
ZSBhbmQgZGVyZWYgdXMuCiAgICAgICAgIGNsb3NlT25RdWV1ZSgpOwpAQCAtOTMsMTUgKzkwLDEx
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSgp
CiB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlT25RdWV1ZSgpCiB7CiAg
ICAgaWYgKG1fY29ubmVjdGlvbikgewotICAgICAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwobV9j
b25uZWN0aW9uKTsKLSAgICAgICAgeHBjX3JlbGVhc2UobV9jb25uZWN0aW9uKTsKKyAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29u
bmVjdGlvbiA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKG1fcXVldWUpIHsKLSAgICAgICAg
ZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlKTsKLSAgICAgICAgbV9xdWV1ZSA9IG51bGxwdHI7Ci0g
ICAgfQorICAgIG1fcXVldWUgPSBudWxscHRyOwogfQogCiBOU0RpY3Rpb25hcnkgKlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2Jq
ZWN0KQpAQCAtMTQ3LDcgKzE0MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgaWYgKCFtX3ZhbGlkYXRlZCkgewogICAgICAgICBhdWRpdF90b2tlbl90IHRva2VuOwotICAg
ICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25uZWN0aW9uLCAmdG9rZW4p
OworICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25uZWN0aW9uLmdl
dCgpLCAmdG9rZW4pOwogICAgICAgICBpZiAoIVdURjo6aGFzRW50aXRsZW1lbnQodG9rZW4sICJj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iud2ViaW5zcGVjdG9yZCIpKSB7CiAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwg
dHJpZ2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRo
ZSBxdWV1ZSBhbmQgZGVyZWYgdXMuCkBAIC0xODEsMjMgKzE3NCwxOSBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OnNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwg
TlNEaWN0aW9uYQogICAgIGlmIChtX2Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0
YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0
TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW2RpY3Rpb25hcnkg
c2V0T2JqZWN0Om1lc3NhZ2VOYW1lIGZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
TWVzc2FnZU5hbWVLZXldOwogICAgIGlmICh1c2VySW5mbykKICAgICAgICAgW2RpY3Rpb25hcnkg
c2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNl
ckluZm9LZXldOwogCi0gICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSBfQ0ZYUENDcmVh
dGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGljdGlv
bmFyeS5nZXQoKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhw
Y19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAgIGF1dG8geHBjRGljdGlvbmFyeSA9IGFk
b3B0T1NPYmplY3QoX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0KCkpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkuZ2V0KCkpID09
IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8gc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7
CiAgICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICB4cGNfb2Jq
ZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApOwot
ICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFyeSk7Ci0gICAgeHBjX3JlbGVh
c2UoeHBjRGljdGlvbmFyeSk7Ci0KLSAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9j
b25uZWN0aW9uLCBtc2cpOwotCi0gICAgeHBjX3JlbGVhc2UobXNnKTsKKyAgICBhdXRvIG1zZyA9
IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDAp
KTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLmdldCgpLCBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rpb25hcnkuZ2V0KCkp
OworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24uZ2V0KCksIG1z
Zy5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCAwOGQ2Mjg5MGE5ZTFlYTdiNzdmMjAwNTQ2OGVmOWYxMmQzMTU4YmJmLi4yMDI2Nzk0
YTEwOTNkZjM5ZmRiYjRkZDIwMjJlYWE2MDQ1NzQ0MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApA
QCAtOTksNiArOTksNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8Y3J0X2V4
dGVybnMuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oR1RLKQpAQCAtMzU0MSw5ICszNTQyLDggQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8mIG1lbW9yeVByZXNzdXJl
SGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAgICAgewotICAg
ICAgICBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJqc2Mg
c2hlbGwgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwot
ICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0RGlzcGF0Y2hRdWV1ZShxdWV1ZSk7Ci0g
ICAgICAgIGRpc3BhdGNoX3JlbGVhc2UocXVldWUpOworICAgICAgICBhdXRvIHF1ZXVlID0gYWRv
cHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImpzYyBzaGVsbCBtZW1vcnkgcHJlc3N1
cmUgaGFuZGxlciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOworICAgICAgICBtZW1vcnlQcmVz
c3VyZUhhbmRsZXIuc2V0RGlzcGF0Y2hRdWV1ZShXVEZNb3ZlKHF1ZXVlKSk7CiAgICAgfQogICAg
IEJveDxDcml0aWNhbD4gbWVtb3J5UHJlc3N1cmVDcml0aWNhbFN0YXRlID0gQm94PENyaXRpY2Fs
Pjo6Y3JlYXRlKENyaXRpY2FsOjpObyk7CiAgICAgQm94PFN5bmNocm9ub3VzPiBtZW1vcnlQcmVz
c3VyZVN5bmNocm9ub3VzU3RhdGUgPSBCb3g8U3luY2hyb25vdXM+OjpjcmVhdGUoU3luY2hyb25v
dXM6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDM0
MTYxNmM2OWRjNjE0YTMxMTZhNWQ2ODQ2NjkyOTZiMWFmNGI3N2IuLjM3YjcxMDBmYjYzNGVhNWFl
OTkwMGQxMWExZWMwODFmOWU1MTI3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcApAQCAtMzE2LDEzICszMTYsMTAgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpIHsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXREaXNwYXRjaFF1ZXVlKGRpc3BhdGNo
X3F1ZXVlX3QgcXVldWUpCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hR
dWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmIHF1ZXVlKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2luc3RhbGxlZCk7Ci0gICAgZGlzcGF0Y2hfcmV0YWluKHF1ZXVlKTsKLSAg
ICBpZiAobV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0
Y2hRdWV1ZSk7Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gcXVldWU7CisgICAgbV9kaXNwYXRjaFF1
ZXVlID0gV1RGTW92ZShxdWV1ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaAppbmRleCBmMjFlZDg5MjI5YzZlNjA3Y2Q2MzFkMmVjZjU4ODNjNTQ3YzQ3
YzQyLi4zNTY4NzdlOWYwZDBjNjQzY2JlYWNkNjEzN2NmZWUzMmU5OTRmMGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRl
IDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewog
CiBlbnVtIGNsYXNzIE1lbW9yeVVzYWdlUG9saWN5IDogdWludDhfdCB7CkBAIC05Miw3ICs5Niw3
IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lbW9yeVVzYWdlUG9s
aWN5IGN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1
ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREaXNwYXRjaFF1ZXVlKE9TT2Jq
ZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+JiYpOwogI2VuZGlmCiAKICAgICBjbGFzcyBSZWxpZWZM
b2dnZXIgewpAQCAtMjA2LDcgKzIxMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0
ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCA1ZDY5NGJkOGMzZjVhNGE1YzAwYzk0MmY5
ZGQ0MzNkN2M4NDQ1ZTIzLi40YTNiN2RhZmFlNzhmMWE2ZDljNDYzYjJjYzZhMDNkYTk0YTQxMzI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Xb3JrUXVldWUuaApAQCAtMzQsNiArMzQsNyBAQAogCiAjaWYgVVNFKENPQ09BX0VWRU5U
X0xPT1ApCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDx3dGYvT1NP
YmplY3RQdHIuaD4KICNlbHNlCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNlbmRpZgpAQCAt
NTgsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lkKHNp
emVfdCBpbmRleCk+JiYpOwogCiAjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCi0gICAgZGlzcGF0
Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVl
OyB9CisgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwYXRjaFF1ZXVlLmdldCgpOyB9CiAjZWxzZQogICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBj
b25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CiAjZW5kaWYKQEAgLTcxLDcgKzcyLDcgQEAgcHJp
dmF0ZToKIAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIHN0YXRpYyB2b2lkIGV4ZWN1
dGVGdW5jdGlvbih2b2lkKik7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7
CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOwogI2Vs
c2UKICAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KaW5kZXggMDg4YjE5Y2MxMGE2
NWVmZmU1ZDRlOWZjMjdhMDgxYzI1NmJhMzc2Zi4uNWMwZjViMjU0NGY3YmE1ZWU0ZDcyNTA2MDdm
N2ZkNmZiZDA0NDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTY4LDEzICs2OCwxMyBAQCB2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6aW5zdGFsbCgpCiAgICAgaWYgKG1faW5zdGFsbGVkIHx8IHRpbWVyRXZlbnRT
b3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hR
dWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgYXV0byBtZW1vcnlTdGF0dXNGbGFncyA9
IERJU1BBVENIX01FTU9SWVBSRVNTVVJFX05PUk1BTCB8IERJU1BBVENIX01FTU9SWVBSRVNTVVJF
X1dBUk4gfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9DUklUSUNBTCB8IERJU1BBVENIX01FTU9S
WVBSRVNTVVJFX1BST0NfTElNSVRfV0FSTiB8IERJU1BBVENIX01FTU9SWVBSRVNTVVJFX1BST0Nf
TElNSVRfQ1JJVElDQUw7CiAjZWxzZSAvLyBQTEFURk9STShNQUMpCiAgICAgICAgIGF1dG8gbWVt
b3J5U3RhdHVzRmxhZ3MgPSBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9DUklUSUNBTDsKICNlbmRp
ZgotICAgICAgICBtZW1vcnlQcmVzc3VyZUV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2Ny
ZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgbWVtb3J5U3RhdHVz
RmxhZ3MsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAgICAgIG1lbW9yeVByZXNzdXJlRXZlbnRTb3Vy
Y2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9SWVBS
RVNTVVJFLCAwLCBtZW1vcnlTdGF0dXNGbGFncywgbV9kaXNwYXRjaFF1ZXVlLmdldCgpKTsKIAog
ICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIobWVtb3J5UHJlc3N1cmVF
dmVudFNvdXJjZSwgXnsKICAgICAgICAgICAgIGF1dG8gc3RhdHVzID0gZGlzcGF0Y2hfc291cmNl
X2dldF9kYXRhKG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UpOwpAQCAtMTEwLDcgKzExMCw3IEBA
IHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKICAgICB9KTsKIAogICAgIC8v
IEFsbG93IHNpbXVsYXRpb24gb2YgbWVtb3J5IHByZXNzdXJlIHdpdGggIm5vdGlmeXV0aWwgLXAg
b3JnLldlYktpdC5sb3dNZW1vcnkiCi0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcu
V2ViS2l0Lmxvd01lbW9yeSIsICZub3RpZnlUb2tlbnNbMF0sIG1fZGlzcGF0Y2hRdWV1ZSwgXihp
bnQpIHsKKyAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5
IiwgJm5vdGlmeVRva2Vuc1swXSwgbV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogI2lm
IEVOQUJMRShGTVdfRk9PVFBSSU5UX0NPTVBBUklTT04pCiAgICAgICAgIGF1dG8gZm9vdHByaW50
QmVmb3JlID0gcGFnZXNQZXJWTVRhZygpOwogI2VuZGlmCkBAIC0xMjQsMTUgKzEyNCwxNSBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCiAgICAgICAgIGxvZ0Zvb3Rwcmlu
dENvbXBhcmlzb24oZm9vdHByaW50QmVmb3JlLCBmb290cHJpbnRBZnRlcik7CiAjZW5kaWYKIAot
ICAgICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgICAgIGVuZFNpbXVs
YXRlZE1lbW9yeVByZXNzdXJlKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgbm90aWZ5
X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeS5iZWdpbiIsICZub3RpZnlU
b2tlbnNbMV0sIG1fZGlzcGF0Y2hRdWV1ZSwgXihpbnQpIHsKKyAgICBub3RpZnlfcmVnaXN0ZXJf
ZGlzcGF0Y2goIm9yZy5XZWJLaXQubG93TWVtb3J5LmJlZ2luIiwgJm5vdGlmeVRva2Vuc1sxXSwg
bV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeKGludCkgewogICAgICAgICBiZWdpblNpbXVsYXRlZE1l
bW9yeVByZXNzdXJlKCk7CiAgICAgfSk7Ci0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJv
cmcuV2ViS2l0Lmxvd01lbW9yeS5lbmQiLCAmbm90aWZ5VG9rZW5zWzJdLCBtX2Rpc3BhdGNoUXVl
dWUsIF4oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxv
d01lbW9yeS5lbmQiLCAmbm90aWZ5VG9rZW5zWzJdLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIF4o
aW50KSB7CiAgICAgICAgIGVuZFNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CiAgICAgfSk7CiAK
QEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxs
KCkKICAgICBpZiAoIW1faW5zdGFsbGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNwYXRj
aF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBeewogICAgICAgICBpZiAobWVtb3J5UHJlc3N1cmVFdmVudFNvdXJjZSkg
ewogICAgICAgICAgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtZW1vcnlQcmVzc3VyZUV2ZW50
U291cmNlKTsKICAgICAgICAgICAgIG1lbW9yeVByZXNzdXJlRXZlbnRTb3VyY2UgPSBudWxscHRy
OwpAQCAtMTY0LDggKzE2NCw4IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3Rh
bGwoKQogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZihTZWNvbmRzIHNlY29u
ZHMpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeewotICAgICAgICB0
aW1lckV2ZW50U291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0Vf
VFlQRV9USU1FUiwgMCwgMCwgbV9kaXNwYXRjaFF1ZXVlKTsKKyAgICBkaXNwYXRjaF9hc3luYyht
X2Rpc3BhdGNoUXVldWUuZ2V0KCksIF57CisgICAgICAgIHRpbWVyRXZlbnRTb3VyY2UgPSBkaXNw
YXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1RJTUVSLCAwLCAwLCBtX2Rp
c3BhdGNoUXVldWUuZ2V0KCkpOwogICAgICAgICBpZiAodGltZXJFdmVudFNvdXJjZSkgewogICAg
ICAgICAgICAgZGlzcGF0Y2hfc2V0X2NvbnRleHQodGltZXJFdmVudFNvdXJjZSwgdGhpcyk7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhlIGZpbmFsIGFyZ3VtZW50IGBzX21pbmltdW1Ib2xkT2Zm
VGltZS5zZWNvbmRzKClgIHNlZW1zIHdyb25nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwCmluZGV4IDM3NzNjNzk4NTJlYmIyMWJkMDZkNTY3YjAxN2NmN2M5MzIyNTNkZTYu
LjQ5Y2RiYjU4ODBiYjE2NmI1Zjc1ZTU2ZGRjNzljMWNmYTFhNTQwNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKQEAgLTMzLDE0ICszMywxNCBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5j
dGlvbikKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0
cihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtl
QmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24gPSBXVEZN
b3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwogICAgIH0pLmdldCgpKTsKIH0K
IAogdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3Rp
bWUoRElTUEFUQ0hfVElNRV9OT1csIGR1cmF0aW9uLm5hbm9zZWNvbmRzQXM8aW50NjRfdD4oKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKKyAgICBkaXNwYXRjaF9hZnRl
cihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5uYW5vc2Vjb25kc0Fz
PGludDY0X3Q+KCkpLCBtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7
CiAgICAgICAgIGZ1bmN0aW9uKCk7CiAgICAgfSkuZ2V0KCkpOwogfQpAQCAtNDksMTMgKzQ5LDEy
IEBAIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwg
VHlwZSB0eXBlLCBRT1MgcW9zKQogewogICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0g
dHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJ
U1BBVENIX1FVRVVFX1NFUklBTDsKICAgICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtl
X3dpdGhfcW9zX2NsYXNzKGF0dHIsIFRocmVhZDo6ZGlzcGF0Y2hRT1NDbGFzcyhxb3MpLCAwKTsK
LSAgICBtX2Rpc3BhdGNoUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7
Ci0gICAgZGlzcGF0Y2hfc2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKKyAgICBt
X2Rpc3BhdGNoUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZShuYW1l
LCBhdHRyKSk7CisgICAgZGlzcGF0Y2hfc2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLmdldCgp
LCB0aGlzKTsKIH0KIAogdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7Ci0g
ICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwogfQogCiB2b2lkIFdvcmtRdWV1
ZTo6Y29uY3VycmVudEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
c2l6ZV90IGluZGV4KT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY2YvU3RyaW5nSW1wbENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcAppbmRleCBjNjdjYzNhOTYzYTUwZWMyMWFlYjg2NzI1MDljZDZiMjkxNTNkYzhiLi4z
MGVmMzYwNTcxNDRjYjJhMWJmNTYwYjU0ZWM2YTY4YjZhYTA1N2NjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCkBAIC0xMTEsMTYgKzExMSwxMyBAQCBuYW1lc3BhY2Ug
U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKICAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgfQog
Ci0gICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGNyZWF0ZSgpCi0gICAgewotICAgICAgICBDRkFs
bG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwgbnVsbHB0ciwgcmV0YWluLCByZWxlYXNlLCBj
b3B5RGVzY3JpcHRpb24sIGFsbG9jYXRlLCByZWFsbG9jYXRlLCBkZWFsbG9jYXRlLCBwcmVmZXJy
ZWRTaXplIH07Ci0gICAgICAgIHJldHVybiBDRkFsbG9jYXRvckNyZWF0ZShudWxscHRyLCAmY29u
dGV4dCk7Ci0gICAgfQotCiAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvcigpCiAg
ICAgewotICAgICAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yID0gY3JlYXRlKCk7
Ci0gICAgICAgIHJldHVybiBhbGxvY2F0b3I7CisgICAgICAgIHN0YXRpYyBhdXRvIGFsbG9jYXRv
ciA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgICAgICBDRkFsbG9jYXRvckNvbnRl
eHQgY29udGV4dCA9IHsgMCwgbnVsbHB0ciwgcmV0YWluLCByZWxlYXNlLCBjb3B5RGVzY3JpcHRp
b24sIGFsbG9jYXRlLCByZWFsbG9jYXRlLCBkZWFsbG9jYXRlLCBwcmVmZXJyZWRTaXplIH07Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShudWxscHRyLCAmY29u
dGV4dCkpOworICAgICAgICB9KCkpOworICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmdldCgpLmdl
dCgpOwogICAgIH0KIAogfQpAQCAtMTM4LDE1ICsxMzUsMTUgQEAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgQVNTRVJUKCFTdHJpbmdXcmFw
cGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcpOwogICAgIFN0cmluZ1dyYXBwZXJDRkFsbG9j
YXRvcjo6Y3VycmVudFN0cmluZyA9IHRoaXM7CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmc7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmc7CiAgICAgaWYgKGlzOEJpdCgpKQotICAg
ICAgICBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCk7CisgICAg
ICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoYWxsb2Nh
dG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFjdGVyczgoKSksIG1fbGVu
Z3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwp
KTsKICAgICBlbHNlCi0gICAgICAgIHN0cmluZyA9IENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFy
YWN0ZXJzMTYoKSksIG1fbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgc3RyaW5n
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0
aCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIC8vIENvcmVGb3VuZGF0aW9uIG1pZ2h0IG5vdCBo
YXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNhc2Ug
d2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2Nh
dG9yOjpjdXJyZW50U3RyaW5nID0gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdENGKHN0cmlu
Zyk7CisgICAgcmV0dXJuIHN0cmluZzsKIH0KIAogLy8gT24gU3RyaW5nSW1wbCBjcmVhdGlvbiB3
ZSBjb3VsZCBjaGVjayBpZiB0aGUgYWxsb2NhdG9yIGlzIHRoZSBTdHJpbmdXcmFwcGVyQ0ZBbGxv
Y2F0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNz
Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCBmZmU2
M2E2YzM5Yjg0NmMxZTU5NzYxNWRiYzQ3MmZkNzNlMjAwNjY4Li40YjAxZWMzNzllYmE5ZmNlMWQ4
YTQ4NjkxYzU4YTgwNWI4Mzg0NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2NsYXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MubW0KQEAgLTMwLDYgKzMwLDggQEAKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByb3Rv
Y29sLmgiCiAjaW1wb3J0ICJvYmpjX2luc3RhbmNlLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CkBAIC0zOSwyMiArNDEsMjYgQEAgT2JqY0NsYXNzOjpPYmpjQ2xhc3MoQ2xh
c3NTdHJ1Y3RQdHIgYUNsYXNzKQogewogfQogCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiBjbGFzc2VzQnlJc0EgPSAwOworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiYgY2xhc3Nlc0J5SXNBKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+PiBjbGFzc2VzQnlJc0E7CisgICAgcmV0dXJuIGNs
YXNzZXNCeUlzQTsKK30KIAogc3RhdGljIHZvaWQgX2NyZWF0ZUNsYXNzZXNCeUlzQUlmTmVjZXNz
YXJ5KCkKIHsKLSAgICBpZiAoIWNsYXNzZXNCeUlzQSkKLSAgICAgICAgY2xhc3Nlc0J5SXNBID0g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAo
IWNsYXNzZXNCeUlzQSgpKQorICAgICAgICBjbGFzc2VzQnlJc0EoKSA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMLCBOVUxMKSk7CiB9CiAKIE9iamNDbGFz
cyogT2JqY0NsYXNzOjpjbGFzc0ZvcklzQShDbGFzc1N0cnVjdFB0ciBpc2EpCiB7CiAgICAgX2Ny
ZWF0ZUNsYXNzZXNCeUlzQUlmTmVjZXNzYXJ5KCk7CiAKLSAgICBhdXRvIGFDbGFzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8T2JqY0NsYXNzKj4oY29uc3RfY2FzdDx2b2lkKj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoY2xhc3Nlc0J5SXNBLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSkpKTsKKyAgICBhdXRv
IGFDbGFzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8T2JqY0NsYXNzKj4oY29uc3RfY2FzdDx2b2lkKj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2xhc3Nlc0J5SXNBKCkuZ2V0KCksIChfX2JyaWRnZSBDRlR5
cGVSZWYpaXNhKSkpOwogICAgIGlmICghYUNsYXNzKSB7CiAgICAgICAgIGFDbGFzcyA9IG5ldyBP
YmpjQ2xhc3MoaXNhKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoY2xhc3Nlc0J5SXNB
LCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWlzYSwgYUNsYXNzKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoY2xhc3Nlc0J5SXNBKCkuZ2V0KCksIChfX2JyaWRnZSBDRlR5cGVSZWYpaXNhLCBh
Q2xhc3MpOwogICAgIH0KIAogICAgIHJldHVybiBhQ2xhc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU21hcnRSZXBsYWNlQ0YuY3BwCmluZGV4IDg1ZTliYzRhYTRlZGRmYjQ0NTM5NGIwZThkMzk2
MDdmNDJkMTI0ZWYuLjdkOTIwOGEzZmNlZDAyNjYzODI1MjAwMzZkMWQ2ODIyYWZhMWQ5NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCkBAIC0zMSwzOCArMzEs
MzcgQEAKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQ2hhcmFjdGVyU2V0Lmg+CiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBnZXRTbWFydFNldChib29sIGlz
UHJldmlvdXNDaGFyYWN0ZXIpCiB7Ci0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJl
ZiBwcmVTbWFydFNldDsKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHBvc3RT
bWFydFNldDsKLSAgICBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgc21hcnRTZXQgPSBpc1ByZXZp
b3VzQ2hhcmFjdGVyID8gcHJlU21hcnRTZXQgOiBwb3N0U21hcnRTZXQ7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+PiBwcmVTbWFy
dFNldDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGTXV0YWJsZUNoYXJh
Y3RlclNldFJlZj4+IHBvc3RTbWFydFNldDsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFj
dGVyU2V0UmVmPiYgc21hcnRTZXQgPSBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gcHJlU21hcnRTZXQu
Z2V0KCkgOiBwb3N0U21hcnRTZXQuZ2V0KCk7CiAgICAgaWYgKCFzbWFydFNldCkgewotICAgICAg
ICBzbWFydFNldCA9IENGQ2hhcmFjdGVyU2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0KTsKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5TdHJpbmcoc21hcnRT
ZXQsIGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBDRlNUUigiKFtcIlwnIyQvLWB7IikgOiBDRlNUUigi
KV0uLDs6P1wnIVwiJSotL30iKSk7Ci0gICAgICAgIENGQ2hhcmFjdGVyU2V0VW5pb24oc21hcnRT
ZXQsIENGQ2hhcmFjdGVyU2V0R2V0UHJlZGVmaW5lZChrQ0ZDaGFyYWN0ZXJTZXRXaGl0ZXNwYWNl
QW5kTmV3bGluZSkpOyAgICAgICAgCisgICAgICAgIHNtYXJ0U2V0ID0gYWRvcHRDRihDRkNoYXJh
Y3RlclNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgICAgICBDRkNo
YXJhY3RlclNldEFkZENoYXJhY3RlcnNJblN0cmluZyhzbWFydFNldC5nZXQoKSwgaXNQcmV2aW91
c0NoYXJhY3RlciA/IENGU1RSKCIoW1wiXCcjJC8tYHsiKSA6IENGU1RSKCIpXS4sOzo/XCchXCIl
Ki0vfSIpKTsKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldC5nZXQoKSwgQ0ZD
aGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFdoaXRlc3BhY2VBbmROZXds
aW5lKSk7CisKICAgICAgICAgLy8gQWRkaW5nIENKSyByYW5nZXMKLSAgICAgICAgQ0ZDaGFyYWN0
ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgxMTAwLCAy
NTYpKTsgLy8gSGFuZ3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKLSAgICAgICAgQ0ZDaGFyYWN0
ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgyRTgwLCAz
NTIpKTsgLy8gQ0pLICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYpCi0gICAgICAg
IENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtl
KDB4MkZGMCwgNDY0KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMsIENKSyBTeW1ib2xzLCBI
aXJhZ2FuYSwgS2F0YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vLCBL
YW5idW4sICYgQm9wb21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCi0gICAgICAgIENGQ2hhcmFj
dGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MzIwMCwg
MjkzOTIpKTsgLy8gRW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dyYXBocyAoVW5pIEhhbiAmIEV4dCBB
KSwgJiBZaSAoMHgzMjAwIC0gMHhBNENGKQotICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJh
Y3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFrZSgweEFDMDAsIDExMTgzKSk7IC8vIEhh
bmd1bCBTeWxsYWJsZXMgKDB4QUMwMCAtIDB4RDdBRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRB
ZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwgQ0ZSYW5nZU1ha2UoMHhGOTAwLCAzNTIpKTsg
Ly8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHhGOTAwIC0gMHhGQTVGKQotICAgICAg
ICBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LCBDRlJhbmdlTWFr
ZSgweEZFMzAsIDMyKSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0
RikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldCwg
Q0ZSYW5nZU1ha2UoMHhGRjAwLCAyNDApKTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYw
MCAtIDB4RkZFRikKLSAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShz
bWFydFNldCwgQ0ZSYW5nZU1ha2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGgg
RXhudGVuc2lvbiBCCi0gICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uo
c21hcnRTZXQsIENGUmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJp
bGl0eSBJZGVvZ3JhcGhzICgweDJGODAwIC0gMHgyRkExRCkKKyAgICAgICAgQ0ZDaGFyYWN0ZXJT
ZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMHgxMTAw
LCAyNTYpKTsgLy8gSGFuZ3VsIEphbW8gKDB4MTEwMCAtIDB4MTFGRikKKyAgICAgICAgQ0ZDaGFy
YWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2Uo
MHgyRTgwLCAzNTIpKTsgLy8gQ0pLICYgS2FuZ3hpIFJhZGljYWxzICgweDJFODAgLSAweDJGREYp
CisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0
KCksIENGUmFuZ2VNYWtlKDB4MkZGMCwgNDY0KSk7IC8vIElkZW9ncmFwaCBEZXNjcmlwdGlvbnMs
IENKSyBTeW1ib2xzLCBIaXJhZ2FuYSwgS2F0YWthbmEsIEJvcG9tb2ZvLCBIYW5ndWwgQ29tcGF0
aWJpbGl0eSBKYW1vLCBLYW5idW4sICYgQm9wb21vZm8gRXh0ICgweDJGRjAgLSAweDMxQkYpCisg
ICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRTZXQuZ2V0KCks
IENGUmFuZ2VNYWtlKDB4MzIwMCwgMjkzOTIpKTsgLy8gRW5jbG9zZWQgQ0pLLCBDSksgSWRlb2dy
YXBocyAoVW5pIEhhbiAmIEV4dCBBKSwgJiBZaSAoMHgzMjAwIC0gMHhBNENGKQorICAgICAgICBD
RkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdl
TWFrZSgweEFDMDAsIDExMTgzKSk7IC8vIEhhbmd1bCBTeWxsYWJsZXMgKDB4QUMwMCAtIDB4RDdB
RikKKyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5n
ZXQoKSwgQ0ZSYW5nZU1ha2UoMHhGOTAwLCAzNTIpKTsgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRl
b2dyYXBocyAoMHhGOTAwIC0gMHhGQTVGKQorICAgICAgICBDRkNoYXJhY3RlclNldEFkZENoYXJh
Y3RlcnNJblJhbmdlKHNtYXJ0U2V0LmdldCgpLCBDRlJhbmdlTWFrZSgweEZFMzAsIDMyKSk7IC8v
IENKSyBDb21wYXRpYmlsaXR5IEZyb20gKDB4RkUzMCAtIDB4RkU0RikKKyAgICAgICAgQ0ZDaGFy
YWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQoKSwgQ0ZSYW5nZU1ha2Uo
MHhGRjAwLCAyNDApKTsgLy8gSGFsZi9GdWxsIFdpZHRoIEZvcm0gKDB4RkYwMCAtIDB4RkZFRikK
KyAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShzbWFydFNldC5nZXQo
KSwgQ0ZSYW5nZU1ha2UoMHgyMDAwMCwgMHhBNkQ3KSk7IC8vIENKSyBJZGVvZ3JhcGggRXhudGVu
c2lvbiBCCisgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVyc0luUmFuZ2Uoc21hcnRT
ZXQuZ2V0KCksIENGUmFuZ2VNYWtlKDB4MkY4MDAsIDB4MDIxRSkpOyAvLyBDSksgQ29tcGF0aWJp
bGl0eSBJZGVvZ3JhcGhzICgweDJGODAwIC0gMHgyRkExRCkKIAotICAgICAgICBpZiAoaXNQcmV2
aW91c0NoYXJhY3RlcikKLSAgICAgICAgICAgIHByZVNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJTZXRVbmlvbihzbWFydFNldCwgQ0ZD
aGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNoYXJhY3RlclNldFB1bmN0dWF0aW9uKSk7ICAg
ICAgIAotICAgICAgICAgICAgcG9zdFNtYXJ0U2V0ID0gc21hcnRTZXQ7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFpc1ByZXZpb3VzQ2hhcmFjdGVyKQorICAgICAgICAgICAgQ0ZDaGFyYWN0ZXJT
ZXRVbmlvbihzbWFydFNldC5nZXQoKSwgQ0ZDaGFyYWN0ZXJTZXRHZXRQcmVkZWZpbmVkKGtDRkNo
YXJhY3RlclNldFB1bmN0dWF0aW9uKSk7CiAgICAgfQotICAgIHJldHVybiBzbWFydFNldDsKKyAg
ICByZXR1cm4gc21hcnRTZXQuZ2V0KCk7CiB9CiAKIGJvb2wgaXNDaGFyYWN0ZXJTbWFydFJlcGxh
Y2VFeGVtcHQoVUNoYXIzMiBjLCBib29sIGlzUHJldmlvdXNDaGFyYWN0ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0K
aW5kZXggMWNkNWQ5ZmRiOGExNDE5ZDM2N2MwODZlMGM2Y2E2M2RmZWQ2MzMyNS4uNTA5ZjIzYmFj
ZTFlZTVmYTYxN2Q4NWNiZGExNTY4ZDk5MzhiODU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtMTE5LDEw
ICsxMTksMTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJlbnQgeyAwIH07CiB9Owog
Ci1zdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBi
LCBmbG9hdCBhKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDb2xvcihmbG9h
dCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewogICAgIENHRmxvYXQgY29tcG9uZW50
c1s0XSA9IHsgciwgZywgYiwgYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xv
clNwYWNlUmVmKCksIGNvbXBvbmVudHMpOworICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cykpOwogfQogCiBzdHJ1Y3QgSGlzdG9y
aWNNZW1vcnlDYXRlZ29yeUluZm8gewpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VV
c2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAKICAgICBbbV9sYXllci5nZXQoKSBz
ZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107CiAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVu
dHNTY2FsZToyLjBdOwotICAgIFttX2xheWVyLmdldCgpIHNldEJhY2tncm91bmRDb2xvcjphZG9w
dENGKGNyZWF0ZUNvbG9yKDAsIDAsIDAsIDAuOCkpLmdldCgpXTsKKyAgICBbbV9sYXllci5nZXQo
KSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y3JlYXRlQ29sb3IoMCwgMCwgMCwgMC44KS5nZXQoKV07CiAg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgbm9ybWFsV2lkdGgs
IG5vcm1hbEhlaWdodCldOwogCiAgICAgb3ZlcmxheSgpLmxheWVyKCkuc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIobV9sYXllci5nZXQoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1
cnBvc2U6Ok5vbmUpOwpAQCAtMjgwLDE3ICsyODAsMTcgQEAgc3RhdGljIHZvaWQgc2hvd1RleHQo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHksIENHQ29sb3JSZWYgY29sb3Is
IGMKIAogc3RhdGljIHZvaWQgZHJhd0dyYXBoTGFiZWwoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBzdGF0aWMgQ0dDb2xv
clJlZiBibGFjayA9IGNyZWF0ZUNvbG9yKDAsIDAsIDAsIDEpOwotICAgIHNob3dUZXh0KGNvbnRl
eHQsIHggKyA1LCB5IC0gMywgYmxhY2ssIHRleHQpOwotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdo
aXRlID0gY3JlYXRlQ29sb3IoMSwgMSwgMSwgMSk7Ci0gICAgc2hvd1RleHQoY29udGV4dCwgeCAr
IDQsIHkgLSA0LCB3aGl0ZSwgdGV4dCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxDR0NvbG9yUmVmPj4gYmxhY2sgPSBjcmVhdGVDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBz
aG93VGV4dChjb250ZXh0LCB4ICsgNSwgeSAtIDMsIGJsYWNrLmdldCgpLmdldCgpLCB0ZXh0KTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiB3aGl0ZSA9
IGNyZWF0ZUNvbG9yKDEsIDEsIDEsIDEpOworICAgIHNob3dUZXh0KGNvbnRleHQsIHggKyA0LCB5
IC0gNCwgd2hpdGUuZ2V0KCkuZ2V0KCksIHRleHQpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3Q3B1
SGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB5
MiwgUmluZ0J1ZmZlcjxmbG9hdD4mIGhpc3RvcnkpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JSZWYg
Y3B1Q29sb3IgPSBjcmVhdGVDb2xvcigwLCAxLCAwLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBjcHVDb2xvciA9IGNyZWF0ZUNvbG9yKDAsIDEs
IDAsIDEpOwogCi0gICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwg
Y3B1Q29sb3IpOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQs
IGNwdUNvbG9yLmdldCgpLmdldCgpKTsKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4
dCwgMSk7CiAKICAgICBpbnQgaSA9IDA7CkBAIC0zMjEsOCArMzIxLDggQEAgc3RhdGljIHZvaWQg
ZHJhd0dDSGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBm
bG9hdCB5MiwgUmkKIAogICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCAxKTsKIAot
ICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNhcGFjaXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAw
LjMsIDEpOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNh
cGFjaXR5Q29sb3IpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xv
clJlZj4+IGNhcGFjaXR5Q29sb3IgPSBjcmVhdGVDb2xvcigxLCAwLCAwLjMsIDEpOworICAgIENH
Q29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhcGFjaXR5Q29sb3IuZ2V0
KCkuZ2V0KCkpOwogCiAgICAgc2l6ZV90IGkgPSAwOwogCkBAIC0zMzUsOCArMzM1LDggQEAgc3Rh
dGljIHZvaWQgZHJhd0dDSGlzdG9yeShDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeDEsIGZs
b2F0IHkxLCBmbG9hdCB5MiwgUmkKICAgICAgICAgaSsrOwogICAgIH0pOwogCi0gICAgc3RhdGlj
IENHQ29sb3JSZWYgc2l6ZUNvbG9yID0gY3JlYXRlQ29sb3IoMC42LCAwLjUsIDAuOSwgMSk7Ci0g
ICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgc2l6ZUNvbG9yKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBzaXplQ29s
b3IgPSBjcmVhdGVDb2xvcigwLjYsIDAuNSwgMC45LCAxKTsKKyAgICBDR0NvbnRleHRTZXRTdHJv
a2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBzaXplQ29sb3IuZ2V0KCkuZ2V0KCkpOwogCiAgICAg
aSA9IDA7CiAKQEAgLTQ1NiwxMCArNDU2LDEwIEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6
OnBsYXRmb3JtRHJhdyhDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBDR1JlY3Qgdmlld0JvdW5k
cyA9IG1fb3ZlcmxheS0+Ym91bmRzKCk7CiAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNvbnRleHQs
IHZpZXdCb3VuZHMpOwogCi0gICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3JGb3JMYWJlbHMgPSBj
cmVhdGVDb2xvcigwLjksIDAuOSwgMC45LCAxKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAxMCwg
MjAsIGNvbG9yRm9yTGFiZWxzLCBtYWtlU3RyaW5nKCIgICAgICAgIENQVTogIiwgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0KCksIDYsIEtlZXBUcmFpbGluZ1pl
cm9zKSkpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCAzMCwgY29sb3JGb3JMYWJlbHMsICIg
IEZvb3RwcmludDogIiArIGZvcm1hdEJ5dGVOdW1iZXIobWVtb3J5Rm9vdHByaW50KCkpKTsKLSAg
ICBzaG93VGV4dChjb250ZXh0LCAxMCwgNDAsIGNvbG9yRm9yTGFiZWxzLCAiICAgRXh0ZXJuYWw6
ICIgKyBmb3JtYXRCeXRlTnVtYmVyKGRhdGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gY29sb3JGb3JM
YWJlbHMgPSBjcmVhdGVDb2xvcigwLjksIDAuOSwgMC45LCAxKTsKKyAgICBzaG93VGV4dChjb250
ZXh0LCAxMCwgMjAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCBtYWtlU3RyaW5nKCIgICAg
ICAgIENQVTogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihkYXRhLmNwdS5sYXN0
KCksIDYsIEtlZXBUcmFpbGluZ1plcm9zKSkpOworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCAz
MCwgY29sb3JGb3JMYWJlbHMuZ2V0KCkuZ2V0KCksICIgIEZvb3RwcmludDogIiArIGZvcm1hdEJ5
dGVOdW1iZXIobWVtb3J5Rm9vdHByaW50KCkpKTsKKyAgICBzaG93VGV4dChjb250ZXh0LCAxMCwg
NDAsIGNvbG9yRm9yTGFiZWxzLmdldCgpLmdldCgpLCAiICAgRXh0ZXJuYWw6ICIgKyBmb3JtYXRC
eXRlTnVtYmVyKGRhdGEudG90YWxFeHRlcm5hbFNpemUubGFzdCgpKSk7CiAKICAgICBmbG9hdCB5
ID0gNTU7CiAgICAgZm9yIChhdXRvJiBjYXRlZ29yeSA6IGRhdGEuY2F0ZWdvcmllcykgewpAQCAt
NDgwLDggKzQ4MCw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtRHJhdyhD
R0NvbnRleHRSZWYgY29udGV4dCkKICAgICB5IC09IDU7CiAKICAgICBNb25vdG9uaWNUaW1lIG5v
dyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsg
MTAsIGNvbG9yRm9yTGFiZWxzLCAiICAgIEVkZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEu
dGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uLCBub3cpKTsKLSAgICBzaG93VGV4dChjb250ZXh0LCAx
MCwgeSArIDIwLCBjb2xvckZvckxhYmVscywgIiAgICBGdWxsIEdDOiAiICsgZ2NUaW1lclN0cmlu
ZyhkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiwgbm93KSk7CisgICAgc2hvd1RleHQoY29u
dGV4dCwgMTAsIHkgKyAxMCwgY29sb3JGb3JMYWJlbHMuZ2V0KCkuZ2V0KCksICIgICAgRWRlbiBH
QzogIiArIGdjVGltZXJTdHJpbmcoZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24sIG5vdykp
OworICAgIHNob3dUZXh0KGNvbnRleHQsIDEwLCB5ICsgMjAsIGNvbG9yRm9yTGFiZWxzLmdldCgp
LmdldCgpLCAiICAgIEZ1bGwgR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGRhdGEudGltZU9mTmV4dEZ1
bGxDb2xsZWN0aW9uLCBub3cpKTsKIAogICAgIGRyYXdDcHVIaXN0b3J5KGNvbnRleHQsIHZpZXdC
b3VuZHMuc2l6ZS53aWR0aCAtIDcwLCAwLCB2aWV3Qm91bmRzLnNpemUuaGVpZ2h0LCBkYXRhLmNw
dSk7CiAgICAgZHJhd0dDSGlzdG9yeShjb250ZXh0LCB2aWV3Qm91bmRzLnNpemUud2lkdGggLSAx
NDAsIDAsIHZpZXdCb3VuZHMuc2l6ZS5oZWlnaHQsIGRhdGEuZ2NIZWFwU2l6ZSwgZGF0YS5jYXRl
Z29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ0hlYXBdLmRpcnR5U2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKaW5kZXggODIw
M2MwMzZhMzYxMjU3ZTUyZTgwNWQxZmY5NTg4NGM2YjQ4MWE2NC4uMzBkNWUwNTU1MTliY2EwMDNk
MjQ1NDVmNDNkZDIxMzcwY2YwMmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2VydGlmaWNhdGVDRldpbi5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDE5
ICszNSwxOSBAQCBzdGF0aWMgdm9pZCBkZWFsbG9jQ2VydENvbnRleHQodm9pZCogcHRyLCB2b2lk
KiBpbmZvKQogICAgICAgICBDZXJ0RnJlZUNlcnRpZmljYXRlQ29udGV4dChzdGF0aWNfY2FzdDxQ
Q0NFUlRfQ09OVEVYVD4ocHRyKSk7CiB9CiAKLXN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGVD
ZXJ0Q29udGV4dERlYWxsb2NhdG9yKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+
IGNyZWF0ZUNlcnRDb250ZXh0RGVhbGxvY2F0b3IoKQogewogICAgIENGQWxsb2NhdG9yQ29udGV4
dCBhbGxvY0NvbnRleHQgPSB7CiAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGRlYWxsb2ND
ZXJ0Q29udGV4dCwgMAogICAgIH07Ci0gICAgcmV0dXJuIENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsICZhbGxvY0NvbnRleHQpOworICAgIHJldHVybiBhZG9wdENGKENGQWxs
b2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZhbGxvY0NvbnRleHQpKTsKIH0KIAog
UmV0YWluUHRyPENGRGF0YVJlZj4gY29weUNlcnRpZmljYXRlVG9EYXRhKFBDQ0VSVF9DT05URVhU
IGNlcnRpZmljYXRlKQogewotICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjZXJ0RGVhbGxvYyA9
IGNyZWF0ZUNlcnRDb250ZXh0RGVhbGxvY2F0b3IoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPj4gY2VydERlYWxsb2MgPSBjcmVhdGVDZXJ0Q29u
dGV4dERlYWxsb2NhdG9yKCk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGVDb3B5ID0g
Q2VydER1cGxpY2F0ZUNlcnRpZmljYXRlQ29udGV4dChjZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2Yo
KmNlcnRpZmljYXRlQ29weSksIGNlcnREZWFsbG9jKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZUNvcHkpLCBzaXplb2YoKmNlcnRpZmljYXRl
Q29weSksIGNlcnREZWFsbG9jLmdldCgpLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAwNTczMjVjMDYyZGJjZTVkODEyZmI0OGY4NDczMjU5ODYyYWVkNzQ5
Li4zMDU4ZWU4MTdmY2RmOTU4NGNiYjM2MTcxZjRjNmZjODQ3MTI3ZDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0x
MTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlv
biA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRX
aWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVy
aW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcsIENyZWF0aW9uRGF0YSogPSBudWxscHRyKTsKIAog
I2lmIFVTRShDT1JFX1RFWFQpCi0gICAgV0VCQ09SRV9FWFBPUlQgRm9udFBsYXRmb3JtRGF0YShD
VEZvbnRSZWYsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5
bnRoZXRpY09ibGlxdWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gRm9udE9yaWVudGF0aW9u
OjpIb3Jpem9udGFsLCBGb250V2lkdGhWYXJpYW50ID0gRm9udFdpZHRoVmFyaWFudDo6UmVndWxh
cldpZHRoLCBUZXh0UmVuZGVyaW5nTW9kZSA9IFRleHRSZW5kZXJpbmdNb2RlOjpBdXRvVGV4dFJl
bmRlcmluZywgQ3JlYXRpb25EYXRhKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZv
bnRQbGF0Zm9ybURhdGEoUmV0YWluUHRyPENURm9udFJlZj4mJiwgZmxvYXQgc2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkID0gZmFsc2UsIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IGZhbHNlLCBGb250
T3JpZW50YXRpb24gPSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlh
bnQgPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgsIFRleHRSZW5kZXJpbmdNb2RlID0g
VGV4dFJlbmRlcmluZ01vZGU6OkF1dG9UZXh0UmVuZGVyaW5nLCBDcmVhdGlvbkRhdGEqID0gbnVs
bHB0cik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCBhYTMxMzJiYWJmNzAyM2NmYTVmMzgwOGMyMzhl
OWFmZDNkZmJmYjg0Li5kMDJhNDZiM2EzYWY4Y2Q3MmQ4ODA5MmI5MzhlOWYyMjcxMGVjMjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zNSw3ICsz
NSw3IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BhdHRlcm4qIENHUGF0dGVy
blJlZjsKLXR5cGVkZWYgQ0dQYXR0ZXJuUmVmIFBsYXRmb3JtUGF0dGVyblB0cjsKK3R5cGVkZWYg
UmV0YWluUHRyPENHUGF0dGVyblJlZj4gUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VsaWYgVVNFKERJ
UkVDVDJEKQogaW50ZXJmYWNlIElEMkQxQml0bWFwQnJ1c2g7CiB0eXBlZGVmIElEMkQxQml0bWFw
QnJ1c2gqIFBsYXRmb3JtUGF0dGVyblB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGE4MjE1Y2Mw
NWZmMjJkMTI5MGYxNzA4MDE5MDU0MjFhMDE5NzA5NWEuLjA1ZDUyNTVlM2YzNmY3NGE3MDgwNzll
MWI3ZWI4NGYyNzU2OTI4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNjksMTAgKzY5LDExIEBA
CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgot
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAvLyBTb2Z0LWxpbmtpbmcgaGVh
ZGVycyBtdXN0IGJlIGluY2x1ZGVkIGxhc3Qgc2luY2UgdGhleSAjZGVmaW5lIGZ1bmN0aW9ucywg
Y29uc3RhbnRzLCBldGMuCiAjaW5jbHVkZSAiQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oIgpA
QCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQoKSBjb25zdCB7IHJldHVybiBtX2xlZ2libGVPdXRw
dXQuZ2V0KCk7IH0KICAgICBBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZiBzYWZlTWVkaWFTZWxl
Y3Rpb25Hcm91cEZvckxlZ2libGVNZWRpYSgpIGNvbnN0OwogI2VuZGlmCi0gICAgaW5saW5lIGRp
c3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0
aW9uUXVldWU7IH0KKyAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7
IHJldHVybiBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpOyB9CiAKICNpZiBIQVZFKEFWRk9VTkRB
VElPTl9MT0FERVJfREVMRUdBVEUpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
ICAgIFJldGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmPiB0YWtlUmVx
dWVzdEZvcktleVVSSShjb25zdCBTdHJpbmcmKTsKQEAgLTE5NSw3ICsxOTYsNyBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxBVkNGTWVkaWFTZWxlY3Rpb25Hcm91cFJlZj4gbV9zZWxlY3Rpb25H
cm91cDsKICNlbmRpZgogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX25vdGlmaWNhdGlvblF1ZXVl
OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fbm90aWZpY2F0aW9uUXVldWU7
CiAKICAgICBtdXRhYmxlIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fY2FWaWRlb0xheWVyOwog
ICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fdmlkZW9MYXllcldyYXBwZXI7CkBAIC0yNDQs
NyArMjQ1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGJvb2xTdHJpbmcoYm9vbCB2YWwpCiB9CiAj
ZW5kaWYKIAotc3RhdGljIENGQXJyYXlSZWYgY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpCitzdGF0
aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKQogewogICAg
IHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrZXlOYW1lc1tdID0gewogICAgICAgICBBVkNGQXNz
ZXRQcm9wZXJ0eUR1cmF0aW9uLApAQCAtMjU4LDEzICsyNTksMTMgQEAgc3RhdGljIENGQXJyYXlS
ZWYgY3JlYXRlTWV0YWRhdGFLZXlOYW1lcygpCiAjZW5kaWYKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMsIHNpemVvZihrZXlO
YW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopa2V5TmFtZXMs
IHNpemVvZihrZXlOYW1lcykgLyBzaXplb2Yoa2V5TmFtZXNbMF0pLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7CiB9CiAKIHN0YXRpYyBDRkFycmF5UmVmIG1ldGFkYXRhS2V5TmFtZXMoKQogewot
ICAgIHN0YXRpYyBDRkFycmF5UmVmIGtleXMgPSBjcmVhdGVNZXRhZGF0YUtleU5hbWVzKCk7Ci0g
ICAgcmV0dXJuIGtleXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkFy
cmF5UmVmPj4ga2V5cyA9IGNyZWF0ZU1ldGFkYXRhS2V5TmFtZXMoKTsKKyAgICByZXR1cm4ga2V5
cy5nZXQoKS5nZXQoKTsKIH0KIAogLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiBBVkNG
VGltZWRNZXRhZGF0YUdyb3VwLmggZXhwb3J0ZWQgdGhpcyBrZXkuCkBAIC0xMzc1LDcgKzEzNzYs
NyBAQCBBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKiBvd25lcikKICAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSA9PSBkaXNw
YXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpB
VkZXcmFwcGVyKCVwKSIsIHRoaXMpOwogCi0gICAgbV9ub3RpZmljYXRpb25RdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yubm90aWZp
Y2F0aW9uUXVldWUiLCAwKTsKKyAgICBtX25vdGlmaWNhdGlvblF1ZXVlID0gYWRvcHRPU09iamVj
dChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Lm5vdGlmaWNhdGlvblF1ZXVlIiwgMCkpOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVS
X0RFTEVHQVRFKQogICAgIG1fcmVzb3VyY2VMb2FkZXJDYWxsYmFja3MudmVyc2lvbiA9IGtBVkNG
QXNzZXRSZXNvdXJjZUxvYWRlcl9DYWxsYmFja3NWZXJzaW9uXzE7CkBAIC0xMzk1LDkgKzEzOTYs
NiBAQCBBVkZXcmFwcGVyOjp+QVZGV3JhcHBlcigpCiAgICAgZGVzdHJveVZpZGVvTGF5ZXIoKTsK
ICAgICBkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKTsKIAotICAgIGlmIChtX25vdGlmaWNhdGlvblF1
ZXVlKQotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fbm90aWZpY2F0aW9uUXVldWUpOwotCiAg
ICAgaWYgKGF2QXNzZXQoKSkgewogICAgICAgICBBVkNGQXNzZXRDYW5jZWxMb2FkaW5nKGF2QXNz
ZXQoKSk7CiAgICAgICAgIG1fYXZBc3NldCA9IDA7CkBAIC0xNTMwLDcgKzE1MjgsNyBAQCB2b2lk
IEFWRldyYXBwZXI6OmNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sIGluaGVy
aXRVUkkpCiAKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25zUmVmLmdldCgpLCBBVkNG
VVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIGNmUmVzdHJpY3Rpb25zLmdldCgpKTsK
IAotICAgIG1fYXZBc3NldCA9IGFkb3B0Q0YoQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9w
dGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgpLCBvcHRpb25zUmVmLmdldCgp
LCBtX25vdGlmaWNhdGlvblF1ZXVlKSk7CisgICAgbV9hdkFzc2V0ID0gYWRvcHRDRihBVkNGVVJM
QXNzZXRDcmVhdGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYu
Z2V0KCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKIAog
I2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkKICAgICBBU1NFUlQoY2FsbGJh
Y2tDb250ZXh0KCkpOwpAQCAtMTU2NywyNCArMTU2NSwyMyBAQCB2b2lkIEFWRldyYXBwZXI6OmNy
ZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpCiAjZW5kaWYKIAogICAgIC8v
IEZJWE1FOiBXZSBuZWVkIGEgd2F5IHRvIGNyZWF0ZSBhIEFWUGxheWVyIHdpdGhvdXQgYW4gQVZQ
bGF5ZXJJdGVtLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzk4Nzc3MzA+LgotICAgIEFWQ0ZQbGF5ZXJS
ZWYgcGxheWVyUmVmID0gQVZDRlBsYXllckNyZWF0ZVdpdGhQbGF5ZXJJdGVtQW5kT3B0aW9ucyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBhdlBsYXllckl0ZW0oKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSk7Ci0gICAgbV9hdlBsYXllciA9IGFkb3B0Q0YocGxheWVyUmVmKTsK
KyAgICBtX2F2UGxheWVyID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlV2l0aFBsYXllckl0ZW1B
bmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxheWVySXRlbSgpLCBvcHRpb25zUmVm
LmdldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdldCgpKSk7CiAjaWYgSEFWRShBVkZPVU5EQVRJ
T05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09V
VFBVVF9TVVBQT1JUKQotICAgIEFWQ0ZQbGF5ZXJTZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJs
ZWQocGxheWVyUmVmLCBGQUxTRSk7CisgICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNw
bGF5RW5hYmxlZChtX2F2UGxheWVyLmdldCgpLCBGQUxTRSk7CiAjZW5kaWYKIAogICAgIGlmICht
X2QzZERldmljZSAmJiBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKSkKLSAgICAgICAg
QVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkocGxheWVyUmVmLCBtX2QzZERldmljZS5n
ZXQoKSk7CisgICAgICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKG1fYXZQbGF5
ZXIuZ2V0KCksIG1fZDNkRGV2aWNlLmdldCgpKTsKIAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVy
UmVmIGNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBB
U1NFUlQoY2VudGVyKTsKIAotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2Vu
dGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJS
YXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgcGxheWVyUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNp
b25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJB
ZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFj
aywgQVZDRlBsYXllclJhdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX2F2UGxheWVyLmdldCgpLCBD
Rk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAKICAg
ICAvLyBBZGQgYSB0aW1lIG9ic2VydmVyLCBhc2sgdG8gYmUgY2FsbGVkIGluZnJlcXVlbnRseSBi
ZWNhdXNlIHdlIGRvbid0IHJlYWxseSB3YW50IHBlcmlvZGljIGNhbGxiYWNrcyBidXQKICAgICAv
LyBvdXIgb2JzZXJ2ZXIgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuZXZlciBhIHNlZWsgaGFwcGVu
cy4KICAgICBjb25zdCBkb3VibGUgdmVyeUxvbmdJbnRlcnZhbCA9IDYwKjYwKjYwKjI0KjMwOwot
ICAgIG1fdGltZU9ic2VydmVyID0gYWRvcHRDRihBVkNGUGxheWVyQ3JlYXRlUGVyaW9kaWNUaW1l
T2JzZXJ2ZXJGb3JJbnRlcnZhbChwbGF5ZXJSZWYsIENNVGltZU1ha2UodmVyeUxvbmdJbnRlcnZh
bCwgMTApLCBtX25vdGlmaWNhdGlvblF1ZXVlLCAmcGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFj
aywgY2FsbGJhY2tDb250ZXh0KCkpKTsKKyAgICBtX3RpbWVPYnNlcnZlciA9IGFkb3B0Q0YoQVZD
RlBsYXllckNyZWF0ZVBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwobV9hdlBsYXllci5n
ZXQoKSwgQ01UaW1lTWFrZSh2ZXJ5TG9uZ0ludGVydmFsLCAxMCksIG1fbm90aWZpY2F0aW9uUXVl
dWUuZ2V0KCksICZwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrLCBjYWxsYmFja0NvbnRleHQo
KSkpOwogfQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAm
JiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQpAQCAtMTYwNywyMiAr
MTYwNCwyMSBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllckl0ZW0oKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBDcmVhdGUgdGhlIHBsYXllciBpdGVtIHNvIHdlIGJlZ2luIGxvYWRp
bmcgbWVkaWEgZGF0YS4KLSAgICBBVkNGUGxheWVySXRlbVJlZiBpdGVtUmVmID0gQVZDRlBsYXll
ckl0ZW1DcmVhdGVXaXRoQXNzZXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZBc3NldCgpLCBtX25v
dGlmaWNhdGlvblF1ZXVlKTsKLSAgICBtX2F2UGxheWVySXRlbSA9IGFkb3B0Q0YoaXRlbVJlZik7
CisgICAgbV9hdlBsYXllckl0ZW0gPSBhZG9wdEYoQVZDRlBsYXllckl0ZW1DcmVhdGVXaXRoQXNz
ZXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZBc3NldCgpLCBtX25vdGlmaWNhdGlvblF1ZXVlLmdl
dCgpKSk7CiAKICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIgPSBDRk5vdGlmaWNh
dGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7CiAgICAgQVNTRVJUKGNlbnRlcik7CiAKLSAgICBD
Rk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCks
IG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3Rp
ZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZl
ckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRl
ciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRl
bVN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRl
ckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxi
YWNrLCBBVkNGUGxheWVySXRlbVRyYWNrc0NoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENG
Tm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBD
Rk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCks
IG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNlZWthYmxlVGltZVJhbmdlc0No
YW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2
aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNG
UGxheWVySXRlbUxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBpdGVtUmVmLCBD
Rk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAg
Q0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgp
LCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1QcmVzZW50YXRpb25TaXplQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZp
b3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQ
bGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRl
bVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkp
OwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0Nv
bnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1
ZmZlckVtcHR5Q2hhbmdlZE5vdGlmaWNhdGlvbiwgaXRlbVJlZiwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2Fs
bGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtSXNQbGF5YmFja0J1ZmZlckZ1bGxDaGFuZ2VkTm90aWZpY2F0
aW9uLCBpdGVtUmVmLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNh
bGxiYWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJh
dGlvbkNoYW5nZWROb3RpZmljYXRpb24sIGl0ZW1SZWYsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNr
LCBBVkNGUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJ
dGVtLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlh
dGVseSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxi
YWNrQ29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1TdGF0dXND
aGFuZ2VkTm90aWZpY2F0aW9uLCBtX2F2UGxheWVySXRlbS5nZXQoKSwgQ0ZOb3RpZmljYXRpb25T
dXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9u
Q2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9u
Q2FsbGJhY2ssIEFWQ0ZQbGF5ZXJJdGVtVHJhY2tzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgbV9hdlBs
YXllckl0ZW0uZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlcklt
bWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwg
Y2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVNl
ZWthYmxlVGltZVJhbmdlc0NoYW5nZWROb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJdGVtLmdldCgp
LCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Cisg
ICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4
dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Mb2FkZWRUaW1lUmFuZ2Vz
Q2hhbmdlZE5vdGlmaWNhdGlvbiwgbV9hdlBsYXllckl0ZW0uZ2V0KCksIENGTm90aWZpY2F0aW9u
U3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKGNlbnRlciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlv
bkNhbGxiYWNrLCBBVkNGUGxheWVySXRlbVByZXNlbnRhdGlvblNpemVDaGFuZ2VkTm90aWZpY2F0
aW9uLCBtX2F2UGxheWVySXRlbS5nZXQoKSwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZp
b3JEZWxpdmVySW1tZWRpYXRlbHkpOworICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0aW9uQ2FsbGJhY2ssIEFWQ0ZQ
bGF5ZXJJdGVtSXNQbGF5YmFja0xpa2VseVRvS2VlcFVwQ2hhbmdlZE5vdGlmaWNhdGlvbiwgbV9h
dlBsYXllckl0ZW0uZ2V0KCksIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZl
ckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKGNlbnRl
ciwgY2FsbGJhY2tDb250ZXh0KCksIG5vdGlmaWNhdGlvbkNhbGxiYWNrLCBBVkNGUGxheWVySXRl
bUlzUGxheWJhY2tCdWZmZXJFbXB0eUNoYW5nZWROb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJdGVt
LmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVs
eSk7CisgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNr
Q29udGV4dCgpLCBub3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1Jc1BsYXliYWNr
QnVmZmVyRnVsbENoYW5nZWROb3RpZmljYXRpb24sIG1fYXZQbGF5ZXJJdGVtLmdldCgpLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CisgICAgQ0ZO
b3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihjZW50ZXIsIGNhbGxiYWNrQ29udGV4dCgpLCBu
b3RpZmljYXRpb25DYWxsYmFjaywgQVZDRlBsYXllckl0ZW1EdXJhdGlvbkNoYW5nZWROb3RpZmlj
YXRpb24sIG1fYXZQbGF5ZXJJdGVtLmdldCgpLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhh
dmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiAgICAgLy8gRklYTUU6IEFyZSB0aGVyZSBvdGhlciBs
ZWdpYmxlIG91dHB1dCB0aGluZ3Mgd2UgbmVlZCB0byByZWdpc3RlciBmb3I/IGFzc2V0IGFuZCBo
YXNFbmFibGVkQXVkaW8gYXJlIG5vdCBleHBvc2VkIGJ5IEFWQ0YKIAogICAgIENGTm90aWZpY2F0
aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoY2VudGVyLCBjYWxsYmFja0NvbnRleHQoKSwgbm90aWZpY2F0
aW9uQ2FsbGJhY2ssIENBQ0ZDb250ZXh0TmVlZHNGbHVzaE5vdGlmaWNhdGlvbigpLCAwLCBDRk5v
dGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CkBAIC0xNzU0
LDE1ICsxNzUwLDE0IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSgpCiB7CiAg
ICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSglcCkiLCB0aGlzKTsK
IAotICAgIHN0YXRpYyBDRkFycmF5UmVmIHByb3BlcnR5S2V5TmFtZTsKLSAgICBpZiAoIXByb3Bl
cnR5S2V5TmFtZSkgewotICAgICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga2V5TmFtZXNb
XSA9IHsgCisgICAgc3RhdGljIGF1dG8gcHJvcGVydHlLZXlOYW1lID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5TmFtZXNbXSA9IHsKICAgICAgICAgICAg
IEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUKICAgICAgICAgfTsKLSAgICAgICAgcHJvcGVydHlL
ZXlOYW1lID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWtleU5hbWVzLCBzaXplb2Yo
a2V5TmFtZXMpIC8gc2l6ZW9mKGtleU5hbWVzWzBdKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7
Ci0gICAgfQorICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIGtleU5hbWVz
LCBzdGQ6OnNpemUoa2V5TmFtZXMpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgfSgp
KTsKIAotICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMo
YXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUsIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFj
aywgY2FsbGJhY2tDb250ZXh0KCkpOworICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25v
dXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCkuZ2V0KCks
IGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOwogfQog
CiB2b2lkIEFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNz
ZXRSZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0yMDAzLDcgKzE5OTgsNyBAQCB2b2lkIEFWRldyYXBw
ZXI6OmNyZWF0ZUFWQ0ZWaWRlb0xheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhl
IGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVD
b25maWd1cmF0aW9uKCkuCi0gICAgbV9hdkNGVmlkZW9MYXllciA9IGFkb3B0Q0YoQVZDRlBsYXll
ckxheWVyQ3JlYXRlV2l0aEFWQ0ZQbGF5ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXIo
KSwgbV9ub3RpZmljYXRpb25RdWV1ZSkpOworICAgIG1fYXZDRlZpZGVvTGF5ZXIgPSBhZG9wdENG
KEFWQ0ZQbGF5ZXJMYXllckNyZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGF2UGxheWVyKCksIG1fbm90aWZpY2F0aW9uUXVldWUuZ2V0KCkpKTsKICAgICBMT0coTWVkaWEs
ICJBVkZXcmFwcGVyOjpjcmVhdGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAiLCB0
aGlzLCB2aWRlb0xheWVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDBlYWE4ZTdmYTE4YzIwMjRjOWY4MGY1MjA5OGE5
ZGNiNjU1ZTEzNjkuLmM2NzQ5ZDgzZGMxZmMxMDk0ZTgzOTQ3Y2Y1MGE4NTdlZTQ5NGUzMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1zdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYp
IENGX1JFVFVSTlNfUkVUQUlORUQ7CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0
ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENHQ29sb3JSZWY+
IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+
Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogewotICAg
IHJldHVybiBhZG9wdENGKFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IoY29sb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
QEAgLTg5LDcgKzg5LDcgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNl
dDxGbGFncz4gZmxhZ3MpCiB7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9u
ZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwogCkBAIC0xMTgsNyArMTE4
LDcgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKICAgICBDR0Zsb2F0IGNnRmxvYXRD
b21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OwogCi0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CiAKIENHQ29s
b3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0xMjYsMTYgKzEyNiwx
NiBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlm
IChhdXRvIHNyZ2IgPSBjb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAgICBzd2l0
Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgKnNyZ2IgfS52YWx1ZSkgewogICAgICAgICBjYXNlIFBh
Y2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfS52YWx1ZTogewotICAg
ICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29s
b3IoY29sb3IpOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKKyAgICAg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclJlZj4+IHRyYW5z
cGFyZW50Q0dDb2xvciA9IGNyZWF0ZUNHQ29sb3IoY29sb3IpOworICAgICAgICAgICAgcmV0dXJu
IHRyYW5zcGFyZW50Q0dDb2xvci5nZXQoKS5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFBhY2tlZENvbG9yOjpSR0JBIHsgQ29sb3I6OmJsYWNrIH0udmFsdWU6IHsKLSAgICAgICAgICAg
IHN0YXRpYyBDR0NvbG9yUmVmIGJsYWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKLSAg
ICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3I7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JSZWY+PiBibGFja0NHQ29sb3IgPSBjcmVhdGVDR0Nv
bG9yKGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCkuZ2V0KCk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0
ZSB9LnZhbHVlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3Ig
PSBsZWFrQ0dDb2xvcihjb2xvcik7Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwor
ICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4g
d2hpdGVDR0NvbG9yID0gY3JlYXRlQ0dDb2xvcihjb2xvcik7CisgICAgICAgICAgICByZXR1cm4g
d2hpdGVDR0NvbG9yLmdldCgpLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNl
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNH
LmNwcAppbmRleCBhM2ZiODlkNTBkODljNmJkYjY2M2E5MGRiMDI1NDM5ZGE0MzAyYWVhLi4yMGUx
Y2NhYmNkOGZlNzAzOWQ0NWNmOTRiZjZiOTEzNTY0YTkwYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAKQEAgLTM1LDEz
ICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPGNvbnN0IENGU3RyaW5n
UmVmJiBjb2xvclNwYWNlTmFtZUdsb2JhbENvbnN0YW50PiBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IG5hbWVkQ29sb3JTcGFjZSgpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
Pj4gY29sb3JTcGFjZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgY29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3RhbnQpOwotICAg
ICAgICBBU1NFUlQoY29sb3JTcGFjZSk7CisgICAgICAgIGNvbG9yU3BhY2UuZ2V0KCkgPSBhZG9w
dENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lR2xvYmFsQ29uc3Rh
bnQpKTsKKyAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2UuZ2V0KCkpOwogICAgIH0pOwotICAgIHJl
dHVybiBjb2xvclNwYWNlOworICAgIHJldHVybiBjb2xvclNwYWNlLmdldCgpLmdldCgpOwogfQog
CiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmlu
ZGV4IDFiYTllYmVjMmRkMmMwZTA3NjNmMDA3ZTZiMmViYjQ0ZmI5ODQxMmIuLjUzZWI1ZWNhNjc0
NmExOWE4MTZiZGNjOGExMTZjOWRhOTA4ZDVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTU1
Niw3ICs1NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKCkK
ICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZm
aW5lVHJhbnNmb3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFz
ZUNUTShjZ0NvbnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3Jt
UGF0dGVybiA9IGFkb3B0Q0YobV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBh
dHRlcm4odXNlclRvQmFzZUNUTSkpOworICAgIGF1dG8gcGxhdGZvcm1QYXR0ZXJuID0gbV9zdGF0
ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4odXNlclRvQmFzZUNUTSk7CiAg
ICAgaWYgKCFwbGF0Zm9ybVBhdHRlcm4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNTgwLDcgKzU4
MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIHVzZXJUb0Jhc2VDVE0gPSBBZmZpbmVUcmFuc2Zvcm0oZ2V0VXNlclRvQmFzZUNUTShjZ0Nv
bnRleHQpKTsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBsYXRmb3JtUGF0dGVybiA9
IGFkb3B0Q0YobV9zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKHVzZXJU
b0Jhc2VDVE0pKTsKKyAgICBhdXRvIHBsYXRmb3JtUGF0dGVybiA9IG1fc3RhdGUuZmlsbFBhdHRl
cm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybih1c2VyVG9CYXNlQ1RNKTsKICAgICBpZiAoIXBsYXRm
b3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ0cuaAppbmRleCBjNjliNTJkNzc2Zjk1ZDU2NzdiN2U5ZTA2ZmRiOTgwMTEw
N2RmMjkyLi4yNzE1OTI0ZDE0YTY5NThlODA0ZjU2NWZhMDY0ZTAyMmVmYzRjNmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGVDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTQxLDggKzQxLDggQEAg
dHlwZWRlZiB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHRDR0ZsYWdzOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoQ0dDb250ZXh0UmVmIGNn
Q29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFncyBmbGFncyA9IDApCi0gICAgICAgIDogbV9j
Z0NvbnRleHQoY2dDb250ZXh0KQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiYmIGNnQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0Q0dGbGFn
cyBmbGFncyA9IDApCisgICAgICAgIDogbV9jZ0NvbnRleHQoV1RGTW92ZShjZ0NvbnRleHQpKQog
I2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgLCBtX2hkYygwKQogICAgICAgICAsIG1fc2hvdWxk
SW5jbHVkZUNoaWxkV2luZG93cyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IGFmOTZmOGY5NDNkZjZkMDJiMTA1MDU1NTdlMTcx
ZjlhMTgzMzBkMjQuLmNlZDNhZGJhMmI0YzEyZjBlODIzYTA4OGQyNWZjMTVhYTg4OWE0MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAt
NDUsMjMgKzQ1LDIzIEBAIHN0YXRpYyBzaXplX3QgcHV0Qnl0ZXNOb3doZXJlKHZvaWQqLCBjb25z
dCB2b2lkKiwgc2l6ZV90IGNvdW50KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIENH
Q29udGV4dFJlZiBjcmVhdGVTY3JhdGNoQ29udGV4dCgpCitzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlU2NyYXRjaENvbnRleHQoKQogewogICAgIENHRGF0YUNvbnN1bWVyQ2Fs
bGJhY2tzIGNhbGxiYWNrcyA9IHsgcHV0Qnl0ZXNOb3doZXJlLCAwIH07Ci0gICAgUmV0YWluUHRy
PENHRGF0YUNvbnN1bWVyUmVmPiBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVh
dGUoMCwgJmNhbGxiYWNrcykpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dQREZDb250
ZXh0Q3JlYXRlKGNvbnN1bWVyLmdldCgpLCAwLCAwKTsKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRv
cHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgwLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBjb250
ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIuZ2V0KCksIDAsIDApKTsK
IAogICAgIENHRmxvYXQgYmxhY2tbNF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBDR0NvbnRleHRT
ZXRGaWxsQ29sb3IoY29udGV4dCwgYmxhY2spOwotICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9y
KGNvbnRleHQsIGJsYWNrKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoY29udGV4dC5nZXQo
KSwgYmxhY2spOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKGNvbnRleHQuZ2V0KCksIGJs
YWNrKTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCiBzdGF0aWMgaW5saW5lIENHQ29udGV4
dFJlZiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gY3JlYXRlU2NyYXRjaENvbnRleHQoKTsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHQgPSBjcmVh
dGVTY3JhdGNoQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0LmdldCgpLmdldCgpOwogfQog
CiBQYXRoIFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2lu
dD4mIHBvaW50cykKQEAgLTIxMCwxMSArMjEwLDExIEBAIHN0YXRpYyB2b2lkIGNvcHlDbG9zaW5n
U3VicGF0aHNBcHBsaWVyRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCoK
ICAgICB9CiB9CiAKLXN0YXRpYyBDR011dGFibGVQYXRoUmVmIGNvcHlDR1BhdGhDbG9zaW5nU3Vi
cGF0aHMoQ0dQYXRoUmVmIG9yaWdpbmFsUGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dNdXRhYmxl
UGF0aFJlZj4gY29weUNHUGF0aENsb3NpbmdTdWJwYXRocyhDR1BhdGhSZWYgb3JpZ2luYWxQYXRo
KQogewotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsK
LSAgICBDR1BhdGhBcHBseShvcmlnaW5hbFBhdGgsIHBhdGgsIGNvcHlDbG9zaW5nU3VicGF0aHNB
cHBsaWVyRnVuY3Rpb24pOwotICAgIENHUGF0aENsb3NlU3VicGF0aChwYXRoKTsKKyAgICBhdXRv
IHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoQXBwbHko
b3JpZ2luYWxQYXRoLCBwYXRoLmdldCgpLCBjb3B5Q2xvc2luZ1N1YnBhdGhzQXBwbGllckZ1bmN0
aW9uKTsKKyAgICBDR1BhdGhDbG9zZVN1YnBhdGgocGF0aC5nZXQoKSk7CiAgICAgcmV0dXJuIHBh
dGg7CiB9CiAKQEAgLTIyNyw5ICsyMjcsOCBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZs
b2F0UG9pbnQgJnBvaW50LCBXaW5kUnVsZSBydWxlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBDR1BhdGhDb250YWluc1BvaW50IHJldHVybnMgZmFsc2UgZm9yIG5vbi1j
bG9zZWQgcGF0aHMsIGFzIGEgd29yay1hcm91bmQsIHdlIGNvcHkgYW5kIGNsb3NlIHRoZSBwYXRo
IGZpcnN0LiAgUmFkYXIgNDc1ODk5OCBhc2tzIGZvciBhIGJldHRlciBDRyBBUEkgdG8gdXNlCi0g
ICAgYXV0byBwYXRoID0gYWRvcHRDRihjb3B5Q0dQYXRoQ2xvc2luZ1N1YnBhdGhzKHBsYXRmb3Jt
UGF0aCgpKSk7Ci0gICAgYm9vbCByZXQgPSBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0KCks
IDAsIHBvaW50LCBydWxlID09IFdpbmRSdWxlOjpFdmVuT2RkID8gdHJ1ZSA6IGZhbHNlKTsKLSAg
ICByZXR1cm4gcmV0OworICAgIGF1dG8gcGF0aCA9IGNvcHlDR1BhdGhDbG9zaW5nU3VicGF0aHMo
cGxhdGZvcm1QYXRoKCkpOworICAgIHJldHVybiBDR1BhdGhDb250YWluc1BvaW50KHBhdGguZ2V0
KCksIG51bGxwdHIsIHBvaW50LCBydWxlID09IFdpbmRSdWxlOjpFdmVuT2RkKTsKIH0KIAogYm9v
bCBQYXRoOjpzdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRnVu
Y3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mIHN0cm9rZVN0eWxlQXBwbGllcikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3Bw
CmluZGV4IDNhZWM3NzU2ZGI4Y2QyNTBhZmVmMTBkODNmZGViMWRjYzkzY2Y5YzMuLjc2ZWE5YWY0
ZDQyMzI0OTQxYTg5N2ZhYTNlNWRmZGFiMjNkZjgxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNTMsNyArNTMsNyBAQCBz
dGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgY2FsbE9u
TWFpblRocmVhZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8p
KV0geyB9KTsKIH0KIAotQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKK1JldGFp
blB0cjxDR1BhdHRlcm5SZWY+IFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKIHsKICAgICBGbG9hdFJl
Y3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdlKCkuc2l6ZSgpIH07CiAKQEAgLTY4LDcgKzY4
LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcg
aW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAg
IC8vIGluc3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4
ZWwgY3JhY2tzLgogICAgIGlmIChyZXBlYXRYKCkgJiYgcmVwZWF0WSgpKQotICAgICAgICByZXR1
cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgpLCBwYXR0ZXJu
VHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgp
LCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKSk7CiAK
ICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVw
LCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAg
ICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Miw3ICs4Miw3IEBA
IENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3Jt
SW1hZ2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5D
YWxsYmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9
OwotICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUoaW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRS
VUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR1BhdHRlcm5DcmVh
dGUoaW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDZm
MzIyYzM1YTlmOTkxNTZmOTE1Njk5YjYyYTZlNjUwNWNlYTFlYzIuLjYxNGM4MDJlZGQ0OGI1Y2Q5
ZmE0N2ZhM2Y4ZmZkYjk4MzM3MzY2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0
YUNvcmVUZXh0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoQ1RGb250UmVmIGZvbnQsIGZsb2F0
IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3Jp
ZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBUZXh0
UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgQ3JlYXRpb25EYXRhKiBjcmVhdGlvbkRh
dGEpCitGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKFJldGFpblB0cjxDVEZvbnRS
ZWY+JiYgZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3
aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlLCBDcmVhdGlv
bkRhdGEqIGNyZWF0aW9uRGF0YSkKICAgICA6IEZvbnRQbGF0Zm9ybURhdGEoc2l6ZSwgc3ludGhl
dGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgdGV4
dFJlbmRlcmluZ01vZGUsIGNyZWF0aW9uRGF0YSkKIHsKICAgICBBU1NFUlRfQVJHKGZvbnQsIGZv
bnQpOwpAQCAtNDQsOSArNDQsOSBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KENURm9udFJlZiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbAogI2Vsc2UKICAg
ICBtX2ZvbnQgPSBmb250OwogI2VuZGlmCi0gICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IENURm9u
dEdldFN5bWJvbGljVHJhaXRzKGZvbnQpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7Ci0gICAg
bV9pc1N5c3RlbUZvbnQgPSBXZWJDb3JlOjppc1N5c3RlbUZvbnQoZm9udCk7Ci0gICAgYXV0byB2
YXJpYXRpb25zID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENURm9udENv
cHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFZhcmlhdGlvbkF0dHJpYnV0ZSkpKTsKKyAgICBtX2lz
Q29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMoZm9udC5nZXQoKSkgJiBr
Q1RGb250Q29sb3JHbHlwaHNUcmFpdDsKKyAgICBtX2lzU3lzdGVtRm9udCA9IFdlYkNvcmU6Omlz
U3lzdGVtRm9udChmb250LmdldCgpKTsKKyAgICBhdXRvIHZhcmlhdGlvbnMgPSBhZG9wdENGKHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250LmdldCgp
LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlKSkpOwogICAgIG1faGFzVmFyaWF0aW9ucyA9IHZh
cmlhdGlvbnMgJiYgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQodmFyaWF0aW9ucy5nZXQoKSk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5kZXggNzdl
MWMzZjE2MmYwNjYzZmI4NTNmYTIyNWFjMjQ4YjQ1NmU0MWFmNC4uZTNmMDkyNzAzNDhlN2E1YWVm
NzI2NmViNDcyZGRiYWU3M2JjMzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC0y
MTEsMTQgKzIxMSwxMyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoQ0dJbWFnZVJlZgogICAgIENWUGl4ZWxCdWZm
ZXJMb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKICAgICB2b2lkKiBkYXRhID0gQ1ZQaXhl
bEJ1ZmZlckdldEJhc2VBZGRyZXNzKHJnYkJ1ZmZlcik7CiAgICAgYXV0byByZXRhaW5lZFJHQkJ1
ZmZlciA9IGFkb3B0Q0YocmdiQnVmZmVyKTsKLSAgICBhdXRvIGNvbnRleHQgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGUoZGF0YSwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwg
OCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHJnYkJ1ZmZlciksIHNSR0JDb2xvclNwYWNl
UmVmKCksIChDR0JpdG1hcEluZm8pIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KTsKKyAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQ
ZXJSb3cocmdiQnVmZmVyKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5mbykga0NH
SW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAg
UkVMRUFTRV9MT0coTWVkaWEsICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1
ZmZlcjogQ0dCaXRtYXBDb250ZXh0Q3JlYXRlIHJldHVybmVkIG51bGxwdHIiKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byByZXRhaW5lZENvbnRleHQgPSBhZG9w
dENGKGNvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtl
KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBpbWFnZSk7Cisg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1h
Z2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGltYWdlKTsKICAgICBDVlBpeGVs
QnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKIAogICAgIHJldHVybiBjb252
ZXJ0UGl4ZWxCdWZmZXIocmdiQnVmZmVyLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQppbmRleCA0NTExMDdiYmI0NjViZGUzOTU0NDlkYzA3OGQ4MDVhOGUx
NjRmOGE0Li4wMzIwOTY5ODhmY2RlMjE3MTc1OTMzNTAwMTM5MGViM2ZiYjk5YTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0xNDIsMTMgKzE0MiwxMyBA
QCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNo
YXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogb3B0
aW9uS2V5c1tdID0geyBrQ1RUeXBlc2V0dGVyT3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2ZWwgfTsK
ICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZsdHJGb3Jj
ZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogcnRs
T3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNob3J0VHlwZSwgJnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07Ci0gICAg
ICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rp
b25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFs
dWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICAg
ICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRpb25WYWx1
ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGx0clR5
cGVzZXR0ZXJPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9w
dGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gcnRsVHlwZXNldHRlck9wdGlvbnMgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBy
dGxPcHRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3Ry
aW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKIAogICAgICAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwgc3RyaW5n
QXR0cmlidXRlcy5nZXQoKSB9OwogICAgICAgICAvLyBGSVhNRTogU29tZSBTREtzIGNvbXBsYWlu
IHRoYXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgYmVsb3cgY2Fubm90IGJlIG51bGwuCiAgICAgICAg
IElHTk9SRV9OVUxMX0NIRUNLX1dBUk5JTkdTX0JFR0lOCi0gICAgICAgIFJldGFpblB0cjxDVFR5
cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIgPSBhZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdpdGhV
bmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcywgMCwg
JmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBlc2V0dGVy
T3B0aW9ucykpOworICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVy
ID0gYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9u
cygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvLCBtX3J1bi5sdHIoKSA/IGx0
clR5cGVzZXR0ZXJPcHRpb25zLmdldCgpLmdldCgpIDogcnRsVHlwZXNldHRlck9wdGlvbnMuZ2V0
KCkuZ2V0KCkpKTsKICAgICAgICAgSUdOT1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5ECiAKICAg
ICAgICAgaWYgKCF0eXBlc2V0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4
IDc0OGVkYjk0MDA5ZmQyOGE4OTI1ZmRhZjI0ZjNiMGUyNTliYTZkMTguLmZhYWI2ZTE0ZjAyN2E0
NDRiZDZkZTI3MTJlNjY5NTRhNzY1NWRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAKQEAgLTYzLDkgKzYzLDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRm9udDo6Z2V0
Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgRm9udE8KIAogICAgIGlmICgh
ZW5hYmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0gMDsKLSAgICAgICAg
c3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk51bWJlclJlZj4+IHplcm9LZXJuaW5nVmFs
dWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckZsb2F0VHlwZSwgJnplcm8pKTsKICAgICAgICAga2V5c1tjb3VudF0gPSBrQ1RLZXJuQXR0cmli
dXRlTmFtZTsKLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWU7CisgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSB6ZXJvS2VybmluZ1ZhbHVlLmdldCgpLmdldCgpOwogICAgICAg
ICArK2NvdW50OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggY2VkYjAy
ZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOC4uYjYyMDE1ODM4MWI0YzBhYjQ3Mjcy
YmE0MTc2MWM1NTdkMWViMDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENHQ29udGV4dFJlZiBD
R0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCitzdGF0aWMgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQog
ewogICAgIEhCSVRNQVAgYml0bWFwID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oR2V0Q3VycmVudE9i
amVjdChoZGMsIE9CSl9CSVRNQVApKTsKIApAQCAtNTUsMTIgKzU1LDExIEBAIHN0YXRpYyBDR0Nv
bnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0bWFwQnl0
ZU9yZGVyMzJMaXR0bGUgfCAoaGFzQWxwaGEgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwotICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRh
LnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsRGF0YS5ieXRlc1Bl
clJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvKTsKKyAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVyKCksIHBp
eGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwgOCwgcGl4
ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcEluZm8pKTsK
IAogICAgIC8vIEZsaXAgY29vcmRzCi0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQs
IDAsIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNv
bnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5nZXQoKSwg
MCwgcGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29u
dGV4dC5nZXQoKSwgMSwgLTEpOwogICAgIAogICAgIC8vIFB1dCB0aGUgSERDIEluIGFkdmFuY2Vk
IG1vZGUgc28gaXQgd2lsbCBob25vciBhZmZpbmUgdHJhbnNmb3Jtcy4KICAgICBTZXRHcmFwaGlj
c01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2Uu
Y3BwCmluZGV4IDZhMTYwM2QyMWI2OGVjNWJlMjhmZDA2OTU5N2NkZDIyY2FmMjNkNmMuLjhlNWIz
ZTQyMjE0NzdlOTIxZDc4MjI1MTk0NTI2MmY5ZTBhOGU4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EZXZpY2UuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgTUdEZXZpY2VDbGFzcyBkZXZp
Y2VDbGFzcygpCiBTdHJpbmcgZGV2aWNlTmFtZSgpCiB7CiAjaWYgVEFSR0VUX09TX0lPUwotICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBkZXZpY2VOYW1lOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBkZXZpY2VOYW1lOwogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSAgICAg
ICAgZGV2aWNlTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihNR0NvcHlBbnN3ZXIoa01H
UURldmljZU5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgZGV2aWNlTmFtZS5nZXQoKSA9IGFkb3B0
Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNlTmFtZSwg
bnVsbHB0cikpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZGV2aWNlTmFtZTsKKyAgICByZXR1cm4g
ZGV2aWNlTmFtZS5nZXQoKS5nZXQoKTsKICNlbHNlCiAgICAgcmV0dXJuICJpUGhvbmUiX3M7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4
IGM2NGE0YmNhMWFkOGU3YjcyYWYyMjYwM2ZiMWNjMDFmOTc2OWY2MjAuLjczNTkzM2YxNzIwODVi
OWU2NjkzYWQ0NGIyYWYxNjBiMzQwYzRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgZGVsZXRlRHJhZ0lt
YWdlKERyYWdJbWFnZVJlZikKIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lzdGVtRm9u
dChDR0Zsb2F0IHNpemUpCiB7CiAgICAgVUlGb250ICpmb250ID0gW1BBTDo6Z2V0VUlGb250Q2xh
c3MoKSBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOwotICAgIHJldHVybiBGb250Q2FzY2FkZShGb250
UGxhdGZvcm1EYXRhKENURm9udENyZWF0ZVdpdGhOYW1lKChDRlN0cmluZ1JlZilmb250LmZvbnRO
YW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSwgZm9udC5wb2ludFNpemUpKTsKKyAgICByZXR1cm4g
Rm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YShhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1l
KChDRlN0cmluZ1JlZilmb250LmZvbnROYW1lLCBmb250LnBvaW50U2l6ZSwgbmlsKSksIGZvbnQu
cG9pbnRTaXplKSk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVs
ZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgVGV4dElu
ZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIEZvbnRSZW5kZXJpbmdNb2RlLCBmbG9hdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRl
eCA5MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJlYzQyMWEzNDJkMzZiZjQxLi5hNjA4OGY3ZjZlODBk
YWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0xMjQsMTggKzEyNCwzOCBAQCB0eXBl
ZGVmIGVudW0gewogICAgIElnbm9yZUF1dG9yZWxlYXNlUG9vbAogfSBBdXRvcmVsZWFzZVBvb2xP
cGVyYXRpb247CiAKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVsZWFzZVNv
dXJjZTsKLXN0YXRpYyBDRk11dGFibGVBcnJheVJlZiBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXk7
CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4mIHdlYlRocmVhZFJlbGVhc2VT
b3VyY2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29w
U291cmNlUmVmPj4gd2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKKyAgICByZXR1cm4gd2ViVGhyZWFk
UmVsZWFzZVNvdXJjZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4m
IHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4+IHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsK
KyAgICByZXR1cm4gd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5OworfQogCiBzdGF0aWMgTG9jayBk
ZWxlZ2F0ZUxvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwot
c3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CisKK3N0
YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiYgZGVsZWdhdGVTb3VyY2UoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPj4g
ZGVsZWdhdGVTb3VyY2U7CisgICAgcmV0dXJuIGRlbGVnYXRlU291cmNlOworfQorCiBzdGF0aWMg
Qk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRp
YyBCT09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CiAjZW5kaWYKIAotc3RhdGljIENGUnVuTG9v
cE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworc3RhdGljIFJldGFp
blB0cjxDRlJ1bkxvb3BPYnNlcnZlclJlZj4mIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVy
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGUnVuTG9vcE9ic2Vy
dmVyUmVmPj4gbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXI7CisgICAgcmV0dXJuIG1haW5S
dW5Mb29wQXV0b1VubG9ja09ic2VydmVyOworfQorCiBzdGF0aWMgQk9PTCBtYWluVGhyZWFkSGFz
UGVuZGluZ0F1dG9VbmxvY2s7CiAKIHN0YXRpYyBMb2NrIHN0YXJ0dXBMb2NrOwpAQCAtMjM0LDcg
KzI1NCw3IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5TSW52
b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUKGRlbGVnYXRlU291cmNlKTsKKyAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UoKSk7CiAgICAg
ZGVsZWdhdGVMb2NrLmxvY2soKTsKIAogICAgIGRlbGVnYXRlSW52b2NhdGlvbigpID0gV1RGTW92
ZShpbnZvY2F0aW9uKTsKQEAgLTI1NSw3ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdh
dGVNZXNzYWdlKFJldGFpblB0cjxOU0ludm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAgICAgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0o
KSk7CiAgICAgICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIAotICAgICAgICBDRlJ1bkxvb3BTb3Vy
Y2VTaWduYWwoZGVsZWdhdGVTb3VyY2UpOworICAgICAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwo
ZGVsZWdhdGVTb3VyY2UoKS5nZXQoKSk7CiAgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxv
b3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7CkBAIC0y
OTYsNyArMzE2LDcgQEAgdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQodm9pZCheZGVsZWdh
dGVCbG9jaykoKSkKIHZvaWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKIHsKICAg
ICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZSk7CisgICAgQVNTRVJUKHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKSk7CiAKICNp
ZiBMT0dfUkVMRUFTRVMKICAgICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbbWFpbiB0aHJlYWRdOiAl
QCIsIG9iaik7CkBAIC0zMDQsMTAgKzMyNCwxMCBAQCB2b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVs
ZWFzZShpZCBvYmopCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYlRocmVhZFJlbGVh
c2VMb2NrKTsKIAotICAgIGlmIChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPT0gbmlsKQotICAg
ICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKTsKLSAgICBDRkFycmF5QXBwZW5kVmFs
dWUoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5LCBvYmopOwotICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChXZWJUaHJlYWRSZWxlYXNlU291cmNlKTsKKyAgICBpZiAod2ViVGhyZWFkUmVsZWFzZU9i
akFycmF5KCkgPT0gbmlsKQorICAgICAgICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwg
bnVsbHB0cikpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZSh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSwgb2JqKTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwod2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxvb3BXYWtlVXAod2ViVGhyZWFkUnVuTG9v
cCk7CiB9CiAKQEAgLTQwNCw5ICs0MjQsOSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJUaHJlYWRS
ZWxlYXNlU291cmNlKHZvaWQqKQogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gb2Jq
ZWN0czsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVs
ZWFzZUxvY2spOwotICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VP
YmpBcnJheSkpIHsKLSAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVN
dXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpKTsKLSAgICAg
ICAgICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsK
KyAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5n
ZXQoKSkpIHsKKyAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRh
YmxlQ29weShudWxscHRyLCAwLCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpOwor
ICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3Myw3ICs0OTMsNyBAQCBzdGF0
aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVu
TG9vcEFjdGl2aXR5LCB2b2lkKgogICAgICAgICByZXR1cm47CiAKICAgICBtYWluVGhyZWFkSGFz
UGVuZGluZ0F1dG9VbmxvY2sgPSBOTzsKLSAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1
bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVyKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIoKS5nZXQoKSwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKIAogICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIH0KQEAgLTQ4NCw3
ICs1MDQsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCkKIAogICAgIGlm
ICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBtYWluVGhyZWFkSGFzUGVuZGluZ0F1
dG9VbmxvY2sgPSBZRVM7Ci0gICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7ICAgIAorICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRD
dXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkuZ2V0KCksIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7CiAgICAgICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgICAgIENGUnVu
TG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogICAgIH0KQEAgLTU1NiwxMiArNTc2LDEy
IEBAIHN0YXRpYyB2b2lkIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2CiAKIHN0YXRpYyB2b2lkIF9XZWJSdW5Mb29wRW5h
YmxlTmVzdGVkRnJvbU1haW5UaHJlYWQoKQogewotICAgIENGUnVuTG9vcFJlbW92ZU9ic2VydmVy
KENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiBzdGF0aWMgdm9pZCBfV2ViUnVuTG9vcERpc2Fi
bGVOZXN0ZWRGcm9tTWFpblRocmVhZCgpCiB7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsgCisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlcigpLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQoKQpAQCAt
NjQyLDggKzY2Miw4IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAgICAgQ0ZS
dW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2Vy
dmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5k
bGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKLSAgICBXZWJUaHJlYWRSZWxlYXNlU291cmNlID0g
Q0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNvdXJjZUNvbnRleHQp
OwotICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCBXZWJUaHJlYWRSZWxl
YXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIHdlYlRocmVhZFJlbGVhc2VT
b3VyY2UoKSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVs
ZWFzZVNvdXJjZUNvbnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2Uod2ViVGhyZWFkUnVu
TG9vcCwgd2ViVGhyZWFkUmVsZWFzZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOwogCiAgICAgcGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQgPSBfQ0ZSdW5Mb29w
U2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQoWUVTKTsKIApAQCAtNjc5LDE2ICs2
OTksMTYgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogCiAgICAgQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlRGVs
ZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRl
KG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOworICAgIGRlbGVnYXRlU291cmNl
KCkgPSBhZG9wdENGKENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVT
b3VyY2VDb250ZXh0KSk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRlIGNhbGxi
YWNrcyB3aGlsZSBzY3JvbGxpbmcsIGJ1dCB0aGVyZSBtaWdodCBiZQogICAgIC8vIG9uZSBvdXRz
dGFuZGluZyB3aGVuIHdlIHN0YXJ0LiAgQWRkIHRoZSBzb3VyY2UgZm9yIGFsbCBjb21tb24gcnVu
IGxvb3AKICAgICAvLyBtb2RlcyBzbyB3ZSBkb24ndCBibG9jayB0aGUgd2ViIHRocmVhZCB3aGls
ZSBzY3JvbGxpbmcuCi0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKHJ1bkxvb3AsIGRlbGVnYXRlU291
cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5M
b29wLCBkZWxlZ2F0ZVNvdXJjZSgpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAg
ICAgc0FzeW5jRGVsZWdhdGVzKCkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdKTsKIAotICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyID0gQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29w
RXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxwdHIpOworICAg
IG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyKCkgPSBhZG9wdENGKENGUnVuTG9vcE9ic2Vy
dmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4
aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRyKSk7CiAKICAg
ICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAgICBwdGhyZWFkX2F0dHJfaW5pdCgmdGF0dHIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1
bi5jcHAKaW5kZXggZWZhODQ2NDViYTM5OGE0YmUxYmNkZTJkZWMzZDAxMDhhNDM5NzU1My4uY2E5
OGE4ZmNiNDk3NjI1MWEyY2MxOWJkY2YyNzFmN2Y2NDk2ZTMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCkBAIC0xMTIs
MTQgKzExMiwxOSBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgV1RGOjpWZWN0b3I8V2ViVGhyZWFk
QmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwogCiBzdGF0aWMgTG9jayBydW5RdWV1ZU11dGV4Owot
c3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBydW5Tb3VyY2U7CiBzdGF0aWMgV2ViVGhyZWFkUnVu
UXVldWUqIHJ1blF1ZXVlOwogCitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4m
IHJ1blNvdXJjZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1
bkxvb3BTb3VyY2VSZWY+PiBydW5Tb3VyY2U7CisgICAgcmV0dXJuIHJ1blNvdXJjZTsKK30KKwog
c3RhdGljIHZvaWQgSGFuZGxlUnVuU291cmNlKHZvaWQgKmluZm8pCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGluZm8pOwogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgQVNTRVJU
KHJ1blNvdXJjZSk7CisgICAgQVNTRVJUKHJ1blNvdXJjZSgpKTsKICAgICBBU1NFUlQocnVuUXVl
dWUpOwogCiAgICAgV2ViVGhyZWFkUnVuUXVldWUgcXVldWVDb3B5OwpAQCAtMTQwLDcgKzE0NSw3
IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwgYm9vbCBz
eW5jaHJvbm91cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChydW5Tb3Vy
Y2UpOworICAgIEFTU0VSVChydW5Tb3VyY2UoKSk7CiAgICAgQVNTRVJUKHJ1blF1ZXVlKTsKIAog
ICAgIFdlYlRocmVhZEJsb2NrU3RhdGUqIHN0YXRlID0gMDsKQEAgLTE1Miw3ICsxNTcsNyBAQCBz
dGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVuKHZvaWQgKF5ibG9jaykodm9pZCksIGJvb2wgc3luY2hy
b25vdXMpCiAgICAgICAgIHJ1blF1ZXVlLT5hcHBlbmQoV2ViVGhyZWFkQmxvY2soYmxvY2ssIHN0
YXRlKSk7CiAgICAgfQogCi0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSk7Cisg
ICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ1blNvdXJjZSgpLmdldCgpKTsKICAgICBDRlJ1bkxv
b3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKIAogICAgIGlmIChzeW5jaHJvbm91cykgewpA
QCAtMTY5LDE1ICsxNzQsMTUgQEAgdm9pZCBXZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lk
KSkKIHZvaWQgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCkKIHsKICAgICBBU1NFUlQoIXJ1blF1ZXVl
KTsKLSAgICBBU1NFUlQoIXJ1blNvdXJjZSk7CisgICAgQVNTRVJUKCFydW5Tb3VyY2UoKSk7CiAK
ICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25jZSgmcHJl
ZCwgXnsKICAgICAgICAgcnVuUXVldWUgPSBuZXcgV2ViVGhyZWFkUnVuUXVldWU7CiAKLSAgICAg
ICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Tb3VyY2VDb250ZXh0ID0gezAsIE5VTEwsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEhhbmRsZVJ1blNvdXJjZX07
Ci0gICAgICAgIHJ1blNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAtMSwgJnJ1
blNvdXJjZUNvbnRleHQpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoV2ViVGhyZWFkUnVu
TG9vcCgpLCBydW5Tb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAgIENGUnVu
TG9vcFNvdXJjZUNvbnRleHQgcnVuU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
SGFuZGxlUnVuU291cmNlIH07CisgICAgICAgIHJ1blNvdXJjZSgpID0gYWRvcHRDRihDRlJ1bkxv
b3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZydW5Tb3VyY2VDb250ZXh0KSk7CisgICAgICAg
IENGUnVuTG9vcEFkZFNvdXJjZShXZWJUaHJlYWRSdW5Mb29wKCksIHJ1blNvdXJjZSgpLmdldCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggOGYzN2RkNzFmMDc3
NGUzODViNjY5NjI5Y2JkMmUwZDU4NGM0NjZiYS4uYTQ3ZTM0M2Y0ZGNhMDM2ZmVhZWZkM2MxMGQ1
ZjI0MGUzNGI5ZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bv
d2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dl
ck9ic2VydmVyTWFjLmNwcApAQCAtMzUsNyArMzUsNyBAQCBQb3dlck9ic2VydmVyOjpQb3dlck9i
c2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCiAgICAgLCBtX3Bv
d2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxwdHIpCiAgICAg
LCBtX25vdGlmaWVyUmVmZXJlbmNlKDApCi0gICAgLCBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkKKyAgICAs
IG1fZGlzcGF0Y2hRdWV1ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5Qb3dlck9ic2VydmVyIiwgMCkpKQogewogICAgIG1fcG93ZXJDb25uZWN0
aW9uID0gSU9SZWdpc3RlckZvclN5c3RlbVBvd2VyKHRoaXMsICZtX25vdGlmaWNhdGlvblBvcnQs
IFtdKHZvaWQqIGNvbnRleHQsIGlvX3NlcnZpY2VfdCBzZXJ2aWNlLCB1aW50MzJfdCBtZXNzYWdl
VHlwZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50KSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFBvd2Vy
T2JzZXJ2ZXIqPihjb250ZXh0KS0+ZGlkUmVjZWl2ZVN5c3RlbVBvd2VyTm90aWZpY2F0aW9uKHNl
cnZpY2UsIG1lc3NhZ2VUeXBlLCBtZXNzYWdlQXJndW1lbnQpOwpAQCAtNDMsNyArNDMsNyBAQCBQ
b3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2Vy
T25IYW5kZXIpCiAgICAgaWYgKCFtX3Bvd2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBv
cnQsIG1fZGlzcGF0Y2hRdWV1ZSk7CisgICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hR
dWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSk7CiB9CiAKIFBv
d2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKCkKQEAgLTUxLDggKzUxLDYgQEAgUG93ZXJPYnNl
cnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQogICAgIGlmICghbV9wb3dlckNvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKLQog
ICAgIElPRGVyZWdpc3RlckZvclN5c3RlbVBvd2VyKCZtX25vdGlmaWVyUmVmZXJlbmNlKTsKICAg
ICBJT1NlcnZpY2VDbG9zZShtX3Bvd2VyQ29ubmVjdGlvbik7CiAgICAgSU9Ob3RpZmljYXRpb25Q
b3J0RGVzdHJveShtX25vdGlmaWNhdGlvblBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKaW5kZXggMTU4NmQ3YmI3YWYyNTkzMTE2NmQyNmVj
NWRmYzQ2OTNhOGY2Mjg5YS4uYTgwYjYyMDc1YzAxZGMxNDlmODMxMWM3NDk0YzgxMzI5YWM2MDU5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KICNp
bXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW1w
b3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3
ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0aW9uOwog
ICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAgaW9fb2Jq
ZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0
Y2hRdWV1ZTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2Rpc3BhdGNoUXVl
dWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAwYjc3MGNmYjEzM2YzYThhNGU3ZGI2ZGI4
YzgwZmY2MjVjMjM5MjQ5Li5kM2YxYWM3MjliNWI1Y2RlNjNkYjQ0YzAwNTI3YzA5ODYzYzgyYTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQogCiAjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDx3dGYvT1NP
YmplY3RQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2Ft
cGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlv
Q29udmVydGVyUmVmOwpAQCAtNjMsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vz
c1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUpOwogICAgIE9TU3RhdHVzIHBy
b3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZlckxpc3Qq
LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOwogCi0gICAgZGlzcGF0Y2hfcXVldWVf
dCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVf
dD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVGltZSBtX2xvd1dhdGVyVGltZSB7IGtD
TVRpbWVJbnZhbGlkIH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRw
dXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0KaW5kZXggYzc5YTQ3OTYyNDAyYmIxMzI5MzNjODdiZmU5OGQyMzdmNTZlZTA2OS4u
Y2NjOGRkM2E5ZDRmMGZkYTg4OTMzZjBmZDFlMjgxZGUzYWRlOTdlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTUyLDE0ICs1MiwxMyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCi0gICAgOiBtX3NlcmlhbERpc3BhdGNo
UXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkg
fQogICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9XX1dBVEVS
X1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQogewogfQogCiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQogewotICAgIGRpc3BhdGNoX3Jl
bGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBpZiAobV9jb252ZXJ0ZXIpIHsKICAg
ICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKICAgICAgICAgbV9jb252
ZXJ0ZXIgPSBudWxscHRyOwpAQCAtODksNyArODgsNyBAQCBib29sIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxi
YQogCiB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBk
aXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5j
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKICAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1
ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CiAgICAgICAgIGF1dG8gZXJy
b3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgp
KTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxl
ZCAlZCIsIGVycm9yKTsKQEAgLTUxMCw3ICs1MDksNyBAQCB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIp
CiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01T
YW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNw
YXRjaFF1ZXVlLCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdl
dCgpLCBeewogICAgICAgICBpZiAobV9pc0VuY29kaW5nKQogICAgICAgICAgICAgcHJvY2Vzc1Nh
bXBsZUJ1ZmZlcihidWZmZXIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggYzA1ODM3NDcwYjFjODI3MmRlN2M4OWM0MTRiYTE4
YTBmMGU5ZTljZC4uMzc2YTVjZmJlYWIxYTE0NmYyOTBiMmNiMjQzYzVjMTMzMmRkNzRmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8
VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAK
IHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsK
IHR5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXByZXNzaW9u
U2Vzc2lvblJlZjsKQEAgLTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lk
IHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywg
VlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKIAotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1
ZXVlX3Q+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0
cHV0Q29kZWNUeXBlIHsga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCB9OwogCiAgICAgUmV0YWluUHRy
PENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGUwM2U3NzBmMGNhYTliZGM2
YjE2ZDVhYzc0YmIzNzg2ZGY4ZjRhZDcuLjE3Njc5OTc0MWJkNGZiYjk5MDk5YWQ4NDM0ZWY2YzJm
NDZiOGFiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tCkBAIC00OCwxNCArNDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUKIH0KIAog
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
Q01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCi0gICAgOiBtX3NlcmlhbERpc3BhdGNo
UXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICA6IG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkg
fQogICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQogewogfQogCiBW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
KQogewotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKICAgICBp
ZiAobV92dFNlc3Npb24pIHsKICAgICAgICAgVlRDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRl
KG1fdnRTZXNzaW9uLmdldCgpKTsKICAgICAgICAgbV92dFNlc3Npb24gPSBudWxscHRyOwpAQCAt
ODMsNyArODIsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2V0Qml0c1Bl
clNlY29uZCh1bnNpZ25lZCBiaXRSYXRlKQogCiB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKCkKIHsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSwgXnsKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsK
ICAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMo
bV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CiAKQEAgLTE2NSw3ICsxNjQsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVl
LCBeeworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeewog
ICAgICAgICBpZiAoIW1faXNFbmNvZGluZykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggM2Ni
ZThjZWE2ODVhNTQ1ODgyMGRmMjg4YmRmNmNhNmRlYWIyM2I5Yi4uZjg2MTlmNmExOTE4YWYwNjBl
MmEwNWUwNjMxODJmNTRlODZhMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9TZXNzaW9uOwpAQCAtNzcsNyArNzgsNyBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0c0xpc3Rl
bmVyPiBtX2xpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVkF1ZGlvU2Vzc2lvbj4gbV9hdWRpb1Nl
c3Npb247CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV91cGRhdGVEZXZpY2VTdGF0ZVF1
ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlIHsgbnVsbHB0ciB9Owor
ICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0Y2hRdWV1ZTsKICAgICBM
b2NrIG1fbG9jazsKICAgICBBdWRpb1Nlc3Npb25TdGF0ZSBtX2F1ZGlvU2Vzc2lvblN0YXRlIHsg
QXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggYjFiNDdhZjI5YzRhNDQ1
MmZjODEwMDNiYTM1ODZkOTAyZTg2YWU5Zi4uZWY5YmUxMDZiYmQ0ZWExNjg0NGVlNzA5YzYwYTI1
OGNjNjJjZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KQEAgLTg3LDkgKzg3LDkgQEAgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlciYgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG8K
IH0KIAogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6QVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlcigpCi0gICAgOiBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgIDogbV9kaXNwYXRjaFF1ZXVlKGFk
b3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSkK
IHsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhp
cywgbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKV0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spXSB7CiAgICAgICAgIGNyZWF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgIH0pLmdldCgpKTsK
IH0KQEAgLTExMyw3ICsxMTMsNiBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXI6OmNyZWF0ZUF1ZGlvU2Vzc2lvbigpCiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXI6On5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsKLSAgICBk
aXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7CiAgICAgW21fbGlzdGVuZXIgaW52YWxp
ZGF0ZV07CiAgICAgbV9saXN0ZW5lciA9IG51bGxwdHI7CiB9CkBAIC0xNTcsMTMgKzE1NiwxMyBA
QCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0Nh
cHR1cmVEZXZpY2VzKCkKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Np
b25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlv
U2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfc3luYyhtX2Rpc3BhdGNo
UXVldWUsIG1ha2VCbG9ja1B0cihbdGhpc10geworICAgICAgICBkaXNwYXRjaF9zeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAgICAgICAgICBhY3Rp
dmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgICAgICB9KS5nZXQoKSk7CiAgICAgfQogCiAgICAgVmVj
dG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gbmV3QXVkaW9EZXZpY2VzOwotICAgIGRp
c3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoWyZdIHsKKyAgICBkaXNw
YXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFsmXSB7CiAgICAg
ICAgIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZXMo
KTsKICAgICB9KS5nZXQoKSk7CiAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3ZlKG5l
d0F1ZGlvRGV2aWNlcykpOwpAQCAtMTc0LDEyICsxNzMsMTIgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2kKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6
SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vzc2lvblN0
YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBt
YWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1
ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRlQXVk
aW9TZXNzaW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKICAgICB9CiAKLSAgICBkaXNwYXRjaF9h
c3luYyhtX2Rpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgeworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbmV3QXVkaW9EZXZpY2Vz
ID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgICAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQobWFrZUJsb2NrUHRyKFt0aGlzLCBj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgbmV3QXVkaW9EZXZpY2VzID0gV1RGTW92
ZShuZXdBdWRpb0RldmljZXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHNldEF1ZGlvQ2Fw
dHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKQEAgLTI1NCw3ICsyNTMsNyBA
QCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVBbGxEZXZp
Y2VzUXVlcnkoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0
ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0aXZlKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5j
KG1fZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIGRpc3BhdGNo
X2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CiAgICAg
ICAgICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSAhPSBBdWRpb1Nlc3Npb25TdGF0ZTo6Tm90
TmVlZGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggOGIxOGZmMTI5MjU3ODkzNzkxNWVhYTZhNDk5
ODM3OTE3MDUxODMwOC4uNzhlYzA2Yjc0ZTQ3MmJkNjM4YTlmNWU5MzcwYmYyZjZiOGY5YjI2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKIH07CiAKICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKLVdFQkNPUkVfRVhQT1JUIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5n
UmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0gV1RGOjpu
dWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0
aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gPSBXVEY6Om51bGxvcHQpOwogI2VuZGlmCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwCmluZGV4IGEzNzg1MGQ3NmViZGU4ODRiMjJkODkwMGRlZTM2Zjg0Yzg0
NTE2YWIuLmNlZTVkN2VhY2JjYjYyMTBiMjI5ZGNlYWM4N2I0NmY0ZmJkOGVjZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmNwcApAQCAtNzIsMTcgKzcyLDE2IEBAIGJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OnBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQorUmV0YWluUHRyPENGVVJMQXV0
aENoYWxsZW5nZVJlZj4gY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNv
cmVDaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0
aGF0LgogCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFk
b3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkpOwotICAg
IFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlID0gYWRv
cHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7Ci0gICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBw
cm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVuZ2UucHJl
dmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVS
TFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBhdXRvIGNyZWRlbnRpYWwgPSBjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3Jl
ZGVudGlhbCgpKTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IGNyZWF0ZUNGKGNvcmVDaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgIHJldHVybiBhZG9wdENGKENGVVJMQXV0aENo
YWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCks
IGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWls
dXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSkpOwog
fQogCi1DRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNy
ZWRlbnRpYWwpCitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVhdGVDRihjb25zdCBD
cmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKIHsKICAgICBDRlVSTENyZWRlbnRpYWxQZXJzaXN0
ZW5jZSBwZXJzaXN0ZW5jZSA9IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7CiAgICAg
c3dpdGNoIChjb3JlQ3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpKSB7CkBAIC05OCwxMCArOTcsMTAg
QEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVk
ZW50aWFsKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAg
cmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxD
cmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IDAsIHBlcnNpc3RlbmNlKSk7CiB9CiAKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNG
KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQorUmV0YWluUHRyPENGVVJMUHJvdGVj
dGlvblNwYWNlUmVmPiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkK
IHsKICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IGtDRlVS
TFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CiAgICAgc3dpdGNoIChjb3JlU3BhY2Uuc2VydmVy
VHlwZSgpKSB7CkBAIC0xNjUsNyArMTY0LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3Jl
YXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFjZUNy
ZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFj
ZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIHNjaGVtZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VD
cmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlU3Bh
Y2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBzY2hlbWUpKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJl
ZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5oCmluZGV4IDg5YTkzNTI4OWFkNzlkNDBiMzdkZDIwM2E4
MGU5ZThkZjcxMWIyNmUuLjcwZjUwMjA1ZWIyYmRhMDgxNmJiZDA4OGM0NmNkYWFiOWM0NTMyMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
IAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxQcml2Lmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNl
KiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKQEAgLTM4LDkgKzM5LDkgQEAgY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogCi1DRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKLUNGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50
aWFsJik7Ci1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9u
U3BhY2UmKTsKK1JldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNyZWF0ZUNGKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CitSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFsJik7CitSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9u
U3BhY2VSZWY+IGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogQ3JlZGVudGlhbCBj
b3JlKENGVVJMQ3JlZGVudGlhbFJlZik7CiBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3Rl
Y3Rpb25TcGFjZVJlZik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCmluZGV4IDZlYTMwMTIzOTU2
ZWRiZDMwOWQ2Y2UwZWFmZmU3ODNkNzM4ZTZkZmMuLjFmYTg5YmFlMWRlMWNiMDc2M2UwN2M2MWE0
MThhMzFjY2VmNTViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCkBAIC01OCwxMCArNTgsMTAg
QEAgYm9vbCBjZXJ0aWZpY2F0ZXNNYXRjaChTZWNUcnVzdFJlZiB0cnVzdDEsIFNlY1RydXN0UmVm
IHRydXN0MikKIFJldGFpblB0cjxDRkFycmF5UmVmPiBDZXJ0aWZpY2F0ZUluZm86OmNlcnRpZmlj
YXRlQ2hhaW5Gcm9tU2VjVHJ1c3QoU2VjVHJ1c3RSZWYgdHJ1c3QpCiB7CiAgICAgYXV0byBjb3Vu
dCA9IFNlY1RydXN0R2V0Q2VydGlmaWNhdGVDb3VudCh0cnVzdCk7Ci0gICAgYXV0byBjZXJ0aWZp
Y2F0ZUNoYWluID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpOworICAgIGF1dG8gY2VydGlmaWNhdGVDaGFpbiA9IGFkb3B0Q0YoQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoMCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICBDRkFycmF5QXBwZW5kVmFs
dWUoY2VydGlmaWNhdGVDaGFpbiwgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgodHJ1c3Qs
IGkpKTsKLSAgICByZXR1cm4gYWRvcHRDRigoQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKTsK
KyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNlcnRpZmljYXRlQ2hhaW4uZ2V0KCksIFNlY1Ry
dXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRydXN0LCBpKSk7CisgICAgcmV0dXJuIGNlcnRpZmlj
YXRlQ2hhaW47CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggMDc1
MmNhMTA1NTJmZGIxYTdjMzU3NTkzMmEyMzJhYWViZWRjNWQ2MC4uMDY4YmVkMDU1MzA0MjU4ZDhk
OWM3MGZiNTMxZjZhNDkzNzUzNTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCkBAIC0z
NiwxNyArMzYsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotc3RhdGljIGlubGlu
ZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKK3N0YXRpYyBpbmxpbmUgUmV0
YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNw
YWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBhdXRv
IHN0b3JhZ2UgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCkpOwotICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ29weURlZmF1
bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2UuZ2V0KCksIHByb3RlY3Rpb25T
cGFjZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNvcHlEZWZh
dWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlLmdldCgpLCBwcm90ZWN0aW9u
U3BhY2UpKTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNp
c3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewot
ICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25T
cGFjZSkpOwotICAgIGF1dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVudGlhbEZy
b21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlQ0YuZ2V0KCkpKTsKLSAgICByZXR1cm4g
Y29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOworICAgIHJldHVybiBjb3JlKGNvcHlDcmVkZW50aWFs
RnJvbVByb3RlY3Rpb25TcGFjZShjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpLmdldCgpKS5nZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAppbmRleCA1ZWE0NDhm
Y2U3NzNlMDM5NGQ3NGZkN2IxZjljMzc2MzY5Y2Q5ZjgzLi5iYjgzZGZmNGEyOWJmZDk3ZmI1MDVh
NDkzYjg5NGIxOGUxMTZmNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCkBAIC02Myw4ICs2Myw4IEBAIENGUnVu
TG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKIAogICAgICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEg
c291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhp
dGluZy4KICAgICAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGN0eHQgPSB7MCwg
KHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5
UGVyZm9ybX07Ci0gICAgICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNl
ID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KTsKLSAgICAgICAgICAgICAgICBD
RlJ1bkxvb3BBZGRTb3VyY2UobG9hZGVyUnVuTG9vcE9iamVjdCwgYm9ndXNTb3VyY2UsIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgICAgICAgICAgICAgYXV0byBib2d1c1NvdXJjZSA9IGFk
b3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KSk7CisgICAgICAgICAgICAg
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKGxvYWRlclJ1bkxvb3BPYmplY3QsIGJvZ3VzU291cmNlLmdl
dCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgICAgICAgICAgICAgbG9hZGVyUnVu
TG9vcENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCA1ZDdkNzk2MTQ0NjVmY2FiNWJk
NmI2NDE4ZTA2MGY2OGViMDk0YTRhLi5hNTFiZGI4ZTMyNWIzMzc2ZDE0YzZmNGY1ZTgwN2QzODFk
YmI4ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtNzks
MTYgKzc5LDE2IEBAIHN0YXRpYyBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHRvQ0ZI
VFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeShIVFRQQ29vCiAgICAgcmV0dXJuIENGSFRUUENv
b2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9w
dGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
Q0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4g
Y29va2llQWNjZXB0UG9saWN5KQogewogICAgIGNvbnN0IHZvaWQqIHNlc3Npb25Qcm9wZXJ0eUtl
eXNbXSA9IHsgX2tDRlVSTFN0b3JhZ2VTZXNzaW9uSXNQcml2YXRlIH07CiAgICAgY29uc3Qgdm9p
ZCogc2Vzc2lvblByb3BlcnR5VmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07Ci0gICAgQ0ZE
aWN0aW9uYXJ5UmVmIHNlc3Npb25Qcm9wZXJ0aWVzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHNlc3Npb25Qcm9wZXJ0eUtleXMsIHNlc3Npb25Qcm9wZXJ0eVZhbHVl
cywgc2l6ZW9mKHNlc3Npb25Qcm9wZXJ0eUtleXMpIC8gc2l6ZW9mKCpzZXNzaW9uUHJvcGVydHlL
ZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lv
biA9IF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkZW50
aWZpZXIsIHNlc3Npb25Qcm9wZXJ0aWVzKTsKKyAgICBhdXRvIHNlc3Npb25Qcm9wZXJ0aWVzID0g
YWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvblBy
b3BlcnR5S2V5cywgc2Vzc2lvblByb3BlcnR5VmFsdWVzLCBzaXplb2Yoc2Vzc2lvblByb3BlcnR5
S2V5cykgLyBzaXplb2YoKnNlc3Npb25Qcm9wZXJ0eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0
byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25DcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRpZmllciwgc2Vzc2lvblByb3BlcnRpZXMuZ2V0KCkpKTsK
ICAgICAKICAgICAvLyBUaGUgcHJpdmF0ZSBzdG9yYWdlIHNlc3Npb24gc2hvdWxkIGhhdmUgdGhl
IHNhbWUgcHJvcGVydGllcyBhcyB0aGUgZGVmYXVsdCBzdG9yYWdlIHNlc3Npb24sCiAgICAgLy8g
d2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgaXQgc2hvdWxkIGJlIGluLW1lbW9yeSBvbmx5IHN0b3Jh
Z2UuCi0gICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2Fj
aGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBhdXRvIGNhY2hl
ID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIENGVVJMQ2FjaGVTZXREaXNrQ2FwYWNp
dHkoY2FjaGUuZ2V0KCksIDApOwogICAgIGF1dG8gZGVmYXVsdENhY2hlID0gYWRvcHRDRihDRlVS
TENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIENGVVJMQ2FjaGVTZXRNZW1vcnlDYXBh
Y2l0eShjYWNoZS5nZXQoKSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KGRlZmF1bHRDYWNoZS5n
ZXQoKSkpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvCiAgICAg
ICAgIGNmQ29va2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFj
Y2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZSk7CiAgICAgfQogCi0gICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgYXV0byBjb29raWVT
dG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgQ0ZIVFRQQ29v
a2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBjZkNv
b2tpZUFjY2VwdFBvbGljeSk7CiAgICAgCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rp
b25TcGFjZUNGTmV0LmNwcAppbmRleCBjYjA4YjkzNzM1MDlhNTAwNzkyNzQ2OGMwNzZjZjgyZTY1
ZDViMDdlLi44NzM3YzRjNzE0ZjY1ZGU0YzA0NmQ1OTE3MDYyMWE5YWE1ZTcwNmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rp
b25TcGFjZUNGTmV0LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGJvb2wgUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0
CiB7Ci0gICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBjZlNwYWNlID0gYWRv
cHRDRihjcmVhdGVDRigqdGhpcykpOworICAgIGF1dG8gY2ZTcGFjZSA9IGNyZWF0ZUNGKCp0aGlz
KTsKICAgICByZXR1cm4gY2ZTcGFjZSAmJiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlY2VpdmVzQ3Jl
ZGVudGlhbFNlY3VyZWx5KGNmU3BhY2UuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCAyZDRlZmY1MDVjYzQxM2EwY2Q2NTIzY2IwOWMwNDRjNGI0OWU4NTVkLi42YmYzY2MyMDQw
NDBiOGFmZTkyNGM3ZjlmNTUxM2Q3YTVjMmIxNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTM4OSw3ICszODksNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJh
c2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaAogICAgICAgICAgICAgICAg
ICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMg
YSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9j
b250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRp
b24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZh
aWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihj
cmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwg
PSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQpAQCAtNDM2LDExICs0MzYsMTEgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UKICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLnNldChmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCB3ZWJD
cmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAg
ICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVu
dGlhbCkpOworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBjcmVhdGVDRih3ZWJDcmVk
ZW50aWFsKTsKICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9j
b25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVjdGlv
bikgewotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwg
PSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgYXV0byBjZkNyZWRlbnRp
YWwgPSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3Jl
ZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICB9CiAKQEAgLTU1OSw4ICs1NTksOCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogCiAgICAgICAgICAgICAvLyBNdXN0IGFkZCBhIHNv
dXJjZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRp
bmcuCiAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGN0eHQgPSB7IDAsICh2b2lk
KikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZv
cm0gfTsKLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENGUnVu
TG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
ICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUo
MCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBi
b2d1c1NvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAgICAgICAgICAgIHNl
bS5zaWduYWwoKTsKIAogICAgICAgICAgICAgd2hpbGUgKHRydWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAppbmRleCAxZmU2OTAyNGJjYmZiOGQ3N2JhYjk4YTkxYTNjYTgxNTlm
YmE0ZTAzLi4zYzgyYmMzYjRjNjg1OWI4YmE5NGEzMmJlOWE0MjZhODM5OTZlYzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTExMCw4ICsxMTAsOCBAQCBzdGF0aWMg
Q0ZSdW5Mb29wUmVmIGdldFJ1bkxvb3AoKQogCiAgICAgICAgICAgICAvLyBNdXN0IGFkZCBhIHNv
dXJjZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRp
bmcuCiAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGN0eHQgPSB7IDAsICh2b2lk
KikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZv
cm0gfTsKLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVJlZiBib2d1c1NvdXJjZSA9IENGUnVu
TG9vcFNvdXJjZUNyZWF0ZSgwLCAwLCAmY3R4dCk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UocnVuTG9vcCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
ICAgICAgICBhdXRvIGJvZ3VzU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUo
MCwgMCwgJmN0eHQpKTsKKyAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShydW5Mb29wLCBi
b2d1c1NvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAgICAgICAgICAgIHNl
bS5zaWduYWwoKTsKIAogICAgICAgICAgICAgd2hpbGUgKHRydWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCmluZGV4IGY2ZTFiOWI1ZDNhNWJhN2FlMzVhNzc5MjNkNTZkNTNlYWUzMjcxOTkuLmI3ZWY1
Yjg3NTg0ZmZiYjY2YWY3ZDlhMTEzZjQzMDZkOTE1YTE2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCkBAIC0xNjcsNTEgKzE2Nyw1MSBAQCBzdGF0aWMgQ0ZVUkxSZWYgc2l0ZUZvckNvb2tpZXMo
UmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLAogICAgIGNh
c2UgUmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uOjpTYW1lU2l0ZToKICAgICAg
ICAgcmV0dXJuIHVybDsKICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3Np
dGlvbjo6Q3Jvc3NTaXRlOgotICAgICAgICBzdGF0aWMgQ0ZVUkxSZWYgZW1wdHlVUkwgPSBDRlVS
TENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgQ0ZTVFIoIiIpLCBudWxscHRyKTsKLSAgICAgICAg
cmV0dXJuIGVtcHR5VVJMOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PENGVVJMUmVmPj4gZW1wdHlVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxs
cHRyLCBDRlNUUigiIiksIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5VVJMLmdldCgp
LmdldCgpOwogICAgIH0KIH0KICNlbmRpZgogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKQogewotICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgY2ZSZXF1
ZXN0OworICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBjZlJlcXVlc3Q7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFJlc291cmNlUmVxdWVzdDo6dXJsKCkuY3Jl
YXRlQ0ZVUkwoKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVz
ID0gUmVzb3VyY2VSZXF1ZXN0OjpmaXJzdFBhcnR5Rm9yQ29va2llcygpLmNyZWF0ZUNGVVJMKCk7
CiAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCA9IFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVv
dXRJbnRlcnZhbCgpID8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgOiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CiAgICAgaWYgKG1f
Y2ZSZXF1ZXN0KSB7Ci0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFi
bGVDb3B5KDAsIG1fY2ZSZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJM
KGNmUmVxdWVzdCwgdXJsLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3Vt
ZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwotICAgICAgICBD
RlVSTFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QsIHRvUGxhdGZvcm1SZXF1ZXN0Q2Fj
aGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0
SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0aW1lb3V0SW50ZXJ2YWwpOworICAgICAgICBjZlJlcXVlc3Qg
PSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0Lmdl
dCgpKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QuZ2V0KCksIHVybC5n
ZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChjZlJlcXVlc3Qu
Z2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0Q2FjaGVQb2xpY3koY2ZSZXF1ZXN0LmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9s
aWN5KGNhY2hlUG9saWN5KCkpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVy
dmFsKGNmUmVxdWVzdC5nZXQoKSwgdGltZW91dEludGVydmFsKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1cmwuZ2V0KCksIHRv
UGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSksIHRpbWVvdXRJbnRlcnZh
bCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBjZlJlcXVlc3QgPSBhZG9w
dENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVx
dWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFy
dHlGb3JDb29raWVzLmdldCgpKSk7CiAKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1l
dGhvZChjZlJlcXVlc3QsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAg
ICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QuZ2V0KCksIGh0dHBN
ZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIGlmIChodHRwUGlwZWxpbmlu
Z0VuYWJsZWQoKSkKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkUGlwZWxpbmVIVFRQKGNm
UmVxdWVzdCwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFBpcGVs
aW5lSFRUUChjZlJlcXVlc3QuZ2V0KCksIHRydWUsIHRydWUpOwogCiAgICAgaWYgKHJlc291cmNl
UHJpb3JpdGllc0VuYWJsZWQoKSkgewotICAgICAgICBDRlVSTFJlcXVlc3RTZXRSZXF1ZXN0UHJp
b3JpdHkoY2ZSZXF1ZXN0LCB0b1BsYXRmb3JtUmVxdWVzdFByaW9yaXR5KHByaW9yaXR5KCkpKTsK
KyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdC5nZXQoKSwg
dG9QbGF0Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CiAKICAgICAgICAgLy8gVXNl
ZCBieSBQTFQgdG8gaWdub3JlIHZlcnkgbG93IHByaW9yaXR5IGJlYWNvbiBhbmQgcGluZyBsb2Fk
cy4KICAgICAgICAgaWYgKHByaW9yaXR5KCkgPT0gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlM
b3cpCi0gICAgICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVl
c3QsIENGU1RSKCJXS1ZlcnlMb3dMb2FkUHJpb3JpdHkiKSwga0NGQm9vbGVhblRydWUpOworICAg
ICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgp
LCBDRlNUUigiV0tWZXJ5TG93TG9hZFByaW9yaXR5IiksIGtDRkJvb2xlYW5UcnVlKTsKICAgICB9
CiAKLSAgICBzZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LCBodHRwSGVhZGVyRmllbGRzKCkpOwor
ICAgIHNldEhlYWRlckZpZWxkcyhjZlJlcXVlc3QuZ2V0KCksIGh0dHBIZWFkZXJGaWVsZHMoKSk7
CiAKLSAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29va2llcyhjZlJlcXVlc3Qs
IGFsbG93Q29va2llcygpKTsKKyAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29v
a2llcyhjZlJlcXVlc3QuZ2V0KCksIGFsbG93Q29va2llcygpKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0
LCBDRlNUUigiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIiksIHNp
dGVGb3JDb29raWVzKG1fc2FtZVNpdGVEaXNwb3NpdGlvbiwgdXJsLmdldCgpKSk7CisgICAgX0NG
VVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiX2tD
RkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIiksIHNpdGVGb3JDb29raWVz
KG1fc2FtZVNpdGVEaXNwb3NpdGlvbiwgdXJsLmdldCgpKSk7CiAKICAgICBpbnQgaXNUb3BTaXRl
ID0gbV9pc1RvcFNpdGU7CiAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBpc1RvcFNpdGVDRiA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwga0NGTnVtYmVySW50VHlwZSwgJmlzVG9w
U2l0ZSkpOwotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwg
Q0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlpc1RvcFNpdGUiKSwgaXNUb3BTaXRl
Q0YuZ2V0KCkpOworICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVz
dC5nZXQoKSwgQ0ZTVFIoIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlpc1RvcFNpdGUiKSwg
aXNUb3BTaXRlQ0YuZ2V0KCkpOwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBmYWxsYmFja0NvdW50
ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXpl
KCk7CkBAIC0yMjIsNTEgKzIyMiw1MSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2Rp
bmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoZW5jb2RpbmdGYWxs
YmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVuY29kaW5nKSk7CiAg
ICAgfQotICAgIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShjZlJl
cXVlc3QsIGVuY29kaW5nRmFsbGJhY2tzLmdldCgpKTsKKyAgICBzZXRDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoY2ZSZXF1ZXN0LmdldCgpLCBlbmNvZGluZ0ZhbGxiYWNr
cy5nZXQoKSk7CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIFN0cmluZyBw
YXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlvbigpOwogICAgIGlmICghcGFydGl0aW9uLmlzTnVsbCgp
ICYmICFwYXJ0aXRpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0cmluZyA9
IHBhcnRpdGlvbi51dGY4KCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFydGl0
aW9uVmFsdWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3Ro
KCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UpKTsKLSAgICAgICAgX0NGVVJMUmVxdWVz
dFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LCBfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXks
IHBhcnRpdGlvblZhbHVlLmdldCgpKTsKKyAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29s
UHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXksIHBhcnRp
dGlvblZhbHVlLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fY2ZSZXF1ZXN0ID0gYWRv
cHRDRihjZlJlcXVlc3QpOworICAgIG1fY2ZSZXF1ZXN0ID0gV1RGTW92ZShjZlJlcXVlc3QpOwog
fQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKIHsK
LSAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdDsKKyAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZj4gY2ZSZXF1ZXN0OwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiB1cmwgPSBSZXNvdXJjZVJlcXVlc3Q6OnVybCgpLmNyZWF0ZUNGVVJMKCk7CiAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBmaXJzdFBhcnR5Rm9yQ29va2llcyA9IFJlc291cmNlUmVxdWVzdDo6Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKS5jcmVhdGVDRlVSTCgpOwogICAgIGRvdWJsZSB0aW1lb3V0SW50
ZXJ2YWwgPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjp0aW1lb3V0SW50ZXJ2YWwoKSA/IFJlc291cmNl
UmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpIDogUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVm
YXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogICAgIGlmIChtX2NmUmVxdWVzdCkgewotICAgICAgICBj
ZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5n
ZXQoKSk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldFVSTChjZlJlcXVlc3QsIHVybC5nZXQoKSk7
Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldE1haW5Eb2N1bWVudFVSTChjZlJlcXVlc3QsIGZpcnN0
UGFydHlGb3JDb29raWVzLmdldCgpKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0Q2FjaGVQb2xp
Y3koY2ZSZXF1ZXN0LCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkp
KTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVydmFsKGNmUmVxdWVzdCwgdGlt
ZW91dEludGVydmFsKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weSgwLCBtX2NmUmVxdWVzdC5nZXQoKSkpOworICAgICAgICBDRlVSTFJl
cXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LmdldCgpLCB1cmwuZ2V0KCkpOworICAgICAgICBDRlVSTFJl
cXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29v
a2llcy5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVz
dC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBvbGljeSgpKSk7Cisg
ICAgICAgIENGVVJMUmVxdWVzdFNldFRpbWVvdXRJbnRlcnZhbChjZlJlcXVlc3QuZ2V0KCksIHRp
bWVvdXRJbnRlcnZhbCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVx
dWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9s
aWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVz
LmdldCgpKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVN
dXRhYmxlKDAsIHVybC5nZXQoKSwgdG9QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShjYWNoZVBv
bGljeSgpKSwgdGltZW91dEludGVydmFsLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSkpOwog
CiAgICAgRm9ybURhdGEqIGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKICAgICBpZiAoZm9ybURhdGEg
JiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNm
UmVxdWVzdCwgZm9ybURhdGEpOworICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShjZlJlcXVl
c3QuZ2V0KCksIGZvcm1EYXRhKTsKIAotICAgIGlmIChSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVm
PiBib2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3Ry
ZWFtKGNmUmVxdWVzdCkpKSB7CisgICAgaWYgKFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGJv
ZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0o
Y2ZSZXF1ZXN0LmdldCgpKSkpIHsKICAgICAgICAgLy8gRm9yIHN0cmVhbXMsIHByb3ZpZGUgYSBD
b250ZW50LUxlbmd0aCB0byBhdm9pZCB1c2luZyBjaHVua2VkIGVuY29kaW5nLCBhbmQgdG8gZ2V0
IGFjY3VyYXRlIHRvdGFsIGxlbmd0aCBpbiBjYWxsYmFja3MuCiAgICAgICAgIGlmIChSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxlbmd0aFN0cmluZyA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGUmVhZFN0cmVhbUNvcHlQcm9wZXJ0eShib2R5U3RyZWFtLmdldCgpLCBmb3JtRGF0
YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpKSkpKSB7Ci0gICAgICAgICAgICBDRlVSTFJlcXVl
c3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShjZlJlcXVlc3QsIENGU1RSKCJDb250ZW50LUxlbmd0
aCIpLCBsZW5ndGhTdHJpbmcuZ2V0KCkpOworICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRU
UEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1MZW5ndGgi
KSwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKICAgICAgICAgICAgIC8vIFNpbmNlIHJlc291cmNlIHJl
cXVlc3QgaXMgYWxyZWFkeSBtYXJrZWQgdXBkYXRlZCwgd2UgbmVlZCB0byBrZWVwIGl0IHVwIHRv
IGRhdGUgdG9vLgogICAgICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCk7
CiAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50TGVuZ3RoLCBsZW5ndGhTdHJpbmcuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
bV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7CisgICAgbV9jZlJlcXVlc3QgPSBXVEZN
b3ZlKGNmUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291
cmNlUmVxdWVzdCgpCkBAIC0zNTUsMTAgKzM1NSwxMCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikK
IHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKIAotICAgIGF1dG8gY2ZSZXF1ZXN0ID0g
Q0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpOworICAg
IGF1dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgw
LCBtX2NmUmVxdWVzdC5nZXQoKSkpOwogICAgIGlmIChzdG9yYWdlU2Vzc2lvbikKLSAgICAgICAg
X0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdCwgc3RvcmFnZVNlc3Npb24p
OwotICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOworICAgICAgICBfQ0ZVUkxS
ZXF1ZXN0U2V0U3RvcmFnZVNlc3Npb24oY2ZSZXF1ZXN0LmdldCgpLCBzdG9yYWdlU2Vzc2lvbik7
CisgICAgbV9jZlJlcXVlc3QgPSBXVEZNb3ZlKGNmUmVxdWVzdCk7CiB9CiAKICNlbmRpZiAvLyBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
aW5kZXggODBiZDY2ZDc4ZDQxYTc1MGEyNjBlZWJjOWY2N2Y0YmNiNmZiZTIxMS4uODY0YmI5OTcz
MTA4OWMyMzY1ZWIxNWQ5M2EyOWNmZTMxZjg0ODA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCkBAIC0xNzMsNyArMTczLDcgQEAgQ29va2llU3RvcmFnZU9ic2VydmVy
JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpIGNvbnN0CiAg
ICAgcmV0dXJuICptX2Nvb2tpZVN0b3JhZ2VPYnNlcnZlcjsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
ciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gY29va2llQWNjZXB0UG9saWN5KQor
UmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vz
c2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9s
aWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3Bl
cnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25z
dCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpbwogICAgIC8vIEZJWE1FOiBV
c2UgX0NGSFRUUENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0IHdoZW4gVVNFKENGTkVUV09SSykgaXMg
ZGVmaW5lZCBpbiBXZWJLaXQgZm9yIGNvbnNpc3RlbmN5LgogICAgIENGSFRUUENvb2tpZVN0b3Jh
Z2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgbnNDb29raWVBY2Nl
cHRQb2xpY3kpOwogCi0gICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gc3RvcmFnZVNlc3Npb247CiB9CiAKIFJldGFpblB0cjxOU0FycmF5PiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246Omh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3Rv
cmFnZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCA0NTVhN2E2MmNjMTI0MTYw
Y2Q4YmU5MmQ3NDkzMTIzYmE2ODZlNGZmLi4zNTc3NDBmMjI1NmY5ODkwYmE3MWEzNjM4ZWY1NzA3
ZTcxYTlkOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC0zOSw3ICszOSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIDxyZGFyOi8vcHJvYmxlbS80NjMzMjg5Mz4gUmVnaXN0
ZXIgLm1qcyBmaWxlcyBhcyB3aGF0ZXZlciBVVEkgaW5kaWNhdGVzIEphdmFTY3JpcHQKLXN0YXRp
YyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCitzdGF0aWMg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgp
CiB7CiAgICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewogICAgICAgICBDRlNUUigibWpzIikKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBjcmVhdGVFeHRlbnNpb25Ub01J
TUVUeXBlTWFwKCkKICAgICB9OwogCiAgICAgQVNTRVJUKHNpemVvZihrZXlzKSA9PSBzaXplb2Yo
dmFsdWVzKSk7Ci0gICAgcmV0dXJuIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihr
ZXlzKSAvIHNpemVvZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIHJldHVybiBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZr
ZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNpemVvZihDRlN0cmlu
Z1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpKTsKIH0KIAogdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENG
VVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCkBAIC02
NiwxMSArNjYsMTEgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9u
c2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUwKICAgICAgICAgaWYgKFsoX19i
cmlkZ2UgTlNVUkwgKil1cmwgaXNGaWxlVVJMXSkgewogICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJs
KSk7CiAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGlj
IENGRGljdGlvbmFyeVJlZiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBl
TWFwKCk7Ci0gICAgICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG11dGFibGVFeHRlbnNp
b24gPSBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4
dGVuc2lvbi5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJs
ZUV4dGVuc2lvbiwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gYWRvcHRDRiht
dXRhYmxlRXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlwZSA9
IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAsIGV4dGVuc2lv
bi5nZXQoKSkpCisgICAgICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVU
eXBlTWFwKCk7CisgICAgICAgICAgICAgICAgYXV0byBtdXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVu
c2lvbi5nZXQoKSkpOworICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVF
eHRlbnNpb24uZ2V0KCksIE5VTEwpOworICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IFdURk1v
dmUobXV0YWJsZUV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gbmV3TUlNRVR5
cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLmdldCgp
LmdldCgpLCBleHRlbnNpb24uZ2V0KCkpKQogICAgICAgICAgICAgICAgICAgICB1cGRhdGVkTUlN
RVR5cGUgPSBuZXdNSU1FVHlwZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCmluZGV4IGJiMTE2YTlkZmYzZTgwMjQ5ZTNjMWZmMTBlZTkxMjljNzA1NmZkMTUuLjRm
YTUwZTQ2YjA5NDk2Y2RlZTA3Mzk2NDVjODRmMWQ3YTQ2OWZmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0KQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gV2hlbiB3ZSBkaXNh
YmxlZCBjb250ZW50IHNuaWZmaW5nIGZvciBmaWxlIFVSTHMgd2UgY2F1c2VkIHByb2JsZW1zIHdp
dGggdGhlc2UgMTAwKyBleHRlbnNpb25zIHRoYXQgQ29yZVR5cGVzCiAvLyBkb2Vzbid0IGtub3cg
YWJvdXQuCiAvLyBJZiBDb3JlVHlwZXMgaXMgZXZlciBicm91Z2h0IHVwIHRvIHNwZWVkIHdlIGNh
biByZW1vdmUgdGhpcyB0YWJsZSBhbmQgYXNzb2NpYXRlZCBjb2RlLgotc3RhdGljIENGRGljdGlv
bmFyeVJlZiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKK3N0YXRpYyBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKIHsKICAgICBD
RlN0cmluZ1JlZiBrZXlzW10gPSB7CiAgICAgICAgIENGU1RSKCJhaSIpLApAQCAtMjg4LDcgKzI4
OCw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1h
cCgpCiAgICAgfTsKIAogICAgIEFTU0VSVChzaXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVlcykp
OwotICAgIHJldHVybiBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNv
bnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykvc2l6
ZW9mKENGU3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25z
dCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwogfQogCiB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKQEAgLTMwNCwxMSArMzA0
LDExIEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNm
UmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMCiAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9u
KSB7CiAgICAgICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcwMDczODk+IENvcmVUeXBl
cyBVVEkgbWFwIGlzIG1pc3NpbmcgMTAwKyBmaWxlIGV4dGVuc2lvbnMgdGhhdCBHYXRlS2VlcGVy
IGtuZXcgYWJvdXQKICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoaXMgcmFkYXIgaXMgcmVzb2x2
ZWQsIHdlIGNhbiByZW1vdmUgdGhpcyBmaWxlOi8vIHVybCBzcGVjaWZpYyBjb2RlLgotICAgICAg
ICAgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9uTWFwID0gY3JlYXRlRXh0
ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOwotICAgICAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1Jl
ZiBtdXRhYmxlRXh0ZW5zaW9uID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5n
TG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24sIE5VTEwpOwotICAgICAgICAgICAgICAgIGV4dGVu
c2lvbiA9IGFkb3B0Q0YobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcCwgZXh0ZW5z
aW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4+IGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlN
RVR5cGVNYXAoKTsKKyAgICAgICAgICAgICAgICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0
ZW5zaW9uLmdldCgpKSk7CisgICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJs
ZUV4dGVuc2lvbi5nZXQoKSwgTlVMTCk7CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RG
TW92ZShtdXRhYmxlRXh0ZW5zaW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJp
bmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLmdldCgpLmdldCgpLCBleHRl
bnNpb24uZ2V0KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBHYXRla2VlcGVyLWJhc2VkIG1h
cCBkb2Vzbid0IGhhdmUgYSBNSU1FIHR5cGUsIHdlJ2xsIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQg
aXQgc2hvdWxkIGJlIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IDVmMzZkMDgzMTQ4NmM5ZDllNGZjOTNiOWJkZjFkNjE3
N2MyMGU2NDAuLmMxMzkxMmJkNThlNWM3ZmRjY2M2YmNlYzY5NTc5MGVjMDI4ODJmMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1t
CkBAIC03MSwyMyArNzEsMjMgQEAgc3RhdGljIGJvb2wgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJh
Y3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIAogc3RhdGljIENGU3RyaW5nVG9rZW5pemVyUmVmIHRv
a2VuaXplckZvclN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiB7Ci0gICAgc3RhdGljIENGTG9jYWxl
UmVmIGxvY2FsZSA9IG51bGxwdHI7Ci0gICAgaWYgKCFsb2NhbGUpIHsKLSAgICAgICAgY29uc3Qg
Y2hhciogdGVtcCA9IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGN1cnJlbnRMb2NhbGVJRCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KHRlbXApLCBzdHJsZW4odGVtcCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZh
bHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgICAgIGxvY2FsZSA9IENGTG9jYWxlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSk7Ci0gICAgICAgIGlm
ICghbG9jYWxlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIHN0YXRp
YyBhdXRvIGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIGNvbnN0IGNo
YXIqIGxvY2FsSUQgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKKyAgICAgICAgYXV0byBj
dXJyZW50TG9jYWxlSUQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihsb2NhbElE
KSwgc3RybGVuKGxvY2FsSUQpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxs
b2NhdG9yTnVsbCkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQuZ2V0KCkpKTsKKyAgICB9KCkpOworCisg
ICAgaWYgKCFsb2NhbGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ0ZS
YW5nZSBlbnRpcmVSYW5nZSA9IENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKHN0cikp
OyAgICAKIAotICAgIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJlZiB0b2tlbml6ZXIgPSBudWxs
cHRyOwotICAgIGlmICghdG9rZW5pemVyKQotICAgICAgICB0b2tlbml6ZXIgPSBDRlN0cmluZ1Rv
a2VuaXplckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHIsIGVudGlyZVJhbmdlLCBrQ0ZT
dHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5LCBsb2NhbGUpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdUb2tlbml6ZXJSZWY+PiB0b2tlbml6ZXI7Cisg
ICAgaWYgKCF0b2tlbml6ZXIuZ2V0KCkpCisgICAgICAgIHRva2VuaXplci5nZXQoKSA9IGFkb3B0
Q0YoQ0ZTdHJpbmdUb2tlbml6ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyLCBlbnRp
cmVSYW5nZSwga0NGU3RyaW5nVG9rZW5pemVyVW5pdFdvcmRCb3VuZGFyeSwgbG9jYWxlLmdldCgp
LmdldCgpKSk7CiAgICAgZWxzZQotICAgICAgICBDRlN0cmluZ1Rva2VuaXplclNldFN0cmluZyh0
b2tlbml6ZXIsIHN0ciwgZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiB0b2tlbml6ZXI7CisgICAg
ICAgIENGU3RyaW5nVG9rZW5pemVyU2V0U3RyaW5nKHRva2VuaXplci5nZXQoKS5nZXQoKSwgc3Ry
LCBlbnRpcmVSYW5nZSk7CisgICAgcmV0dXJuIHRva2VuaXplci5nZXQoKS5nZXQoKTsKIH0KIAog
Ly8gU2ltcGxlIGNhc2U6IEEgd29yZCBpcyBhIHN0cmVhbSBvZiBjaGFyYWN0ZXJzIGRlbGltaXRl
ZCBieSBhIHNwZWNpYWwgc2V0IG9mIHdvcmQtZGVsaW1pdGluZyBjaGFyYWN0ZXJzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggNGQ4YzVj
NjA2ZDVjNTU4N2YyYzk1YWYyZGE2YmZkYmYwMjY5ZGM5NC4uMzA0YjFmZDJhZGU4YTc0NzI2ZTJm
NThjODIyNTExMTVlNGIwNTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC01NywxMyArNTcsMTEgQEAgR0RJT2JqZWN0PEhCSVRNQVA+
IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENHQ29udGV4dFJlZiAqdGFyZ2V0UmVm
KQogICAgIGlmICghdGFyZ2V0UmVmIHx8ICFoYm1wKQogICAgICAgICByZXR1cm4gaGJtcDsKIAot
ICAgIENHQ29udGV4dFJlZiBiaXRtYXBDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJp
dHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJtcEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0
LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggKiA0LCBzUkdCQ29sb3JTcGFjZVJlZigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtD
R0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwor
ICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJp
dHMsIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgsIGJtcEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0
LCA4LCBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoICogNCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwg
a0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkp
OwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuIEdESU9iamVjdDxIQklU
TUFQPigpOwogCi0gICAgKnRhcmdldFJlZiA9IGJpdG1hcENvbnRleHQ7CisgICAgKnRhcmdldFJl
ZiA9IGJpdG1hcENvbnRleHQubGVha1JlZigpOwogICAgIHJldHVybiBoYm1wOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggMGNmMTdkZTI3NDQ1
ZDNjNjg5ZDdlZTc4NTJiMTAwMGMxZmM0OTk1ZC4uODg3YTNhNTg4ZGQ4NmQwOTU3NWJhYWMzZjVk
MmYwNzM5ZDQzMGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQpAQCAtMTUyLDM2ICsxNTIsMjUgQEAgc3RhdGljIHZvaWQgaW50ZXJwb2xhdGVFeHBvbmVu
dGlhbEdyYWRpZW50KHZvaWQgKmluZm8sIGNvbnN0IENHRmxvYXQgKmluRGF0YSwgQ0cKIAogc3Rh
dGljIENHRnVuY3Rpb25SZWYgZ2V0U2hhcmVkRnVuY3Rpb25SZWYoSU9TR3JhZGllbnRSZWYgZ3Jh
ZGllbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBDR0Z1bmN0aW9uUmVm
IGZ1bmN0aW9uID0gbnVsbHB0cjsKLQotICAgIHN0YXRpYyBIYXNoTWFwPElPU0dyYWRpZW50UmVm
LCBDR0Z1bmN0aW9uUmVmPiogbGluZWFyRnVuY3Rpb25SZWZzOwotICAgIHN0YXRpYyBIYXNoTWFw
PElPU0dyYWRpZW50UmVmLCBDR0Z1bmN0aW9uUmVmPiogZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8SU9TR3JhZGllbnRSZWYsIFJldGFp
blB0cjxDR0Z1bmN0aW9uUmVmPj4+IGxpbmVhckZ1bmN0aW9uUmVmczsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJT1NHcmFkaWVudFJlZiwgUmV0YWluUHRyPENHRnVuY3Rpb25S
ZWY+Pj4gZXhwb25lbnRpYWxGdW5jdGlvblJlZnM7CiAKICAgICBpZiAoaW50ZXJwb2xhdGlvbiA9
PSBMaW5lYXJJbnRlcnBvbGF0aW9uKSB7Ci0gICAgICAgIGlmICghbGluZWFyRnVuY3Rpb25SZWZz
KQotICAgICAgICAgICAgbGluZWFyRnVuY3Rpb25SZWZzID0gbmV3IEhhc2hNYXA8SU9TR3JhZGll
bnRSZWYsIENHRnVuY3Rpb25SZWY+OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdW5jdGlv
biA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKLSAgICAKKyAgICAgICAgYXV0
byBmdW5jdGlvbiA9IGxpbmVhckZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKICAgICAgICAg
aWYgKCFmdW5jdGlvbikgewogICAgICAgICAgICAgc3RhdGljIHN0cnVjdCBDR0Z1bmN0aW9uQ2Fs
bGJhY2tzIGxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzID0gIHsgMCwgaW50ZXJwb2xhdGVMaW5lYXJH
cmFkaWVudCwgMCB9OwotICAgICAgICAgICAgbGluZWFyRnVuY3Rpb25SZWZzLT5zZXQoZ3JhZGll
bnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgbnVsbHB0ciwgNCwg
bnVsbHB0ciwgJmxpbmVhckZ1bmN0aW9uQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBsaW5lYXJG
dW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rpb25D
cmVhdGUoZ3JhZGllbnQsIDEsIG51bGxwdHIsIDQsIG51bGxwdHIsICZsaW5lYXJGdW5jdGlvbkNh
bGxiYWNrcykpKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uLmdldCgpOwogICAgIH0KIAotICAgIGlmICghZXhwb25lbnRpYWxG
dW5jdGlvblJlZnMpCi0gICAgICAgIGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzID0gbmV3IEhhc2hN
YXA8SU9TR3JhZGllbnRSZWYsIENHRnVuY3Rpb25SZWY+OwotICAgIGVsc2UKLSAgICAgICAgZnVu
Y3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKLQorICAgIGF1
dG8gZnVuY3Rpb24gPSBleHBvbmVudGlhbEZ1bmN0aW9uUmVmcy0+Z2V0KGdyYWRpZW50KTsKICAg
ICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIHN0YXRpYyBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxi
YWNrcyBleHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJhY2tzID0gIHsgMCwgaW50ZXJwb2xhdGVFeHBv
bmVudGlhbEdyYWRpZW50LCAwIH07Ci0gICAgICAgIGV4cG9uZW50aWFsRnVuY3Rpb25SZWZzLT5z
ZXQoZ3JhZGllbnQsIGZ1bmN0aW9uID0gQ0dGdW5jdGlvbkNyZWF0ZShncmFkaWVudCwgMSwgMCwg
NCwgMCwgJmV4cG9uZW50aWFsRnVuY3Rpb25DYWxsYmFja3MpKTsKKyAgICAgICAgZXhwb25lbnRp
YWxGdW5jdGlvblJlZnMtPnNldChncmFkaWVudCwgZnVuY3Rpb24gPSBhZG9wdENGKENHRnVuY3Rp
b25DcmVhdGUoZ3JhZGllbnQsIDEsIDAsIDQsIDAsICZleHBvbmVudGlhbEZ1bmN0aW9uQ2FsbGJh
Y2tzKSkpOwogICAgIH0KLQotICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICByZXR1cm4gZnVuY3Rp
b24uZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdBeGlhbEdyYWRpZW50KENHQ29udGV4dFJl
ZiBjb250ZXh0LCBJT1NHcmFkaWVudFJlZiBncmFkaWVudCwgY29uc3QgRmxvYXRQb2ludCYgc3Rh
cnRQb2ludCwgY29uc3QgRmxvYXRQb2ludCYgc3RvcFBvaW50LCBJbnRlcnBvbGF0aW9uIGludGVy
cG9sYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0Lm1tCmluZGV4IGJlNjYwNzhhODNkMGNhNDliNzFhMWZiNTNjMjNhOGM2
YjgxZDc2N2UuLjVhOWJiYzcxNWM5ZTVjODQzYWFmMmI5MTVkZDg4ZjcyZWZhMTllZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0Lm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIAotc3RhdGljIENGVVJMUmVzcG9uc2VSZWYgY3Jl
YXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkK
K3N0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gY3JlYXRlQ0ZVUkxSZXNwb25zZUZy
b21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKIHsKICAgICBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVu
YXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6KF9fYnJpZGdlIE5TRGF0YSAq
KXJlc3BvbnNlRGF0YSBlcnJvcjpudWxscHRyXSk7CkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBD
RlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0
YVJlZiByZXNwb25zZURhCiAgICAgfQogCiAgICAgaWYgKCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFz
czpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIENGVVJMUmVzcG9u
c2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJlc3BvbnNl
LlVSTCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLk1JTUVUeXBlLCByZXNwb25zZS5l
eHBlY3RlZENvbnRlbnRMZW5ndGgsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXNwb25zZS50ZXh0
RW5jb2RpbmdOYW1lLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlk
Z2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2Uu
TUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCwgKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUsIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93
ZWQpKTsKIAogICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJM
UmVzcG9uc2UgKilyZXNwb25zZTsKIApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgQ0ZVUkxSZXNw
b25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVz
cG9uc2VEYQogICAgIGZvciAoTlNTdHJpbmcgKmhlYWRlckZpZWxkIGluIFtoZWFkZXJGaWVsZHMg
a2V5RW51bWVyYXRvcl0pCiAgICAgICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVl
KGh0dHBNZXNzYWdlLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpaGVhZGVyRmllbGQsIChf
X2JyaWRnZSBDRlN0cmluZ1JlZilbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpoZWFkZXJGaWVs
ZF0pOwogCi0gICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChfX2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBN
ZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKKyAgICByZXR1cm4gYWRv
cHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoX19icmlkZ2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQoKSwg
a0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0TUlN
RVR5cGUoQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBlKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0
YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgcHJvcGVyCiAgICAgaWYgKENGR2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkg
IT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxD
RlVSTFJlc3BvbnNlUmVmPiByZXNwb25zZSA9IGFkb3B0Q0YoY3JlYXRlQ0ZVUkxSZXNwb25zZUZy
b21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKSk7CisgICAgYXV0byByZXNwb25zZSA9IGNyZWF0
ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJlc3BvbnNlRGF0YSk7CiAgICAgaWYgKCFy
ZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFhOWY3MTlkNjUxZmE4YWVkMTlmNmVmZjA1
MTU3ZjA5NTJkYmVlMTEuLmM1MzdlYTI4ZDkxYzUwNWEyNThiOWM4MDZlN2U4M2NlMmNmNDBlNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC00NTEsNyArNDUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6Om5ld1Rlc3RpbmdTZXNzaW8KICAgICAvLyBTZXNz
aW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24g
bmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90aGVyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0
IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lv
bk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkp
OwogCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1
dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9u
TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewpAQCAtNDg1LDcgKzQ4NSw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCwgYm9vbCBzaG91bGRVCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJ
ZGVudGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlmaWVyQmFzZSwgIi5Qcml2YXRlQnJvd3Npbmcu
IiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS5jcmVhdGVDRlN0cmluZygpOwogICAgIGlm
IChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9w
dENGKGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAg
ICAgICAgc3RvcmFnZVNlc3Npb24gPSBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVu
dGlmaWVyLmdldCgpKTsKICAgICBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVy
KGNmSWRlbnRpZmllci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYTQyMzM0ZWMwY2ExYWQwNTAyM2VjYmY3OGQxMzFkMDFi
M2VmMzZmLi40ODU3ZTU5Njc3ZjkxMGYzMzFlMmQ2ZmEzMTk4ZjAzZDVmNGE0NDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC02Myw2ICs2
Myw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9PU09i
amVjdFB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAjZW5kaWYKIApAQCAtNTU3LDcgKzU1OCw3IEBAIHByaXZh
dGU6CiAgICAgLy8gRklYTUU6IFdlJ2QgbGlrZSB0byBiZSBhYmxlIHRvIGRvIHRoaXMgd2l0aG91
dCB0aGUgI2lmZGVmLCBidXQgV29ya1F1ZXVlICsgQmluYXJ5U2VtYXBob3JlIGlzbid0IGdvb2Qg
ZW5vdWdoIHNpbmNlCiAgICAgLy8gbXVsdGlwbGUgcmVxdWVzdHMgdG8gY2xlYXIgdGhlIGNhY2hl
IGNhbiBjb21lIGluIGJlZm9yZSBwcmV2aW91cyByZXF1ZXN0cyBjb21wbGV0ZSwgYW5kIHdlIG5l
ZWQgdG8gd2FpdCBmb3IgYWxsIG9mIHRoZW0uCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB1c2luZyBX
b3JrUXVldWUgYW5kIGEgY291bnRpbmcgc2VtYXBob3JlIHdvdWxkIHdvcmssIGFzIHdvdWxkIFdv
cmtRdWV1ZSBzdXBwb3J0aW5nIHRoZSBsaWJkaXNwYXRjaCBjb25jZXB0IG9mICJ3b3JrIGdyb3Vw
cyIuCi0gICAgZGlzcGF0Y2hfZ3JvdXBfdCBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwIHsgbnVs
bHB0ciB9OworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX2dyb3VwX3Q+IG1fY2xlYXJDYWNoZURp
c3BhdGNoR3JvdXA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0KaW5kZXggNjBhZjkzZGRmNTFkZTc5MDMyNjQ1NDZjNmIwMzRiYTFiNWJh
NTcyZS4uNWZiZTgxZDY4NmI5Yzc0ZDdkZWI5Njg1NjQwMzgxM2ZlNjdlZGYyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQpAQCAtMTkxLDkgKzE5MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
SFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgbW9kaWZpZWRTCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKCFtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKQotICAgICAgICBtX2NsZWFyQ2FjaGVEaXNw
YXRjaEdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7CisgICAgICAgIG1fY2xlYXJDYWNo
ZURpc3BhdGNoR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKTsK
IAotICAgIGF1dG8gZ3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwOworICAgIGF1dG8g
Z3JvdXAgPSBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwLmdldCgpOwogICAgIGRpc3BhdGNoX2dy
b3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRTaW5jZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9u
KFttb2RpZmllZFNpbmNlLCAmYWdncmVnYXRvcl0oTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW0KaW5kZXggYjVlMGQxYTNkNTEyNTNhNTAwM2RlNjVlNTg2OTc5ZTRkOGMyZDA4MC4u
YjBmOWE1OWJiMmMwODM3ODVjODU5Y2I3MDE1OTE4YTNhNjQxMTYxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAg
LTk3LDkgKzk3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29u
c3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW0KIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKICAgICBpZiAobV9jbGVhckNhY2hlRGlzcGF0Y2hH
cm91cCkgewotICAgICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURpc3BhdGNo
R3JvdXAsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCk7Ci0gICAgICAgIG1fY2xlYXJDYWNoZURpc3BhdGNo
R3JvdXAgPSAwOworICAgICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1fY2xlYXJDYWNoZURpc3Bh
dGNoR3JvdXAuZ2V0KCksIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CisgICAgICAgIG1fY2xlYXJD
YWNoZURpc3BhdGNoR3JvdXAgPSBudWxscHRyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDRmNmIxODRmZjQwZDk5Mjg4ZWI2MDYwYTdjNTg4
NmIzNzM2YzRiODMuLmQ5YjUzMDMzNThkNjQ3ODY2YzlhYjZhNTdjYzE3YmRlYTk0MmY4ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQ1OCwxMCArNDU4LDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxSZWNlaXZlU291cmNlKCk7CiAKICAgICBtYWNo
X3BvcnRfdCBtX3NlbmRQb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsKLSAgICBkaXNwYXRjaF9zb3Vy
Y2VfdCBtX3NlbmRTb3VyY2UgeyBudWxscHRyIH07CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hf
c291cmNlX3Q+IG1fc2VuZFNvdXJjZTsKIAogICAgIG1hY2hfcG9ydF90IG1fcmVjZWl2ZVBvcnQg
eyBNQUNIX1BPUlRfTlVMTCB9OwotICAgIGRpc3BhdGNoX3NvdXJjZV90IG1fcmVjZWl2ZVNvdXJj
ZSB7IG51bGxwdHIgfTsKKyAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9zb3VyY2VfdD4gbV9yZWNl
aXZlU291cmNlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBtX3BlbmRpbmdP
dXRnb2luZ01hY2hNZXNzYWdlOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2Ug
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29u
bmVjdGlvbkNvY29hLm1tCmluZGV4IDhkOWNkZTA4ZjQ2NzE0MWE5MGQ4ZWFmOWRkNzg1Yjc5MDM4
ZDU4ZWUuLjkwYmRmMjQ4NzYyNDljZWYxNzFiYzkyZDc2NmU3NGUwMmQ0MTg0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0K
QEAgLTE0Nyw4ICsxNDcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgp
CiAgICAgQVNTRVJUKG1fcmVjZWl2ZVBvcnQpOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXIgcG9y
dHMuCi0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3NlbmRTb3VyY2UpOwotICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9zZW5kU291cmNlKTsKKyAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKG1f
c2VuZFNvdXJjZS5nZXQoKSk7CiAgICAgbV9zZW5kU291cmNlID0gbnVsbHB0cjsKICAgICBtX3Nl
bmRQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiAKQEAgLTE1Nyw4ICsxNTYsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6Y2FuY2VsUmVj
ZWl2ZVNvdXJjZSgpCiB7Ci0gICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChtX3JlY2VpdmVTb3Vy
Y2UpOwotICAgIGRpc3BhdGNoX3JlbGVhc2UobV9yZWNlaXZlU291cmNlKTsKKyAgICBkaXNwYXRj
aF9zb3VyY2VfY2FuY2VsKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSk7CiAgICAgbV9yZWNlaXZlU291
cmNlID0gbnVsbHB0cjsKICAgICBtX3JlY2VpdmVQb3J0ID0gTUFDSF9QT1JUX05VTEw7CiB9CkBA
IC0yMzAsMTEgKzIyOCwxMSBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgIC8vIENoYW5n
ZSB0aGUgbWVzc2FnZSBxdWV1ZSBsZW5ndGggZm9yIHRoZSByZWNlaXZlIHBvcnQuCiAgICAgc2V0
TWFjaFBvcnRRdWV1ZUxlbmd0aChtX3JlY2VpdmVQb3J0LCBNQUNIX1BPUlRfUUxJTUlUX0xBUkdF
KTsKIAotICAgIG1fcmVjZWl2ZVNvdXJjZSA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFU
Q0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0LCAwLCBtX2Nvbm5lY3Rpb25R
dWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hh
bmRsZXIobV9yZWNlaXZlU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyldIHsKKyAgICBtX3JlY2VpdmVTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3Nv
dXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9SRUNWLCBtX3JlY2VpdmVQb3J0
LCAwLCBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpKSk7CisgICAgZGlzcGF0Y2hf
c291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7CiAgICAgICAgIHJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsZXIoKTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9o
YW5kbGVyKG1fcmVjZWl2ZVNvdXJjZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0
X2NhbmNlbF9oYW5kbGVyKG1fcmVjZWl2ZVNvdXJjZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCByZWNlaXZlUG9ydCA9IG1fcmVjZWl2ZVBvcnRdIHsKICNpZiAhUExB
VEZPUk0oV0FUQ0hPUykKICAgICAgICAgbWFjaF9wb3J0X3VuZ3VhcmQobWFjaF90YXNrX3NlbGYo
KSwgcmVjZWl2ZVBvcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9wb3J0X2NvbnRleHRfdD4ocHJv
dGVjdGVkVGhpcy5nZXQoKSkpOwogI2VuZGlmCkBAIC0yNDMsMTAgKzI0MSwxMCBAQCBib29sIENv
bm5lY3Rpb246Om9wZW4oKQogCiAgICAgcmVmKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9jb25u
ZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSwgXnsKLSAgICAgICAgZGlzcGF0Y2hfcmVzdW1l
KG1fcmVjZWl2ZVNvdXJjZSk7CisgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtX3JlY2VpdmVTb3Vy
Y2UuZ2V0KCkpOwogCiAgICAgICAgIGlmIChtX3NlbmRTb3VyY2UpCi0gICAgICAgICAgICBkaXNw
YXRjaF9yZXN1bWUobV9zZW5kU291cmNlKTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZSht
X3NlbmRTb3VyY2UuZ2V0KCkpOwogCiAgICAgICAgIGRlcmVmKCk7CiAgICAgfSk7CkBAIC0zNzEs
MjAgKzM2OSwyMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVl
UmVmPEVuY29kZXI+JiYgZW5jb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXplU2Vu
ZFNvdXJjZSgpCiB7Ci0gICAgbV9zZW5kU291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShE
SVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNIX1NFTkQsIG1fc2VuZFBvcnQsIERJU1BBVENIX01BQ0hf
U0VORF9ERUFEIHwgRElTUEFUQ0hfTUFDSF9TRU5EX1BPU1NJQkxFLCBtX2Nvbm5lY3Rpb25RdWV1
ZS0+ZGlzcGF0Y2hRdWV1ZSgpKTsKKyAgICBtX3NlbmRTb3VyY2UgPSBhZG9wdE9TT2JqZWN0KGRp
c3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfTUFDSF9TRU5ELCBtX3Nl
bmRQb3J0LCBESVNQQVRDSF9NQUNIX1NFTkRfREVBRCB8IERJU1BBVENIX01BQ0hfU0VORF9QT1NT
SUJMRSwgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoUXVldWUoKSkpOwogICAgIG1faXNJbml0
aWFsaXppbmdTZW5kU291cmNlID0gdHJ1ZTsKIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfcmVn
aXN0cmF0aW9uX2hhbmRsZXIobV9zZW5kU291cmNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyldIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X3JlZ2lzdHJhdGlvbl9o
YW5kbGVyKG1fc2VuZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBtX2lzSW5pdGlhbGl6aW5nU2VuZFNvdXJjZSA9IGZhbHNlOwogICAgICAg
ICByZXN1bWVTZW5kU291cmNlKCk7CiAgICAgfSk7Ci0gICAgZGlzcGF0Y2hfc291cmNlX3NldF9l
dmVudF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpXSB7CisgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fc2Vu
ZFNvdXJjZS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSB7
CiAgICAgICAgIGlmICghbV9zZW5kU291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9IGRpc3BhdGNoX3NvdXJjZV9nZXRfZGF0YShtX3NlbmRT
b3VyY2UpOworICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0
X2RhdGEobV9zZW5kU291cmNlLmdldCgpKTsKIAogICAgICAgICBpZiAoZGF0YSAmIERJU1BBVENI
X01BQ0hfU0VORF9ERUFEKSB7CiAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKQEAg
LTQwMCw3ICszOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNlKCkK
IAogICAgIGlmIChNQUNIX1BPUlRfVkFMSUQobV9zZW5kUG9ydCkpIHsKICAgICAgICAgbWFjaF9w
b3J0X3Qgc2VuZFBvcnQgPSBtX3NlbmRQb3J0OwotICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0
X2NhbmNlbF9oYW5kbGVyKG1fc2VuZFNvdXJjZSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfc291cmNl
X3NldF9jYW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2UuZ2V0KCksIF57CiAgICAgICAgICAgICAv
LyBSZWxlYXNlIG91ciBzZW5kIHJpZ2h0LgogICAgICAgICAgICAgZGVhbGxvY2F0ZVNlbmRSaWdo
dFNhZmVseShzZW5kUG9ydCk7CiAgICAgICAgIH0pOwpAQCAtNTgwLDcgKzU3OCw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgICAgICAgICAg
ZGVhbGxvY2F0ZVNlbmRSaWdodFNhZmVseShwcmV2aW91c05vdGlmaWNhdGlvblBvcnQpOwogCiAg
ICAgICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwotICAgICAgICAgICAgZGlzcGF0Y2hf
cmVzdW1lKG1fc2VuZFNvdXJjZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUobV9zZW5k
U291cmNlLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dz
ZXJDaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3Nl
ckNoZWNrcy5tbQppbmRleCA1YjY4ODRiZmYyOWY4ZjRmOGRkYWMzNWVlZmNlZTgyZTg1ZDVjMjkz
Li41ODc2MDkwNjA4ZDlhZmM4OGUzNDFjNWRmZjczZjViMzEwZWZhODk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQpA
QCAtMzEsNiArMzEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hh
c2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09T
T2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CkBAIC0xMTksNyAr
MTIxLDExIEBAIHN0YXRpYyBib29sIGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBhcHBX
YXNMaW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0ICE9IGtU
Q0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAKLXN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdf
aXRwUXVldWU7CitzdGF0aWMgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mIGl0cFF1ZXVl
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVl
dWVfdD4+IGl0cFF1ZXVlOworICAgIHJldHVybiBpdHBRdWV1ZTsKK30KIAogdm9pZCBkZXRlcm1p
bmVJVFBTdGF0ZSgpCiB7CkBAIC0xMzAsMTQgKzEzNiwxMyBAQCB2b2lkIGRldGVybWluZUlUUFN0
YXRlKCkKICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IElUUFN0YXRlOjpJbml0aWFsaXppbmc7CiAg
ICAgYm9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIgPSBsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6
U0RLVmVyc2lvbjo6Rmlyc3RXaXRoU2Vzc2lvbkNsZWFudXBCeURlZmF1bHQpOwogCi0gICAgZ19p
dHBRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBDaGVj
a1F1ZXVlIiwgTlVMTCk7CisgICAgaXRwUXVldWUoKSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0cENoZWNrUXVldWUiLCBOVUxMKSk7CiAK
LSAgICBkaXNwYXRjaF9hc3luYyhnX2l0cFF1ZXVlLCBbYXBwV2FzTGlua2VkT25PckFmdGVyLCBi
dW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCku
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICBkaXNwYXRjaF9hc3luYyhpdHBRdWV1ZSgpLmdldCgpLCBb
YXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgZ19jdXJy
ZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9uT3JB
ZnRlciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRlOjpE
aXNhYmxlZDsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAg
ICAgICAgZGlzcGF0Y2hfcmVsZWFzZShnX2l0cFF1ZXVlKTsKLSAgICAgICAgICAgIGdfaXRwUXVl
dWUgPSBudWxscHRyOworICAgICAgICAgICAgaXRwUXVldWUoKSA9IG51bGxwdHI7CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQpAQCAtMTQ5LDEwICsxNTQsMTAgQEAgYm9vbCBkb2VzQXBwSGF2ZUlU
UEVuYWJsZWQoKQogICAgIGlmIChnX2N1cnJlbnRJVFBTdGF0ZSA+IElUUFN0YXRlOjpJbml0aWFs
aXppbmcpCiAgICAgICAgIHJldHVybiBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5h
YmxlZDsKIAotICAgIFJFTEVBU0VfQVNTRVJUKGdfaXRwUXVldWUpOworICAgIFJFTEVBU0VfQVNT
RVJUKGl0cFF1ZXVlKCkpOwogCiAgICAgX19ibG9jayBib29sIGlzSVRQRW5hYmxlZDsKLSAgICBk
aXNwYXRjaF9zeW5jKGdfaXRwUXVldWUsIF57CisgICAgZGlzcGF0Y2hfc3luYyhpdHBRdWV1ZSgp
LmdldCgpLCBeewogICAgICAgICBpc0lUUEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJ
VFBTdGF0ZTo6RW5hYmxlZDsKICAgICB9KTsKICAgICByZXR1cm4gaXNJVFBFbmFibGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCmluZGV4IGFi
MDYzNGYxYWM2NTUzNzczNDgxODUwMmE5MTQzZDFhZGQxMTQ4MzguLjc4ZWFmZjQ1MjA0ODdjYzNk
Y2UzMDVlMDU0NDFiMTZjNzc4MTc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgc2V0
QXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlKCkKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50
SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiB7Ci0gICAgc3RhdGljIHhwY19vYmplY3Rf
dCBwcmlvcml0eUJvb3N0TWVzc2FnZSA9IG51bGxwdHI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4+IHByaW9yaXR5Qm9vc3RNZXNzYWdlOwogCiAg
ICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKICAgICB4cGNf
Y29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBeKHhwY19vYmplY3RfdCBldmVudCkg
ewpAQCAtMTE4LDE5ICsxMTgsMTggQEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxl
cih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgICAgIGR1cDIoZmQsIFNU
REVSUl9GSUxFTk8pOwogCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1bmN0
aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVzc2FnZSk7CisgICAgICAgICAgICAg
ICAgICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RN
ZXNzYWdlLmdldCgpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxhbmd1
YWdlc1ByZWZlcmVuY2UoKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAg
IGlmIChwcmlvcml0eUJvb3N0TWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgeHBjX3JlbGVh
c2UocHJpb3JpdHlCb29zdE1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHByaW9yaXR5Qm9vc3RN
ZXNzYWdlLmdldCgpID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8g
TGVhayBhIGJvb3N0IG9udG8gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgICAgICAgICAgaWYgKCFz
dHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAi
cHJlLWJvb3RzdHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFwcmlvcml0eUJvb3N0
TWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgcHJpb3JpdHlCb29zdE1lc3NhZ2UgPSB4cGNfcmV0
YWluKGV2ZW50KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIXByaW9yaXR5Qm9vc3RNZXNzYWdl
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBwcmlvcml0eUJvb3N0TWVzc2FnZS5nZXQoKSA9IGV2
ZW50OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBoYW5kbGVYUENFbmRwb2ludE1lc3Nh
Z2VzKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApp
bmRleCAyNTgzYzkzNTFiOTc4NGM0MzliOTk4MDk2Yzc3MzFlNDM1ZDQyMjMyLi42Y2VmODdmM2M0
NjQxNzlkZjc2NjJmZGMzOTkyM2EwNjEzZTIxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHNoYXJl
YWJsZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCiAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkg
cmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCiB9CiAgICAgCi1z
dGF0aWMgQ0ZBbGxvY2F0b3JSZWYgY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihT
aGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCitzdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9y
UmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNl
KiByZXNvdXJjZSkKIHsKICAgICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKICAg
ICAgICAgcmVzb3VyY2UsCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBj
cmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNv
CiAgICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKICAgICB9OwogCi0gICAgcmV0dXJuIENG
QWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KTsKKyAgICByZXR1
cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4
dCkpOwogfQogI2VuZGlmCiAKQEAgLTg1LDggKzg1LDggQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiAgICAgcmVmKCk7IC8vIEJh
bGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgogCiAjaWYg
VVNFKENGKQotICAgIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gZGVhbGxvY2F0b3IgPSBhZG9w
dENGKGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcykpOwotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9D
b3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihk
YXRhKCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkp
OworICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2Nh
dG9yKHRoaXMpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KGRhdGEoKSksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdl
dCgpKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAj
ZWxpZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19i
eXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5kZXggZDAy
NDI5MDhkNGM5ZjRmZmQxODViZDhlMWE1MzA1ODlkZjhhZWUwMy4uMzM3YzkzNjQ3MzI4NTdkMjcx
MTRmOTQwMDRjY2QyYzUxOTk2ODI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJn
dW1lbnRDb2RlcnNDRi5jcHAKQEAgLTU0MSw4ICs1NDEsNyBAQCBib29sIGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIEFTU0VSVChkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgQ0ZOdW1i
ZXJSZWYgbnVtYmVyID0gQ0ZOdW1iZXJDcmVhdGUoMCwgbnVtYmVyVHlwZSwgZGF0YVJlZmVyZW5j
ZS5kYXRhKCkpOwotICAgIHJlc3VsdCA9IGFkb3B0Q0YobnVtYmVyKTsKKyAgICByZXN1bHQgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIG51bWJlclR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0YSgp
KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTU4MSwxMSArNTgwLDExIEBAIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBDRlN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygw
LCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIGVuY29kaW5nLCBm
YWxzZSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVz
KDAsIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSwgZW5jb2Rpbmcs
IGZhbHNlKSk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHJlc3VsdCA9IGFkb3B0Q0Yoc3RyaW5nKTsKKyAgICByZXN1bHQgPSBXVEZNb3ZlKHN0cmluZyk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggNjNlM2FmNDFkYTA1
NTc5YmI1NDJhMmU2Njc4ODk4MzEwZTU1ZDliOC4uYTM5NDA2NDlmZGJmMmRlZDQ4NGE0ZTI2MTAy
YjkyMWNjMjgwNzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xl
Z2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBzdGF0
aWMgTWFsbG9jUHRyPHVpbnQ4X3QsIEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyTWFsbG9jPiBlbmNv
ZGVTZXNzaW9uSGlzdG9yeUVudAogCiBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gZW5jb2Rl
U2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkKIHsK
LSAgICBzdGF0aWMgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0RlYWxsb2NhdG9yOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+PiBmYXN0TWFsbG9j
RGVhbGxvY2F0b3I7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTQwMSwxMyArNDAxLDEzIEBAIHN0YXRp
YyBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShjb25z
dCBGcmFtZVN0YXRlJiBmcmFtCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgbnVsbHB0ciwg
Ly8gcHJlZmVycmVkU2l6ZQogICAgICAgICB9OwotICAgICAgICBmYXN0TWFsbG9jRGVhbGxvY2F0
b3IgPSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCk7Cisg
ICAgICAgIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKSA9IGFkb3B0Q0YoQ0ZBbGxvY2F0b3JD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKICAgICB9KTsKIAogICAgIHNp
emVfdCBidWZmZXJTaXplOwogICAgIGF1dG8gYnVmZmVyID0gZW5jb2RlU2Vzc2lvbkhpc3RvcnlF
bnRyeURhdGEoZnJhbWVTdGF0ZSwgYnVmZmVyU2l6ZSk7CiAKLSAgICByZXR1cm4gYWRvcHRDRihD
RkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmxl
YWtQdHIoKSwgYnVmZmVyU2l6ZSwgZmFzdE1hbGxvY0RlYWxsb2NhdG9yKSk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IGJ1ZmZlci5sZWFrUHRyKCksIGJ1ZmZlclNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQo
KS5nZXQoKSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRl
RGljdGlvbmFyeShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENGU3RyaW5nUmVmLCBD
RlR5cGVSZWY+PiBrZXlWYWx1ZVBhaXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KaW5kZXgg
MmRmMjMzNWQ5YzVhZGZhYjVhNmJlOTJjOWM3N2MyMDU3YjY5OWUyYS4uYmRkYmIwODlkZWViNWVm
ZWYyY2U3MmVmMjNlYTNjOTYwMTA0MDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBA
IC0zOSw3ICszOSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6Omlu
TWVtb3J5U3RvcmFnZVNlc3Npb24oKQogICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KSB7CiAgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJv
Y2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKICAgICAgICAgYXV0byBjb29r
aWVBY2NlcHRQb2xpY3kgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb29raWVBY2NlcHRQb2xpY3koKTsKLSAgICAgICAgYXV0byBzdG9y
YWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFjY2VwdFBvbGljeSkp
OworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvb2tpZUFj
Y2VwdFBvbGljeSk7CiAgICAgICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJM
U3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9y
YWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBt
YWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2Vzc2lvbklEKCksIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3Jh
Z2UpLCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5oCmluZGV4IDA2MWYyNjY5OGQ4ZmFjY2ExMzcxNzA0NGVkYTI2MDg2MWM2ODhhZGYuLmQ0
ODJiNDJlMGMyNTQxMjc3Yzk0YTQ1ZGZjZmI1YjAxOTQ1MTExNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTcsNyAr
MTU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckJhY2tpbmdTdG9yZVN3YXAg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZVdoaWxlV2FpdGlu
Z0ZvckJhY2tpbmdTdG9yZVN3YXAgeyBmYWxzZSB9OwogCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBt
X2NvbW1pdFF1ZXVlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fY29tbWl0
UXVldWU7CiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IG1fcGVuZGluZ0JhY2tpbmdT
dG9yZUZsdXNoZXI7CiAKICAgICBIYXNoU2V0PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvcio+IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA5OTkyODcxYjFjMDBl
ODIxMGNiNjZkZWJkMjhlZTZiMDhkYjEyNGQ1Li5hMzg4MTMzNWE0ZWY3ZGEwYTI4ZmI3NjAyYjhh
Mjk3YTgwNjg1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCkBAIC02NSw3ICs2NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25z
dCBXCiAgICAgd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRp
bmdNb2RlKHRydWUpOwogICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJkcmF3aW5nIGFyZWEgcm9v
dCIpOwogCi0gICAgbV9jb21taXRRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50LlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLkNvbW1pdFF1
ZXVlIiwgbnVsbHB0cik7CisgICAgbV9jb21taXRRdWV1ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuQ29tbWl0UXVldWUiLCBudWxscHRyKSk7CiAKICAgICAvLyBJbiBvcmRl
ciB0byBlbnN1cmUgdGhhdCB3ZSBnZXQgYSB1bmlxdWUgRGlzcGxheVJlZnJlc2hNb25pdG9yIHBl
ci1EcmF3aW5nQXJlYSAobmVjZXNzYXJ5IGJlY2F1c2UgRGlzcGxheVJlZnJlc2hNb25pdG9yCiAg
ICAgLy8gaXMgZHJpdmVuIGJ5IHRoaXMgY2xhc3MpLCBnaXZlIGVhY2ggcGFnZSBhIHVuaXF1ZSBE
aXNwbGF5SUQgZGVyaXZlZCBmcm9tIFdlYlBhZ2UncyB1bmlxdWUgSUQuCkBAIC03OCwxMCArNzgs
NyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgICAgICBzZXRWaWV3RXhwb3NlZFJlY3Qo
dmlld0V4cG9zZWRSZWN0KTsKIH0KIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCi17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2NvbW1p
dFF1ZXVlKTsKLX0KK1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7CkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBtX3BlbmRpbmdCYWNr
aW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIGF1dG8gcGFnZUlE
ID0gbV93ZWJQYWdlLmlkZW50aWZpZXIoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1
ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciks
IHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUuZ2V0KCksIFtiYWNr
aW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7
CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9ub3Rv
bmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwLmNwcAppbmRleCBhODY3MWZmMTk2MTBiNjFiZDY5ZGZmMjRkNTY2YjZiYzI1MGQ5
ZTNlLi45NWVmMjI5NGE5NzZmODQ0ZWMzYTQ5NWViYmJlM2IzZmQ5NmE3NGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAvLyBTZXNzaW9u
IG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFt
ZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90ZWhyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdv
cmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KICAgICBTdHJpbmcgc2Vzc2lvbk5h
bWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwog
Ci0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGF1dG8g
c2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewpAQCAtOTAsNyArOTAsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNl
c3Npb25JRCYgc2Vzc2lvbklELCBjbwogCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Np
b25SZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkK
LSAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Np
b24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdl
dCgpKTsKICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihjZklk
ZW50aWZpZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3
L1dlYlBERlZpZXdJT1MubW0KaW5kZXggY2JkNTBiNmZjYTg1NTcxNWMyYzdjYzNkNjAxMmFiZDE4
MmU0MDI4MC4uOTdjMzc5Y2VlNjZiNDkwODY5MWFmMGRmMWVjYjY2OWJlM2I2NWQyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAt
NDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYk5TVmlld0V4dHJhcy5oPgog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTksMTEgKzYw
LDExIEBAIHN0YXRpYyBpbnQgY29tcGFyZVBhZ2VSZWN0cyhjb25zdCB2b2lkICprZXksIGNvbnN0
IHZvaWQgKmFycmF5KTsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX1dJRFRIX0lOU0VUICAgICA9
IDQuMCAqIDIuMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBQQUdFX0hFSUdIVF9JTlNFVCAgICA9IDQu
MCAqIDIuMDsKIAotc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0
ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9y
UmVmPiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQg
YWxwaGEpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBncmF5U3BhY2UgPSBDR0NvbG9y
U3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxDR0NvbG9yU3BhY2VSZWY+PiBncmF5U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNy
ZWF0ZURldmljZUdyYXkoKSk7CiAgICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzW10gPSB7IHdo
aXRlLCBhbHBoYSB9OwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGdyYXlTcGFjZSwgY29tcG9u
ZW50cyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShncmF5U3BhY2UuZ2V0KCku
Z2V0KCksIGNvbXBvbmVudHMpKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIFdlYlBERlZpZXcgewpA
QCAtODMsMTQgKzg0LDE0IEBAICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIAogKyAo
Q0dDb2xvclJlZilzaGFkb3dDb2xvcgogewotICAgIHN0YXRpYyBDR0NvbG9yUmVmIHNoYWRvd0Nv
bG9yID0gY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZSgwLCAyLjAgLyAzKTsKLSAgICByZXR1
cm4gc2hhZG93Q29sb3I7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0Nv
bG9yUmVmPj4gc2hhZG93Q29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDAsIDIu
MCAvIDMpOworICAgIHJldHVybiBzaGFkb3dDb2xvci5nZXQoKS5nZXQoKTsKIH0KIAogKyAoQ0dD
b2xvclJlZiliYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclJlZiBiYWNrZ3Jv
dW5kQ29sb3IgPSBjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRlKDIwNC4wIC8gMjU1LCAxKTsK
LSAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4+IGJhY2tncm91bmRDb2xvciA9IGNyZWF0ZUNHQ29sb3JXaXRo
RGV2aWNlV2hpdGUoMjA0LjAgLyAyNTUsIDEpOworICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3Iu
Z2V0KCkuZ2V0KCk7CiB9CiAKIC8vIFRoaXMgaXMgYSBzZWNyZXQgcHJvdG9jb2wgZm9yIFdlYkRh
dGFTb3VyY2UgYW5kIFdlYkZyYW1lVmlldyB0byBvZmZlciB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8g
ZG8gc29tZXRoaW5nIGRpZmZlcmVudCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tCmluZGV4IDFmYjUxOGY4NzRiODNlNjRhZmU1
ZmY0OThkMWVmNTFjZTMxODVmYzguLmFlYjRkOGYxNmZkZGIwMjU1MTA4YjJhMDBlYjlmNjcyMTVm
MTc2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRWxlbWVu
dERpY3Rpb25hcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVt
ZW50RGljdGlvbmFyeS5tbQpAQCAtNTAsMTEgKzUwLDE1IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBsb29rdXBUYWJsZSA9IE5V
TEw7CitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBsb29rdXBUYWJs
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPj4gbG9va3VwVGFibGU7CisgICAgcmV0dXJuIGxvb2t1cFRhYmxlOworfQogCiBz
dGF0aWMgdm9pZCBhZGRMb29rdXBLZXkoTlNTdHJpbmcgKmtleSwgU0VMIHNlbGVjdG9yKQogewot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGxvb2t1cFRhYmxlLCAoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpa2V5LCBzZWxlY3Rvcik7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobG9va3VwVGFibGUo
KS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgc2VsZWN0b3IpOwogfQogCiBzdGF0
aWMgdm9pZCBjYWNoZVZhbHVlRm9yS2V5KGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqdmFs
dWUsIHZvaWQgKnNlbGYpCkBAIC03NiwxMCArODAsMTAgQEAgKyAodm9pZClpbml0aWFsaXplCiAK
ICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRhYmxlCiB7Ci0gICAgaWYgKGxvb2t1cFRhYmxlKQor
ICAgIGlmIChsb29rdXBUYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb29rdXBUYWJs
ZSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtD
RkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKKyAgICBsb29rdXBUYWJs
ZSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCkpOwogCiAg
ICAgYWRkTG9va3VwS2V5KFdlYkVsZW1lbnRET01Ob2RlS2V5LCBAc2VsZWN0b3IoX2RvbU5vZGUp
KTsKICAgICBhZGRMb29rdXBLZXkoV2ViRWxlbWVudEZyYW1lS2V5LCBAc2VsZWN0b3IoX3dlYkZy
YW1lKSk7CkBAIC0xMjUsNyArMTI5LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpX2Zp
bGxDYWNoZQogewotICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24obG9va3VwVGFibGUsIGNh
Y2hlVmFsdWVGb3JLZXksIChfX2JyaWRnZSB2b2lkKilzZWxmKTsKKyAgICBDRkRpY3Rpb25hcnlB
cHBseUZ1bmN0aW9uKGxvb2t1cFRhYmxlKCkuZ2V0KCksIGNhY2hlVmFsdWVGb3JLZXksIChfX2Jy
aWRnZSB2b2lkKilzZWxmKTsKICAgICBfY2FjaGVDb21wbGV0ZSA9IFlFUzsKIH0KIApAQCAtMTQ5
LDEyICsxNTMsMTIgQEAgLSAoaWQpb2JqZWN0Rm9yS2V5OihpZClrZXkKICAgICBpZiAodmFsdWUg
fHwgX2NhY2hlQ29tcGxldGUgfHwgW19uaWxWYWx1ZXMgY29udGFpbnNPYmplY3Q6a2V5XSkKICAg
ICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8U0VM
Pihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSwgKF9f
YnJpZGdlIENGVHlwZVJlZilrZXkpKSk7CisgICAgU0VMIHNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8
U0VMPihjb25zdF9jYXN0PHZvaWQqPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShsb29rdXBUYWJsZSgp
LmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKWtleSkpKTsKICAgICBpZiAoIXNlbGVjdG9yKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIHZhbHVlID0gW3NlbGYgcGVyZm9ybVNlbGVjdG9yOnNl
bGVjdG9yXTsKIAotICAgIE5TVUludGVnZXIgbG9va3VwVGFibGVDb3VudCA9IENGRGljdGlvbmFy
eUdldENvdW50KGxvb2t1cFRhYmxlKTsKKyAgICBOU1VJbnRlZ2VyIGxvb2t1cFRhYmxlQ291bnQg
PSBDRkRpY3Rpb25hcnlHZXRDb3VudChsb29rdXBUYWJsZSgpLmdldCgpKTsKICAgICBpZiAodmFs
dWUpIHsKICAgICAgICAgaWYgKCFfY2FjaGUpCiAgICAgICAgICAgICBfY2FjaGUgPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bG9va3VwVGFibGVDb3VudF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZDAwOGZi
YmEyOGYyMTk4ZjhiMDkxYmIzYzNhMmVlN2M4MzIwMzU1Yi4uNWIwZWU4YTNhYzhjMzMzYjZlZTM0
NGNkZDljM2I1NTc2NWMyNmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMTI2MywyOCArMTI2MywzMiBAQCBzdGF0aWMgQ0ZTZXRDYWxsQmFja3Mg
Tm9uUmV0YWluaW5nU2V0Q2FsbGJhY2tzID0gewogICAgIENGSGFzaAogfTsKIAotc3RhdGljIENG
TXV0YWJsZVNldFJlZiBhbGxXZWJWaWV3c1NldDsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxl
U2V0UmVmPiYgYWxsV2ViVmlld3NTZXQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPj4gYWxsV2ViVmlld3NTZXQ7CisgICAgcmV0dXJuIGFs
bFdlYlZpZXdzU2V0OworfQogCiArICh2b2lkKV9tYWtlQWxsV2ViVmlld3NQZXJmb3JtU2VsZWN0
b3I6KFNFTClzZWxlY3RvcgogewotICAgIGlmICghYWxsV2ViVmlld3NTZXQpCisgICAgaWYgKCFh
bGxXZWJWaWV3c1NldCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBbKF9fYnJpZGdlIE5TTXV0
YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOnNlbGVj
dG9yXTsKKyAgICBbKF9fYnJpZGdlIE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0KCkuZ2V0
KCkgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdOwogfQogCiAtICh2b2lkKV9y
ZW1vdmVGcm9tQWxsV2ViVmlld3NTZXQKIHsKLSAgICBpZiAoYWxsV2ViVmlld3NTZXQpCi0gICAg
ICAgIENGU2V0UmVtb3ZlVmFsdWUoYWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYp
c2VsZik7CisgICAgaWYgKGFsbFdlYlZpZXdzU2V0KCkpCisgICAgICAgIENGU2V0UmVtb3ZlVmFs
dWUoYWxsV2ViVmlld3NTZXQoKS5nZXQoKSwgKF9fYnJpZGdlIENGVHlwZVJlZilzZWxmKTsKIH0K
IAogLSAodm9pZClfYWRkVG9BbGxXZWJWaWV3c1NldAogewotICAgIGlmICghYWxsV2ViVmlld3NT
ZXQpCi0gICAgICAgIGFsbFdlYlZpZXdzU2V0ID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKE5VTEwsIDAs
ICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpOworICAgIGlmICghYWxsV2ViVmlld3NTZXQoKSkK
KyAgICAgICAgYWxsV2ViVmlld3NTZXQoKSA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKE5V
TEwsIDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpKTsKIAotICAgIENGU2V0U2V0VmFsdWUo
YWxsV2ViVmlld3NTZXQsIChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CisgICAgQ0ZTZXRTZXRW
YWx1ZShhbGxXZWJWaWV3c1NldCgpLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwog
fQogCiBAZW5kCkBAIC0yMjMwLDcgKzIyMzQsNyBAQCArICh2b2lkKWNsb3NlQWxsV2ViVmlld3MK
ICAgICBXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cygp
OwogCiAgICAgLy8gVGhpcyB3aWxsIGNsb3NlIHRoZSBXZWJWaWV3cyBpbiBhIHJhbmRvbSBvcmRl
ci4gQ2hhbmdlIHRoaXMgaWYgY2xvc2Ugb3JkZXIgaXMgaW1wb3J0YW50LgotICAgIGZvciAoV2Vi
VmlldyAqd2ViVmlldyBpbiBbKF9fYnJpZGdlIE5TU2V0ICopYWxsV2ViVmlld3NTZXQgYWxsT2Jq
ZWN0c10pCisgICAgZm9yIChXZWJWaWV3ICp3ZWJWaWV3IGluIFsoX19icmlkZ2UgTlNTZXQgKilh
bGxXZWJWaWV3c1NldCgpLmdldCgpIGFsbE9iamVjdHNdKQogICAgICAgICBbd2ViVmlldyBjbG9z
ZV07CiB9CiAKQEAgLTY5MTEsNyArNjkxNSw3IEBAICsgKEJPT0wpX2RpZFNldENhY2hlTW9kZWwK
ICsgKFdlYkNhY2hlTW9kZWwpX21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlCiB7CiAgICAgV2Vi
Q2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwotICAg
IE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2ViVmlld3NT
ZXQgb2JqZWN0RW51bWVyYXRvcl07CisgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gWyhO
U011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCgpLmdldCgpIG9iamVjdEVudW1lcmF0b3JdOwog
ICAgIHdoaWxlIChXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW2VudW1lcmF0b3IgbmV4
dE9iamVjdF0gcHJlZmVyZW5jZXNdKQogICAgICAgICBjYWNoZU1vZGVsID0gc3RkOjptYXgoY2Fj
aGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdKTsKICAgICByZXR1cm4gY2FjaGVNb2Rl
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAK
aW5kZXggNTExYTkyYjcyZDFjYTBkMjMzZDQ5MWMzMDAxOTYzNDMxY2M2NGQyYS4uOGYyNzE2MmJi
YWYxOGVlMWMxMThiOTUxMWY1MWI0N2U0NDg1Nzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTE5Nyw5ICsxOTcsNyBAQCBIUkVT
VUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFnKiog
b3JpZ2lucykKICAgICBmb3IgKGF1dG8mIGNvcmVPcmlnaW4gOiBjb3JlT3JpZ2lucykKICAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5SXRlbS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGNvcmVPcmlnaW4uc2VjdXJp
dHlPcmlnaW4oKS5wdHIoKSkpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0KKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGF1dG8ga2V5ID0g
TWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIp
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCks
IGFycmF5SXRlbS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxv
YWRDRk5ldC5jcHAKaW5kZXggZWEwYjY3NTFjNTU0ZTgyN2RjOTgyNTVjZDRhNzE1N2YxZDVhZDJi
Mi4uMWQyNzAyYWRiMDgyNzdjNDQ1MDhkM2RmYmRjNDI3OTg2ZGNmYzIyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMzNCw3ICszMzQsNyBA
QCBIUkVTVUxUIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVk
ZW50aWFsKiBjcmVkZW50aWFsLCBfSW5fbwogICAgIGlmICghd2ViQ3JlZGVudGlhbCkKICAgICAg
ICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFs
UmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwtPmNyZWRl
bnRpYWwoKSkpOworICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gY3JlYXRlQ0Yod2ViQ3JlZGVudGlh
bC0+Y3JlZGVudGlhbCgpKTsKIAogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERv
d25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCks
IHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjaGFsbGUKICAg
ICBpZiAoIUNGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxsZW5n
ZSkpIHsKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChl
bXB0eVN0cmluZygpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShj
aGFsbGVuZ2UpKSk7CiAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0
Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwg
PSBjcmVhdGVDRihjcmVkZW50aWFsKTsKICAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVk
ZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RS
ZW5kZXJlci5jcHAKaW5kZXggZDViZWVmODJlOTkwODkxYTcyZTZiNGZjNGJlMzc4ODMwYWI2YWM5
MC4uZmYzNGFkMDczN2EyNmQyYTE3M2VjZGJiOWI5NjdiNTllMTZiZTYyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJl
bmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0zNzAsMTQgKzM3MCwxMiBAQCBzdGF0aWMg
Ym9vbCBwcmVwYXJlRGV2aWNlKElEaXJlY3QzRERldmljZTkqIGRldmljZSwgY29uc3QgQ0dSZWN0
JiBib3VuZHMsIElEaXJlYwogCiBzdGF0aWMgQ0dSZWN0IHVwZGF0ZUJvdW5kcyhDQVJlbmRlclVw
ZGF0ZSogdXBkYXRlKQogewotICAgIENHU1JlZ2lvbk9iaiByZ24gPSBDQVJlbmRlclVwZGF0ZUNv
cHlSZWdpb24odXBkYXRlKTsKKyAgICBhdXRvIHJnbiA9IGFkb3B0Q0YoQ0FSZW5kZXJVcGRhdGVD
b3B5UmVnaW9uKHVwZGF0ZSkpOwogICAgIGlmICghcmduKQogICAgICAgICByZXR1cm4gQ0dSZWN0
WmVybzsKIAogICAgIENHUmVjdCByZXN1bHQ7Ci0gICAgQ0dFcnJvciBlcnJvciA9IENHU0dldFJl
Z2lvbkJvdW5kcyhyZ24sICZyZXN1bHQpOwotICAgIENHU1JlbGVhc2VSZWdpb24ocmduKTsKLQor
ICAgIENHRXJyb3IgZXJyb3IgPSBDR1NHZXRSZWdpb25Cb3VuZHMocmduLmdldCgpLCAmcmVzdWx0
KTsKICAgICByZXR1cm4gZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzID8gcmVzdWx0IDogQ0dSZWN0
WmVybzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxp
emFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxl
U3RyaW5ncy5jcHAKaW5kZXggYjQxNjhiZjg0MTkxZThhMTE0MzlkOTAwMzJmZTg5ZWE0ZDI2Zjcw
NC4uNDNjYzFiYTI2Nzc4YThkYWE2MGUxMGYwZTJjZDNjMDYxNTQxNmY2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC02Nywx
NyArNjcsMTcgQEAgc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCBmcmFtZXdvcmtMb2NTdHJpbmdz
KCkKIGNsYXNzIExvY2FsaXplZFN0cmluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9j
YWxpemVkU3RyaW5nKTsKIHB1YmxpYzoKLSAgICBMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYg
c3RyaW5nKQotICAgICAgICA6IG1fY2ZTdHJpbmcoc3RyaW5nKQorICAgIExvY2FsaXplZFN0cmlu
ZyhSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiYgc3RyaW5nKQorICAgICAgICA6IG1fY2ZTdHJpbmco
V1RGTW92ZShzdHJpbmcpKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyhzdHJpbmcsIHN0cmlu
Zyk7CisgICAgICAgIEFTU0VSVChtX2NmU3RyaW5nKTsKICAgICB9CiAKICAgICBvcGVyYXRvciBM
UENUU1RSKCkgY29uc3Q7Ci0gICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVy
biBtX2NmU3RyaW5nOyB9CisgICAgb3BlcmF0b3IgQ0ZTdHJpbmdSZWYoKSBjb25zdCB7IHJldHVy
biBtX2NmU3RyaW5nLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0ZTdHJpbmdSZWYgbV9jZlN0
cmluZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fY2ZTdHJpbmc7CiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9zdHJpbmc7CiB9OwogCkBAIC04Niw3ICs4Niw3IEBAIExvY2FsaXplZFN0cmlu
Zzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBtX3N0cmluZy53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKIAotICAg
IG1fc3RyaW5nID0gbV9jZlN0cmluZzsKKyAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmcuZ2V0KCk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IG1fc3RyaW5nLmxlbmd0aCgpOyBp
KyspCiAgICAgICAgIGlmIChtX3N0cmluZ1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAxXSA9
PSAnJScgfHwgKGkgPiAyICYmIG1fc3RyaW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdbaSAt
IDJdID49ICcxJyAmJiBtX3N0cmluZ1tpIC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAzXSA9
PSAnJScpKSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVG
b3JTdHJpbmdzQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5ncwogICAg
IHJldHVybiBzdHJpbmdzQnVuZGxlLT5idW5kbGU7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1JlZiBj
b3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUq
IHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmluZyYga2V5KQorc3RhdGljIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5kbGUoV2ViTG9jYWxpemFibGVTdHJp
bmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxlLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBzdGF0
aWMgQ0ZTdHJpbmdSZWYgbm90Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91
bmQiKTsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxp
emVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0CiAgICAg
aWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIENGU3RyaW5nUmVm
IHJlc3VsdCA9IENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApOworICAgIGF1dG8gcmVz
dWx0ID0gYWRvcHRDRihDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKSk7CiAKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxv
Y2FsaXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBrZXkudXRmOCgpLmRhdGEoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlBy
ZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAppbmRleCAwYWZmYjQ1YTE3ZmJiYzk4YzcwYWVlODJiNWViOWVlYTUyYzY4ZjA3Li41YmJkZWNh
YWU1Mzk2MjE1MzM4YjkxNDBiMmNiNmIwZjA0Y2RiMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xMTcsNyArMTE3LDExIEBAIHN0YXRpYyBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZ1ZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRlByb3Bl
cnR5TGlzdFJlZiB2CiAKIC8vIFdlYlByZWZlcmVuY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIENGRGlj
dGlvbmFyeVJlZiBkZWZhdWx0U2V0dGluZ3M7CitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4mIGRlZmF1bHRTZXR0aW5ncygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBkZWZhdWx0U2V0dGluZ3M7CisgICAgcmV0dXJuIGRl
ZmF1bHRTZXR0aW5nczsKK30KIAogUmV0YWluUHRyPENGU3RyaW5nUmVmPiBXZWJQcmVmZXJlbmNl
czo6bV9hcHBsaWNhdGlvbklkID0ga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb247CiAj
ZW5kaWYKQEAgLTIxNCwxNTcgKzIxOCwxNTcgQEAgQ0ZTdHJpbmdSZWYgV2ViUHJlZmVyZW5jZXM6
OmFwcGxpY2F0aW9uSWQoKQogdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRT
ZXR0aW5ncygpCiB7CiAjaWYgVVNFKENGKQotICAgIGlmIChkZWZhdWx0U2V0dGluZ3MpCisgICAg
aWYgKGRlZmF1bHRTZXR0aW5ncygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIGRlZmF1bHRzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKTsKKyAgICBhdXRvIGRlZmF1bHRzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIElOSVRJQUxJWkVfREVGQVVMVF9QUkVGRVJF
TkNFU19ESUNUSU9OQVJZX0ZST01fR0VORVJBVEVEX1BSRUZFUkVOQ0VTOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVu
Y2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IkNvdXJpZXIgTmV3IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRpbWVzIE5ldyBSb21hbiIp
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2Fuc1Nl
cmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQXJpYWwiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSks
IENGU1RSKCJDb21pYyBTYW5zIE1TIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ29taWMg
U2FucyBNUyIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlNlZ29lIFVJIFN5bWJvbCIp
KTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TWluaW11
bUZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVy
ZW5jZUtleSksIENGU1RSKCI5IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2Iikp
OwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0
Rml4ZWRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFN0YW5kYXJkRm9udFByZWZl
cmVuY2VLZXkpLCBDRlNUUigiVGltZXMgTmV3IFJvbWFuIikpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIkNvdXJpZXIgTmV3IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRp
bWVzIE5ldyBSb21hbiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQo
KSwgQ0ZTVFIoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQXJpYWwi
KSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktp
dEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRGYW50YXN5
Rm9udFByZWZlcmVuY2VLZXkpLCBDRlNUUigiQ29taWMgU2FucyBNUyIpKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQ
cmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlNlZ29lIFVJIFN5bWJvbCIpKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJl
ZmVyZW5jZUtleSksIENGU1RSKCIwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRNaW5pbXVtTG9naWNhbEZvbnRTaXplUHJlZmVyZW5jZUtl
eSksIENGU1RSKCI5IikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjE2Iikp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRE
ZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CiAKICAgICBT
dHJpbmcgZGVmYXVsdERlZmF1bHRFbmNvZGluZyhXRUJfVUlfU1RSSU5HKCJJU08tODg1OS0xIiwg
IlRoZSBkZWZhdWx0LCBkZWZhdWx0IGNoYXJhY3RlciBlbmNvZGluZyBvbiBXaW5kb3dzIikpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4
dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMs
IENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRVc2VyU3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3VsZFByaW50QmFj
a2dyb3VuZHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VGV4dEFyZWFzQXJlUmVzaXphYmxlUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0UnVudGlt
ZUZsYWdzUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NS
ZWdpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJ
bWFnZXNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29waW5nUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGlzcGxheUltYWdlc0tleSksIGtDRkJvb2xlYW5UcnVlKTsK
LSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TG9hZFNpdGVJ
Y29uc0tleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkp
LCBDRlNUUigiMTgwMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5
RXF1aXZhbGVudHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvd3NVUkxzSW5Ub29sVGlwc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkpLCBDRlNUUigi
MSIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UERG
U2NhbGVGYWN0b3JQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheUNhcHRpb25zUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1
bHREZWZhdWx0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRp
b25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJL
aXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3Jp
cHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CisgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVS
THNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdENTU1JlZ2lvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdExvY2FsU3Rv
cmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRFeHBlcmltZW50YWxOb3Rp
ZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRab29tc1RleHRP
bmx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLmdldCgpLCBDRlNUUihXZWJLaXREaXNwbGF5SW1hZ2VzS2V5KSwga0NGQm9vbGVhblRydWUp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRM
b2FkU2l0ZUljb25zS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRp
b25JbnRlcnZhbEtleSksIENGU1RSKCIxODAwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0UmVzcGVjdFN0YW5kYXJkU3R5bGVLZXlFcXVpdmFsZW50c1ByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdl
dCgpLCBDRlNUUihXZWJLaXRTaG93c1VSTHNJblRvb2xUaXBzUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSksIENGU1RSKCIxIikpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRQREZT
Y2FsZUZhY3RvclByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxl
c1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbGlua0JlaGF2aW9yU3RyaW5nUmVmID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhG
b3JtYXQoMCwgMCwgQ0ZTVFIoIiVkIiksIFdlYktpdEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlv
cikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRFZGl0
YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXkpLCBsaW5rQmVoYXZpb3JTdHJpbmdSZWYuZ2V0
KCkpOwotCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEhp
c3RvcnlJdGVtTGltaXRLZXkpLCBDRlNUUigiMTAwMCIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0S2V5KSwgQ0ZT
VFIoIjciKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dEljb25EYXRhYmFzZUxvY2F0aW9uS2V5KSwgQ0ZTVFIoIiIpKTsKLSAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFiYXNlRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdUeXBlUHJlZmVyZW5jZUtleSksIENGU1RSKCIy
IikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRGb250
U21vb3RoaW5nQ29udHJhc3RQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQ
b2xpY3lQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjIiKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KEFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmdQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
UHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtl
eSksIGxpbmtCZWhhdmlvclN0cmluZ1JlZi5nZXQoKSk7CisKKyAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSksIENG
U1RSKCIxMDAwIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBD
RlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpLCBDRlNUUigiNyIpKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SWNvbkRhdGFi
YXNlTG9jYXRpb25LZXkpLCBDRlNUUigiIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5n
ZXQoKSwgQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIo
IjIiKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdl
YktpdEZvbnRTbW9vdGhpbmdDb250cmFzdFByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0Q29va2ll
U3RvcmFnZUFjY2VwdFBvbGljeVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMiIpKTsKKyAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYkdyYW1tYXJDaGVja2lu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoQWxsb3dDb250aW51b3VzU3BlbGxDaGVj
a2luZ1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5
KSwgQ0ZTVFIoIiIpKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVNb2RlbFJl
ZiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlZCIpLCBX
ZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVs
UmVmLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkpLCBjYWNoZU1vZGVsUmVmLmdldCgpKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdEF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGFp
bnROYXRpdmVDb250cm9sc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFBhaW50TmF0aXZl
Q29udHJvbHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJz
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRETlNQcmVmZXRj
aGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RE5TUHJlZmV0Y2hpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmVQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZVByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENG
U1RSKFdlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UmVx
dWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxs
b3dEaXNwbGF5QW5kUnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZT
VFIoV2ViS2l0QWxsb3dEaXNwbGF5QW5kUnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRDdXN0b21FbGVtZW50c0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwg
Q0ZTVFIoV2ViS2l0Q3VzdG9tRWxlbWVudHNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0
KCksIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRXZWJBbmltYXRpb25zTXV0YWJsZVRp
bWVsaW5lc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NDdXN0b21Qcm9wZXJ0
aWVzQW5kVmFsdWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDU1NDdXN0
b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFs
c2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdExp
bmtQcmVsb2FkRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRMaW5rUHJlbG9h
ZEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNZWRpYVByZWxvYWRpbmdFbmFibGVk
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdE1lZGlhUHJlbG9hZGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0VmlzdWFsVmlld3BvcnRBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RS
KFdlYktpdFZpc3VhbFZpZXdwb3J0QVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dENTU09NVmlld1Njcm9sbGluZ0FQSUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cy5nZXQoKSwgQ0ZTVFIoV2Vi
S2l0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
RmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dFJlc2l6ZU9ic2VydmVyRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRSZXNp
emVPYnNlcnZlckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NPTVZpZXdTbW9v
dGhTY3JvbGxpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdENTU09NVmll
d1Ntb290aFNjcm9sbGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsK
IAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDb3JlTWF0
aE1MRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgpLCBDRlNUUihXZWJLaXRDb3JlTWF0aE1MRW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMuZ2V0KCksIENGU1RSKFdlYktpdFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMuZ2V0KCksIENGU1RSKFdlYktpdEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdENvbnRhY3RQaWNrZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdENvbnRhY3RQaWNrZXJBUElFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CiAKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIo
V2ViS2l0QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cy5nZXQoKSwgQ0ZTVFIoV2ViS2l0QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJTUUxFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMu
Z2V0KCksIENGU1RSKFdlYktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
bkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRDU1NJbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLmdldCgp
LCBDRlNUUihXZWJLaXRDU1NJbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LmdldCgpLCBDRlNUUihXZWJLaXRTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKIAotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRPdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtD
RkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMuZ2V0KCks
IENGU1RSKFdlYktpdE92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NG
Qm9vbGVhbkZhbHNlKTsKIAotICAgIGRlZmF1bHRTZXR0aW5ncyA9IGRlZmF1bHRzOworICAgIGRl
ZmF1bHRTZXR0aW5ncygpID0gV1RGTW92ZShkZWZhdWx0cyk7CiAjZW5kaWYKIH0KIApAQCAtMzc5
LDcgKzM4Myw3IEBAIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gV2ViUHJlZmVyZW5jZXM6
OnZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSkKICAgICBpZiAodmFsdWUpCiAgICAgICAgIHJl
dHVybiB2YWx1ZTsKIAotICAgIHJldHVybiBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWZhdWx0U2V0
dGluZ3MsIGtleSk7CisgICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGRlZmF1bHRTZXR0
aW5ncygpLmdldCgpLCBrZXkpOwogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRWYWx1ZUZv
cktleShDRlN0cmluZ1JlZiBrZXksIENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKQpAQCAtNjIwLDcg
KzYyNCw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQ
cmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGlmIChvbWl0RGVmYXVsdHMpIHsKLSAgICAgICAgICAgIENGVHlwZVJlZiBkZWZh
dWx0VmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWZhdWx0U2V0dGluZ3MsIGtleXNbaV0p
OworICAgICAgICAgICAgQ0ZUeXBlUmVmIGRlZmF1bHRWYWx1ZSA9IENGRGljdGlvbmFyeUdldFZh
bHVlKGRlZmF1bHRTZXR0aW5ncygpLmdldCgpLCBrZXlzW2ldKTsKICAgICAgICAgICAgIGlmIChk
ZWZhdWx0VmFsdWUgJiYgQ0ZFcXVhbChkZWZhdWx0VmFsdWUsIHZhbHVlc1tpXSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZjU1NGI5NWQ1MDRhOTM5NTdkYTkxYzk2MGYyYmUw
MDFlOTk5YTNhLi40MzVjNzRkNjhjNTlmYWFhNWQ4OTgxYzY4ODc5ZjIzNGQwNDA4NDQ2IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMjEtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2UgUmV0YWluUHRyPD4gLyBPU09iamVjdFB0cjw+IG1vcmUgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHA6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaDoKKyAg
ICAgICAgKEJpdG1hcENvbnRleHQ6OmNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KToK
KyAgICAgICAgKEJpdG1hcENvbnRleHQ6OkJpdG1hcENvbnRleHQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKFdlYlRocmVhZExvY2tB
ZnRlckRlbGVnYXRlQ2FsbGJhY2tzSGF2ZUNvbXBsZXRlZCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwOgorICAgICAgICAoY3JlYXRlQml0bWFw
Q29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKiBJbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1h
Z2VDRy5jcHA6CisgICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OnBpeGVscyBjb25z
dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoK
KyAgICAgICAgKFdUUjo6Y3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UpOgorICAgICAgICAoV1RS
OjpjcmVhdGVDR0NvbnRleHRGcm9tSW1hZ2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlv
bjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQpOgorCiAyMDIxLTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBBcHBsZUxhbmd1
YWdlc1Rlc3QuVXBkYXRlQXBwbGVMYW5ndWFnZXMgQVBJIHRlc3QKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCmluZGV4IDViYzA0MDNiODExYmM2NTVk
ZDIwZmEyZDQwOTIyOTlmMGU0MDdkODUuLjhlNmRkNWZlZDdkMmMyZWIzOWJjZWViYjFkNDY4Y2Nl
ZDU5MjhjZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9y
dENHLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVC
aXRtYXBDb250ZXh0KHNpemVfdCBwaXhlbHNXaWRlLCBzaXplX3QgcGl4ZWxzSGlnaCwKICAgICAK
ICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHBy
ZXZlbnRzIGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIgdmll
dyBpcyBkcmF3biBpbnRvIGl0LgogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIsIHBpeGVsc1dp
ZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShidWZmZXIsIHBpeGVs
c1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAg
ICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJlbmRlclRyZWU6
IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAsIDB4JXgpIGZh
aWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRlcywgY29sb3JT
cGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMySG9zdCk7CiAgICAgICAgIGZyZWUoYnVmZmVyKTsKQEAgLTEzNCw2ICsxMzQsNiBA
QCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dChzaXplX3QgcGl4ZWxz
V2lkZSwgc2l6ZV90IHBpeGVsc0hpZ2gsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29u
dGV4dChidWZmZXIsIGNvbnRleHQpOworICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVC
eUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChidWZmZXIsIFdURk1vdmUoY29udGV4dCkpOwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBw
b3J0Q0cuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCmlu
ZGV4IDQxMjRiMGNhZWRjZTczOGY0NjQ2Y2RjMzhhN2I1MTZhMWE3NjFjMDguLmI3OTRiMjE5OGVk
OGEwYWExNDcyZDMwYjkzYTNhYmZhY2M3MDI3YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCkBAIC00Nyw5ICs0Nyw5IEBAIHR5cGVkZWYgSEJJVE1B
UCBQbGF0Zm9ybUJpdG1hcEJ1ZmZlcjsKIAogY2xhc3MgQml0bWFwQ29udGV4dCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEJpdG1hcENvbnRleHQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1h
cENvbnRleHQ+IGNyZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KFBsYXRmb3JtQml0bWFw
QnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxCaXRt
YXBDb250ZXh0PiBjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dChQbGF0Zm9ybUJpdG1h
cEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0NvbnRleHRSZWY+JiYgY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRleHQoYnVmZmVyLCBjb250
ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcENvbnRleHQoYnVmZmVy
LCBXVEZNb3ZlKGNvbnRleHQpKSk7CiAgICAgfQogCiAgICAgfkJpdG1hcENvbnRleHQoKQpAQCAt
NjYsOSArNjYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICBCaXRtYXBDb250ZXh0KFBs
YXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAgQml0
bWFwQ29udGV4dChQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBidWZmZXIsIFJldGFpblB0cjxDR0NvbnRl
eHRSZWY+JiYgY29udGV4dCkKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgICAgICwg
bV9jb250ZXh0KGFkb3B0Q0YoY29udGV4dCkpCisgICAgICAgICwgbV9jb250ZXh0KFdURk1vdmUo
Y29udGV4dCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDNkY2U1YWM1YzMyOTFhMzYyZTQ3ZWI0MjBlNzc3MjFlODJiNWI0
YzQuLmI1MWUxYWVmZTJkZmY2YWNlZWI3NjQzYjNiNDMyZjIxZTQwNzliYWUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQAog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTE4MTAsMjAgKzE4MTEsMTggQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUoY29uc3QgV1RSOjpUZXN0
T3B0aW9ucyYgb3B0aW9ucywgUmVzZXQKIC8vIGxvY2sgdG8gcHJldmVudCBwb3RlbnRpYWxseSBy
ZS1lbnRlcmluZyBXZWJDb3JlLgogc3RhdGljIHZvaWQgV2ViVGhyZWFkTG9ja0FmdGVyRGVsZWdh
dGVDYWxsYmFja3NIYXZlQ29tcGxldGVkKCkKIHsKLSAgICBkaXNwYXRjaF9zZW1hcGhvcmVfdCBk
ZWxlZ2F0ZVNlbWFwaG9yZSA9IGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCk7CisgICAgYXV0
byBkZWxlZ2F0ZVNlbWFwaG9yZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc2VtYXBob3JlX2Ny
ZWF0ZSgwKSk7CiAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIGRpc3BhdGNoX3NlbWFwaG9y
ZV9zaWduYWwoZGVsZWdhdGVTZW1hcGhvcmUpOworICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVf
c2lnbmFsKGRlbGVnYXRlU2VtYXBob3JlLmdldCgpKTsKICAgICB9KTsKIAotICAgIHdoaWxlIChk
aXNwYXRjaF9zZW1hcGhvcmVfd2FpdChkZWxlZ2F0ZVNlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9O
T1cpKSB7CisgICAgd2hpbGUgKGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KGRlbGVnYXRlU2VtYXBo
b3JlLmdldCgpLCBESVNQQVRDSF9USU1FX05PVykpIHsKICAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CiAgICAgICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0Rl
ZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIFdlYlRocmVhZExvY2soKTsKLQotICAgIGRpc3BhdGNoX3JlbGVh
c2UoZGVsZWdhdGVTZW1hcGhvcmUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAppbmRleCBhOWJhNjkxODMxMThiYjgz
MjNjOGQ0OWIxZmQzMzlhNTFmNTM5YjYwLi4zOTVkMzAyN2I5ZDg3ZWE4OTU2ZTZiMDAwODdjNjIx
NDhhMjY3ZDhlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1w
U3VwcG9ydFdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1
cHBvcnRXaW4uY3BwCkBAIC05MCw4ICs5MCw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVh
dGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAK
ICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBpbmZvLmJtV2lk
dGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7Cisg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJp
dHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwgaW5mby5ibVdpZHRoQnl0ZXMsIGNv
bG9yU3BhY2UuZ2V0KCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCB8IGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3QpKTsKICNlbGlmIFVTRShDQUlSTykgCiAgICAgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25l
ZCBjaGFyKilpbmZvLmJtQml0cywgQ0FJUk9fRk9STUFUX0FSR0IzMiwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGgsIGlu
Zm8uYm1IZWlnaHQsIGluZm8uYm1XaWR0aEJ5dGVzKTsgCkBAIC0xMTIsNSArMTExLDUgQEAgUmVm
UHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9u
c2NyZWVuLCBib29sIGluY3JlbWUKICAgICBhdXRvIGNvbnRleHQgPSByZW5kZXJUYXJnZXQuZ2V0
KCk7CiAjZW5kaWYgCiAKLSAgICByZXR1cm4gQml0bWFwQ29udGV4dDo6Y3JlYXRlQnlBZG9wdGlu
Z0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBjb250ZXh0KTsKKyAgICByZXR1cm4gQml0bWFwQ29u
dGV4dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoYml0bWFwLCBXVEZNb3ZlKGNv
bnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdElu
dm9jYXRpb25DRy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9u
Q0cuY3BwCmluZGV4IDAxYzUzMWE5YjZhY2U4ZTgxNjk0OGY2NzZjZTYzMWY1Mjc5NGI2YzQuLjRl
YzljMjBlOTgwZjVlMDdlZmYzMzM2OGFmOTgxZjViOGI0OTdiMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcApAQCAtNDUsNyArNDUsNyBAQCBz
dGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7
CiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4
dEZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCitzdGF0aWMgUmV0YWluUHRyPENHQ29udGV4
dFJlZj4gY3JlYXRlQ0dDb250ZXh0RnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIHsKICAg
ICBzaXplX3QgcGl4ZWxzV2lkZSA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6ZV90
IHBpeGVsc0hpZ2ggPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKQEAgLTUzLDE1ICs1MywxNSBA
QCBzdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UpCiAKICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNv
bG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGlt
YWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIGF1dG8gY29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIENHQ29udGV4
dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVs
c0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsKKyAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNI
aWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIGlmICghY29udGV4
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29u
dGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoKSwgaW1hZ2UpOwor
ICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBp
eGVsc1dpZGUsIHBpeGVsc0hpZ2gpLCBpbWFnZSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAK
LXN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ0dDb250ZXh0RnJvbUltYWdlKFdLSW1hZ2VSZWYg
d2tJbWFnZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDR0NvbnRleHRG
cm9tSW1hZ2UoV0tJbWFnZVJlZiB3a0ltYWdlKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENG
KFdLSW1hZ2VDcmVhdGVDR0ltYWdlKHdrSW1hZ2UpKTsKICAgICByZXR1cm4gY3JlYXRlQ0dDb250
ZXh0RnJvbUNHSW1hZ2UoaW1hZ2UuZ2V0KCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgVGVz
dEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFNuYXBzaG90UmVz
dWx0VHlwZSBzbmFwc2hvCiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoImR1bXBQaXhlbHNBbmRD
b21wYXJlV2l0aEV4cGVjdGVkOiBpbWFnZSBpcyBudWxsXG4iKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0ID0gYWRvcHRDRihjcmVhdGVDR0NvbnRleHRG
cm9tSW1hZ2Uod2tJbWFnZSkpOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlQ0dDb250ZXh0RnJv
bUltYWdlKHdrSW1hZ2UpOwogICAgICAgICBpbWFnZVNpemUgPSBXS0ltYWdlR2V0U2l6ZSh3a0lt
YWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTbmFwc2hvdFJlc3VsdFR5cGU6OldlYlZp
ZXc6CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0Fu
ZENvbXBhcmVXaXRoRXhwZWN0ZWQoU25hcHNob3RSZXN1bHRUeXBlIHNuYXBzaG8KICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQ6IGltYWdl
IGlzIG51bGxcbiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNv
bnRleHQgPSBhZG9wdENGKGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKGltYWdlLmdldCgpKSk7
CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQo
KSk7CiAgICAgICAgIGltYWdlU2l6ZSA9IFdLU2l6ZU1ha2UoQ0dJbWFnZUdldFdpZHRoKGltYWdl
LmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwogICAgICAgICBicmVhazsK
ICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="442097"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>