<?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>78503</bug_id>
          
          <creation_ts>2012-02-13 09:21:01 -0800</creation_ts>
          <short_desc>Web Inspector: [InspectorIndexedDB] Pass data entries from object stores and indexes to front-end.</short_desc>
          <delta_ts>2012-02-15 04:19:32 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75386</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>pnormand</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555321</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-13 09:21:01 -0800</bug_when>
    <thetext>Pass data entries from object stores and indexes to front-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555327</commentid>
    <comment_count>1</comment_count>
      <attachid>126782</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-13 09:29:53 -0800</bug_when>
    <thetext>Created attachment 126782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555333</commentid>
    <comment_count>2</comment_count>
      <attachid>126782</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-13 09:39:01 -0800</bug_when>
    <thetext>Comment on attachment 126782
Patch

Attachment 126782 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11510895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555348</commentid>
    <comment_count>3</comment_count>
      <attachid>126787</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-13 09:59:25 -0800</bug_when>
    <thetext>Created attachment 126787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555358</commentid>
    <comment_count>4</comment_count>
      <attachid>126787</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-13 10:20:46 -0800</bug_when>
    <thetext>Comment on attachment 126787
Patch

Attachment 126787 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11509820</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555361</commentid>
    <comment_count>5</comment_count>
      <attachid>126790</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-13 10:28:02 -0800</bug_when>
    <thetext>Created attachment 126790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555429</commentid>
    <comment_count>6</comment_count>
      <attachid>126790</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 11:38:59 -0800</bug_when>
    <thetext>Comment on attachment 126790
Patch

Attachment 126790 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11506886

New failing tests:
http/tests/inspector/indexeddb/database-data.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556036</commentid>
    <comment_count>7</comment_count>
      <attachid>126790</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-14 00:09:48 -0800</bug_when>
    <thetext>Comment on attachment 126790
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1456
&gt; +ScriptValue SerializedScriptValue::deserializeForInspector(ScriptState* scriptState)

We may guard it with #if ENABLE(INSPECTOR)

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1458
&gt; +    JSValue value = deserialize(scriptState, scriptState-&gt;dynamicGlobalObject(), 0);

It might be safer to use lexicalGlobalObject() since it would work even if there is no js running in the script state.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:2263
&gt; +    V8LocalContext localContext;

This will create a new context. You should take one from the ScriptState instead and enter it here instead. r- for this.

&gt; Source/WebCore/inspector/Inspector.json:980
&gt; +                    { &quot;name&quot;: &quot;type&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Key type.&quot; },

This one should be enum.

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:333
&gt; +        break;

We should report an error here if the type is invalid.

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:340
&gt; +    RefPtr&lt;InspectorObject&gt; lower = keyRange-&gt;getObject(&quot;lower&quot;);

Could we reuse generated classes for parsing protocol messages? They seem to be already capable of validating InspectorValues and performing runtimeCast on them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556270</commentid>
    <comment_count>8</comment_count>
      <attachid>126969</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-14 06:26:46 -0800</bug_when>
    <thetext>Created attachment 126969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556272</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 06:28:49 -0800</bug_when>
    <thetext>Attachment 126969 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
From git://git.webkit.org/WebKit
   7073cfc..20e4c62  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 107708 = 7073cfc483f9201a0237ac9090c1ca6bb424de97
r107709 = 20e4c620dea55354276b040b3c141192647fc265
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
Using index info to reconstruct a base tree...
&lt;stdin&gt;:1578: trailing whitespace.
        
&lt;stdin&gt;:1647: trailing whitespace.
    
&lt;stdin&gt;:1657: trailing whitespace.
    
&lt;stdin&gt;:1672: trailing whitespace.
        return 0;        
&lt;stdin&gt;:1674: trailing whitespace.
    
warning: squelched 7 whitespace errors
warning: 12 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 168776 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556299</commentid>
    <comment_count>10</comment_count>
      <attachid>126969</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-14 07:48:51 -0800</bug_when>
    <thetext>Comment on attachment 126969
Patch

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

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:443
&gt; +        RefPtr&lt;InspectorObject&gt; wrappedValue = m_injectedScript.wrapSerializedObject(value.get(), &quot;indexeddb&quot;);

Could you use a constant for this? I don&apos;t see where you release the group. If you release objects on instance basis, you can leave this group name empty.

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:467
&gt; +            m_frontendProvider-&gt;frontend()-&gt;objectStoreDataLoaded(m_requestId, m_result.release(), hasMore);

Provider implies that front-end field can be disposed. Should you check it here?

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:600
&gt; +static Frame* assertFrame(const String&amp; frameId, InspectorPageAgent* pageAgent, ErrorString* error)

ErrorString is usually the first parameter (as opposed to ExceptionCode)

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:610
&gt; +static Document* assertDocument(Frame* frame, ErrorString* error)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556313</commentid>
    <comment_count>11</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-14 08:16:14 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 126790 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126790&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1456
&gt; &gt; +ScriptValue SerializedScriptValue::deserializeForInspector(ScriptState* scriptState)
&gt; 
&gt; We may guard it with #if ENABLE(INSPECTOR)
Done.

&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1458
&gt; &gt; +    JSValue value = deserialize(scriptState, scriptState-&gt;dynamicGlobalObject(), 0);
&gt; 
&gt; It might be safer to use lexicalGlobalObject() since it would work even if there is no js running in the script state.
Done.

&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:2263
&gt; &gt; +    V8LocalContext localContext;
&gt; 
&gt; This will create a new context. You should take one from the ScriptState instead and enter it here instead. r- for this.
Done.

&gt; &gt; Source/WebCore/inspector/Inspector.json:980
&gt; &gt; +                    { &quot;name&quot;: &quot;type&quot;, &quot;type&quot;: &quot;number&quot;, &quot;description&quot;: &quot;Key type.&quot; },
&gt; 
&gt; This one should be enum.
Done.

&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:333
&gt; &gt; +        break;
&gt; 
&gt; We should report an error here if the type is invalid.
Done.

&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:340
&gt; &gt; +    RefPtr&lt;InspectorObject&gt; lower = keyRange-&gt;getObject(&quot;lower&quot;);
&gt; 
&gt; Could we reuse generated classes for parsing protocol messages? They seem to be already capable of validating InspectorValues and performing runtimeCast on them.
Unfortunately we don&apos;t have typed getters yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556315</commentid>
    <comment_count>12</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-14 08:17:10 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 126969 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126969&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:443
&gt; &gt; +        RefPtr&lt;InspectorObject&gt; wrappedValue = m_injectedScript.wrapSerializedObject(value.get(), &quot;indexeddb&quot;);
&gt; 
&gt; Could you use a constant for this? I don&apos;t see where you release the group. If you release objects on instance basis, you can leave this group name empty.
Removed group name.

&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:467
&gt; &gt; +            m_frontendProvider-&gt;frontend()-&gt;objectStoreDataLoaded(m_requestId, m_result.release(), hasMore);
&gt; 
&gt; Provider implies that front-end field can be disposed. Should you check it here?
Thanks, I forgot this check in the beginning of this method.

&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:600
&gt; &gt; +static Frame* assertFrame(const String&amp; frameId, InspectorPageAgent* pageAgent, ErrorString* error)
&gt; 
&gt; ErrorString is usually the first parameter (as opposed to ExceptionCode)
Done.

&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:610
&gt; &gt; +static Document* assertDocument(Frame* frame, ErrorString* error)
&gt; 
&gt; ditto
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556316</commentid>
    <comment_count>13</comment_count>
      <attachid>126969</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 08:18:42 -0800</bug_when>
    <thetext>Comment on attachment 126969
Patch

Attachment 126969 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11514343

New failing tests:
http/tests/inspector/indexeddb/database-data.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556317</commentid>
    <comment_count>14</comment_count>
      <attachid>126981</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-14 08:19:26 -0800</bug_when>
    <thetext>Created attachment 126981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556319</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 08:21:17 -0800</bug_when>
    <thetext>Attachment 126981 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
Using index info to reconstruct a base tree...
&lt;stdin&gt;:1578: trailing whitespace.
        
&lt;stdin&gt;:1647: trailing whitespace.
    
&lt;stdin&gt;:1657: trailing whitespace.
    
&lt;stdin&gt;:1672: trailing whitespace.
        return 0;        
&lt;stdin&gt;:1674: trailing whitespace.
    
warning: squelched 7 whitespace errors
warning: 12 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 168776 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556341</commentid>
    <comment_count>16</comment_count>
      <attachid>126981</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 09:23:37 -0800</bug_when>
    <thetext>Comment on attachment 126981
Patch

Attachment 126981 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11523281

New failing tests:
http/tests/inspector/indexeddb/database-data.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556375</commentid>
    <comment_count>17</comment_count>
      <attachid>126981</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 10:12:18 -0800</bug_when>
    <thetext>Comment on attachment 126981
Patch

Attachment 126981 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11518335

New failing tests:
http/tests/inspector/indexeddb/database-data.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556956</commentid>
    <comment_count>18</comment_count>
      <attachid>126981</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-14 23:16:13 -0800</bug_when>
    <thetext>Comment on attachment 126981
Patch

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

&gt; Source/WebCore/inspector/InjectedScript.cpp:181
&gt; +    ScriptValue scriptValue = serializedScriptValue-&gt;deserializeForInspector(m_injectedScriptObject.scriptState());

Can deserialization fail? If so, we should check for an empty scriptValue here to avoid crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557151</commentid>
    <comment_count>19</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-15 04:19:32 -0800</bug_when>
    <thetext>Committed r107801: &lt;http://trac.webkit.org/changeset/107801&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126782</attachid>
            <date>2012-02-13 09:29:53 -0800</date>
            <delta_ts>2012-02-13 09:59:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78503-20120213212950.patch</filename>
            <type>text/plain</type>
            <size>66246</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFkMWZlZWIxODYzZGZj
ODEyZGE1MzFkOTYzMTY2NmYzNjc3NTk4My4uMTkyNjcyMDQwNzZmOGNhNWU3YTRiYTMyZmQyMTQx
NWZlZmY3NjZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAyLTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtJbnNwZWN0b3JJbmRleGVkREJdIFBhc3MgZGF0YSBlbnRyaWVzIGZyb20gb2JqZWN0IHN0
b3JlcyBhbmQgaW5kZXhlcyB0byBmcm9udC1lbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZUZvckluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAo
SW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6YXNzZXJ0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9t
S2V5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlSYW5nZUZyb21JREJL
ZXlSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBl
Ll9sb2FkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5sb2FkT2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUubG9hZEluZGV4RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
QlJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUuX3JlcXVlc3REYXRhLmlubmVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fcmVxdWVzdERh
dGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3Rv
dHlwZS5yZXF1ZXN0T2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX29iamVjdFN0b3JlRGF0YUxvYWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJl
cXVlc3RJbmRleERhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyLnByb3RvdHlwZS5faW5kZXhEYXRhTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lRGV0YWNoZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZGF0
YWJhc2VSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFu
YWdlci5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJS
ZXF1ZXN0TWFuYWdlci5EYXRhUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCRGlzcGF0Y2hlci5wcm90b3R5cGUuZGF0YWJhc2VMb2FkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLm9iamVjdFN0b3JlRGF0YUxvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUu
aW5kZXhEYXRhTG9hZGVkKToKKwogMjAxMi0wMi0xMyAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRv
d0BnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gUmV2aXNlIGNvbmZpZ3VyYXRpb24gZm9yIE1I
VE1MCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAzYWM2ZWNmNTgxMzQzYzYyNWE2NDJkNjFiYzRlMjVkOTU5N2M5ZGU0
Li5jNjk0MmY0NWRjMWU4ZmI5MjdiZjc5NzRlYzI3MGMwMjA2MzRkYTJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTE0NTIsNiArMTQ1MiwxMiBAQCBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJp
YWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBy
ZXN1bHQuZmlyc3Q7CiB9CiAKK1NjcmlwdFZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemVGb3JJbnNwZWN0b3IoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQoreworICAgIEpT
VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKSwgMCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRl
LT5nbG9iYWxEYXRhKCksIHZhbHVlKTsKK30KKwogSlNWYWx1ZVJlZiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiBkZXN0aW5hdGlvbkNvbnRleHQsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbiwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzKQogewogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoZGVzdGluYXRpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggY2Fl
ZDY0NzNjMDRjNmVkNmMzNzJiNDZhZjEyOGI5ZjE1NjI4NTVhMC4uNDNmNzE3ZTViZTJiY2VkOGIw
ODQ3M2Q4ZWI1MDYyMzU4Y2RkZjlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgog
ICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24sIE1lc3NhZ2VQb3J0QXJyYXkqKTsKICAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAorICAgIFNjcmlwdFZhbHVlIGRl
c2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0YXRlKik7CisKICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIH5TZXJpYWxpemVkU2Ny
aXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDkxODFiNzNmNTNjOWM2MWI2MWI3YmQyODIzOWUwMzll
M2U2NGU3ZDAuLjM0MDk0ODI0YWQyYzIwZTdmNzJlMjZkNmM1OGY5YmY0NDg3NjAyMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjI1OCw0ICsyMjU4LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhCiAgICAg
cmV0dXJuIGRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZSgpOwogfQogCitTY3JpcHRWYWx1ZSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0YXRlKikK
K3sKKyAgICBWOExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CisgICAgcmV0dXJuIFNjcmlwdFZh
bHVlKGRlc2VyaWFsaXplKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IGQzYTY2OGI5ODNjNDBhYjRiMzhhYTY3N2ZkMzc3MzNiMzMwNGMxZTIuLjMzYTBlYmM1YjM2NjJj
NDRiMTUxOTMwZTAxNjVhNzlkY2FmZDA5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC03Niw2ICs3Niw4IEBAIHB1Ymxp
YzoKICAgICAvLyBjYXNlIG9mIGZhaWx1cmUuCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRl
c2VyaWFsaXplKE1lc3NhZ2VQb3J0QXJyYXkqID0gMCk7CiAKKyAgICBTY3JpcHRWYWx1ZSBkZXNl
cmlhbGl6ZUZvckluc3BlY3RvcihTY3JpcHRTdGF0ZSopOworCiBwcml2YXRlOgogICAgIGVudW0g
U3RyaW5nRGF0YU1vZGUgewogICAgICAgICBTdHJpbmdWYWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2OTIyMjkw
YmY0YTQzYWY2ZmE2NWFkNzcuLjhmNzQ1YWYwZTI5ZmJjMGJmNjEyZGIzYTMyMWQ3ZGI3ZmM3YTdi
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAt
MTU0LDcgKzE1NCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVkU2NyaXB0
Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsCiB9CiAjZW5kaWYKIAotUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KFNjcmlw
dFZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChTY3JpcHRWYWx1ZSB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVl
KCkpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24obV9pbmplY3RlZFNjcmlw
dE9iamVjdCwgIndyYXBPYmplY3QiKTsKQEAgLTE3Niw2ICsxNzYsMTIgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIGcKICAgICByZXR1cm4gd3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZShub2Rl
KSwgZ3JvdXBOYW1lKTsKIH0KIAorUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVk
U2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0Cit7CisgICAg
U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRlc2VyaWFs
aXplRm9ySW5zcGVjdG9yKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Cisg
ICAgcmV0dXJuIHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUsIGdyb3VwTmFtZSk7Cit9CisKIHZvaWQg
SW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKCFo
YXNOb1ZhbHVlKCkpOwpAQCAtMTkzLDcgKzE5OSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJl
bGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogICAgIHJlbGVhc2VG
dW5jdGlvbi5jYWxsKCk7CiB9CiAKLWJvb2wgSW5qZWN0ZWRTY3JpcHQ6OmNhbkFjY2Vzc0luc3Bl
Y3RlZFdpbmRvdygpCitib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3coKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggZjJiN2FjMTUyYjM4YTRlODk3NDZhNzBiZjMx
NTM1ZjQxM2ZiODYxNC4uYTRhZDA5NjFiNGRmZmJiOGI2NmMyYzZiYjNkYTI4MzY4Mzg3ZmM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTg3LDggKzg3
LDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBDYWxsRnJh
bWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB3cmFwT2JqZWN0KFNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFt
ZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2NyaXB0VmFs
dWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKKyAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gd3JhcFNlcmlhbGl6ZWRPYmplY3QoU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0OwogICAgIHZv
aWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0
IFN0cmluZyYpOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQpAQCAtOTgsNyArOTksNyBA
QCBwcml2YXRlOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sp
KFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJbnNwZWN0
ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93
KCk7CisgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKICAgICB2b2lk
IG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCk7CiAgICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRGdW5jdGlv
bkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29sKiB3YXNUaHJvd24p
OwogICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBmZmQyMmRlMjFkYjY4ZDhiMjU3MWUxMzMz
Y2EzZDljZGZiNDY5OTJlLi4yM2IxYzQ1NGMzYjk5NmEyNjMzY2FlNWE0YjMzNDk5MGMwYzgwYTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC05NzEsNiArOTcx
LDM5IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidW5pcXVlIiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCBpbmRleCBpcyB1bmlxdWUuIiB9LAog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm11bHRpRW50cnkiLCAidHlwZSI6ICJib29s
ZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIGluZGV4IGFsbG93cyBtdWx0aXBsZSBlbnRy
aWVzIGZvciBhIGtleS4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJLZXkiLAorICAgICAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIktleS4i
LAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiS2V5IHR5
cGUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm51bWJlciIsICJ0eXBlIjog
Im51bWJlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgdmFsdWUu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0cmluZyIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTdHJpbmcgdmFsdWUuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGUiLCAidHlwZSI6ICJudW1iZXIi
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRGF0ZSB2YWx1ZS4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXJyYXkiLCAidHlwZSI6ICJhcnJheSIsICJvcHRp
b25hbCI6IHRydWUsICJpdGVtcyI6IHsgIiRyZWYiOiAiS2V5IiB9LCAiZGVzY3JpcHRpb24iOiAi
QXJyYXkgdmFsdWUuIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiS2V5UmFuZ2UiLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIktl
eSByYW5nZS4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImxvd2VyIiwgIiRyZWYiOiAiS2V5IiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIkxvd2VyIGJvdW5kLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ1cHBlciIsICIkcmVmIjogIktleSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJVcHBlciBib3VuZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibG93ZXJPcGVuIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVl
IGxvd2VyIGJvdW5kIGlzIG9wZW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVwcGVyT3BlbiIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSB1
cHBlciBib3VuZCBpcyBvcGVuLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkRhdGFFbnRyeSIsCisgICAg
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiS2V5LiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAia2V5IiwgIiRyZWYiOiAiS2V5IiwgImRlc2NyaXB0aW9uIjog
IktleS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJpbWFyeUtleSIsICIk
cmVmIjogIktleSIsICJkZXNjcmlwdGlvbiI6ICJQcmltYXJ5IGtleS4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAiJHJlZiI6ICJSdW50aW1lLlJlbW90ZU9iamVj
dCIsICJkZXNjcmlwdGlvbiI6ICJWYWx1ZS4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAgICAg
ICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsKQEAgLTk5NCwxMCArMTAy
NywyNCBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3REYXRhYmFzZSIsCiAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0
IGlkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYi
OiAiTmV0d29yay5GcmFtZUlkIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRh
dGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImZyYW1lSWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAiZGVzY3JpcHRpb24i
OiAiRnJhbWUgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNl
TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIg
fQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJl
cXVlc3RzIGRhdGFiYXNlIHdpdGggZ2l2ZW4gbmFtZSBpbiBnaXZlbiBmcmFtZS4iCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3RE
YXRhIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9u
IjogIlJlcXVlc3QgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1l
SWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgaWQu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIsICJ0eXBl
IjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RTdG9yZU5hbWUiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiT2JqZWN0IHN0b3JlIG5hbWUuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImluZGV4TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJJbmRleCBuYW1lLCBlbXB0eSBzdHJpbmcgZm9yIG9iamVjdCBzdG9yZSBkYXRhIHJlcXVl
c3RzLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJza2lwQ291bnQiLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiByZWNvcmRzIHRvIHNraXAu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhZ2VTaXplIiwgInR5cGUiOiAi
aW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgcmVjb3JkcyB0byBmZXRjaC4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAia2V5UmFuZ2UiLCAiJHJlZiI6ICJLZXlS
YW5nZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJLZXkgcmFuZ2UuIiB9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVz
dHMgZGF0YSBmcm9tIG9iamVjdCBzdG9yZSBvciBpbmRleC4iCiAgICAgICAgICAgICB9CiAgICAg
ICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xMDE0LDYgKzEwNjEsMjIgQEAKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcyIsICIkcmVmIjogIkRhdGFiYXNlV2l0aE9i
amVjdFN0b3JlcyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSB3aXRoIGFuIGFycmF5IG9mIG9i
amVjdCBzdG9yZXMuIiB9CiAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJvYmplY3RTdG9yZURhdGFMb2FkZWQi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
UmVxdWVzdCBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0U3Rv
cmVEYXRhRW50cmllcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJEYXRh
RW50cnkiIH0sICJkZXNjcmlwdGlvbiI6ICJBcnJheSBvZiBvYmplY3Qgc3RvcmUgZGF0YSBlbnRy
aWVzLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYXNNb3JlIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0aGVyZSBhcmUgbW9yZSBlbnRy
aWVzIHRvIGZldGNoIGluIHRoZSBnaXZlbiByYW5nZS4iIH0KKyAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImlu
ZGV4RGF0YUxvYWRlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJpbmRleERhdGFFbnRyaWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVm
IjogIkRhdGFFbnRyeSIgfSwgImRlc2NyaXB0aW9uIjogIkFycmF5IG9mIGluZGV4IGRhdGEgZW50
cmllcy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFzTW9yZSIsICJ0eXBl
IjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdGhlcmUgYXJlIG1vcmUgZW50
cmllcyB0byBmZXRjaCBpbiB0aGUgZ2l2ZW4gcmFuZ2UuIiB9CisgICAgICAgICAgICAgICAgXQog
ICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlYzUwYmM1Zjg1NGY2MDdlZDUw
NGY2YWE3NTQ0MWQ1NmQwNTdkOWE1Li4zMzllZWZmN2MwMWU1OWQyYTJkNzg3ZWE0NTQ1N2Q3MDE2
MDRmYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICNl
bmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgbV9hZ2VudHMuYXBwZW5k
KEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBwYWdlQWdlbnQp
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggYjAwNTI1
OTY2NjExZjZhZTllMDJjNGQ0NTU5YTBhZTQ3ZDI3MjBjMi4uOTAxZmUxMDlkMjkyNmQ4Mzk5MWM0
NzRjOTk1NDRiYzA3MTFlNTI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC00MCwxMiArNDAsMTcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyb3VwU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJREJD
YWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklE
QktleS5oIgorI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9u
aXRvci5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCkBAIC01Nyw4ICs2MiwxMiBAQAogCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJy
YXk7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpTZWN1cml0eU9yaWdp
bldpdGhEYXRhYmFzZU5hbWVzOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWRE
Qjo6RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6
OkluZGV4ZWREQjo6RGF0YUVudHJ5OwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4
ZWREQjo6S2V5OwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5UmFu
Z2U7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsK
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg7
CiAKQEAgLTEwMiw2ICsxMTEsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKSB7IH0KIH07CiAKK2NsYXNzIEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2sgOiBw
dWJsaWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2soKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxs
YmFjaygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25Db21wbGV0ZSgpIHsgfQorcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrKCkgeyB9Cit9OworCiBjbGFzcyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2sg
OiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEdldERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gY3JlYXRlKEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpGcm9udGVuZFByb3ZpZGVyKiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQpAQCAtMjYyLDEwICsyODYsMjY3IEBAIHBy
aXZhdGU6CiAgICAgaW50IG1fcmVxdWVzdElkOwogfTsKIAorc3RhdGljIFBhc3NSZWZQdHI8SURC
S2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQorewor
ICAgIFJlZlB0cjxJREJLZXk+IGlkYktleTsKKworICAgIGludCB0eXBlOworICAgIGlmICgha2V5
LT5nZXROdW1iZXIoInR5cGUiLCAmdHlwZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgorICAgIGNhc2UgSURC
S2V5OjpNaW5UeXBlOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIElEQktleTo6TnVtYmVy
VHlwZTogeworICAgICAgICBkb3VibGUgbnVtYmVyOworICAgICAgICBpZiAoIWtleS0+Z2V0TnVt
YmVyKCJudW1iZXIiLCAmbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZGJLZXkgPSBJREJLZXk6OmNyZWF0ZU51bWJlcihudW1iZXIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6IHsKKyAgICAgICAgU3RyaW5nIHN0cmlu
ZzsKKyAgICAgICAgaWYgKCFrZXktPmdldFN0cmluZygic3RyaW5nIiwgJnN0cmluZykpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVTdHJpbmco
c3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSURCS2V5OjpEYXRlVHlw
ZTogeworICAgICAgICBkb3VibGUgZGF0ZTsKKyAgICAgICAgaWYgKCFrZXktPmdldE51bWJlcigi
ZGF0ZSIsICZkYXRlKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZGJLZXkgPSBJ
REJLZXk6OmNyZWF0ZURhdGUoZGF0ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IElEQktleTo6QXJyYXlUeXBlOgorICAgICAgICBJREJLZXk6OktleUFycmF5IGtleUFycmF5Owor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5ID0ga2V5LT5nZXRBcnJheSgiYXJy
YXkiKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsr
aSkgeworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGFycmF5LT5n
ZXQoaSk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CisgICAg
ICAgICAgICBpZiAoIXZhbHVlLT5hc09iamVjdCgmb2JqZWN0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIGtleUFycmF5LmFwcGVuZChpZGJLZXlGcm9tSW5zcGVjdG9y
T2JqZWN0KG9iamVjdC5nZXQoKSkpOworICAgICAgICB9CisgICAgICAgIGlkYktleSA9IElEQktl
eTo6Y3JlYXRlQXJyYXkoa2V5QXJyYXkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
dXJuIGlkYktleS5yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShJbnNwZWN0b3JPYmplY3QqIGtleVJhbmdlKQorewor
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvd2VyID0ga2V5UmFuZ2UtPmdldE9iamVjdCgi
bG93ZXIiKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB1cHBlciA9IGtleVJhbmdlLT5n
ZXRPYmplY3QoInVwcGVyIik7CisgICAgUmVmUHRyPElEQktleT4gaWRiTG93ZXIgPSBsb3dlciA/
IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QobG93ZXIuZ2V0KCkpIDogMDsKKyAgICBSZWZQdHI8
SURCS2V5PiBpZGJVcHBlciA9IHVwcGVyID8gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdCh1cHBl
ci5nZXQoKSkgOiAwOworCisgICAgYm9vbCBsb3dlck9wZW47CisgICAgaWYgKCFrZXlSYW5nZS0+
Z2V0Qm9vbGVhbigibG93ZXJPcGVuIiwgJmxvd2VyT3BlbikpCisgICAgICAgIHJldHVybiAwOwor
ICAgIElEQktleVJhbmdlOjpMb3dlckJvdW5kVHlwZSBsb3dlckJvdW5kVHlwZSA9IGxvd2VyT3Bl
biA/IElEQktleVJhbmdlOjpMb3dlckJvdW5kT3BlbiA6IElEQktleVJhbmdlOjpMb3dlckJvdW5k
Q2xvc2VkOworCisgICAgYm9vbCB1cHBlck9wZW47CisgICAgaWYgKCFrZXlSYW5nZS0+Z2V0Qm9v
bGVhbigidXBwZXJPcGVuIiwgJnVwcGVyT3BlbikpCisgICAgICAgIHJldHVybiAwOworICAgIElE
QktleVJhbmdlOjpVcHBlckJvdW5kVHlwZSB1cHBlckJvdW5kVHlwZSA9IHVwcGVyT3BlbiA/IElE
QktleVJhbmdlOjpVcHBlckJvdW5kT3BlbiA6IElEQktleVJhbmdlOjpVcHBlckJvdW5kQ2xvc2Vk
OworCisgICAgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSA9IElEQktleVJhbmdlOjpj
cmVhdGUoaWRiTG93ZXIsIGlkYlVwcGVyLCBsb3dlckJvdW5kVHlwZSwgdXBwZXJCb3VuZFR5cGUp
OworICAgIHJldHVybiBpZGJLZXlSYW5nZS5yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBQYXNzUmVm
UHRyPEtleT4ga2V5RnJvbUlEQktleShJREJLZXkqIGlkYktleSkKK3sKKyAgICBpZiAoIWlkYktl
eSB8fCAhaWRiS2V5LT52YWxpZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxL
ZXk+IGtleSA9IEtleTo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGUoaWRiS2V5LT50eXBlKCkp
OworICAgIHN3aXRjaCAoaWRiS2V5LT50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleTo6SW52YWxp
ZFR5cGU6CisgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgICAgIHJldHVybiAwOworICAg
IGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgorICAgICAgICBrZXktPnNldE51bWJlcihpZGJLZXkt
Pm51bWJlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6
CisgICAgICAgIGtleS0+c2V0U3RyaW5nKGlkYktleS0+c3RyaW5nKCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6CisgICAgICAgIGtleS0+c2V0RGF0ZShpZGJL
ZXktPmRhdGUoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6
Y3JlYXRlKCk7CisgICAgICAgIElEQktleTo6S2V5QXJyYXkga2V5QXJyYXkgPSBpZGJLZXktPmFy
cmF5KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5QXJyYXkuc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBhcnJheS0+cHVzaE9iamVjdChrZXlGcm9tSURCS2V5KGtleUFycmF5
W2ldLmdldCgpKSk7CisgICAgICAgIGtleS0+c2V0QXJyYXkoYXJyYXkpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgcmV0dXJuIGtleS5yZWxlYXNlKCk7Cit9CisKK2NsYXNzIE9wZW5DdXJz
b3JDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CitwdWJsaWM6CisgICAg
ZW51bSBDdXJzb3JUeXBlIHsKKyAgICAgICAgT2JqZWN0U3RvcmVEYXRhQ3Vyc29yLAorICAgICAg
ICBJbmRleERhdGFDdXJzb3IKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkN1
cnNvckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6
RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJU
cmFuc2FjdGlvbiwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBpbnQgcmVxdWVzdElkLCBpbnQgc2tp
cENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgT3BlbkN1cnNvckNhbGxiYWNrKGZyb250ZW5kUHJvdmlkZXIsIGluamVjdGVkU2NyaXB0
LCBpZGJUcmFuc2FjdGlvbiwgY3Vyc29yVHlwZSwgcmVxdWVzdElkLCBza2lwQ291bnQsIHBhZ2VT
aXplKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+T3BlbkN1cnNvckNhbGxiYWNrKCkgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPikKKyAgICB7CisgICAgICAgIGVuZChmYWxzZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGlkYkN1
cnNvcikKKyAgICB7CisgICAgICAgIG1faWRiQ3Vyc29yID0gaWRiQ3Vyc29yOworICAgICAgICBv
blN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzc1dpdGhDb250aW51YXRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKG1fc2tpcENvdW50
KSB7CisgICAgICAgICAgICAtLW1fc2tpcENvdW50OworICAgICAgICAgICAgbmV4dCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fcmVzdWx0LT5sZW5n
dGgoKSA9PSBtX3BhZ2VTaXplKSB7CisgICAgICAgICAgICBlbmQodHJ1ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBtX2lk
YkN1cnNvci0+a2V5KCk7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBtX2lk
YkN1cnNvci0+cHJpbWFyeUtleSgpOworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSA9IG1faWRiQ3Vyc29yLT52YWx1ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB3cmFwcGVkVmFsdWUgPSBtX2luamVjdGVkU2NyaXB0LndyYXBTZXJpYWxpemVk
T2JqZWN0KHZhbHVlLmdldCgpLCAiaW5kZXhlZGRiIik7CisgICAgICAgIFJlZlB0cjxEYXRhRW50
cnk+IGRhdGFFbnRyeSA9IERhdGFFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRLZXko
a2V5RnJvbUlEQktleShrZXkuZ2V0KCkpKQorICAgICAgICAgICAgLnNldFByaW1hcnlLZXkoa2V5
RnJvbUlEQktleShwcmltYXJ5S2V5LmdldCgpKSkKKyAgICAgICAgICAgIC5zZXRWYWx1ZSh3cmFw
cGVkVmFsdWUpOworICAgICAgICBtX3Jlc3VsdC0+YWRkSXRlbShkYXRhRW50cnkpOworCisgICAg
ICAgIG5leHQoKTsKKyAgICB9CisKKyAgICB2b2lkIG5leHQoKQorICAgIHsKKyAgICAgICAgbV9p
ZGJUcmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CisKKyAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIG1faWRiQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDAs
IHRoaXMsIGVjKTsKKyAgICB9CisKKyAgICB2b2lkIGVuZChib29sIGhhc01vcmUpCisgICAgewor
ICAgICAgICBtX2lkYlRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKKworICAg
ICAgICBzd2l0Y2ggKG1fY3Vyc29yVHlwZSkgeworICAgICAgICBjYXNlIE9iamVjdFN0b3JlRGF0
YUN1cnNvcjoKKyAgICAgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+b2Jq
ZWN0U3RvcmVEYXRhTG9hZGVkKG1fcmVxdWVzdElkLCBtX3Jlc3VsdC5yZWxlYXNlKCksIGhhc01v
cmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5kZXhEYXRhQ3Vyc29yOgor
ICAgICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5pbmRleERhdGFMb2Fk
ZWQobV9yZXF1ZXN0SWQsIG1fcmVzdWx0LnJlbGVhc2UoKSwgaGFzTW9yZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBPcGVuQ3Vyc29yQ2Fs
bGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRl
cj4gZnJvbnRlbmRQcm92aWRlciwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiwgQ3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBpbnQgcmVxdWVzdElkLCBpbnQgc2tpcENvdW50LCB1bnNpZ25l
ZCBwYWdlU2l6ZSkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRl
cikKKyAgICAgICAgLCBtX2luamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0KQorICAgICAgICAs
IG1faWRiVHJhbnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24pCisgICAgICAgICwgbV9jdXJzb3JUeXBl
KGN1cnNvclR5cGUpCisgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQorICAgICAgICAs
IG1fc2tpcENvdW50KHNraXBDb3VudCkKKyAgICAgICAgLCBtX3BhZ2VTaXplKHBhZ2VTaXplKQor
ICAgIHsKKyAgICAgICAgbV9yZXN1bHQgPSBBcnJheTxEYXRhRW50cnk+OjpjcmVhdGUoKTsKKyAg
ICAgICAgbV9pZGJUcmFuc2FjdGlvbi0+c2V0Q2FsbGJhY2tzKEluc3BlY3RvcklEQlRyYW5zYWN0
aW9uQ2FsbGJhY2s6OmNyZWF0ZSgpLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7Cisg
ICAgSW5qZWN0ZWRTY3JpcHQgbV9pbmplY3RlZFNjcmlwdDsKKyAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX2lkYlRyYW5zYWN0aW9uOworICAgIEN1cnNvclR5cGUg
bV9jdXJzb3JUeXBlOworICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBpbnQgbV9za2lwQ291bnQ7
CisgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKKyAgICBSZWZQdHI8QXJyYXk8RGF0YUVudHJ5PiA+
IG1fcmVzdWx0OworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBtX2lkYkN1
cnNvcjsKK307CisKK2NsYXNzIERhdGFMb2FkZXJDYWxsYmFjayA6IHB1YmxpYyBFeGVjdXRhYmxl
V2l0aERhdGFiYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhTG9hZGVy
Q2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9u
dGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBJbmpl
Y3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1l
LCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5
UmFuZ2UsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhTG9hZGVyQ2FsbGJhY2soZnJvbnRlbmRQcm92aWRlciwg
cmVxdWVzdElkLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlk
YktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+
RGF0YUxvYWRlckNhbGxiYWNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UpCisgICAgewor
ICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBpZGJUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoaWRiRGF0YWJhc2UuZ2V0
KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKKyAgICAgICAgaWYgKCFpZGJUcmFuc2FjdGlvbikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKGlkYlRy
YW5zYWN0aW9uLmdldCgpLCBtX29iamVjdFN0b3JlTmFtZSk7CisgICAgICAgIGlmICghaWRiT2Jq
ZWN0U3RvcmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX2luZGV4TmFt
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmplY3RTdG9yZS5nZXQoKSwg
bV9pbmRleE5hbWUpOworICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIFJlZlB0cjxPcGVuQ3Vyc29yQ2FsbGJhY2s+IG9wZW5D
dXJzb3JDYWxsYmFjayA9IE9wZW5DdXJzb3JDYWxsYmFjazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92
aWRlciwgbV9pbmplY3RlZFNjcmlwdCwgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIE9wZW5DdXJzb3JD
YWxsYmFjazo6SW5kZXhEYXRhQ3Vyc29yLCBtX3JlcXVlc3RJZCwgbV9za2lwQ291bnQsIG1fcGFn
ZVNpemUpOworCisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAg
IGlkYkluZGV4LT5vcGVuQ3Vyc29yKG1faWRiS2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgb3Bl
bkN1cnNvckNhbGxiYWNrLCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gb3BlbkN1cnNvckNh
bGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCBt
X2luamVjdGVkU2NyaXB0LCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwgT3BlbkN1cnNvckNhbGxiYWNr
OjpPYmplY3RTdG9yZURhdGFDdXJzb3IsIG1fcmVxdWVzdElkLCBtX3NraXBDb3VudCwgbV9wYWdl
U2l6ZSk7CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAg
aWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhU
LCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBlYyk7CisgICAgICAg
IH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGF0YUxvYWRlckNhbGxiYWNrKFBhc3NSZWZQdHI8
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlk
ZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwg
Y29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSwgaW50IHNraXBDb3VudCwgdW5zaWdu
ZWQgcGFnZVNpemUpCisgICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlk
ZXIpCisgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQorICAgICAgICAsIG1faW5qZWN0
ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHQpCisgICAgICAgICwgbV9vYmplY3RTdG9yZU5hbWUob2Jq
ZWN0U3RvcmVOYW1lKQorICAgICAgICAsIG1faW5kZXhOYW1lKGluZGV4TmFtZSkKKyAgICAgICAg
LCBtX2lkYktleVJhbmdlKGlkYktleVJhbmdlKQorICAgICAgICAsIG1fc2tpcENvdW50KHNraXBD
b3VudCkKKyAgICAgICAgLCBtX3BhZ2VTaXplKHBhZ2VTaXplKSB7IH0KKyAgICBSZWZQdHI8SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRl
cjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CisgICAgSW5qZWN0ZWRTY3JpcHQgbV9pbmplY3RlZFNj
cmlwdDsKKyAgICBTdHJpbmcgbV9vYmplY3RTdG9yZU5hbWU7CisgICAgU3RyaW5nIG1faW5kZXhO
YW1lOworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gbV9pZGJLZXlSYW5nZTsKKyAgICBpbnQgbV9z
a2lwQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKK307CisKIH0gLy8gbmFtZXNwYWNl
CiAKLUluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3Rh
dGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQog
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW50PigiSW5kZXhl
ZERCIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCisgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdl
bnQpCiB7CiB9CkBAIC0zMDQsNiArNTg1LDI2IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oSW5kZXhl
ZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdlbnRFbmFibGVkLCBmYWxzZSk7CiB9CiAKK3N0YXRp
YyBGcmFtZSogYXNzZXJ0RnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgRXJyb3JTdHJpbmcqIGVycm9yKQoreworICAgIEZyYW1lKiBmcmFt
ZSA9IHBhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKKworICAgIGlmICghZnJhbWUpCisg
ICAgICAgICplcnJvciA9ICJGcmFtZSBub3QgZm91bmQiOworCisgICAgcmV0dXJuIGZyYW1lOwor
fQorCitzdGF0aWMgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEZyYW1lKiBmcmFtZSwgRXJyb3JT
dHJpbmcqIGVycm9yKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUt
PmRvY3VtZW50KCkgOiAwOworCisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgKmVycm9yID0g
Ik5vIGRvY3VtZW50IGZvciBnaXZlbiBmcmFtZSBmb3VuZCI7CisKKyAgICByZXR1cm4gZG9jdW1l
bnQ7Cit9CisKIHN0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgRXJyb3JTdHJpbmcqIGVycm9y
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsK
QEAgLTM1Myw2ICs2NTQsMjYgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVz
dERhdGFiYXNlKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHJlcXVlc3RJZCwKICAgICBkYXRhYmFz
ZUxvYWRlckNhbGxiYWNrLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKSwgZG9jdW1lbnQtPmZyYW1lKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1l
LCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBrZXlSYW5nZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBhc3NlcnRGcmFtZShmcmFtZUlk
LCBtX3BhZ2VBZ2VudCwgZXJyb3IpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChmcmFtZSwgZXJyb3IpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZG9jdW1lbnQsIGVycm9y
KTsKKyAgICBpZiAoIWlkYkZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVk
U2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKSk7CisKKyAgICBSZWZQdHI8SURC
S2V5UmFuZ2U+IGlkYktleVJhbmdlID0ga2V5UmFuZ2UgPyBpZGJLZXlSYW5nZUZyb21LZXlSYW5n
ZShrZXlSYW5nZS0+Z2V0KCkpIDogMDsKKyAgICBSZWZQdHI8RGF0YUxvYWRlckNhbGxiYWNrPiBk
YXRhTG9hZGVyQ2FsbGJhY2sgPSBEYXRhTG9hZGVyQ2FsbGJhY2s6OmNyZWF0ZShtX2Zyb250ZW5k
UHJvdmlkZXIsIHJlcXVlc3RJZCwgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFtZSwgaW5k
ZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSk7CisKKyAgICBkYXRhTG9h
ZGVyQ2FsbGJhY2stPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
LCBkb2N1bWVudC0+ZnJhbWUoKSwgZGF0YWJhc2VOYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCmluZGV4IDFiNDZkZDE0MzZlYTMwNGY0ZTI0NTIwMDlhOTgzMzZmYmNiZmMw
OGEuLmIxOWVkNmU1ZjViMGMzMzcyYmU4NjBlMzUzZjhhZjJmZWE0YjcxOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC0z
OSw2ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogCiB0eXBlZGVmIFN0cmluZyBF
cnJvclN0cmluZzsKQEAgLTQ3LDkgKzQ4LDkgQEAgY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW4KIHB1
YmxpYzoKICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwogCi0gICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckluZGV4ZWRE
QkFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckluZGV4ZWREQkFnZW50KGluc3RydW1lbnRp
bmdBZ2VudHMsIHN0YXRlLCBwYWdlQWdlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBwYWdlQWdlbnQpKTsKICAgICB9CiAgICAgfkluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50KCk7CiAKQEAgLTYyLDkgKzYzLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0
YWJhc2VOYW1lc0ZvckZyYW1lKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3Ry
aW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5n
KiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSk7CiBwcml2YXRlOgotICAgIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvclBh
Z2VBZ2VudCopOworICAgIEluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3RvclBh
Z2VBZ2VudCopOwogCisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcjsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIFJlZlB0
cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgYm9vbCBtX2VuYWJs
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4
ZWREQk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVk
REJNb2RlbC5qcwppbmRleCA3NTcxNmQyZDE2NzM2MDZmNjNkM2JjYzlmYzdhNTY3YWRkYzcxOGM2
Li45ZGQ0MjEyYjIzY2U0OWZmOWMwOTllODgwMzhhZjc4ZWYxYTYxZGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKQEAg
LTQ2LDYgKzQ2LDg2IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbCA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLnJlZnJlc2hEYXRhYmFzZU5hbWVzKCk7CiB9CiAKKy8vS2VlcCB0aGVzZSBpbiBz
eW5jIHdpdGggV2ViQ29yZTo6SURCS2V5OjpUeXBlCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwuS2V5VHlwZXMgPSB7CisgICAgSW52YWxpZFR5cGU6IDAsCisgICAgQXJyYXlUeXBlOiAgIDEs
CisgICAgU3RyaW5nVHlwZTogIDIsCisgICAgRGF0ZVR5cGU6ICAgIDMsCisgICAgTnVtYmVyVHlw
ZTogIDQsCisgICAgTWluVHlwZTogICAgIDUKK307CisKKy8qKgorICogQHBhcmFtIHtJbmRleGVk
REJBZ2VudC5LZXl9IGtleQorICovCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuaWRiS2V5
RnJvbUtleSA9IGZ1bmN0aW9uKGtleSkKK3sKKyAgICB2YXIgaWRiS2V5OworICAgIHN3aXRjaCAo
a2V5LnR5cGUpIHsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBl
cy5OdW1iZXJUeXBlOgorICAgICAgICBpZGJLZXkgPSBrZXkubnVtYmVyOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5TdHJpbmdU
eXBlOgorICAgICAgICBpZGJLZXkgPSBrZXkuc3RyaW5nOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5EYXRlVHlwZToKKyAgICAg
ICAgaWRiS2V5ID0gbmV3IERhdGUoa2V5LmRhdGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5BcnJheVR5cGU6CisgICAgICAg
IGlkYktleSA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIGlkYktleS5wdXNoKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5p
ZGJLZXlGcm9tS2V5KGtleS5hcnJheVtpXSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIGlkYktleTsKK30KKworV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleUZyb21J
REJLZXkgPSBmdW5jdGlvbihpZGJLZXkpCit7CisgICAgaWYgKHR5cGVvZihpZGJLZXkpID09PSAi
dW5kZWZpbmVkIiB8fCBpZGJLZXkgPT09IG51bGwpCisgICAgICAgIHJldHVybiBudWxsOworICAg
IAorICAgIHZhciBrZXkgPSB7fTsKKyAgICBrZXkudHlwZSA9IFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5LZXlUeXBlcy5JbnZhbGlkVHlwZTsKKyAgICBzd2l0Y2ggKHR5cGVvZihpZGJLZXkp
KSB7CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAga2V5Lm51bWJlciA9IGlkYktleTsKKyAg
ICAgICAga2V5LnR5cGUgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuTnVt
YmVyVHlwZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAga2V5
LnN0cmluZyA9IGlkYktleTsKKyAgICAgICAga2V5LnR5cGUgPSBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwuS2V5VHlwZXMuU3RyaW5nVHlwZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAi
b2JqZWN0IjoKKyAgICAgICAgaWYgKGlkYktleSBpbnN0YW5jZW9mIERhdGUpIHsKKyAgICAgICAg
ICAgIGtleS5kYXRlID0gaWRiS2V5LmdldFRpbWUoKTsKKyAgICAgICAgICAgIGtleS50eXBlID0g
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLkRhdGVUeXBlOworICAgICAgICB9
IGVsc2UgaWYgKGlkYktleSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICBrZXkuYXJy
YXkgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWRiS2V5Lmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgICAgIGtleS5hcnJheS5wdXNoKFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5rZXlGcm9tSURCS2V5KGlkYktleVtpXSkpOworICAgICAgICAgICAga2V5LnR5cGUg
PSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuQXJyYXlUeXBlOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4ga2V5OworfQorCitXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5UmFuZ2VGcm9tSURCS2V5UmFuZ2UgPSBmdW5jdGlvbihp
ZGJLZXlSYW5nZSkKK3sKKyAgICB2YXIgSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2Ug
fHwgd2luZG93LndlYmtpdElEQktleVJhbmdlOworICAgIGlmICh0eXBlb2YoaWRiS2V5UmFuZ2Up
ID09PSAidW5kZWZpbmVkIiB8fCBpZGJLZXlSYW5nZSA9PT0gbnVsbCkKKyAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgCisgICAgdmFyIGtleVJhbmdlID0ge307CisgICAga2V5UmFuZ2UubG93ZXIg
PSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5RnJvbUlEQktleShpZGJLZXlSYW5nZS5s
b3dlcik7CisgICAga2V5UmFuZ2UudXBwZXIgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
a2V5RnJvbUlEQktleShpZGJLZXlSYW5nZS51cHBlcik7CisgICAga2V5UmFuZ2UubG93ZXJPcGVu
ID0gaWRiS2V5UmFuZ2UubG93ZXJPcGVuOworICAgIGtleVJhbmdlLnVwcGVyT3BlbiA9IGlkYktl
eVJhbmdlLnVwcGVyT3BlbjsKKyAgICByZXR1cm4ga2V5UmFuZ2U7Cit9CisKIFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgcmVmcmVzaERhdGFiYXNlTmFtZXM6
IGZ1bmN0aW9uKCkKICAgICB7CkBAIC0yNjMsNiArMzQzLDY3IEBAIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9pbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RGF0YWJhc2UoZnJhbWVJZCwgZGF0YWJhc2VOYW1l
LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJhbSB7d2Vi
a2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBD
b3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeT4sIGJvb2xlYW4p
fSBjYWxsYmFjaworICAgICAqLworICAgIGxvYWRPYmplY3RTdG9yZURhdGE6IGZ1bmN0aW9uKGZy
YW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENv
dW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICog
QHBhcmFtIHtBcnJheS48SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKKyAg
ICAgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisgICAgICAgICAqLworICAgICAgICBm
dW5jdGlvbiBpbm5lckNhbGxiYWNrKGRhdGFFbnRyaWVzLCBoYXNNb3JlKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkYXRhRW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBrZXkg
PSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtleShkYXRhRW50cmllc1tp
XS5rZXkpOyAgICAKKyAgICAgICAgICAgICAgICB2YXIgcHJpbWFyeUtleSA9IFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ldLnByaW1hcnlLZXkp
OyAgICAKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LmZyb21QYXlsb2FkKGRhdGFFbnRyaWVzW2ldLnZhbHVlKTsgICAgCisgICAgICAgICAgICAg
ICAgZW50cmllcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnkoa2V5
LCBwcmltYXJ5S2V5LCB2YWx1ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGJh
Y2soZW50cmllcywgaGFzTW9yZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMu
X2luZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RPYmplY3RTdG9yZURhdGEoZnJhbWVJZCwg
ZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBh
Z2VTaXplLCBpbm5lckNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBpbmRleE5hbWUKKyAgICAgKiBAcGFyYW0ge3dlYmtpdElEQktleVJhbmdlfSBpZGJLZXlS
YW5nZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwQ291bnQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gcGFnZVNpemUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuRW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAg
ICBsb2FkSW5kZXhEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0
b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtBcnJheS48SW5k
ZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKKyAgICAgICAgICogQHBhcmFtIHti
b29sZWFufSBoYXNNb3JlCisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxi
YWNrKGRhdGFFbnRyaWVzLCBoYXNNb3JlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZW50
cmllcyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhRW50cmllcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBrZXkgPSBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtleShkYXRhRW50cmllc1tpXS5rZXkpOyAgICAKKyAgICAg
ICAgICAgICAgICB2YXIgcHJpbWFyeUtleSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5p
ZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ldLnByaW1hcnlLZXkpOyAgICAKKyAgICAgICAgICAg
ICAgICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGRh
dGFFbnRyaWVzW2ldLnZhbHVlKTsgICAgCisgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKG5l
dyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnkoa2V5LCBwcmltYXJ5S2V5LCB2YWx1
ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGJhY2soZW50cmllcywgaGFzTW9y
ZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMuX2luZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyLnJlcXVlc3RJbmRleERhdGEoZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVy
Q2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfQogfQogCkBAIC0yNzAsNiArNDExLDE5IEBAIFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0g
eyp9IGtleQorICogQHBhcmFtIHsqfSBwcmltYXJ5S2V5CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3R9IHZhbHVlCisgKi8KK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5F
bnRyeSA9IGZ1bmN0aW9uKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpCit7CisgICAgdGhpcy5rZXkg
PSBrZXk7CisgICAgdGhpcy5wcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsKKyAgICB0aGlzLnZhbHVl
ID0gdmFsdWU7Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge3N0cmluZ30g
ZnJhbWVJZAogICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCiAgKi8KQEAgLTMyMyw3
ICs0NzcsOSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIgPSBmdW5jdGlv
bigpCiB7CiAgICAgdGhpcy5fbGFzdFJlcXVlc3RJZCA9IDA7CiAgICAgdGhpcy5fcmVxdWVzdERh
dGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrcyA9IHt9OwotCisgICAgdGhpcy5fcmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2tzID0ge307CisgICAgdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3MgPSB7
fTsKKyAgICAKICAgICBJbmRleGVkREJBZ2VudC5lbmFibGUoKTsKICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVySW5kZXhlZERCRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWRE
QkRpc3BhdGNoZXIodGhpcykpOwogfQpAQCAtMzk5LDYgKzU1NSw5MSBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBk
YXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1lCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURCS2V5
UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAq
LworICAgIF9yZXF1ZXN0RGF0YTogZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmpl
Y3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUs
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJ
ZCgpOworICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVx
dWVzdE1hbmFnZXIuRGF0YVJlcXVlc3QoZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIGluZGV4TmFtZSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YUNh
bGxiYWNrc1tyZXF1ZXN0SWRdID0gcmVxdWVzdDsgCisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJD
YWxsYmFjayhlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiSW5kZXhlZERCQWdlbnQgZXJyb3I6ICIgKyBlcnJv
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgdmFyIGtleVJhbmdlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJh
bmdlRnJvbUlEQktleVJhbmdlKGlkYktleVJhbmdlKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGEocmVxdWVzdElkLCBmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3Jl
TmFtZSwgaW5kZXhOYW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBrZXlSYW5nZSA/IGtleVJhbmdl
IDogdW5kZWZpbmVkLCBpbm5lckNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VO
YW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJh
bSB7d2Via2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHNraXBDb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBj
YWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RPYmplY3RTdG9yZURhdGE6IGZ1bmN0aW9uKGZy
YW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENv
dW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0
YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgIiIsIGlkYktleVJhbmdl
LCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFjayk7CisgICAgfSwKKyAgICAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCisgICAgICogQHBhcmFtIHtBcnJheS48
SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IGhhc01vcmUKKyAgICAgKi8KKyAgICBfb2JqZWN0U3RvcmVEYXRhTG9hZGVkOiBmdW5j
dGlvbihyZXF1ZXN0SWQsIGRhdGFFbnRyaWVzLCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgdmFy
IHJlcXVlc3QgPSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAg
ICBpZiAoIXJlcXVlc3QuY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGRhdGFFbnRyaWVzLCBoYXNNb3JlKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZGF0YWJhc2VOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3Jl
TmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKKyAgICAgKiBAcGFyYW0ge3dl
YmtpdElEQktleVJhbmdlfSBpZGJLZXlSYW5nZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lw
Q291bnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKEFycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+LCBib29sZWFuKX0gY2FsbGJh
Y2sKKyAgICAgKi8KKyAgICByZXF1ZXN0SW5kZXhEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRh
YmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENv
dW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0
YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJL
ZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spOworICAgIH0sCisgICAgCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7
QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59IGRhdGFFbnRyaWVzCisgICAgICogQHBh
cmFtIHtib29sZWFufSBoYXNNb3JlCisgICAgICovCisgICAgX2luZGV4RGF0YUxvYWRlZDogZnVu
Y3Rpb24ocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIHZh
ciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsKKyAgICAg
ICAgaWYgKCFyZXF1ZXN0LmNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgcmVxdWVzdC5jYWxsYmFjayhkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAgfSwK
KworICAgIC8qKgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8KICAgICBfcmVxdWVz
dElkOiBmdW5jdGlvbigpCkBAIC00MjAsNiArNjYxLDExIEBAIFdlYkluc3BlY3Rvci5JbmRleGVk
REJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKICAg
ICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVl
c3RJZF07CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAodmFyIHJlcXVlc3RJZCBp
biB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3Jl
cXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKKyAgICAg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsK
KyAgICAgICAgfQogICAgIH0sCiAKICAgICAvKioKQEAgLTQzMSwxOSArNjc3LDI2IEBAIFdlYklu
c3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBpZiAodGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9
PT0gZnJhbWVJZCAmJiB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXS5k
YXRhYmFzZU5hbWUgPT09IGRhdGFiYXNlTmFtZSkKICAgICAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF07CiAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGZvciAodmFyIHJlcXVlc3RJZCBpbiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxi
YWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVl
c3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCAmJiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1ty
ZXF1ZXN0SWRdLmRhdGFiYXNlTmFtZSA9PT0gZGF0YWJhc2VOYW1lKQorICAgICAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAgICB9
CiAgICAgfSwKIAogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrcyA9IHt9OwogICAgICAgICB0aGlz
Ll9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3MgPSB7fTsKLQorICAgICAgICB0aGlzLl9yZXF1ZXN0
RGF0YUNhbGxiYWNrcyA9IHt9OwogICAgIH0KIH0KIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAq
LworICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oSW5kZXhl
ZERCQWdlbnQuU2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcyl9IGNhbGxiYWNrCisqLwog
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLkRhdGFiYXNlc0ZvckZyYW1lUmVx
dWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxiYWNrKQogewogICAgIHRoaXMuZnJhbWVJZCA9
IGZyYW1lSWQ7CkBAIC00NTIsNiArNzA1LDkgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVl
c3RNYW5hZ2VyLkRhdGFiYXNlc0ZvckZyYW1lUmVxdWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQKIAog
LyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgKiBAcGFy
YW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisgKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4ZWREQkFn
ZW50LkRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcyl9IGNhbGxiYWNrCiAgKi8KIFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5EYXRhYmFzZVJlcXVlc3QgPSBmdW5jdGlvbihmcmFt
ZUlkLCBkYXRhYmFzZU5hbWUsIGNhbGxiYWNrKQogewpAQCAtNDYyLDYgKzcxOCwyMyBAQCBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YWJhc2VSZXF1ZXN0ID0gZnVuY3Rp
b24oZnJhbWVJZCwgZGF0YWJhcwogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtz
dHJpbmd9IGZyYW1lSWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAqIEBwYXJh
bSB7c3RyaW5nfSBvYmplY3RTdG9yZU5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUK
KyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJv
b2xlYW4pfSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFn
ZXIuRGF0YVJlcXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0
b3JlTmFtZSwgaW5kZXhOYW1lLCBjYWxsYmFjaykKK3sKKyAgICB0aGlzLmZyYW1lSWQgPSBmcmFt
ZUlkOworICAgIHRoaXMuZGF0YWJhc2VOYW1lID0gZGF0YWJhc2VOYW1lOworICAgIHRoaXMub2Jq
ZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lOworICAgIHRoaXMuaW5kZXhOYW1lID0gaW5k
ZXhOYW1lOworICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKworLyoqCisgKiBAY29u
c3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtJbmRleGVkREJBZ2VudC5EaXNwYXRjaGVyfQogICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXJ9IGluZGV4ZWREQlJl
cXVlc3RNYW5hZ2VyCiAgKi8KQEAgLTQ4Nyw1ICs3NjAsMjUgQEAgV2ViSW5zcGVjdG9yLkluZGV4
ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIGRhdGFiYXNlTG9hZGVkOiBmdW5jdGlv
bihyZXF1ZXN0SWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykKICAgICB7CiAgICAgICAgIHRo
aXMuX2FnZW50V3JhcHBlci5fZGF0YWJhc2VMb2FkZWQocmVxdWVzdElkLCBkYXRhYmFzZVdpdGhP
YmplY3RTdG9yZXMpOworICAgIH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFF
bnRyeT59IGRhdGFFbnRyaWVzCisgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisgICAg
ICovCisgICAgb2JqZWN0U3RvcmVEYXRhTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFF
bnRyaWVzLCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9vYmpl
Y3RTdG9yZURhdGFMb2FkZWQocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBA
cGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcworICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzTW9yZQorICAgICAqLworICAgIGluZGV4RGF0YUxvYWRl
ZDogZnVuY3Rpb24ocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2FnZW50V3JhcHBlci5faW5kZXhEYXRhTG9hZGVkKHJlcXVlc3RJZCwgZGF0YUVu
dHJpZXMsIGhhc01vcmUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjY2FiY2MyMjQwMmRiYWIzMWI4YjQ2
MjM4NmFjYjkxOTAyOTgxYTNmLi42YTc0NzRjMmRiYzg1ZmQ2YWEzZTk4YTY4NWU3ZjcxZjg2NmYz
NTVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDItMTMgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0luc3BlY3Rv
ckluZGV4ZWREQl0gUGFzcyBkYXRhIGVudHJpZXMgZnJvbSBvYmplY3Qgc3RvcmVzIGFuZCBpbmRl
eGVzIHRvIGZyb250LWVuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4
ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRk
Yi10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJUZXN0Lkluc3BlY3RvclRl
c3QuZXZhbHVhdGVXaXRoQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJU
ZXN0Lkluc3BlY3RvclRlc3QuYWRkSURCVmFsdWUpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRl
eGVkREJUZXN0KToKKyAgICAgICAgKGRvV2l0aFJlYWRXcml0ZVRyYW5zYWN0aW9uLnN0ZXAyLmlu
bmVyQ29tbWl0Q2FsbGJhY2spOgorICAgICAgICAoZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24u
c3RlcDIpOgorICAgICAgICAoZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
YWRkSURCVmFsdWUuZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24ud2l0aFRyYW5zYWN0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAoYWRkSURCVmFsdWUpOgorCiAyMDEyLTAyLTEzICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdh
cmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZGNlZWMxZjBhZGFkYzhiNDg0NTM5YzM0ZTAwMTEwNmJhMzBlNDY0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODQgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s0CitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNr
NQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxs
YmFjazYKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJf
Y2FsbGJhY2s3CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhl
ZERCX2NhbGxiYWNrOAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0Lklu
ZGV4ZWREQl9jYWxsYmFjazkKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVz
dC5JbmRleGVkREJfY2FsbGJhY2sxMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0
b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazExCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IElu
c3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3
OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxMworQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazE0CitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTUKK1Rlc3RzIHRo
YXQgZGF0YSBpcyBjb3JyZWN0bHkgbG9hZGVkIGJ5IEluZGV4ZWREQk1vZGVsIGZyb20gSW5kZXhl
ZERCIG9iamVjdCBzdG9yZSBhbmQgaW5kZXguCisKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXgg
PSBmYWxzZSwgc2tpcENvdW50ID0gMCwgcGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwK
KyAgICBLZXkgPSBrZXlfMDEsIHByaW1hcnlLZXkgPSBrZXlfMDEsIHZhbHVlID0geyJrZXkiOiJr
ZXlfMDEiLCJ2YWx1ZSI6InZhbHVlXzAxIn0KKyAgICBLZXkgPSBrZXlfMDIsIHByaW1hcnlLZXkg
PSBrZXlfMDIsIHZhbHVlID0geyJrZXkiOiJrZXlfMDIiLCJ2YWx1ZSI6InZhbHVlXzAyIn0KKyAg
ICBLZXkgPSBrZXlfMDMsIHByaW1hcnlLZXkgPSBrZXlfMDMsIHZhbHVlID0geyJrZXkiOiJrZXlf
MDMiLCJ2YWx1ZSI6InZhbHVlXzAzIn0KKyAgICBoYXNNb3JlID0gdHJ1ZQorRHVtcGluZyB2YWx1
ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAzLCBwYWdlU2l6ZSA9IDMsIGlkYktl
eVJhbmdlID0gbnVsbAorICAgIEtleSA9IGtleV8wNCwgcHJpbWFyeUtleSA9IGtleV8wNCwgdmFs
dWUgPSB7ImtleSI6ImtleV8wNCIsInZhbHVlIjoidmFsdWVfMDQifQorICAgIEtleSA9IGtleV8w
NSwgcHJpbWFyeUtleSA9IGtleV8wNSwgdmFsdWUgPSB7ImtleSI6ImtleV8wNSIsInZhbHVlIjoi
dmFsdWVfMDUifQorICAgIEtleSA9IGtleV8wNiwgcHJpbWFyeUtleSA9IGtleV8wNiwgdmFsdWUg
PSB7ImtleSI6ImtleV8wNiIsInZhbHVlIjoidmFsdWVfMDYifQorICAgIGhhc01vcmUgPSB0cnVl
CitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDYsIHBhZ2VT
aXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5
ID0ga2V5XzA3LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9Cisg
ICAgS2V5ID0ga2V5XzA4LCBwcmltYXJ5S2V5ID0ga2V5XzA4LCB2YWx1ZSA9IHsia2V5Ijoia2V5
XzA4IiwidmFsdWUiOiJ2YWx1ZV8wOCJ9CisgICAgS2V5ID0ga2V5XzA5LCBwcmltYXJ5S2V5ID0g
a2V5XzA5LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA5IiwidmFsdWUiOiJ2YWx1ZV8wOSJ9CisgICAg
aGFzTW9yZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBD
b3VudCA9IDcsIHBhZ2VTaXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgS2V5ID0ga2V5
XzA4LCBwcmltYXJ5S2V5ID0ga2V5XzA4LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA4IiwidmFsdWUi
OiJ2YWx1ZV8wOCJ9CisgICAgS2V5ID0ga2V5XzA5LCBwcmltYXJ5S2V5ID0ga2V5XzA5LCB2YWx1
ZSA9IHsia2V5Ijoia2V5XzA5IiwidmFsdWUiOiJ2YWx1ZV8wOSJ9CisgICAgaGFzTW9yZSA9IGZh
bHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDksIHBh
Z2VTaXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgaGFzTW9yZSA9IGZhbHNlCitEdW1w
aW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDEwLCBwYWdlU2l6ZSA9
IDMsIGlkYktleVJhbmdlID0gbnVsbAorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1
ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAwLCBwYWdlU2l6ZSA9IDQsIGlkYktl
eVJhbmdlID0geyJ1cHBlciI6ImtleV8wNyIsInVwcGVyT3BlbiI6ZmFsc2UsImxvd2VyT3BlbiI6
dHJ1ZSwibG93ZXIiOiJrZXlfMDIifQorICAgIEtleSA9IGtleV8wMywgcHJpbWFyeUtleSA9IGtl
eV8wMywgdmFsdWUgPSB7ImtleSI6ImtleV8wMyIsInZhbHVlIjoidmFsdWVfMDMifQorICAgIEtl
eSA9IGtleV8wNCwgcHJpbWFyeUtleSA9IGtleV8wNCwgdmFsdWUgPSB7ImtleSI6ImtleV8wNCIs
InZhbHVlIjoidmFsdWVfMDQifQorICAgIEtleSA9IGtleV8wNSwgcHJpbWFyeUtleSA9IGtleV8w
NSwgdmFsdWUgPSB7ImtleSI6ImtleV8wNSIsInZhbHVlIjoidmFsdWVfMDUifQorICAgIEtleSA9
IGtleV8wNiwgcHJpbWFyeUtleSA9IGtleV8wNiwgdmFsdWUgPSB7ImtleSI6ImtleV8wNiIsInZh
bHVlIjoidmFsdWVfMDYifQorICAgIGhhc01vcmUgPSB0cnVlCitEdW1waW5nIHZhbHVlcywgZnJv
bUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDAsIHBhZ2VTaXplID0gNSwgaWRiS2V5UmFuZ2Ug
PSB7InVwcGVyIjoia2V5XzA3IiwidXBwZXJPcGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJs
b3dlciI6ImtleV8wMiJ9CisgICAgS2V5ID0ga2V5XzAzLCBwcmltYXJ5S2V5ID0ga2V5XzAzLCB2
YWx1ZSA9IHsia2V5Ijoia2V5XzAzIiwidmFsdWUiOiJ2YWx1ZV8wMyJ9CisgICAgS2V5ID0ga2V5
XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFsdWUi
OiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2YWx1
ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5XzA2
LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUiOiJ2
YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5XzA3LCB2YWx1ZSA9
IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgaGFzTW9yZSA9IGZhbHNl
CitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDAsIHBhZ2VT
aXplID0gNiwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3IiwidXBwZXJPcGVuIjpmYWxz
ZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAgS2V5ID0ga2V5XzAzLCBw
cmltYXJ5S2V5ID0ga2V5XzAzLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAzIiwidmFsdWUiOiJ2YWx1
ZV8wMyJ9CisgICAgS2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsi
a2V5Ijoia2V5XzA0IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmlt
YXJ5S2V5ID0ga2V5XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8w
NSJ9CisgICAgS2V5ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5
Ijoia2V5XzA2IiwidmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5
S2V5ID0ga2V5XzA3LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9
CisgICAgaGFzTW9yZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2Us
IHNraXBDb3VudCA9IDEsIHBhZ2VTaXplID0gNCwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5
XzA3IiwidXBwZXJPcGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9
CisgICAgS2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoi
a2V5XzA0IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5
ID0ga2V5XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9Cisg
ICAgS2V5ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5
XzA2IiwidmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0g
a2V5XzA3LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAg
aGFzTW9yZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBD
b3VudCA9IDEsIHBhZ2VTaXplID0gNSwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3Iiwi
dXBwZXJPcGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAg
S2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0
IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5
XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5
ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2Iiwi
dmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5XzA3
LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgaGFzTW9y
ZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9
IDEsIHBhZ2VTaXplID0gNiwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3IiwidXBwZXJP
cGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAgS2V5ID0g
a2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFs
dWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2
YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5
XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUi
OiJ2YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5XzA3LCB2YWx1
ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgaGFzTW9yZSA9IGZh
bHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gdHJ1ZSwgc2tpcENvdW50ID0gMCwgcGFn
ZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBLZXkgPSB2YWx1ZV8wMSwgcHJpbWFy
eUtleSA9IGtleV8wMSwgdmFsdWUgPSB7ImtleSI6ImtleV8wMSIsInZhbHVlIjoidmFsdWVfMDEi
fQorICAgIEtleSA9IHZhbHVlXzAyLCBwcmltYXJ5S2V5ID0ga2V5XzAyLCB2YWx1ZSA9IHsia2V5
Ijoia2V5XzAyIiwidmFsdWUiOiJ2YWx1ZV8wMiJ9CisgICAgS2V5ID0gdmFsdWVfMDMsIHByaW1h
cnlLZXkgPSBrZXlfMDMsIHZhbHVlID0geyJrZXkiOiJrZXlfMDMiLCJ2YWx1ZSI6InZhbHVlXzAz
In0KKyAgICBoYXNNb3JlID0gdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MjJlM2ZmYTAzMmFmYTRiYjI1YzcyZmQ1NzkxMTMxMWNiODc0MjQ2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLWRhdGEuaHRtbApAQCAtMCwwICsxLDIwMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaW5kZXhl
ZGRiLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHZhciBJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURC
S2V5UmFuZ2U7CisgICAgdmFyIGluZGV4ZWREQk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbCgpOworICAgIHZhciBtYWluRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5tYWluRnJhbWUuaWQ7CisgICAgdmFyIGRhdGFiYXNlTmFtZSA9ICJ0ZXN0RGF0
YWJhc2UiOworICAgIHZhciBvYmplY3RTdG9yZU5hbWUgPSAidGVzdE9iamVjdFN0b3JlIjsKKyAg
ICB2YXIgaW5kZXhOYW1lID0gInRlc3RJbmRleE5hbWUiOworCisgICAgZnVuY3Rpb24gYWRkSURC
VmFsdWVzKGNvdW50LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBpID0gMDsKKyAgICAg
ICAgYWRkVmFsdWVzKCk7CisKKyAgICAgICAgZnVuY3Rpb24gYWRkVmFsdWVzKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGkgPT0gY291bnQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICsraTsKKyAgICAgICAgICAgIHZhciBpZCA9IGkgPCAxMCA/ICIwIiArIGkgOiBpOworICAgICAg
ICAgICAgdmFyIGtleSA9ICJrZXlfIiArIGlkOworICAgICAgICAgICAgdmFyIHZhbHVlID0gInZh
bHVlXyIgKyBpZDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkSURCVmFsdWUobWFpbkZy
YW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCB7IGtleToga2V5LCB2YWx1ZTog
dmFsdWUgfSwgIiIsIGFkZFZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlv
biBsb2FkVmFsdWVzQW5kRHVtcChmcm9tSW5kZXgsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBh
Z2VTaXplLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gIiArIGZyb21JbmRleCArICIsIHNraXBDb3Vu
dCA9ICIgKyBza2lwQ291bnQgKyAiLCBwYWdlU2l6ZSA9ICIgKyBwYWdlU2l6ZSArICIsIGlkYktl
eVJhbmdlID0gIiArIEpTT04uc3RyaW5naWZ5KGlkYktleVJhbmdlKSk7CisgICAgICAgIGlmIChm
cm9tSW5kZXgpCisgICAgICAgICAgICBpbmRleGVkREJNb2RlbC5sb2FkSW5kZXhEYXRhKG1haW5G
cmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlS
YW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgaW5uZXJDYWxsYmFjayk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGluZGV4ZWREQk1vZGVsLmxvYWRPYmplY3RTdG9yZURhdGEobWFpbkZyYW1l
SWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50
LCBwYWdlU2l6ZSwgaW5uZXJDYWxsYmFjayk7CisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxs
YmFjayhlbnRyaWVzLCBoYXNNb3JlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaW5kZXgg
PSAwOworICAgICAgICAgICAgdmFyIGVudHJ5OworICAgICAgICAgICAgZHVtcEVudHJpZXMoKTsK
KworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcEVudHJpZXMoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gZW50cmllcy5sZW5ndGgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICBoYXNNb3JlID0gIiArIGhhc01v
cmUpOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVudHJ5ID0gZW50
cmllc1tpbmRleF07CisgICAgICAgICAgICAgICAgZW50cnkudmFsdWUuY2FsbEZ1bmN0aW9uSlNP
TihkdW1wTWUsIGR1bXBlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICArK2luZGV4Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wTWUoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcGVkKHZhbHVlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgS2V5ID0g
IiArIGVudHJ5LmtleSArICIsIHByaW1hcnlLZXkgPSAiICsgZW50cnkucHJpbWFyeUtleSArICIs
IHZhbHVlID0gIiArIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBkdW1wRW50cmllcygpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlm
ZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNl
TmFtZXNMb2FkZWQiLCBmaWxsRGF0YWJhc2UsIGZhbHNlKTsKKworICAgIGZ1bmN0aW9uIGZpbGxE
YXRhYmFzZSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURhdGFiYXNlKG1h
aW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsIHN0ZXAyKTsKKworICAgICAgICBmdW5jdGlvbiBzdGVw
MigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlT2JqZWN0U3Rv
cmUobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCAia2V5IiwgdHJ1
ZSwgc3RlcDMpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAg
ICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZU9iamVjdFN0b3JlSW5kZXgobWFp
bkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsICJ2YWx1
ZSIsIGZhbHNlLCB0cnVlLCBzdGVwNCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
dGVwNCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFkZElEQlZhbHVlcyg5LCByZWZyZXNoRGF0
YWJhc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVmcmVzaERhdGFiYXNl
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZUxvYWRlZCIsIHJ1bk9iamVj
dFN0b3JlVGVzdHMsIGZhbHNlKTsKKyAgICAgICAgaW5kZXhlZERCTW9kZWwucmVmcmVzaERhdGFi
YXNlKG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1
bk9iamVjdFN0b3JlVGVzdHMoKQorICAgIHsKKyAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFs
c2UsIG51bGwsIDAsIDMsIHN0ZXAyKQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIG51bGwsIDMsIDMsIHN0
ZXAzKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgNiwgMywgc3RlcDQpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgNywgMywgc3RlcDUpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgICAgICB7CisgICAgICAgICAgICBs
b2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgOSwgMywgc3RlcDYpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc3RlcDYoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFs
dWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgMTAsIDMsIHN0ZXA3KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHN0ZXA3KCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0Fu
ZER1bXAoZmFsc2UsIElEQktleVJhbmdlLmJvdW5kKCJrZXlfMDIiLCAia2V5XzA3IiwgdHJ1ZSwg
ZmFsc2UpLCAwLCA0LCBzdGVwOCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVw
OCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJL
ZXlSYW5nZS5ib3VuZCgia2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwgMCwgNSwgc3Rl
cDkpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDkoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91bmQoImtl
eV8wMiIsICJrZXlfMDciLCB0cnVlLCBmYWxzZSksIDAsIDYsIHN0ZXAxMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzdGVwMTAoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2Fk
VmFsdWVzQW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91bmQoImtleV8wMiIsICJrZXlfMDci
LCB0cnVlLCBmYWxzZSksIDEsIDQsIHN0ZXAxMSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzdGVwMTEoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChm
YWxzZSwgSURCS2V5UmFuZ2UuYm91bmQoImtleV8wMiIsICJrZXlfMDciLCB0cnVlLCBmYWxzZSks
IDEsIDUsIHN0ZXAxMik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMTIoKQor
ICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgSURCS2V5UmFu
Z2UuYm91bmQoImtleV8wMiIsICJrZXlfMDciLCB0cnVlLCBmYWxzZSksIDEsIDYsIHN0ZXAxMyk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMTMoKQorICAgICAgICB7CisgICAg
ICAgICAgICBydW5JbmRleFRlc3RzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlv
biBydW5JbmRleFRlc3RzKCkKKyAgICB7CisgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKHRydWUs
IG51bGwsIDAsIDMsIHN0ZXAyKQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAg
eworICAgICAgICAgICAgY2xlYXJEYXRhYmFzZSgpOworICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2xlYXJEYXRhYmFzZSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmRl
bGV0ZU9iamVjdFN0b3JlSW5kZXgobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3Rv
cmVOYW1lLCBpbmRleE5hbWUsIHN0ZXAyKTsKKworICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZGVsZXRlT2JqZWN0U3RvcmUobWFp
bkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBzdGVwMyk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZGVsZXRlRGF0YWJhc2UobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgc3Rl
cDQpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5U
ZXN0cyB0aGF0IGRhdGEgaXMgY29ycmVjdGx5IGxvYWRlZCBieSBJbmRleGVkREJNb2RlbCBmcm9t
IEluZGV4ZWREQiBvYmplY3Qgc3RvcmUgYW5kIGluZGV4LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9k
YXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDBmYjM0NGQw
YzNkYTQ5ZGE1NjAzNTU4M2FjMjk5NDY0M2ExNjA5ZTcuLmVjZjgwMjcwMzQ3NDY4OTE3MzljNDll
NGNjNmNkMWE0OTdlMWZkYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLWV4cGVj
dGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVj
dG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IElu
c3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3
OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s0CitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMQorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazIKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2szCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNAog
VGVzdHMgdGhhdCBkYXRhYmFzZSBuYW1lcyBhcmUgY29ycmVjdGx5IGxvYWRlZCBhbmQgc2F2ZWQg
aW4gSW5kZXhlZERCTW9kZWwuCiAKIER1bXBpbmcgZGF0YWJhc2UgbmFtZXM6CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3Ry
dWN0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0CmluZGV4IDAyODVhYzQyMjAy
YWEyNzQxMTE3YTM0Mzc2ZWQ0OGE2Mjg3MmE0MjguLmY4NmJhMGY4MTI5NjkzMWUzMzk2MzE4N2M1
NDI0M2EwMTU0NzY4ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUt
ZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEzIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6
IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMQotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazIKLUNPTlNPTEUgTUVTU0FHRTog
bGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2szCi1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNAotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazUKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s2Ci1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNr
NwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxs
YmFjazgKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJf
Y2FsbGJhY2s5Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhl
ZERCX2NhbGxiYWNrMTAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5J
bmRleGVkREJfY2FsbGJhY2sxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRl
c3QuSW5kZXhlZERCX2NhbGxiYWNrMgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0
b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5z
cGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s0CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6
IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNQorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazYKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s3CitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrOAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazkKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxMAog
VGVzdHMgdGhhdCBkYXRhYmFzZSBuYW1lcyBhcmUgY29ycmVjdGx5IGxvYWRlZCBhbmQgc2F2ZWQg
aW4gSW5kZXhlZERCTW9kZWwuCiAKIER1bXBpbmcgZGF0YWJhc2U6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvaW5kZXhlZGRiLXRlc3QuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvaW5kZXhlZGRiLXRl
c3QuanMKaW5kZXggMDI4NWEwZTdlMTkwNjQ3ZWYxNmYzZTE4Zjc5ZjFjZmNkNzM4MWFiZS4uNjA2
MDJlZjUwYjA0MWVkM2RkNWUyODAwZDQ1YjJhNzliZDY5OTI2YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9pbmRleGVkZGIt
dGVzdC5qcwpAQCAtMTEsMTIgKzExLDggQEAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZVdpdGhDYWxs
YmFjayA9IGZ1bmN0aW9uKGZyYW1lSWQsIG1ldGhvZE5hbWUsIHBhcmFtZXRlcnMsIGMKICAgICB2
YXIgY2FsbGJhY2tJZCA9ICsrbGFzdENhbGxiYWNrSWQ7CiAgICAgY2FsbGJhY2tzW2NhbGxiYWNr
SWRdID0gY2FsbGJhY2s7CiAgICAgdmFyIHBhcmFtZXRlcnNTdHJpbmcgPSAiXCIiICsgY2FsbGJh
Y2tJZFByZWZpeCArIGNhbGxiYWNrSWQgKyAiXCIiOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cGFyYW1ldGVycy5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAodHlwZW9mKHBhcmFtZXRlcnNb
aV0pID09PSAic3RyaW5nIikKLSAgICAgICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgKz0gIiwgXCIi
ICsgcGFyYW1ldGVyc1tpXSArICJcIiI7Ci0gICAgICAgIGVsc2UgaWYgKCh0eXBlb2YocGFyYW1l
dGVyc1tpXSkgPT09ICJudW1iZXIiKSB8fCAodHlwZW9mKHBhcmFtZXRlcnNbaV0pID09PSAiYm9v
bGVhbiIpKQotICAgICAgICAgICAgcGFyYW1ldGVyc1N0cmluZyArPSAiLCAiICsgcGFyYW1ldGVy
c1tpXTsKLSAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsg
KytpKQorICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nICs9ICIsICIgKyBKU09OLnN0cmluZ2lmeShw
YXJhbWV0ZXJzW2ldKTsKIAogICAgIHZhciByZXF1ZXN0U3RyaW5nID0gbWV0aG9kTmFtZSArICIo
IiArIHBhcmFtZXRlcnNTdHJpbmcgKyAiKSI7CiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZShyZXF1ZXN0U3RyaW5nKTsKQEAgLTY4LDkgKzY0LDE1IEBAIEluc3BlY3RvclRlc3QuZGVs
ZXRlT2JqZWN0U3RvcmVJbmRleCA9IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2Jq
ZWN0U3RvCiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZVdpdGhDYWxsYmFjayhmcmFtZUlkLCAi
ZGVsZXRlT2JqZWN0U3RvcmVJbmRleCIsIFtkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwg
b2JqZWN0U3RvcmVJbmRleE5hbWVdLCBjYWxsYmFjaykKIH07CiAKK0luc3BlY3RvclRlc3QuYWRk
SURCVmFsdWUgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFt
ZSwgdmFsdWUsIGtleSwgY2FsbGJhY2spCit7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZVdp
dGhDYWxsYmFjayhmcmFtZUlkLCAiYWRkSURCVmFsdWUiLCBbZGF0YWJhc2VOYW1lLCBvYmplY3RT
dG9yZU5hbWUsIHZhbHVlLCBrZXldLCBjYWxsYmFjaykKK307CisKIH07CiAKIHZhciBpbmRleGVk
REIgPSB3aW5kb3cuaW5kZXhlZGRiIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREI7Cit2YXIgSURC
VHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRy
YW5zYWN0aW9uOwogCiBmdW5jdGlvbiBkaXNwYXRjaENhbGxiYWNrKGNhbGxiYWNrSWQpCiB7CkBA
IC0xMTYsNiArMTE4LDI0IEBAIGZ1bmN0aW9uIGRvV2l0aFZlcnNpb25UcmFuc2FjdGlvbihkYXRh
YmFzZU5hbWUsIGNhbGxiYWNrLCBjb21taXRDYWxsYmFjaykKICAgICB9CiB9CiAKK2Z1bmN0aW9u
IGRvV2l0aFJlYWRXcml0ZVRyYW5zYWN0aW9uKGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1l
LCBjYWxsYmFjaywgY29tbWl0Q2FsbGJhY2spCit7CisgICAgZG9XaXRoRGF0YWJhc2UoZGF0YWJh
c2VOYW1lLCBzdGVwMik7CisKKyAgICBmdW5jdGlvbiBzdGVwMihkYikKKyAgICB7CisgICAgICAg
IHZhciB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFtvYmplY3RTdG9yZU5hbWVdLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKTsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKKyAgICAgICAgY2FsbGJhY2sob2Jq
ZWN0U3RvcmUsIGlubmVyQ29tbWl0Q2FsbGJhY2spOworCisgICAgICAgIGZ1bmN0aW9uIGlubmVy
Q29tbWl0Q2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBkYi5jbG9zZSgpOworICAg
ICAgICAgICAgY29tbWl0Q2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogZnVuY3Rp
b24gY3JlYXRlRGF0YWJhc2UoY2FsbGJhY2tJZCwgZGF0YWJhc2VOYW1lKQogewogICAgIHZhciBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGF0YWJhc2VOYW1lLCAwKTsKQEAgLTE3OCwzICsxOTgs
MTkgQEAgZnVuY3Rpb24gZGVsZXRlT2JqZWN0U3RvcmVJbmRleChjYWxsYmFja0lkLCBkYXRhYmFz
ZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgb2JqZWMKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGFkZElE
QlZhbHVlKGNhbGxiYWNrSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCB2YWx1ZSwg
a2V5KQoreworICAgIGRvV2l0aFJlYWRXcml0ZVRyYW5zYWN0aW9uKGRhdGFiYXNlTmFtZSwgb2Jq
ZWN0U3RvcmVOYW1lLCB3aXRoVHJhbnNhY3Rpb25DYWxsYmFjaywgZGlzcGF0Y2hDYWxsYmFjay5i
aW5kKHRoaXMsIGNhbGxiYWNrSWQpKQorCisgICAgZnVuY3Rpb24gd2l0aFRyYW5zYWN0aW9uQ2Fs
bGJhY2sob2JqZWN0U3RvcmUsIGNvbW1pdENhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJl
cXVlc3Q7CisgICAgICAgIGlmIChrZXkpCisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKHZhbHVlLCBrZXkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKHZhbHVlKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gb25JbmRl
eGVkREJFcnJvcjsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb21taXRDYWxsYmFjazsK
KyAgICB9Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126787</attachid>
            <date>2012-02-13 09:59:25 -0800</date>
            <delta_ts>2012-02-13 10:27:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78503-20120213215923.patch</filename>
            <type>text/plain</type>
            <size>66730</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODJhYTk5ODgwMGQ2NjYw
OTJjZmU5NmYzNGM2N2RjMWQ1ODcxMDc4OC4uZGNlYjM3NWY3YTViMWM4NWU2YThjZjllYzJhM2Y0
OThmYWU0NzgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAyLTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtJbnNwZWN0b3JJbmRleGVkREJdIFBhc3MgZGF0YSBlbnRyaWVzIGZyb20gb2JqZWN0IHN0
b3JlcyBhbmQgaW5kZXhlcyB0byBmcm9udC1lbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZUZvckluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAo
SW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6YXNzZXJ0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9t
S2V5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlSYW5nZUZyb21JREJL
ZXlSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBl
Ll9sb2FkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5sb2FkT2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUubG9hZEluZGV4RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
QlJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUuX3JlcXVlc3REYXRhLmlubmVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fcmVxdWVzdERh
dGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3Rv
dHlwZS5yZXF1ZXN0T2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX29iamVjdFN0b3JlRGF0YUxvYWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJl
cXVlc3RJbmRleERhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyLnByb3RvdHlwZS5faW5kZXhEYXRhTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lRGV0YWNoZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZGF0
YWJhc2VSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFu
YWdlci5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJS
ZXF1ZXN0TWFuYWdlci5EYXRhUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCRGlzcGF0Y2hlci5wcm90b3R5cGUuZGF0YWJhc2VMb2FkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLm9iamVjdFN0b3JlRGF0YUxvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUu
aW5kZXhEYXRhTG9hZGVkKToKKwogMjAxMi0wMi0xMCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIFNjcmlwdHNOYXZp
Z2F0b3IgZGVmYXVsdCBmaWxlIHNlbGVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggM2FjNmVjZjU4MTM0M2M2
MjVhNjQyZDYxYmM0ZTI1ZDk1OTdjOWRlNC4uNjdhMDc0YjBmMGQ3MjMyNDdhNTZiZGFjNTk4MTA5
YjI3OTViNzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0
b3IuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+
CkBAIC0xNDUyLDYgKzE0NTMsMTIgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICByZXR1
cm4gcmVzdWx0LmZpcnN0OwogfQogCitTY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKK3sKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCksIDApOworICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRT
dGF0ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZSk7Cit9CisKIEpTVmFsdWVSZWYgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24sIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cykKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGRlc3RpbmF0aW9uQ29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IGNhZWQ2NDczYzA0YzZlZDZjMzcyYjQ2YWYxMjhiOWYxNTYyODU1YTAuLmI1ZWNhOTNjMmM5ZTU4
MDQ2ZmQ5Y2FhNWFkNzI0NzgyY2NhNzY2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0g
U2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIAogZW51bSBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKK2NsYXNzIFNjcmlwdFZhbHVlOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMg
UmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKQEAgLTc3LDYgKzc4LDggQEAgcHVi
bGljOgogICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24sIE1lc3NhZ2VQb3J0QXJyYXkqKTsKICAgICBKU1ZhbHVlUmVmIGRlc2VyaWFs
aXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAorICAgIFNjcmlwdFZh
bHVlIGRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0YXRlKik7CisKICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIH5TZXJpYWxp
emVkU2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDkxODFiNzNmNTNjOWM2MWI2MWI3YmQyODIz
OWUwMzllM2U2NGU3ZDAuLjM0MDk0ODI0YWQyYzIwZTdmNzJlMjZkNmM1OGY5YmY0NDg3NjAyMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtMjI1OCw0ICsyMjU4LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3Nh
CiAgICAgcmV0dXJuIGRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZSgpOwogfQogCitTY3JpcHRWYWx1
ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0
YXRlKikKK3sKKyAgICBWOExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CisgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKGRlc2VyaWFsaXplKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CmluZGV4IGQzYTY2OGI5ODNjNDBhYjRiMzhhYTY3N2ZkMzc3MzNiMzMwNGMxZTIuLjMzYTBlYmM1
YjM2NjJjNDRiMTUxOTMwZTAxNjVhNzlkY2FmZDA5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC03Niw2ICs3Niw4IEBA
IHB1YmxpYzoKICAgICAvLyBjYXNlIG9mIGZhaWx1cmUuCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGRlc2VyaWFsaXplKE1lc3NhZ2VQb3J0QXJyYXkqID0gMCk7CiAKKyAgICBTY3JpcHRWYWx1
ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihTY3JpcHRTdGF0ZSopOworCiBwcml2YXRlOgogICAg
IGVudW0gU3RyaW5nRGF0YU1vZGUgewogICAgICAgICBTdHJpbmdWYWx1ZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2
OTIyMjkwYmY0YTQzYWY2ZmE2NWFkNzcuLjhmNzQ1YWYwZTI5ZmJjMGJmNjEyZGIzYTMyMWQ3ZGI3
ZmM3YTdiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtMTU0LDcgKzE1NCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVk
U2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsCiB9CiAjZW5kaWYK
IAotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0
KFNjcmlwdFZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChTY3JpcHRWYWx1ZSB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNO
b1ZhbHVlKCkpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24obV9pbmplY3Rl
ZFNjcmlwdE9iamVjdCwgIndyYXBPYmplY3QiKTsKQEAgLTE3Niw2ICsxNzYsMTIgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShOb2RlKiBub2Rl
LCBjb25zdCBTdHJpbmcmIGcKICAgICByZXR1cm4gd3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1
ZShub2RlKSwgZ3JvdXBOYW1lKTsKIH0KIAorUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IElu
amVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0Cit7
CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRl
c2VyaWFsaXplRm9ySW5zcGVjdG9yKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KSk7CisgICAgcmV0dXJuIHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUsIGdyb3VwTmFtZSk7Cit9CisK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNT
RVJUKCFoYXNOb1ZhbHVlKCkpOwpAQCAtMTkzLDcgKzE5OSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogICAgIHJl
bGVhc2VGdW5jdGlvbi5jYWxsKCk7CiB9CiAKLWJvb2wgSW5qZWN0ZWRTY3JpcHQ6OmNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdygpCitib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3coKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggZjJiN2FjMTUyYjM4YTRlODk3NDZh
NzBiZjMxNTM1ZjQxM2ZiODYxNC4uYTRhZDA5NjFiNGRmZmJiOGI2NmMyYzZiYjNkYTI4MzY4Mzg3
ZmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTg3
LDggKzg3LDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBD
YWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiB3cmFwT2JqZWN0KFNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2Ny
aXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1l
KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gd3JhcFNlcmlhbGl6ZWRPYmplY3Qo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0Owog
ICAgIHZvaWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3Vw
KGNvbnN0IFN0cmluZyYpOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQpAQCAtOTgsNyAr
OTksNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2spKFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJ
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KCk7CisgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKICAg
ICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRG
dW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29sKiB3YXNU
aHJvd24pOwogICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA0YWYyYjQ5ZThlZTliZjBkZjBh
YWE5ZTZjZmU4YzkzMGRlMTYxZTM1Li5mYWZkZTlkMjIwMmNhNGZiMTk4Y2JlYTY0OThhZGQ1YWFj
MDc3YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC05NzEs
NiArOTcxLDM5IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidW5pcXVlIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCBpbmRleCBpcyB1bmlxdWUu
IiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm11bHRpRW50cnkiLCAidHlwZSI6
ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIGluZGV4IGFsbG93cyBtdWx0aXBs
ZSBlbnRyaWVzIGZvciBhIGtleS4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJLZXkiLAorICAgICAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IktleS4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAi
S2V5IHR5cGUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm51bWJlciIsICJ0
eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIg
dmFsdWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0cmluZyIsICJ0eXBl
IjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTdHJpbmcgdmFs
dWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGUiLCAidHlwZSI6ICJu
dW1iZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRGF0ZSB2YWx1ZS4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXJyYXkiLCAidHlwZSI6ICJhcnJheSIs
ICJvcHRpb25hbCI6IHRydWUsICJpdGVtcyI6IHsgIiRyZWYiOiAiS2V5IiB9LCAiZGVzY3JpcHRp
b24iOiAiQXJyYXkgdmFsdWUuIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiS2V5UmFuZ2UiLAorICAgICAg
ICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIktleSByYW5nZS4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImxvd2VyIiwgIiRyZWYiOiAiS2V5IiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkxvd2VyIGJvdW5kLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ1cHBlciIsICIkcmVmIjogIktleSIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJVcHBlciBib3VuZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibG93ZXJPcGVuIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJ
ZiB0cnVlIGxvd2VyIGJvdW5kIGlzIG9wZW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVwcGVyT3BlbiIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYg
dHJ1ZSB1cHBlciBib3VuZCBpcyBvcGVuLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkRhdGFFbnRyeSIs
CisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiS2V5LiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAia2V5IiwgIiRyZWYiOiAiS2V5IiwgImRlc2NyaXB0
aW9uIjogIktleS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJpbWFyeUtl
eSIsICIkcmVmIjogIktleSIsICJkZXNjcmlwdGlvbiI6ICJQcmltYXJ5IGtleS4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAiJHJlZiI6ICJSdW50aW1lLlJlbW90
ZU9iamVjdCIsICJkZXNjcmlwdGlvbiI6ICJWYWx1ZS4iIH0KKyAgICAgICAgICAgICAgICBdCiAg
ICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsKQEAgLTk5NCwx
MCArMTAyNywyNCBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3REYXRhYmFzZSIs
CiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJS
ZXF1ZXN0IGlkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwg
IiRyZWYiOiAiTmV0d29yay5GcmFtZUlkIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImRhdGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImZyYW1lSWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAiZGVzY3Jp
cHRpb24iOiAiRnJhbWUgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRh
dGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBu
YW1lLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJlcXVlc3RzIGRhdGFiYXNlIHdpdGggZ2l2ZW4gbmFtZSBpbiBnaXZlbiBmcmFtZS4iCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJl
cXVlc3REYXRhIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2Ny
aXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImZyYW1lSWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAiZGVzY3JpcHRpb24iOiAiRnJh
bWUgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RTdG9yZU5hbWUiLCAidHlwZSI6ICJz
dHJpbmciLCAiZGVzY3JpcHRpb24iOiAiT2JqZWN0IHN0b3JlIG5hbWUuIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImluZGV4TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJJbmRleCBuYW1lLCBlbXB0eSBzdHJpbmcgZm9yIG9iamVjdCBzdG9yZSBkYXRh
IHJlcXVlc3RzLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJza2lwQ291bnQi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiByZWNvcmRzIHRv
IHNraXAuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhZ2VTaXplIiwgInR5
cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgcmVjb3JkcyB0byBmZXRj
aC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAia2V5UmFuZ2UiLCAiJHJlZiI6
ICJLZXlSYW5nZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJLZXkgcmFuZ2Uu
IiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
UmVxdWVzdHMgZGF0YSBmcm9tIG9iamVjdCBzdG9yZSBvciBpbmRleC4iCiAgICAgICAgICAgICB9
CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xMDE0LDYgKzEwNjEsMjIgQEAK
ICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRl
Z2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9LAogICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcyIsICIkcmVmIjogIkRhdGFiYXNl
V2l0aE9iamVjdFN0b3JlcyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSB3aXRoIGFuIGFycmF5
IG9mIG9iamVjdCBzdG9yZXMuIiB9CiAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJvYmplY3RTdG9yZURhdGFM
b2FkZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRp
b24iOiAiUmVxdWVzdCBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib2Jq
ZWN0U3RvcmVEYXRhRW50cmllcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6
ICJEYXRhRW50cnkiIH0sICJkZXNjcmlwdGlvbiI6ICJBcnJheSBvZiBvYmplY3Qgc3RvcmUgZGF0
YSBlbnRyaWVzLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYXNNb3JlIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0aGVyZSBhcmUgbW9y
ZSBlbnRyaWVzIHRvIGZldGNoIGluIHRoZSBnaXZlbiByYW5nZS4iIH0KKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1l
IjogImluZGV4RGF0YUxvYWRlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdl
ciIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpbmRleERhdGFFbnRyaWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIkRhdGFFbnRyeSIgfSwgImRlc2NyaXB0aW9uIjogIkFycmF5IG9mIGluZGV4IGRh
dGEgZW50cmllcy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFzTW9yZSIs
ICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdGhlcmUgYXJlIG1v
cmUgZW50cmllcyB0byBmZXRjaCBpbiB0aGUgZ2l2ZW4gcmFuZ2UuIiB9CisgICAgICAgICAgICAg
ICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlYzUwYmM1Zjg1NGY2
MDdlZDUwNGY2YWE3NTQ0MWQ1NmQwNTdkOWE1Li4zMzllZWZmN2MwMWU1OWQyYTJkNzg3ZWE0NTQ1
N2Q3MDE2MDRmYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckMKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgbV9hZ2VudHMu
YXBwZW5kKEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBwYWdl
QWdlbnQpKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
YjAwNTI1OTY2NjExZjZhZTllMDJjNGQ0NTU5YTBhZTQ3ZDI3MjBjMi4uOTAxZmUxMDlkMjkyNmQ4
Mzk5MWM0NzRjOTk1NDRiYzA3MTFlNTI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC00MCwxMiArNDAsMTcgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyb3VwU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1
ZGUgIklEQktleS5oIgorI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0
aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBh
Z2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCkBAIC01Nyw4ICs2MiwxMiBA
QAogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpTZWN1cml0
eU9yaWdpbldpdGhEYXRhYmFzZU5hbWVzOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Oklu
ZGV4ZWREQjo6RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OkluZGV4ZWREQjo6RGF0YUVudHJ5OwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6
OkluZGV4ZWREQjo6S2V5OwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6
S2V5UmFuZ2U7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RT
dG9yZTsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3Jl
SW5kZXg7CiAKQEAgLTEwMiw2ICsxMTEsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBv
bkJsb2NrZWQoKSB7IH0KIH07CiAKK2NsYXNzIEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2sgOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvcklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2soKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SW5zcGVjdG9ySURCVHJhbnNhY3Rp
b25DYWxsYmFjaygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpIHsgfQorcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JJREJU
cmFuc2FjdGlvbkNhbGxiYWNrKCkgeyB9Cit9OworCiBjbGFzcyBHZXREYXRhYmFzZU5hbWVzQ2Fs
bGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEdldERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gY3JlYXRlKEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyKiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQpAQCAtMjYyLDEwICsyODYsMjY3
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcmVxdWVzdElkOwogfTsKIAorc3RhdGljIFBhc3NSZWZQ
dHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5
KQoreworICAgIFJlZlB0cjxJREJLZXk+IGlkYktleTsKKworICAgIGludCB0eXBlOworICAgIGlm
ICgha2V5LT5nZXROdW1iZXIoInR5cGUiLCAmdHlwZSkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgorICAgIGNh
c2UgSURCS2V5OjpNaW5UeXBlOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIElEQktleTo6
TnVtYmVyVHlwZTogeworICAgICAgICBkb3VibGUgbnVtYmVyOworICAgICAgICBpZiAoIWtleS0+
Z2V0TnVtYmVyKCJudW1iZXIiLCAmbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICBpZGJLZXkgPSBJREJLZXk6OmNyZWF0ZU51bWJlcihudW1iZXIpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6IHsKKyAgICAgICAgU3RyaW5n
IHN0cmluZzsKKyAgICAgICAgaWYgKCFrZXktPmdldFN0cmluZygic3RyaW5nIiwgJnN0cmluZykp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVT
dHJpbmcoc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSURCS2V5OjpE
YXRlVHlwZTogeworICAgICAgICBkb3VibGUgZGF0ZTsKKyAgICAgICAgaWYgKCFrZXktPmdldE51
bWJlcigiZGF0ZSIsICZkYXRlKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZGJL
ZXkgPSBJREJLZXk6OmNyZWF0ZURhdGUoZGF0ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgorICAgICAgICBJREJLZXk6OktleUFycmF5IGtleUFy
cmF5OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5ID0ga2V5LT5nZXRBcnJh
eSgiYXJyYXkiKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGFy
cmF5LT5nZXQoaSk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7
CisgICAgICAgICAgICBpZiAoIXZhbHVlLT5hc09iamVjdCgmb2JqZWN0KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGtleUFycmF5LmFwcGVuZChpZGJLZXlGcm9tSW5z
cGVjdG9yT2JqZWN0KG9iamVjdC5nZXQoKSkpOworICAgICAgICB9CisgICAgICAgIGlkYktleSA9
IElEQktleTo6Y3JlYXRlQXJyYXkoa2V5QXJyYXkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShJbnNwZWN0b3JPYmplY3QqIGtleVJhbmdl
KQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvd2VyID0ga2V5UmFuZ2UtPmdldE9i
amVjdCgibG93ZXIiKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB1cHBlciA9IGtleVJh
bmdlLT5nZXRPYmplY3QoInVwcGVyIik7CisgICAgUmVmUHRyPElEQktleT4gaWRiTG93ZXIgPSBs
b3dlciA/IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QobG93ZXIuZ2V0KCkpIDogMDsKKyAgICBS
ZWZQdHI8SURCS2V5PiBpZGJVcHBlciA9IHVwcGVyID8gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVj
dCh1cHBlci5nZXQoKSkgOiAwOworCisgICAgYm9vbCBsb3dlck9wZW47CisgICAgaWYgKCFrZXlS
YW5nZS0+Z2V0Qm9vbGVhbigibG93ZXJPcGVuIiwgJmxvd2VyT3BlbikpCisgICAgICAgIHJldHVy
biAwOworICAgIElEQktleVJhbmdlOjpMb3dlckJvdW5kVHlwZSBsb3dlckJvdW5kVHlwZSA9IGxv
d2VyT3BlbiA/IElEQktleVJhbmdlOjpMb3dlckJvdW5kT3BlbiA6IElEQktleVJhbmdlOjpMb3dl
ckJvdW5kQ2xvc2VkOworCisgICAgYm9vbCB1cHBlck9wZW47CisgICAgaWYgKCFrZXlSYW5nZS0+
Z2V0Qm9vbGVhbigidXBwZXJPcGVuIiwgJnVwcGVyT3BlbikpCisgICAgICAgIHJldHVybiAwOwor
ICAgIElEQktleVJhbmdlOjpVcHBlckJvdW5kVHlwZSB1cHBlckJvdW5kVHlwZSA9IHVwcGVyT3Bl
biA/IElEQktleVJhbmdlOjpVcHBlckJvdW5kT3BlbiA6IElEQktleVJhbmdlOjpVcHBlckJvdW5k
Q2xvc2VkOworCisgICAgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSA9IElEQktleVJh
bmdlOjpjcmVhdGUoaWRiTG93ZXIsIGlkYlVwcGVyLCBsb3dlckJvdW5kVHlwZSwgdXBwZXJCb3Vu
ZFR5cGUpOworICAgIHJldHVybiBpZGJLZXlSYW5nZS5yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBQ
YXNzUmVmUHRyPEtleT4ga2V5RnJvbUlEQktleShJREJLZXkqIGlkYktleSkKK3sKKyAgICBpZiAo
IWlkYktleSB8fCAhaWRiS2V5LT52YWxpZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJl
ZlB0cjxLZXk+IGtleSA9IEtleTo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGUoaWRiS2V5LT50
eXBlKCkpOworICAgIHN3aXRjaCAoaWRiS2V5LT50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleTo6
SW52YWxpZFR5cGU6CisgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgICAgIHJldHVybiAw
OworICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgorICAgICAgICBrZXktPnNldE51bWJlcihp
ZGJLZXktPm51bWJlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6OlN0cmlu
Z1R5cGU6CisgICAgICAgIGtleS0+c2V0U3RyaW5nKGlkYktleS0+c3RyaW5nKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6CisgICAgICAgIGtleS0+c2V0RGF0
ZShpZGJLZXktPmRhdGUoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpBcnJh
eVR5cGU6CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JB
cnJheTo6Y3JlYXRlKCk7CisgICAgICAgIElEQktleTo6S2V5QXJyYXkga2V5QXJyYXkgPSBpZGJL
ZXktPmFycmF5KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5QXJyYXkuc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICBhcnJheS0+cHVzaE9iamVjdChrZXlGcm9tSURCS2V5KGtl
eUFycmF5W2ldLmdldCgpKSk7CisgICAgICAgIGtleS0+c2V0QXJyYXkoYXJyYXkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGtleS5yZWxlYXNlKCk7Cit9CisKK2NsYXNzIE9w
ZW5DdXJzb3JDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CitwdWJsaWM6
CisgICAgZW51bSBDdXJzb3JUeXBlIHsKKyAgICAgICAgT2JqZWN0U3RvcmVEYXRhQ3Vyc29yLAor
ICAgICAgICBJbmRleERhdGFDdXJzb3IKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
T3BlbkN1cnNvckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBpZGJUcmFuc2FjdGlvbiwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBpbnQgcmVxdWVzdElkLCBp
bnQgc2tpcENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgT3BlbkN1cnNvckNhbGxiYWNrKGZyb250ZW5kUHJvdmlkZXIsIGluamVjdGVk
U2NyaXB0LCBpZGJUcmFuc2FjdGlvbiwgY3Vyc29yVHlwZSwgcmVxdWVzdElkLCBza2lwQ291bnQs
IHBhZ2VTaXplKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+T3BlbkN1cnNvckNhbGxiYWNrKCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPikKKyAgICB7CisgICAgICAgIGVuZChmYWxzZSk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
IGlkYkN1cnNvcikKKyAgICB7CisgICAgICAgIG1faWRiQ3Vyc29yID0gaWRiQ3Vyc29yOworICAg
ICAgICBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKG1fc2tp
cENvdW50KSB7CisgICAgICAgICAgICAtLW1fc2tpcENvdW50OworICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fcmVzdWx0
LT5sZW5ndGgoKSA9PSBtX3BhZ2VTaXplKSB7CisgICAgICAgICAgICBlbmQodHJ1ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkg
PSBtX2lkYkN1cnNvci0+a2V5KCk7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkg
PSBtX2lkYkN1cnNvci0+cHJpbWFyeUtleSgpOworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSA9IG1faWRiQ3Vyc29yLT52YWx1ZSgpOworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiB3cmFwcGVkVmFsdWUgPSBtX2luamVjdGVkU2NyaXB0LndyYXBTZXJp
YWxpemVkT2JqZWN0KHZhbHVlLmdldCgpLCAiaW5kZXhlZGRiIik7CisgICAgICAgIFJlZlB0cjxE
YXRhRW50cnk+IGRhdGFFbnRyeSA9IERhdGFFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5z
ZXRLZXkoa2V5RnJvbUlEQktleShrZXkuZ2V0KCkpKQorICAgICAgICAgICAgLnNldFByaW1hcnlL
ZXkoa2V5RnJvbUlEQktleShwcmltYXJ5S2V5LmdldCgpKSkKKyAgICAgICAgICAgIC5zZXRWYWx1
ZSh3cmFwcGVkVmFsdWUpOworICAgICAgICBtX3Jlc3VsdC0+YWRkSXRlbShkYXRhRW50cnkpOwor
CisgICAgICAgIG5leHQoKTsKKyAgICB9CisKKyAgICB2b2lkIG5leHQoKQorICAgIHsKKyAgICAg
ICAgbV9pZGJUcmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CisKKyAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIG1faWRiQ3Vyc29yLT5jb250aW51ZUZ1bmN0
aW9uKDAsIHRoaXMsIGVjKTsKKyAgICB9CisKKyAgICB2b2lkIGVuZChib29sIGhhc01vcmUpCisg
ICAgeworICAgICAgICBtX2lkYlRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsK
KworICAgICAgICBzd2l0Y2ggKG1fY3Vyc29yVHlwZSkgeworICAgICAgICBjYXNlIE9iamVjdFN0
b3JlRGF0YUN1cnNvcjoKKyAgICAgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQo
KS0+b2JqZWN0U3RvcmVEYXRhTG9hZGVkKG1fcmVxdWVzdElkLCBtX3Jlc3VsdC5yZWxlYXNlKCks
IGhhc01vcmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5kZXhEYXRhQ3Vy
c29yOgorICAgICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5pbmRleERh
dGFMb2FkZWQobV9yZXF1ZXN0SWQsIG1fcmVzdWx0LnJlbGVhc2UoKSwgaGFzTW9yZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBPcGVuQ3Vy
c29yQ2FsbGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQ
cm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlv
biwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBpbnQgcmVxdWVzdElkLCBpbnQgc2tpcENvdW50LCB1
bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQ
cm92aWRlcikKKyAgICAgICAgLCBtX2luamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0KQorICAg
ICAgICAsIG1faWRiVHJhbnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24pCisgICAgICAgICwgbV9jdXJz
b3JUeXBlKGN1cnNvclR5cGUpCisgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQorICAg
ICAgICAsIG1fc2tpcENvdW50KHNraXBDb3VudCkKKyAgICAgICAgLCBtX3BhZ2VTaXplKHBhZ2VT
aXplKQorICAgIHsKKyAgICAgICAgbV9yZXN1bHQgPSBBcnJheTxEYXRhRW50cnk+OjpjcmVhdGUo
KTsKKyAgICAgICAgbV9pZGJUcmFuc2FjdGlvbi0+c2V0Q2FsbGJhY2tzKEluc3BlY3RvcklEQlRy
YW5zYWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZSgpLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPElu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlk
ZXI7CisgICAgSW5qZWN0ZWRTY3JpcHQgbV9pbmplY3RlZFNjcmlwdDsKKyAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX2lkYlRyYW5zYWN0aW9uOworICAgIEN1cnNv
clR5cGUgbV9jdXJzb3JUeXBlOworICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBpbnQgbV9za2lw
Q291bnQ7CisgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKKyAgICBSZWZQdHI8QXJyYXk8RGF0YUVu
dHJ5PiA+IG1fcmVzdWx0OworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBt
X2lkYkN1cnNvcjsKK307CisKK2NsYXNzIERhdGFMb2FkZXJDYWxsYmFjayA6IHB1YmxpYyBFeGVj
dXRhYmxlV2l0aERhdGFiYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRh
TG9hZGVyQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50
OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25z
dCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3Rv
cmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
aWRiS2V5UmFuZ2UsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhTG9hZGVyQ2FsbGJhY2soZnJvbnRlbmRQcm92
aWRlciwgcmVxdWVzdElkLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5h
bWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+RGF0YUxvYWRlckNhbGxiYWNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UpCisg
ICAgeworICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoaWRiRGF0YWJh
c2UuZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKKyAgICAgICAgaWYgKCFpZGJUcmFuc2FjdGlv
bikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9u
KGlkYlRyYW5zYWN0aW9uLmdldCgpLCBtX29iamVjdFN0b3JlTmFtZSk7CisgICAgICAgIGlmICgh
aWRiT2JqZWN0U3RvcmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX2lu
ZGV4TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmplY3RTdG9yZS5n
ZXQoKSwgbV9pbmRleE5hbWUpOworICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIFJlZlB0cjxPcGVuQ3Vyc29yQ2FsbGJhY2s+
IG9wZW5DdXJzb3JDYWxsYmFjayA9IE9wZW5DdXJzb3JDYWxsYmFjazo6Y3JlYXRlKG1fZnJvbnRl
bmRQcm92aWRlciwgbV9pbmplY3RlZFNjcmlwdCwgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIE9wZW5D
dXJzb3JDYWxsYmFjazo6SW5kZXhEYXRhQ3Vyc29yLCBtX3JlcXVlc3RJZCwgbV9za2lwQ291bnQs
IG1fcGFnZVNpemUpOworCisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAg
ICAgICAgIGlkYkluZGV4LT5vcGVuQ3Vyc29yKG1faWRiS2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVY
VCwgb3BlbkN1cnNvckNhbGxiYWNrLCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gb3BlbkN1
cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUobV9mcm9udGVuZFByb3Zp
ZGVyLCBtX2luamVjdGVkU2NyaXB0LCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwgT3BlbkN1cnNvckNh
bGxiYWNrOjpPYmplY3RTdG9yZURhdGFDdXJzb3IsIG1fcmVxdWVzdElkLCBtX3NraXBDb3VudCwg
bV9wYWdlU2l6ZSk7CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAg
ICAgICAgaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZSwgSURCQ3Vyc29y
OjpORVhULCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBlYyk7Cisg
ICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGF0YUxvYWRlckNhbGxiYWNrKFBhc3NS
ZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5k
UHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNj
cmlwdCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSwgaW50IHNraXBDb3VudCwg
dW5zaWduZWQgcGFnZVNpemUpCisgICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5k
UHJvdmlkZXIpCisgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQorICAgICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHQpCisgICAgICAgICwgbV9vYmplY3RTdG9yZU5h
bWUob2JqZWN0U3RvcmVOYW1lKQorICAgICAgICAsIG1faW5kZXhOYW1lKGluZGV4TmFtZSkKKyAg
ICAgICAgLCBtX2lkYktleVJhbmdlKGlkYktleVJhbmdlKQorICAgICAgICAsIG1fc2tpcENvdW50
KHNraXBDb3VudCkKKyAgICAgICAgLCBtX3BhZ2VTaXplKHBhZ2VTaXplKSB7IH0KKyAgICBSZWZQ
dHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQ
cm92aWRlcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CisgICAgSW5qZWN0ZWRTY3JpcHQgbV9pbmpl
Y3RlZFNjcmlwdDsKKyAgICBTdHJpbmcgbV9vYmplY3RTdG9yZU5hbWU7CisgICAgU3RyaW5nIG1f
aW5kZXhOYW1lOworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gbV9pZGJLZXlSYW5nZTsKKyAgICBp
bnQgbV9za2lwQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKK307CisKIH0gLy8gbmFt
ZXNwYWNlCiAKLUluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0
ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50KQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW50Pigi
SW5kZXhlZERCIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCisgICAgLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhZ2VBZ2VudChw
YWdlQWdlbnQpCiB7CiB9CkBAIC0zMDQsNiArNTg1LDI2IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4o
SW5kZXhlZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdlbnRFbmFibGVkLCBmYWxzZSk7CiB9CiAK
K3N0YXRpYyBGcmFtZSogYXNzZXJ0RnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBJbnNwZWN0
b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgRXJyb3JTdHJpbmcqIGVycm9yKQoreworICAgIEZyYW1l
KiBmcmFtZSA9IHBhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKKworICAgIGlmICghZnJh
bWUpCisgICAgICAgICplcnJvciA9ICJGcmFtZSBub3QgZm91bmQiOworCisgICAgcmV0dXJuIGZy
YW1lOworfQorCitzdGF0aWMgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEZyYW1lKiBmcmFtZSwg
RXJyb3JTdHJpbmcqIGVycm9yKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8g
ZnJhbWUtPmRvY3VtZW50KCkgOiAwOworCisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgKmVy
cm9yID0gIk5vIGRvY3VtZW50IGZvciBnaXZlbiBmcmFtZSBmb3VuZCI7CisKKyAgICByZXR1cm4g
ZG9jdW1lbnQ7Cit9CisKIHN0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgRXJyb3JTdHJpbmcq
IGVycm9yKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFt
ZUlkKTsKQEAgLTM1Myw2ICs2NTQsMjYgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6
cmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHJlcXVlc3RJZCwKICAgICBk
YXRhYmFzZUxvYWRlckNhbGxiYWNrLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKSwgZG9jdW1lbnQtPmZyYW1lKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiBlcnJvciwg
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5k
ZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBrZXlSYW5nZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBhc3NlcnRGcmFtZShm
cmFtZUlkLCBtX3BhZ2VBZ2VudCwgZXJyb3IpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybjsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChmcmFtZSwgZXJy
b3IpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZG9jdW1lbnQs
IGVycm9yKTsKKyAgICBpZiAoIWlkYkZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
amVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKSk7CisKKyAgICBSZWZQ
dHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlID0ga2V5UmFuZ2UgPyBpZGJLZXlSYW5nZUZyb21L
ZXlSYW5nZShrZXlSYW5nZS0+Z2V0KCkpIDogMDsKKyAgICBSZWZQdHI8RGF0YUxvYWRlckNhbGxi
YWNrPiBkYXRhTG9hZGVyQ2FsbGJhY2sgPSBEYXRhTG9hZGVyQ2FsbGJhY2s6OmNyZWF0ZShtX2Zy
b250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFt
ZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSk7CisKKyAgICBk
YXRhTG9hZGVyQ2FsbGJhY2stPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpLCBkb2N1bWVudC0+ZnJhbWUoKSwgZGF0YWJhc2VOYW1lKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IDFiNDZkZDE0MzZlYTMwNGY0ZTI0NTIwMDlhOTgzMzZm
YmNiZmMwOGEuLmIxOWVkNmU1ZjViMGMzMzcyYmU4NjBlMzUzZjhhZjJmZWE0YjcxOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5o
CkBAIC0zOSw2ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKQEAgLTQ3LDkgKzQ4LDkgQEAgY2xhc3MgSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFn
ZW4KIHB1YmxpYzoKICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwogCi0gICAgc3RhdGljIFBh
c3NPd25QdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckluZGV4ZWREQkFnZW50KGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBwYWdlQWdlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0
ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBwYWdlQWdlbnQpKTsKICAgICB9CiAgICAgfkluc3Bl
Y3RvckluZGV4ZWREQkFnZW50KCk7CiAKQEAgLTYyLDkgKzYzLDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVy
cm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9y
U3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSk7CiBwcml2YXRlOgotICAgIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3Bl
Y3RvclBhZ2VBZ2VudCopOworICAgIEluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3Bl
Y3RvclBhZ2VBZ2VudCopOwogCisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAg
IFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luZGV4ZWREQk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJNb2RlbC5qcwppbmRleCA3NTcxNmQyZDE2NzM2MDZmNjNkM2JjYzlmYzdhNTY3YWRk
YzcxOGM2Li5mYWY3ZDFmOWMyN2YzZTk2MThmOGMyZDg3ODA0ODhkYTMzYzljZjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwu
anMKQEAgLTQ2LDYgKzQ2LDg2IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbCA9IGZ1bmN0
aW9uKCkKICAgICB0aGlzLnJlZnJlc2hEYXRhYmFzZU5hbWVzKCk7CiB9CiAKKy8vS2VlcCB0aGVz
ZSBpbiBzeW5jIHdpdGggV2ViQ29yZTo6SURCS2V5OjpUeXBlCitXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwuS2V5VHlwZXMgPSB7CisgICAgSW52YWxpZFR5cGU6IDAsCisgICAgQXJyYXlUeXBl
OiAgIDEsCisgICAgU3RyaW5nVHlwZTogIDIsCisgICAgRGF0ZVR5cGU6ICAgIDMsCisgICAgTnVt
YmVyVHlwZTogIDQsCisgICAgTWluVHlwZTogICAgIDUKK307CisKKy8qKgorICogQHBhcmFtIHtJ
bmRleGVkREJBZ2VudC5LZXl9IGtleQorICovCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
aWRiS2V5RnJvbUtleSA9IGZ1bmN0aW9uKGtleSkKK3sKKyAgICB2YXIgaWRiS2V5OworICAgIHN3
aXRjaCAoa2V5LnR5cGUpIHsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5L
ZXlUeXBlcy5OdW1iZXJUeXBlOgorICAgICAgICBpZGJLZXkgPSBrZXkubnVtYmVyOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5T
dHJpbmdUeXBlOgorICAgICAgICBpZGJLZXkgPSBrZXkuc3RyaW5nOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5EYXRlVHlwZToK
KyAgICAgICAgaWRiS2V5ID0gbmV3IERhdGUoa2V5LmRhdGUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5BcnJheVR5cGU6Cisg
ICAgICAgIGlkYktleSA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIGlkYktleS5wdXNoKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5pZGJLZXlGcm9tS2V5KGtleS5hcnJheVtpXSkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIGlkYktleTsKK30KKworV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtl
eUZyb21JREJLZXkgPSBmdW5jdGlvbihpZGJLZXkpCit7CisgICAgaWYgKHR5cGVvZihpZGJLZXkp
ID09PSAidW5kZWZpbmVkIiB8fCBpZGJLZXkgPT09IG51bGwpCisgICAgICAgIHJldHVybiBudWxs
OworICAgIAorICAgIHZhciBrZXkgPSB7fTsKKyAgICBrZXkudHlwZSA9IFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5LZXlUeXBlcy5JbnZhbGlkVHlwZTsKKyAgICBzd2l0Y2ggKHR5cGVvZihp
ZGJLZXkpKSB7CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAga2V5Lm51bWJlciA9IGlkYktl
eTsKKyAgICAgICAga2V5LnR5cGUgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlw
ZXMuTnVtYmVyVHlwZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAic3RyaW5nIjoKKyAgICAg
ICAga2V5LnN0cmluZyA9IGlkYktleTsKKyAgICAgICAga2V5LnR5cGUgPSBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuU3RyaW5nVHlwZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAib2JqZWN0IjoKKyAgICAgICAgaWYgKGlkYktleSBpbnN0YW5jZW9mIERhdGUpIHsKKyAg
ICAgICAgICAgIGtleS5kYXRlID0gaWRiS2V5LmdldFRpbWUoKTsKKyAgICAgICAgICAgIGtleS50
eXBlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLkRhdGVUeXBlOworICAg
ICAgICB9IGVsc2UgaWYgKGlkYktleSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICBr
ZXkuYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWRiS2V5Lmxl
bmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGtleS5hcnJheS5wdXNoKFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5KGlkYktleVtpXSkpOworICAgICAgICAgICAga2V5
LnR5cGUgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuQXJyYXlUeXBlOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4ga2V5OworfQorCitX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5UmFuZ2VGcm9tSURCS2V5UmFuZ2UgPSBmdW5j
dGlvbihpZGJLZXlSYW5nZSkKK3sKKyAgICB2YXIgSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5
UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlOworICAgIGlmICh0eXBlb2YoaWRiS2V5
UmFuZ2UpID09PSAidW5kZWZpbmVkIiB8fCBpZGJLZXlSYW5nZSA9PT0gbnVsbCkKKyAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgCisgICAgdmFyIGtleVJhbmdlID0ge307CisgICAga2V5UmFuZ2Uu
bG93ZXIgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5RnJvbUlEQktleShpZGJLZXlS
YW5nZS5sb3dlcik7CisgICAga2V5UmFuZ2UudXBwZXIgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwua2V5RnJvbUlEQktleShpZGJLZXlSYW5nZS51cHBlcik7CisgICAga2V5UmFuZ2UubG93
ZXJPcGVuID0gaWRiS2V5UmFuZ2UubG93ZXJPcGVuOworICAgIGtleVJhbmdlLnVwcGVyT3BlbiA9
IGlkYktleVJhbmdlLnVwcGVyT3BlbjsKKyAgICByZXR1cm4ga2V5UmFuZ2U7Cit9CisKIFdlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgcmVmcmVzaERhdGFiYXNl
TmFtZXM6IGZ1bmN0aW9uKCkKICAgICB7CkBAIC0yNjMsNiArMzQzLDY3IEBAIFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll9pbmRleGVkREJSZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RGF0YWJhc2UoZnJhbWVJZCwgZGF0YWJh
c2VOYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VO
YW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJh
bSB7d2Via2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHNraXBDb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeT4sIGJv
b2xlYW4pfSBjYWxsYmFjaworICAgICAqLworICAgIGxvYWRPYmplY3RTdG9yZURhdGE6IGZ1bmN0
aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwg
c2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICAvKioKKyAgICAg
ICAgICogQHBhcmFtIHtBcnJheS48SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJp
ZXMKKyAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisgICAgICAgICAqLworICAg
ICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGRhdGFFbnRyaWVzLCBoYXNNb3JlKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBkYXRhRW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZh
ciBrZXkgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtleShkYXRhRW50
cmllc1tpXS5rZXkpOworICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5S2V5ID0gV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkoZGF0YUVudHJpZXNbaV0ucHJpbWFyeUtl
eSk7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChkYXRhRW50cmllc1tpXS52YWx1ZSk7CisgICAgICAgICAgICAgICAgZW50
cmllcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnkoa2V5LCBwcmlt
YXJ5S2V5LCB2YWx1ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGJhY2soZW50
cmllcywgaGFzTW9yZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMuX2luZGV4
ZWREQlJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RPYmplY3RTdG9yZURhdGEoZnJhbWVJZCwgZGF0YWJh
c2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXpl
LCBpbm5lckNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBp
bmRleE5hbWUKKyAgICAgKiBAcGFyYW0ge3dlYmtpdElEQktleVJhbmdlfSBpZGJLZXlSYW5nZQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwQ291bnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
cGFnZVNpemUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuRW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBsb2Fk
SW5kZXhEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFt
ZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2sp
CisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtBcnJheS48SW5kZXhlZERC
QWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKKyAgICAgICAgICogQHBhcmFtIHtib29sZWFu
fSBoYXNNb3JlCisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGRh
dGFFbnRyaWVzLCBoYXNNb3JlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZW50cmllcyA9
IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhRW50cmllcy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBrZXkgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwuaWRiS2V5RnJvbUtleShkYXRhRW50cmllc1tpXS5rZXkpOyAgICAKKyAgICAgICAgICAg
ICAgICB2YXIgcHJpbWFyeUtleSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlG
cm9tS2V5KGRhdGFFbnRyaWVzW2ldLnByaW1hcnlLZXkpOyAgICAKKyAgICAgICAgICAgICAgICB2
YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGRhdGFFbnRy
aWVzW2ldLnZhbHVlKTsgICAgCisgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKG5ldyBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnkoa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGJhY2soZW50cmllcywgaGFzTW9yZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMuX2luZGV4ZWREQlJlcXVlc3RNYW5hZ2Vy
LnJlcXVlc3RJbmRleERhdGEoZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUs
IGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVyQ2FsbGJh
Y2suYmluZCh0aGlzKSk7CiAgICAgfQogfQogCkBAIC0yNzAsNiArNDExLDE5IEBAIFdlYkluc3Bl
Y3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGU7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0geyp9IGtl
eQorICogQHBhcmFtIHsqfSBwcmltYXJ5S2V5CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3R9IHZhbHVlCisgKi8KK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeSA9
IGZ1bmN0aW9uKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpCit7CisgICAgdGhpcy5rZXkgPSBrZXk7
CisgICAgdGhpcy5wcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsKKyAgICB0aGlzLnZhbHVlID0gdmFs
dWU7Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJ
ZAogICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCiAgKi8KQEAgLTMyMyw3ICs0Nzcs
OSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIgPSBmdW5jdGlvbigpCiB7
CiAgICAgdGhpcy5fbGFzdFJlcXVlc3RJZCA9IDA7CiAgICAgdGhpcy5fcmVxdWVzdERhdGFiYXNl
TmFtZXNGb3JGcmFtZUNhbGxiYWNrcyA9IHt9OwotCisgICAgdGhpcy5fcmVxdWVzdERhdGFiYXNl
Q2FsbGJhY2tzID0ge307CisgICAgdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3MgPSB7fTsKKyAg
ICAKICAgICBJbmRleGVkREJBZ2VudC5lbmFibGUoKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVySW5kZXhlZERCRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3Bh
dGNoZXIodGhpcykpOwogfQpAQCAtMzk5LDYgKzU1NSw5MSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFz
ZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1lCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGluZGV4TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURCS2V5UmFuZ2V9
IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPElu
ZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAqLworICAg
IF9yZXF1ZXN0RGF0YTogZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNhbGxi
YWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJZCgpOwor
ICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1h
bmFnZXIuRGF0YVJlcXVlc3QoZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUs
IGluZGV4TmFtZSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNr
c1tyZXF1ZXN0SWRdID0gcmVxdWVzdDsgCisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFj
ayhlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiSW5kZXhlZERCQWdlbnQgZXJyb3I6ICIgKyBlcnJvcik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGtleVJhbmdlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJhbmdlRnJv
bUlEQktleVJhbmdlKGlkYktleVJhbmdlKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVz
dERhdGEocmVxdWVzdElkLCBmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwg
aW5kZXhOYW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBrZXlSYW5nZSA/IGtleVJhbmdlIDogdW5k
ZWZpbmVkLCBpbm5lckNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJhbSB7d2Vi
a2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBD
b3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFj
aworICAgICAqLworICAgIHJlcXVlc3RPYmplY3RTdG9yZURhdGE6IGZ1bmN0aW9uKGZyYW1lSWQs
IGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBw
YWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YShmcmFt
ZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgIiIsIGlkYktleVJhbmdlLCBza2lw
Q291bnQsIHBhZ2VTaXplLCBjYWxsYmFjayk7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCisgICAgICogQHBhcmFtIHtBcnJheS48SW5kZXhl
ZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59
IGhhc01vcmUKKyAgICAgKi8KKyAgICBfb2JqZWN0U3RvcmVEYXRhTG9hZGVkOiBmdW5jdGlvbihy
ZXF1ZXN0SWQsIGRhdGFFbnRyaWVzLCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVl
c3QgPSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAgICBpZiAo
IXJlcXVlc3QuY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAg
ICByZXF1ZXN0LmNhbGxiYWNrKGRhdGFFbnRyaWVzLCBoYXNNb3JlKTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZGF0YWJhc2VOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKKyAgICAgKiBAcGFyYW0ge3dlYmtpdElE
QktleVJhbmdlfSBpZGJLZXlSYW5nZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwQ291bnQK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KEFycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKKyAg
ICAgKi8KKyAgICByZXF1ZXN0SW5kZXhEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5h
bWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBw
YWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YShmcmFt
ZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5n
ZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spOworICAgIH0sCisgICAgCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7QXJyYXku
PEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59IGRhdGFFbnRyaWVzCisgICAgICogQHBhcmFtIHti
b29sZWFufSBoYXNNb3JlCisgICAgICovCisgICAgX2luZGV4RGF0YUxvYWRlZDogZnVuY3Rpb24o
cmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIHZhciByZXF1
ZXN0ID0gdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsKKyAgICAgICAgaWYg
KCFyZXF1ZXN0LmNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAg
ICAgcmVxdWVzdC5jYWxsYmFjayhkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAgfSwKKworICAg
IC8qKgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8KICAgICBfcmVxdWVzdElkOiBm
dW5jdGlvbigpCkBAIC00MjAsNiArNjYxLDExIEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1
ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKICAgICAgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF07
CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAodmFyIHJlcXVlc3RJZCBpbiB0aGlz
Ll9yZXF1ZXN0RGF0YUNhbGxiYWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RE
YXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKKyAgICAgICAgICAg
ICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsKKyAgICAg
ICAgfQogICAgIH0sCiAKICAgICAvKioKQEAgLTQzMSwxOSArNjc3LDI2IEBAIFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAo
dGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJh
bWVJZCAmJiB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXS5kYXRhYmFz
ZU5hbWUgPT09IGRhdGFiYXNlTmFtZSkKICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF07CiAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGZvciAodmFyIHJlcXVlc3RJZCBpbiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrcykg
eworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF0u
ZnJhbWVJZCA9PT0gZnJhbWVJZCAmJiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0
SWRdLmRhdGFiYXNlTmFtZSA9PT0gZGF0YWJhc2VOYW1lKQorICAgICAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAgICB9CiAgICAg
fSwKIAogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVxdWVz
dERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrcyA9IHt9OwogICAgICAgICB0aGlzLl9yZXF1
ZXN0RGF0YWJhc2VDYWxsYmFja3MgPSB7fTsKLQorICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YUNh
bGxiYWNrcyA9IHt9OwogICAgIH0KIH0KIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqLworICog
QHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oSW5kZXhlZERCQWdl
bnQuU2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcyl9IGNhbGxiYWNrCisqLwogV2ViSW5z
cGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLkRhdGFiYXNlc0ZvckZyYW1lUmVxdWVzdCA9
IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxiYWNrKQogewogICAgIHRoaXMuZnJhbWVJZCA9IGZyYW1l
SWQ7CkBAIC00NTIsNiArNzA1LDkgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5h
Z2VyLkRhdGFiYXNlc0ZvckZyYW1lUmVxdWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQKIAogLyoqCiAg
KiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgKiBAcGFyYW0ge3N0
cmluZ30gZGF0YWJhc2VOYW1lCisgKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4ZWREQkFnZW50LkRh
dGFiYXNlV2l0aE9iamVjdFN0b3Jlcyl9IGNhbGxiYWNrCiAgKi8KIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5EYXRhYmFzZVJlcXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBk
YXRhYmFzZU5hbWUsIGNhbGxiYWNrKQogewpAQCAtNDYyLDYgKzcxOCwyMyBAQCBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YWJhc2VSZXF1ZXN0ID0gZnVuY3Rpb24oZnJh
bWVJZCwgZGF0YWJhcwogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9
IGZyYW1lSWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBvYmplY3RTdG9yZU5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKKyAqIEBw
YXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4p
fSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0
YVJlcXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFt
ZSwgaW5kZXhOYW1lLCBjYWxsYmFjaykKK3sKKyAgICB0aGlzLmZyYW1lSWQgPSBmcmFtZUlkOwor
ICAgIHRoaXMuZGF0YWJhc2VOYW1lID0gZGF0YWJhc2VOYW1lOworICAgIHRoaXMub2JqZWN0U3Rv
cmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lOworICAgIHRoaXMuaW5kZXhOYW1lID0gaW5kZXhOYW1l
OworICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKworLyoqCisgKiBAY29uc3RydWN0
b3IKICAqIEBpbXBsZW1lbnRzIHtJbmRleGVkREJBZ2VudC5EaXNwYXRjaGVyfQogICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXJ9IGluZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyCiAgKi8KQEAgLTQ4Nyw1ICs3NjAsMjUgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRp
c3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIGRhdGFiYXNlTG9hZGVkOiBmdW5jdGlvbihyZXF1
ZXN0SWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykKICAgICB7CiAgICAgICAgIHRoaXMuX2Fn
ZW50V3JhcHBlci5fZGF0YWJhc2VMb2FkZWQocmVxdWVzdElkLCBkYXRhYmFzZVdpdGhPYmplY3RT
dG9yZXMpOworICAgIH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJl
cXVlc3RJZAorICAgICAqIEBwYXJhbSB7QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59
IGRhdGFFbnRyaWVzCisgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisgICAgICovCisg
ICAgb2JqZWN0U3RvcmVEYXRhTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFFbnRyaWVz
LCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9vYmplY3RTdG9y
ZURhdGFMb2FkZWQocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0g
e0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcworICAgICAqIEBw
YXJhbSB7Ym9vbGVhbn0gaGFzTW9yZQorICAgICAqLworICAgIGluZGV4RGF0YUxvYWRlZDogZnVu
Y3Rpb24ocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX2FnZW50V3JhcHBlci5faW5kZXhEYXRhTG9hZGVkKHJlcXVlc3RJZCwgZGF0YUVudHJpZXMs
IGhhc01vcmUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2OTI2YzdiOTQwOGU5ZTM2OTQzNTg5OGQxZjYz
OTBmMjUxMjFmZDUzLi45YjcyMGVkMWFiZjQ5MTI3OGM5YjM0OThmNjllOGY1MGQzYmQ5ZWE4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDItMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZp
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0luc3BlY3RvckluZGV4
ZWREQl0gUGFzcyBkYXRhIGVudHJpZXMgZnJvbSBvYmplY3Qgc3RvcmVzIGFuZCBpbmRleGVzIHRv
IGZyb250LWVuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9k
YXRhYmFzZS1kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0
LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJUZXN0Lkluc3BlY3RvclRlc3QuZXZh
bHVhdGVXaXRoQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJUZXN0Lklu
c3BlY3RvclRlc3QuYWRkSURCVmFsdWUpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJU
ZXN0KToKKyAgICAgICAgKGRvV2l0aFJlYWRXcml0ZVRyYW5zYWN0aW9uLnN0ZXAyLmlubmVyQ29t
bWl0Q2FsbGJhY2spOgorICAgICAgICAoZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24uc3RlcDIp
OgorICAgICAgICAoZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoYWRkSURC
VmFsdWUuZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24ud2l0aFRyYW5zYWN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAoYWRkSURCVmFsdWUpOgorCiAyMDEyLTAyLTEwICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2UgU2Ny
aXB0c05hdmlnYXRvciBkZWZhdWx0IGZpbGUgc2VsZWN0b3IuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJh
c2UtZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRjZWVjMWYwYWRhZGM4YjQ4NDUzOWMz
NGUwMDExMDZiYTMwZTQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDg0IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhl
ZERCX2NhbGxiYWNrMQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0Lklu
ZGV4ZWREQl9jYWxsYmFjazIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVz
dC5JbmRleGVkREJfY2FsbGJhY2szCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3Rv
clRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNw
ZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTog
SW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s2CitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
Nzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNworQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazgKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s5CitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTAKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxMQor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFj
azEyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2Nh
bGxiYWNrMTMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVk
REJfY2FsbGJhY2sxNAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0Lklu
ZGV4ZWREQl9jYWxsYmFjazE1CitUZXN0cyB0aGF0IGRhdGEgaXMgY29ycmVjdGx5IGxvYWRlZCBi
eSBJbmRleGVkREJNb2RlbCBmcm9tIEluZGV4ZWREQiBvYmplY3Qgc3RvcmUgYW5kIGluZGV4Lgor
CitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDAsIHBhZ2VT
aXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgS2V5ID0ga2V5XzAxLCBwcmltYXJ5S2V5
ID0ga2V5XzAxLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAxIiwidmFsdWUiOiJ2YWx1ZV8wMSJ9Cisg
ICAgS2V5ID0ga2V5XzAyLCBwcmltYXJ5S2V5ID0ga2V5XzAyLCB2YWx1ZSA9IHsia2V5Ijoia2V5
XzAyIiwidmFsdWUiOiJ2YWx1ZV8wMiJ9CisgICAgS2V5ID0ga2V5XzAzLCBwcmltYXJ5S2V5ID0g
a2V5XzAzLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAzIiwidmFsdWUiOiJ2YWx1ZV8wMyJ9CisgICAg
aGFzTW9yZSA9IHRydWUKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENv
dW50ID0gMywgcGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBLZXkgPSBrZXlf
MDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZhbHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6
InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlfMDUsIHByaW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVl
ID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6InZhbHVlXzA1In0KKyAgICBLZXkgPSBrZXlfMDYs
IHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVlID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZh
bHVlXzA2In0KKyAgICBoYXNNb3JlID0gdHJ1ZQorRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9
IGZhbHNlLCBza2lwQ291bnQgPSA2LCBwYWdlU2l6ZSA9IDMsIGlkYktleVJhbmdlID0gbnVsbAor
ICAgIEtleSA9IGtleV8wNywgcHJpbWFyeUtleSA9IGtleV8wNywgdmFsdWUgPSB7ImtleSI6Imtl
eV8wNyIsInZhbHVlIjoidmFsdWVfMDcifQorICAgIEtleSA9IGtleV8wOCwgcHJpbWFyeUtleSA9
IGtleV8wOCwgdmFsdWUgPSB7ImtleSI6ImtleV8wOCIsInZhbHVlIjoidmFsdWVfMDgifQorICAg
IEtleSA9IGtleV8wOSwgcHJpbWFyeUtleSA9IGtleV8wOSwgdmFsdWUgPSB7ImtleSI6ImtleV8w
OSIsInZhbHVlIjoidmFsdWVfMDkifQorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1
ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSA3LCBwYWdlU2l6ZSA9IDMsIGlkYktl
eVJhbmdlID0gbnVsbAorICAgIEtleSA9IGtleV8wOCwgcHJpbWFyeUtleSA9IGtleV8wOCwgdmFs
dWUgPSB7ImtleSI6ImtleV8wOCIsInZhbHVlIjoidmFsdWVfMDgifQorICAgIEtleSA9IGtleV8w
OSwgcHJpbWFyeUtleSA9IGtleV8wOSwgdmFsdWUgPSB7ImtleSI6ImtleV8wOSIsInZhbHVlIjoi
dmFsdWVfMDkifQorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRl
eCA9IGZhbHNlLCBza2lwQ291bnQgPSA5LCBwYWdlU2l6ZSA9IDMsIGlkYktleVJhbmdlID0gbnVs
bAorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9IGZhbHNl
LCBza2lwQ291bnQgPSAxMCwgcGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBo
YXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENv
dW50ID0gMCwgcGFnZVNpemUgPSA0LCBpZGJLZXlSYW5nZSA9IHsidXBwZXIiOiJrZXlfMDciLCJ1
cHBlck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRydWUsImxvd2VyIjoia2V5XzAyIn0KKyAgICBL
ZXkgPSBrZXlfMDMsIHByaW1hcnlLZXkgPSBrZXlfMDMsIHZhbHVlID0geyJrZXkiOiJrZXlfMDMi
LCJ2YWx1ZSI6InZhbHVlXzAzIn0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlf
MDQsIHZhbHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkg
PSBrZXlfMDUsIHByaW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2
YWx1ZSI6InZhbHVlXzA1In0KKyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYs
IHZhbHVlID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBoYXNNb3Jl
ID0gdHJ1ZQorRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAw
LCBwYWdlU2l6ZSA9IDUsIGlkYktleVJhbmdlID0geyJ1cHBlciI6ImtleV8wNyIsInVwcGVyT3Bl
biI6ZmFsc2UsImxvd2VyT3BlbiI6dHJ1ZSwibG93ZXIiOiJrZXlfMDIifQorICAgIEtleSA9IGtl
eV8wMywgcHJpbWFyeUtleSA9IGtleV8wMywgdmFsdWUgPSB7ImtleSI6ImtleV8wMyIsInZhbHVl
IjoidmFsdWVfMDMifQorICAgIEtleSA9IGtleV8wNCwgcHJpbWFyeUtleSA9IGtleV8wNCwgdmFs
dWUgPSB7ImtleSI6ImtleV8wNCIsInZhbHVlIjoidmFsdWVfMDQifQorICAgIEtleSA9IGtleV8w
NSwgcHJpbWFyeUtleSA9IGtleV8wNSwgdmFsdWUgPSB7ImtleSI6ImtleV8wNSIsInZhbHVlIjoi
dmFsdWVfMDUifQorICAgIEtleSA9IGtleV8wNiwgcHJpbWFyeUtleSA9IGtleV8wNiwgdmFsdWUg
PSB7ImtleSI6ImtleV8wNiIsInZhbHVlIjoidmFsdWVfMDYifQorICAgIEtleSA9IGtleV8wNywg
cHJpbWFyeUtleSA9IGtleV8wNywgdmFsdWUgPSB7ImtleSI6ImtleV8wNyIsInZhbHVlIjoidmFs
dWVfMDcifQorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9
IGZhbHNlLCBza2lwQ291bnQgPSAwLCBwYWdlU2l6ZSA9IDYsIGlkYktleVJhbmdlID0geyJ1cHBl
ciI6ImtleV8wNyIsInVwcGVyT3BlbiI6ZmFsc2UsImxvd2VyT3BlbiI6dHJ1ZSwibG93ZXIiOiJr
ZXlfMDIifQorICAgIEtleSA9IGtleV8wMywgcHJpbWFyeUtleSA9IGtleV8wMywgdmFsdWUgPSB7
ImtleSI6ImtleV8wMyIsInZhbHVlIjoidmFsdWVfMDMifQorICAgIEtleSA9IGtleV8wNCwgcHJp
bWFyeUtleSA9IGtleV8wNCwgdmFsdWUgPSB7ImtleSI6ImtleV8wNCIsInZhbHVlIjoidmFsdWVf
MDQifQorICAgIEtleSA9IGtleV8wNSwgcHJpbWFyeUtleSA9IGtleV8wNSwgdmFsdWUgPSB7Imtl
eSI6ImtleV8wNSIsInZhbHVlIjoidmFsdWVfMDUifQorICAgIEtleSA9IGtleV8wNiwgcHJpbWFy
eUtleSA9IGtleV8wNiwgdmFsdWUgPSB7ImtleSI6ImtleV8wNiIsInZhbHVlIjoidmFsdWVfMDYi
fQorICAgIEtleSA9IGtleV8wNywgcHJpbWFyeUtleSA9IGtleV8wNywgdmFsdWUgPSB7ImtleSI6
ImtleV8wNyIsInZhbHVlIjoidmFsdWVfMDcifQorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGlu
ZyB2YWx1ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAxLCBwYWdlU2l6ZSA9IDQs
IGlkYktleVJhbmdlID0geyJ1cHBlciI6ImtleV8wNyIsInVwcGVyT3BlbiI6ZmFsc2UsImxvd2Vy
T3BlbiI6dHJ1ZSwibG93ZXIiOiJrZXlfMDIifQorICAgIEtleSA9IGtleV8wNCwgcHJpbWFyeUtl
eSA9IGtleV8wNCwgdmFsdWUgPSB7ImtleSI6ImtleV8wNCIsInZhbHVlIjoidmFsdWVfMDQifQor
ICAgIEtleSA9IGtleV8wNSwgcHJpbWFyeUtleSA9IGtleV8wNSwgdmFsdWUgPSB7ImtleSI6Imtl
eV8wNSIsInZhbHVlIjoidmFsdWVfMDUifQorICAgIEtleSA9IGtleV8wNiwgcHJpbWFyeUtleSA9
IGtleV8wNiwgdmFsdWUgPSB7ImtleSI6ImtleV8wNiIsInZhbHVlIjoidmFsdWVfMDYifQorICAg
IEtleSA9IGtleV8wNywgcHJpbWFyeUtleSA9IGtleV8wNywgdmFsdWUgPSB7ImtleSI6ImtleV8w
NyIsInZhbHVlIjoidmFsdWVfMDcifQorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1
ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAxLCBwYWdlU2l6ZSA9IDUsIGlkYktl
eVJhbmdlID0geyJ1cHBlciI6ImtleV8wNyIsInVwcGVyT3BlbiI6ZmFsc2UsImxvd2VyT3BlbiI6
dHJ1ZSwibG93ZXIiOiJrZXlfMDIifQorICAgIEtleSA9IGtleV8wNCwgcHJpbWFyeUtleSA9IGtl
eV8wNCwgdmFsdWUgPSB7ImtleSI6ImtleV8wNCIsInZhbHVlIjoidmFsdWVfMDQifQorICAgIEtl
eSA9IGtleV8wNSwgcHJpbWFyeUtleSA9IGtleV8wNSwgdmFsdWUgPSB7ImtleSI6ImtleV8wNSIs
InZhbHVlIjoidmFsdWVfMDUifQorICAgIEtleSA9IGtleV8wNiwgcHJpbWFyeUtleSA9IGtleV8w
NiwgdmFsdWUgPSB7ImtleSI6ImtleV8wNiIsInZhbHVlIjoidmFsdWVfMDYifQorICAgIEtleSA9
IGtleV8wNywgcHJpbWFyeUtleSA9IGtleV8wNywgdmFsdWUgPSB7ImtleSI6ImtleV8wNyIsInZh
bHVlIjoidmFsdWVfMDcifQorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1ZXMsIGZy
b21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAxLCBwYWdlU2l6ZSA9IDYsIGlkYktleVJhbmdl
ID0geyJ1cHBlciI6ImtleV8wNyIsInVwcGVyT3BlbiI6ZmFsc2UsImxvd2VyT3BlbiI6dHJ1ZSwi
bG93ZXIiOiJrZXlfMDIifQorICAgIEtleSA9IGtleV8wNCwgcHJpbWFyeUtleSA9IGtleV8wNCwg
dmFsdWUgPSB7ImtleSI6ImtleV8wNCIsInZhbHVlIjoidmFsdWVfMDQifQorICAgIEtleSA9IGtl
eV8wNSwgcHJpbWFyeUtleSA9IGtleV8wNSwgdmFsdWUgPSB7ImtleSI6ImtleV8wNSIsInZhbHVl
IjoidmFsdWVfMDUifQorICAgIEtleSA9IGtleV8wNiwgcHJpbWFyeUtleSA9IGtleV8wNiwgdmFs
dWUgPSB7ImtleSI6ImtleV8wNiIsInZhbHVlIjoidmFsdWVfMDYifQorICAgIEtleSA9IGtleV8w
NywgcHJpbWFyeUtleSA9IGtleV8wNywgdmFsdWUgPSB7ImtleSI6ImtleV8wNyIsInZhbHVlIjoi
dmFsdWVfMDcifQorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRl
eCA9IHRydWUsIHNraXBDb3VudCA9IDAsIHBhZ2VTaXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxs
CisgICAgS2V5ID0gdmFsdWVfMDEsIHByaW1hcnlLZXkgPSBrZXlfMDEsIHZhbHVlID0geyJrZXki
OiJrZXlfMDEiLCJ2YWx1ZSI6InZhbHVlXzAxIn0KKyAgICBLZXkgPSB2YWx1ZV8wMiwgcHJpbWFy
eUtleSA9IGtleV8wMiwgdmFsdWUgPSB7ImtleSI6ImtleV8wMiIsInZhbHVlIjoidmFsdWVfMDIi
fQorICAgIEtleSA9IHZhbHVlXzAzLCBwcmltYXJ5S2V5ID0ga2V5XzAzLCB2YWx1ZSA9IHsia2V5
Ijoia2V5XzAzIiwidmFsdWUiOiJ2YWx1ZV8wMyJ9CisgICAgaGFzTW9yZSA9IHRydWUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIyZTNmZmEwMzJhZmE0YmIyNWM3MmZk
NTc5MTEzMTFjYjg3NDI0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKQEAgLTAsMCArMSwyMDEg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9ImluZGV4ZWRkYi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURC
S2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlOworICAgIHZhciBpbmRleGVkREJN
b2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwoKTsKKyAgICB2YXIgbWFpbkZy
YW1lSWQgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lLmlkOworICAg
IHZhciBkYXRhYmFzZU5hbWUgPSAidGVzdERhdGFiYXNlIjsKKyAgICB2YXIgb2JqZWN0U3RvcmVO
YW1lID0gInRlc3RPYmplY3RTdG9yZSI7CisgICAgdmFyIGluZGV4TmFtZSA9ICJ0ZXN0SW5kZXhO
YW1lIjsKKworICAgIGZ1bmN0aW9uIGFkZElEQlZhbHVlcyhjb3VudCwgY2FsbGJhY2spCisgICAg
eworICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgIGFkZFZhbHVlcygpOworCisgICAgICAgIGZ1
bmN0aW9uIGFkZFZhbHVlcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpID09IGNvdW50
KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB2YXIgaWQgPSBp
IDwgMTAgPyAiMCIgKyBpIDogaTsKKyAgICAgICAgICAgIHZhciBrZXkgPSAia2V5XyIgKyBpZDsK
KyAgICAgICAgICAgIHZhciB2YWx1ZSA9ICJ2YWx1ZV8iICsgaWQ7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZElEQlZhbHVlKG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0
b3JlTmFtZSwgeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlIH0sICIiLCBhZGRWYWx1ZXMpOworICAg
ICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9hZFZhbHVlc0FuZER1bXAoZnJvbUluZGV4
LCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9
ICIgKyBmcm9tSW5kZXggKyAiLCBza2lwQ291bnQgPSAiICsgc2tpcENvdW50ICsgIiwgcGFnZVNp
emUgPSAiICsgcGFnZVNpemUgKyAiLCBpZGJLZXlSYW5nZSA9ICIgKyBKU09OLnN0cmluZ2lmeShp
ZGJLZXlSYW5nZSkpOworICAgICAgICBpZiAoZnJvbUluZGV4KQorICAgICAgICAgICAgaW5kZXhl
ZERCTW9kZWwubG9hZEluZGV4RGF0YShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RT
dG9yZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlu
bmVyQ2FsbGJhY2spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmRleGVkREJNb2RlbC5s
b2FkT2JqZWN0U3RvcmVEYXRhKG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3Jl
TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVyQ2FsbGJhY2spOwor
CisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZW50cmllcywgaGFzTW9yZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBlbnRyeTsK
KyAgICAgICAgICAgIGR1bXBFbnRyaWVzKCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBF
bnRyaWVzKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGVu
dHJpZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCIgICAgaGFzTW9yZSA9ICIgKyBoYXNNb3JlKTsKKyAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXhdOworICAgICAgICAgICAgICAg
IGVudHJ5LnZhbHVlLmNhbGxGdW5jdGlvbkpTT04oZHVtcE1lLCBkdW1wZWQuYmluZCh0aGlzKSk7
CisgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gZHVtcE1lKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
SlNPTi5zdHJpbmdpZnkodGhpcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGR1bXBlZCh2YWx1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiICAgIEtleSA9ICIgKyBlbnRyeS5rZXkgKyAiLCBwcmltYXJ5S2V5
ID0gIiArIGVudHJ5LnByaW1hcnlLZXkgKyAiLCB2YWx1ZSA9ICIgKyB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgZHVtcEVudHJpZXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlz
cGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZU5hbWVzTG9hZGVkIiwgZmlsbERhdGFiYXNlLCBm
YWxzZSk7CisKKyAgICBmdW5jdGlvbiBmaWxsRGF0YWJhc2UoKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5jcmVhdGVEYXRhYmFzZShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBzdGVw
Mik7CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZU9iamVjdFN0b3JlKG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUs
IG9iamVjdFN0b3JlTmFtZSwgImtleSIsIHRydWUsIHN0ZXAzKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jcmVhdGVPYmplY3RTdG9yZUluZGV4KG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVj
dFN0b3JlTmFtZSwgaW5kZXhOYW1lLCAidmFsdWUiLCBmYWxzZSwgdHJ1ZSwgc3RlcDQpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBhZGRJREJWYWx1ZXMoOSwgcmVmcmVzaERhdGFiYXNlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJlZnJlc2hEYXRhYmFzZSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBl
LCAiZGF0YWJhc2VMb2FkZWQiLCBydW5PYmplY3RTdG9yZVRlc3RzLCBmYWxzZSk7CisgICAgICAg
IGluZGV4ZWREQk1vZGVsLnJlZnJlc2hEYXRhYmFzZShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1l
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5PYmplY3RTdG9yZVRlc3RzKCkKKyAgICB7Cisg
ICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBudWxsLCAwLCAzLCBzdGVwMikKKworICAg
ICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNB
bmREdW1wKGZhbHNlLCBudWxsLCAzLCAzLCBzdGVwMykKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAo
ZmFsc2UsIG51bGwsIDYsIDMsIHN0ZXA0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHN0ZXA0KCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2Us
IG51bGwsIDcsIDMsIHN0ZXA1KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXA1
KCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIG51bGws
IDksIDMsIHN0ZXA2KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXA2KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIG51bGwsIDEwLCAz
LCBzdGVwNyk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwNygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlSYW5nZS5ib3Vu
ZCgia2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwgMCwgNCwgc3RlcDgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDgoKQorICAgICAgICB7CisgICAgICAgICAgICBs
b2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91bmQoImtleV8wMiIsICJrZXlf
MDciLCB0cnVlLCBmYWxzZSksIDAsIDUsIHN0ZXA5KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHN0ZXA5KCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAo
ZmFsc2UsIElEQktleVJhbmdlLmJvdW5kKCJrZXlfMDIiLCAia2V5XzA3IiwgdHJ1ZSwgZmFsc2Up
LCAwLCA2LCBzdGVwMTApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDEwKCkK
KyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIElEQktleVJh
bmdlLmJvdW5kKCJrZXlfMDIiLCAia2V5XzA3IiwgdHJ1ZSwgZmFsc2UpLCAxLCA0LCBzdGVwMTEp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDExKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIElEQktleVJhbmdlLmJvdW5kKCJrZXlf
MDIiLCAia2V5XzA3IiwgdHJ1ZSwgZmFsc2UpLCAxLCA1LCBzdGVwMTIpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc3RlcDEyKCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZh
bHVlc0FuZER1bXAoZmFsc2UsIElEQktleVJhbmdlLmJvdW5kKCJrZXlfMDIiLCAia2V5XzA3Iiwg
dHJ1ZSwgZmFsc2UpLCAxLCA2LCBzdGVwMTMpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc3RlcDEzKCkKKyAgICAgICAgeworICAgICAgICAgICAgcnVuSW5kZXhUZXN0cygpOworICAg
ICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuSW5kZXhUZXN0cygpCisgICAgeworICAg
ICAgICBsb2FkVmFsdWVzQW5kRHVtcCh0cnVlLCBudWxsLCAwLCAzLCBzdGVwMikKKworICAgICAg
ICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsZWFyRGF0YWJhc2Uo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGNsZWFyRGF0YWJhc2UoKQorICAg
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kZWxldGVPYmplY3RTdG9yZUluZGV4KG1haW5GcmFt
ZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBzdGVwMik7CisK
KyAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmRlbGV0ZU9iamVjdFN0b3JlKG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVj
dFN0b3JlTmFtZSwgc3RlcDMpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDMo
KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRlbGV0ZURhdGFiYXNlKG1h
aW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsIHN0ZXA0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHN0ZXA0KCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgdGhhdCBkYXRhIGlzIGNvcnJlY3RseSBs
b2FkZWQgYnkgSW5kZXhlZERCTW9kZWwgZnJvbSBJbmRleGVkREIgb2JqZWN0IHN0b3JlIGFuZCBp
bmRleC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVz
LWV4cGVjdGVkLnR4dAppbmRleCAwZmIzNDRkMGMzZGE0OWRhNTYwMzU1ODNhYzI5OTQ2NDNhMTYw
OWU3Li5lY2Y4MDI3MDM0NzQ2ODkxNzM5YzQ5ZTRjYzZjZDFhNDk3ZTFmZGM3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFt
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMQot
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFj
azIKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2Fs
bGJhY2szCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERC
X2NhbGxiYWNrNAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4
ZWREQl9jYWxsYmFjazEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5J
bmRleGVkREJfY2FsbGJhY2syCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRl
c3QuSW5kZXhlZERCX2NhbGxiYWNrMworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0
b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazQKIFRlc3RzIHRoYXQgZGF0YWJhc2UgbmFtZXMgYXJl
IGNvcnJlY3RseSBsb2FkZWQgYW5kIHNhdmVkIGluIEluZGV4ZWREQk1vZGVsLgogCiBEdW1waW5n
IGRhdGFiYXNlIG5hbWVzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLWV4
cGVjdGVkLnR4dAppbmRleCAwMjg1YWM0MjIwMmFhMjc0MTExN2EzNDM3NmVkNDhhNjI4NzJhNDI4
Li5mODZiYTBmODEyOTY5MzFlMzM5NjMxODdjNTQyNDNhMDE1NDc2ODgzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0
dXJlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSwxMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxs
YmFjazEKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJf
Y2FsbGJhY2syCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhl
ZERCX2NhbGxiYWNrMwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0Lklu
ZGV4ZWREQl9jYWxsYmFjazQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVz
dC5JbmRleGVkREJfY2FsbGJhY2s1Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3Rv
clRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNw
ZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazcKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3Nzog
SW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s4Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
Nzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrOQotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEwCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMQorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazIKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2szCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNr
NAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxs
YmFjazUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJf
Y2FsbGJhY2s2CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhl
ZERCX2NhbGxiYWNrNworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0Lklu
ZGV4ZWREQl9jYWxsYmFjazgKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVz
dC5JbmRleGVkREJfY2FsbGJhY2s5CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3Rv
clRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTAKIFRlc3RzIHRoYXQgZGF0YWJhc2UgbmFtZXMgYXJl
IGNvcnJlY3RseSBsb2FkZWQgYW5kIHNhdmVkIGluIEluZGV4ZWREQk1vZGVsLgogCiBEdW1waW5n
IGRhdGFiYXNlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzCmluZGV4IDAyODVhMGU3ZTE5MDY0N2Vm
MTZmM2UxOGY3OWYxY2ZjZDczODFhYmUuLjYwNjAyZWY1MGIwNDFlZDNkZDVlMjgwMGQ0NWIyYTc5
YmQ2OTkyNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
ZGV4ZWRkYi9pbmRleGVkZGItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvaW5kZXhlZGRiLXRlc3QuanMKQEAgLTExLDEyICsxMSw4IEBAIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVXaXRoQ2FsbGJhY2sgPSBmdW5jdGlvbihmcmFtZUlkLCBtZXRo
b2ROYW1lLCBwYXJhbWV0ZXJzLCBjCiAgICAgdmFyIGNhbGxiYWNrSWQgPSArK2xhc3RDYWxsYmFj
a0lkOwogICAgIGNhbGxiYWNrc1tjYWxsYmFja0lkXSA9IGNhbGxiYWNrOwogICAgIHZhciBwYXJh
bWV0ZXJzU3RyaW5nID0gIlwiIiArIGNhbGxiYWNrSWRQcmVmaXggKyBjYWxsYmFja0lkICsgIlwi
IjsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgaWYgKHR5cGVvZihwYXJhbWV0ZXJzW2ldKSA9PT0gInN0cmluZyIpCi0gICAgICAgICAg
ICBwYXJhbWV0ZXJzU3RyaW5nICs9ICIsIFwiIiArIHBhcmFtZXRlcnNbaV0gKyAiXCIiOwotICAg
ICAgICBlbHNlIGlmICgodHlwZW9mKHBhcmFtZXRlcnNbaV0pID09PSAibnVtYmVyIikgfHwgKHR5
cGVvZihwYXJhbWV0ZXJzW2ldKSA9PT0gImJvb2xlYW4iKSkKLSAgICAgICAgICAgIHBhcmFtZXRl
cnNTdHJpbmcgKz0gIiwgIiArIHBhcmFtZXRlcnNbaV07Ci0gICAgfQorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAgcGFyYW1ldGVyc1N0cmlu
ZyArPSAiLCAiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVyc1tpXSk7CiAKICAgICB2YXIgcmVx
dWVzdFN0cmluZyA9IG1ldGhvZE5hbWUgKyAiKCIgKyBwYXJhbWV0ZXJzU3RyaW5nICsgIikiOwog
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UocmVxdWVzdFN0cmluZyk7CkBAIC02OCw5
ICs2NCwxNSBAQCBJbnNwZWN0b3JUZXN0LmRlbGV0ZU9iamVjdFN0b3JlSW5kZXggPSBmdW5jdGlv
bihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0bwogICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVXaXRoQ2FsbGJhY2soZnJhbWVJZCwgImRlbGV0ZU9iamVjdFN0b3JlSW5kZXgiLCBbZGF0
YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIG9iamVjdFN0b3JlSW5kZXhOYW1lXSwgY2FsbGJh
Y2spCiB9OwogCitJbnNwZWN0b3JUZXN0LmFkZElEQlZhbHVlID0gZnVuY3Rpb24oZnJhbWVJZCwg
ZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIHZhbHVlLCBrZXksIGNhbGxiYWNrKQorewor
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVXaXRoQ2FsbGJhY2soZnJhbWVJZCwgImFkZElEQlZh
bHVlIiwgW2RhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCB2YWx1ZSwga2V5XSwgY2FsbGJh
Y2spCit9OworCiB9OwogCiB2YXIgaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWRkYiB8fCB3aW5k
b3cud2Via2l0SW5kZXhlZERCOwordmFyIElEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5z
YWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbjsKIAogZnVuY3Rpb24gZGlzcGF0
Y2hDYWxsYmFjayhjYWxsYmFja0lkKQogewpAQCAtMTE2LDYgKzExOCwyNCBAQCBmdW5jdGlvbiBk
b1dpdGhWZXJzaW9uVHJhbnNhY3Rpb24oZGF0YWJhc2VOYW1lLCBjYWxsYmFjaywgY29tbWl0Q2Fs
bGJhY2spCiAgICAgfQogfQogCitmdW5jdGlvbiBkb1dpdGhSZWFkV3JpdGVUcmFuc2FjdGlvbihk
YXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgY2FsbGJhY2ssIGNvbW1pdENhbGxiYWNrKQor
eworICAgIGRvV2l0aERhdGFiYXNlKGRhdGFiYXNlTmFtZSwgc3RlcDIpOworCisgICAgZnVuY3Rp
b24gc3RlcDIoZGIpCisgICAgeworICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbb2JqZWN0U3RvcmVOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSk7CisgICAg
ICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSk7CisgICAgICAgIGNhbGxiYWNrKG9iamVjdFN0b3JlLCBpbm5lckNvbW1pdENhbGxiYWNr
KTsKKworICAgICAgICBmdW5jdGlvbiBpbm5lckNvbW1pdENhbGxiYWNrKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGIuY2xvc2UoKTsKKyAgICAgICAgICAgIGNvbW1pdENhbGxiYWNrKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKIGZ1bmN0aW9uIGNyZWF0ZURhdGFiYXNlKGNhbGxiYWNrSWQs
IGRhdGFiYXNlTmFtZSkKIHsKICAgICB2YXIgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRhdGFi
YXNlTmFtZSwgMCk7CkBAIC0xNzgsMyArMTk4LDE5IEBAIGZ1bmN0aW9uIGRlbGV0ZU9iamVjdFN0
b3JlSW5kZXgoY2FsbGJhY2tJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIG9iamVj
CiAgICAgfQogfQogCitmdW5jdGlvbiBhZGRJREJWYWx1ZShjYWxsYmFja0lkLCBkYXRhYmFzZU5h
bWUsIG9iamVjdFN0b3JlTmFtZSwgdmFsdWUsIGtleSkKK3sKKyAgICBkb1dpdGhSZWFkV3JpdGVU
cmFuc2FjdGlvbihkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgd2l0aFRyYW5zYWN0aW9u
Q2FsbGJhY2ssIGRpc3BhdGNoQ2FsbGJhY2suYmluZCh0aGlzLCBjYWxsYmFja0lkKSkKKworICAg
IGZ1bmN0aW9uIHdpdGhUcmFuc2FjdGlvbkNhbGxiYWNrKG9iamVjdFN0b3JlLCBjb21taXRDYWxs
YmFjaykKKyAgICB7CisgICAgICAgIHZhciByZXF1ZXN0OworICAgICAgICBpZiAoa2V5KQorICAg
ICAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh2YWx1ZSwga2V5KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh2YWx1ZSk7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IG9uSW5kZXhlZERCRXJyb3I7CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY29tbWl0Q2FsbGJhY2s7CisgICAgfQorfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126790</attachid>
            <date>2012-02-13 10:28:02 -0800</date>
            <delta_ts>2012-02-14 06:26:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78503-20120213222800.patch</filename>
            <type>text/plain</type>
            <size>66924</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODJhYTk5ODgwMGQ2NjYw
OTJjZmU5NmYzNGM2N2RjMWQ1ODcxMDc4OC4uZGNlYjM3NWY3YTViMWM4NWU2YThjZjllYzJhM2Y0
OThmYWU0NzgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAyLTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtJbnNwZWN0b3JJbmRleGVkREJdIFBhc3MgZGF0YSBlbnRyaWVzIGZyb20gb2JqZWN0IHN0
b3JlcyBhbmQgaW5kZXhlcyB0byBmcm9udC1lbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZUZvckluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAo
SW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6YXNzZXJ0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9t
S2V5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlSYW5nZUZyb21JREJL
ZXlSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBl
Ll9sb2FkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5sb2FkT2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUubG9hZEluZGV4RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
QlJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUuX3JlcXVlc3REYXRhLmlubmVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fcmVxdWVzdERh
dGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3Rv
dHlwZS5yZXF1ZXN0T2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX29iamVjdFN0b3JlRGF0YUxvYWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJl
cXVlc3RJbmRleERhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyLnByb3RvdHlwZS5faW5kZXhEYXRhTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lRGV0YWNoZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZGF0
YWJhc2VSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFu
YWdlci5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJS
ZXF1ZXN0TWFuYWdlci5EYXRhUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCRGlzcGF0Y2hlci5wcm90b3R5cGUuZGF0YWJhc2VMb2FkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLm9iamVjdFN0b3JlRGF0YUxvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUu
aW5kZXhEYXRhTG9hZGVkKToKKwogMjAxMi0wMi0xMCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIFNjcmlwdHNOYXZp
Z2F0b3IgZGVmYXVsdCBmaWxlIHNlbGVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggM2FjNmVjZjU4MTM0M2M2
MjVhNjQyZDYxYmM0ZTI1ZDk1OTdjOWRlNC4uNjdhMDc0YjBmMGQ3MjMyNDdhNTZiZGFjNTk4MTA5
YjI3OTViNzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0
b3IuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+
CkBAIC0xNDUyLDYgKzE0NTMsMTIgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICByZXR1
cm4gcmVzdWx0LmZpcnN0OwogfQogCitTY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKK3sKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCksIDApOworICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRT
dGF0ZS0+Z2xvYmFsRGF0YSgpLCB2YWx1ZSk7Cit9CisKIEpTVmFsdWVSZWYgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24sIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cykKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGRlc3RpbmF0aW9uQ29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IGNhZWQ2NDczYzA0YzZlZDZjMzcyYjQ2YWYxMjhiOWYxNTYyODU1YTAuLjhiYTA2YmIyNTlkZmY1
M2E0N2YxZTA0YTMzZjY5NmQxODdkYjlhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZu
ZGVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZV9oCiAjZGVmaW5lIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZV9oCiAKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTUyLDYgKzUzLDcgQEAgZW51bSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgCiBl
bnVtIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAor
Y2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ewpAQCAtNzcsNiArNzksOCBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgTWVzc2FnZVBvcnRBcnJheSopOwog
ICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pOwogCisgICAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoU2NyaXB0
U3RhdGUqKTsKKwogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgpIHsgcmV0dXJuIG1f
ZGF0YTsgfQogCiAgICAgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTE4
MWI3M2Y1M2M5YzYxYjYxYjdiZDI4MjM5ZTAzOWUzZTY0ZTdkMC4uMzQwOTQ4MjRhZDJjMjBlN2Y3
MmUyNmQ2YzU4ZjliZjQ0ODc2MDIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yMjU4LDQgKzIyNTgsMTAgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
TWVzc2FnZVBvcnRBcnJheSogbWVzc2EKICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFs
aXplKCk7CiB9CiAKK1NjcmlwdFZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emVGb3JJbnNwZWN0b3IoU2NyaXB0U3RhdGUqKQoreworICAgIFY4TG9jYWxDb250ZXh0IGxvY2Fs
Q29udGV4dDsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoZGVzZXJpYWxpemUoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZDNhNjY4Yjk4M2M0MGFiNGIzOGFhNjc3ZmQz
NzczM2IzMzA0YzFlMi4uMzNhMGViYzViMzY2MmM0NGIxNTE5MzBlMDE2NWE3OWRjYWZkMDkwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKQEAgLTc2LDYgKzc2LDggQEAgcHVibGljOgogICAgIC8vIGNhc2Ugb2YgZmFpbHVyZS4K
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemUoTWVzc2FnZVBvcnRBcnJheSog
PSAwKTsKIAorICAgIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0
YXRlKik7CisKIHByaXZhdGU6CiAgICAgZW51bSBTdHJpbmdEYXRhTW9kZSB7CiAgICAgICAgIFN0
cmluZ1ZhbHVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAK
aW5kZXggNmQwOWIyOTE3Yjg4NTQzMTY5MjIyOTBiZjRhNDNhZjZmYTY1YWQ3Ny4uOGY3NDVhZjBl
MjlmYmMwYmY2MTJkYjNhMzIxZDdkYjdmYzdhN2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlw
dFZhbHVlJiBjYWwKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5q
ZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoU2NyaXB0VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYg
Z3JvdXBOYW1lKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3
cmFwT2JqZWN0KFNjcmlwdFZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkgY29u
c3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IHdyYXBGdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAid3JhcE9iamVjdCIpOwpAQCAt
MTc2LDYgKzE3NiwxMiBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgZwogICAgIHJldHVybiB3cmFw
T2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKG5vZGUpLCBncm91cE5hbWUpOwogfQogCitQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBTZXJpYWxpemVkT2JqZWN0
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBTdHJp
bmcmIGdyb3VwTmFtZSkgY29uc3QKK3sKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IobV9pbmplY3RlZFNj
cmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcE9iamVjdChzY3JpcHRW
YWx1ZSwgZ3JvdXBOYW1lKTsKK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUo
Tm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CkBAIC0xOTMsNyArMTk5
LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXApCiAgICAgcmVsZWFzZUZ1bmN0aW9uLmNhbGwoKTsKIH0KIAotYm9vbCBJ
bmplY3RlZFNjcmlwdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkKK2Jvb2wgSW5qZWN0ZWRT
Y3JpcHQ6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
aW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0
YXRlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRl
eCBmMmI3YWMxNTJiMzhhNGU4OTc0NmE3MGJmMzE1MzVmNDEzZmI4NjE0Li5hNGFkMDk2MWI0ZGZm
YmI4YjY2YzJjNmJiM2RhMjgzNjgzODdmYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuaApAQCAtODcsOCArODcsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gd3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsKICNl
bmRpZgogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2NyaXB0
VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gd3JhcE9iamVjdChTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUp
IGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB3cmFwTm9kZShOb2RlKiwg
Y29uc3QgU3RyaW5nJiBncm91cE5hbWUpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiB3cmFwU2VyaWFsaXplZE9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJp
bmcmIGdyb3VwTmFtZSkgY29uc3Q7CiAgICAgdm9pZCBpbnNwZWN0Tm9kZShOb2RlKik7CiAgICAg
dm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7CiAgICAgU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3Jp
cHRTdGF0ZSgpOyB9CkBAIC05OCw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBib29s
ICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaykoU2NyaXB0U3RhdGUqKTsKICAgICBJbmplY3Rl
ZFNjcmlwdChTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAg
Ym9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKTsKKyAgICBib29sIGNhbkFjY2Vzc0luc3Bl
Y3RlZFdpbmRvdygpIGNvbnN0OwogICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxs
JiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIG1ha2VFdmFsQ2Fs
bChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQsIGJvb2wqIHdhc1Rocm93bik7CiAgICAgU2NyaXB0VmFsdWUgbm9kZUFzU2Ny
aXB0VmFsdWUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmlu
ZGV4IDRhZjJiNDllOGVlOWJmMGRmMGFhYTllNmNmZThjOTMwZGUxNjFlMzUuLmZhZmRlOWQyMjAy
Y2E0ZmIxOThjYmVhNjQ5OGFkZDVhYWMwNzdiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KQEAgLTk3MSw2ICs5NzEsMzkgQEAKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ1bmlxdWUiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklm
IHRydWUsIGluZGV4IGlzIHVuaXF1ZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibXVsdGlFbnRyeSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1
ZSwgaW5kZXggYWxsb3dzIG11bHRpcGxlIGVudHJpZXMgZm9yIGEga2V5LiIgfQogICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ImlkIjogIktleSIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiS2V5LiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRp
ZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogIm51
bWJlciIsICJkZXNjcmlwdGlvbiI6ICJLZXkgdHlwZS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibnVtYmVyIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIk51bWJlciB2YWx1ZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic3RyaW5nIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlN0cmluZyB2YWx1ZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZGF0ZSIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJEYXRlIHZhbHVlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJh
cnJheSIsICJ0eXBlIjogImFycmF5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJl
ZiI6ICJLZXkiIH0sICJkZXNjcmlwdGlvbiI6ICJBcnJheSB2YWx1ZS4iIH0KKyAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJp
ZCI6ICJLZXlSYW5nZSIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiS2V5IHJhbmdlLiIsCisgICAgICAgICAgICAgICAg
InByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibG93ZXIiLCAi
JHJlZiI6ICJLZXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiTG93ZXIgYm91
bmQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVwcGVyIiwgIiRyZWYiOiAi
S2V5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVwcGVyIGJvdW5kLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb3dlck9wZW4iLCAidHlwZSI6ICJib29s
ZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUgbG93ZXIgYm91bmQgaXMgb3Blbi4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXBwZXJPcGVuIiwgInR5cGUiOiAiYm9vbGVh
biIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlIHVwcGVyIGJvdW5kIGlzIG9wZW4uIiB9CisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAiaWQiOiAiRGF0YUVudHJ5IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3Qi
LAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJLZXkuIiwKKyAgICAgICAgICAgICAg
ICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJrZXkiLCAi
JHJlZiI6ICJLZXkiLCAiZGVzY3JpcHRpb24iOiAiS2V5LiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJwcmltYXJ5S2V5IiwgIiRyZWYiOiAiS2V5IiwgImRlc2NyaXB0aW9uIjog
IlByaW1hcnkga2V5LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIs
ICIkcmVmIjogIlJ1bnRpbWUuUmVtb3RlT2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIlZhbHVlLiIg
fQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAg
ImNvbW1hbmRzIjogWwpAQCAtOTk0LDEwICsxMDI3LDI0IEBACiAgICAgICAgICAgICAgICAgIm5h
bWUiOiAicmVxdWVzdERhdGFiYXNlIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
ICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRl
Z2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImZyYW1lSWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5cGUiOiAic3RyaW5n
IiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICIkcmVmIjogIk5l
dHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBpZC4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgZGF0YWJhc2Ugd2l0aCBnaXZlbiBu
YW1lIGluIGdpdmVuIGZyYW1lLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGEiLAorICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0
eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBpZC4iIH0sCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IkRhdGFiYXNlIG5hbWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9iamVj
dFN0b3JlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJPYmplY3Qgc3Rv
cmUgbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5kZXhOYW1lIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkluZGV4IG5hbWUsIGVtcHR5IHN0cmlu
ZyBmb3Igb2JqZWN0IHN0b3JlIGRhdGEgcmVxdWVzdHMuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNraXBDb3VudCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiTnVtYmVyIG9mIHJlY29yZHMgdG8gc2tpcC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicGFnZVNpemUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk51
bWJlciBvZiByZWNvcmRzIHRvIGZldGNoLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJrZXlSYW5nZSIsICIkcmVmIjogIktleVJhbmdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIktleSByYW5nZS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyBkYXRhIGZyb20gb2JqZWN0IHN0b3JlIG9y
IGluZGV4LiIKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsK
QEAgLTEwMTQsNiArMTA2MSwyMiBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
cXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBpZC4i
IH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VXaXRoT2JqZWN0U3Rv
cmVzIiwgIiRyZWYiOiAiRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzIiwgImRlc2NyaXB0aW9uIjog
IkRhdGFiYXNlIHdpdGggYW4gYXJyYXkgb2Ygb2JqZWN0IHN0b3Jlcy4iIH0KICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogIm9iamVjdFN0b3JlRGF0YUxvYWRlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUi
OiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RTdG9yZURhdGFFbnRyaWVzIiwgInR5cGUiOiAiYXJy
YXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkRhdGFFbnRyeSIgfSwgImRlc2NyaXB0aW9uIjogIkFy
cmF5IG9mIG9iamVjdCBzdG9yZSBkYXRhIGVudHJpZXMuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImhhc01vcmUiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjog
IklmIHRydWUsIHRoZXJlIGFyZSBtb3JlIGVudHJpZXMgdG8gZmV0Y2ggaW4gdGhlIGdpdmVuIHJh
bmdlLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5kZXhEYXRhTG9hZGVkIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImluZGV4RGF0YUVudHJpZXMiLCAidHlw
ZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiRGF0YUVudHJ5IiB9LCAiZGVzY3JpcHRp
b24iOiAiQXJyYXkgb2YgaW5kZXggZGF0YSBlbnRyaWVzLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJoYXNNb3JlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0aGVyZSBhcmUgbW9yZSBlbnRyaWVzIHRvIGZldGNoIGluIHRoZSBnaXZlbiBy
YW5nZS4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IGVjNTBiYzVmODU0ZjYwN2VkNTA0ZjZhYTc1NDQxZDU2ZDA1N2Q5YTUuLjMzOWVl
ZmY3YzAxZTU5ZDJhMmQ3ODdlYTQ1NDU3ZDcwMTYwNGZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIElu
c3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNy
ZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2VBZ2Vu
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIuZ2V0KCksIHBhZ2VBZ2VudCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcAppbmRleCBiMDA1MjU5NjY2MTFmNmFlOWUwMmM0ZDQ1NTlhMGFlNDdk
MjcyMGMyLi45MDFmZTEwOWQyOTI2ZDgzOTkxYzQ3NGM5OTU0NGJjMDcxMWU1MjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKQEAgLTQwLDEyICs0MCwxNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3Jv
dXBTZXR0aW5ncy5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQkN1
cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5UmFu
Z2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNs
dWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3Rh
dGUuaCIKQEAgLTU3LDggKzYyLDEyIEBACiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK3Vz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpJbmRleGVkREI6OlNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXM7CiB1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7
Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpEYXRhRW50cnk7Cit1c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXk7Cit1c2luZyBXZWJDb3JlOjpU
eXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6
OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIApAQCAtMTAyLDYgKzExMSwyMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgfQogfTsKIAorY2xhc3MgSW5zcGVj
dG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjayA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkNhbGxiYWNr
cyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9ySURCVHJhbnNhY3Rp
b25DYWxsYmFjaz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjaygpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JJREJUcmFuc2FjdGlvbkNhbGxiYWNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgb25BYm9ydCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBsZXRlKCkgeyB9Citwcml2
YXRlOgorICAgIEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KK307CisKIGNs
YXNzIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFj
ayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0RGF0YWJhc2VOYW1lc0NhbGxi
YWNrPiBjcmVhdGUoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZy
b250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4pCkBAIC0yNjIsMTAgKzI4NiwyNjcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9yZXF1ZXN0SWQ7
CiB9OwogCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmpl
Y3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCit7CisgICAgUmVmUHRyPElEQktleT4gaWRiS2V5Owor
CisgICAgaW50IHR5cGU7CisgICAgaWYgKCFrZXktPmdldE51bWJlcigidHlwZSIsICZ0eXBlKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIElEQktl
eTo6SW52YWxpZFR5cGU6CisgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgICAgIHJldHVy
biAwOworICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOiB7CisgICAgICAgIGRvdWJsZSBudW1i
ZXI7CisgICAgICAgIGlmICgha2V5LT5nZXROdW1iZXIoIm51bWJlciIsICZudW1iZXIpKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlkYktleSA9IElEQktleTo6Y3JlYXRlTnVtYmVy
KG51bWJlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIElEQktleTo6U3RyaW5n
VHlwZTogeworICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICBpZiAoIWtleS0+Z2V0U3Ry
aW5nKCJzdHJpbmciLCAmc3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZGJLZXkgPSBJREJLZXk6OmNyZWF0ZVN0cmluZyhzdHJpbmcpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOiB7CisgICAgICAgIGRvdWJsZSBkYXRlOwor
ICAgICAgICBpZiAoIWtleS0+Z2V0TnVtYmVyKCJkYXRlIiwgJmRhdGUpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGlkYktleSA9IElEQktleTo6Y3JlYXRlRGF0ZShkYXRlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6CisgICAgICAg
IElEQktleTo6S2V5QXJyYXkga2V5QXJyYXk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYXJyYXkgPSBrZXktPmdldEFycmF5KCJhcnJheSIpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IHZhbHVlID0gYXJyYXktPmdldChpKTsKKyAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKKyAgICAgICAgICAgIGlmICghdmFsdWUtPmFzT2JqZWN0
KCZvYmplY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAga2V5QXJy
YXkuYXBwZW5kKGlkYktleUZyb21JbnNwZWN0b3JPYmplY3Qob2JqZWN0LmdldCgpKSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVBcnJheShrZXlBcnJheSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKK30KKwor
c3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKElu
c3BlY3Rvck9iamVjdCoga2V5UmFuZ2UpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
bG93ZXIgPSBrZXlSYW5nZS0+Z2V0T2JqZWN0KCJsb3dlciIpOworICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHVwcGVyID0ga2V5UmFuZ2UtPmdldE9iamVjdCgidXBwZXIiKTsKKyAgICBSZWZQ
dHI8SURCS2V5PiBpZGJMb3dlciA9IGxvd2VyID8gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChs
b3dlci5nZXQoKSkgOiAwOworICAgIFJlZlB0cjxJREJLZXk+IGlkYlVwcGVyID0gdXBwZXIgPyBp
ZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KHVwcGVyLmdldCgpKSA6IDA7CisKKyAgICBib29sIGxv
d2VyT3BlbjsKKyAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJsb3dlck9wZW4iLCAmbG93
ZXJPcGVuKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSURCS2V5UmFuZ2U6Okxvd2VyQm91bmRU
eXBlIGxvd2VyQm91bmRUeXBlID0gbG93ZXJPcGVuID8gSURCS2V5UmFuZ2U6Okxvd2VyQm91bmRP
cGVuIDogSURCS2V5UmFuZ2U6Okxvd2VyQm91bmRDbG9zZWQ7CisKKyAgICBib29sIHVwcGVyT3Bl
bjsKKyAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJ1cHBlck9wZW4iLCAmdXBwZXJPcGVu
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSURCS2V5UmFuZ2U6OlVwcGVyQm91bmRUeXBlIHVw
cGVyQm91bmRUeXBlID0gdXBwZXJPcGVuID8gSURCS2V5UmFuZ2U6OlVwcGVyQm91bmRPcGVuIDog
SURCS2V5UmFuZ2U6OlVwcGVyQm91bmRDbG9zZWQ7CisKKyAgICBSZWZQdHI8SURCS2V5UmFuZ2U+
IGlkYktleVJhbmdlID0gSURCS2V5UmFuZ2U6OmNyZWF0ZShpZGJMb3dlciwgaWRiVXBwZXIsIGxv
d2VyQm91bmRUeXBlLCB1cHBlckJvdW5kVHlwZSk7CisgICAgcmV0dXJuIGlkYktleVJhbmdlLnJl
bGVhc2UoKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8S2V5PiBrZXlGcm9tSURCS2V5KElEQktl
eSogaWRiS2V5KQoreworICAgIGlmICghaWRiS2V5IHx8ICFpZGJLZXktPnZhbGlkKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEtleT4ga2V5ID0gS2V5OjpjcmVhdGUoKQorICAg
ICAgICAuc2V0VHlwZShpZGJLZXktPnR5cGUoKSk7CisgICAgc3dpdGNoIChpZGJLZXktPnR5cGUo
KSkgeworICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlwZToKKyAgICBjYXNlIElEQktleTo6TWlu
VHlwZToKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6Cisg
ICAgICAgIGtleS0+c2V0TnVtYmVyKGlkYktleS0+bnVtYmVyKCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKKyAgICAgICAga2V5LT5zZXRTdHJpbmcoaWRi
S2V5LT5zdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpEYXRlVHlw
ZToKKyAgICAgICAga2V5LT5zZXREYXRlKGlkYktleS0+ZGF0ZSgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBhcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgSURCS2V5OjpL
ZXlBcnJheSBrZXlBcnJheSA9IGlkYktleS0+YXJyYXkoKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrZXlBcnJheS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGFycmF5LT5wdXNo
T2JqZWN0KGtleUZyb21JREJLZXkoa2V5QXJyYXlbaV0uZ2V0KCkpKTsKKyAgICAgICAga2V5LT5z
ZXRBcnJheShhcnJheSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4ga2V5LnJl
bGVhc2UoKTsKK30KKworY2xhc3MgT3BlbkN1cnNvckNhbGxiYWNrIDogcHVibGljIEluc3BlY3Rv
cklEQkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBlbnVtIEN1cnNvclR5cGUgeworICAgICAgICBP
YmplY3RTdG9yZURhdGFDdXJzb3IsCisgICAgICAgIEluZGV4RGF0YUN1cnNvcgorICAgIH07CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuQ3Vyc29yQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVm
UHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFBy
b3ZpZGVyLCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNv
clR5cGUsIGludCByZXF1ZXN0SWQsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuQ3Vyc29yQ2FsbGJhY2soZnJv
bnRlbmRQcm92aWRlciwgaW5qZWN0ZWRTY3JpcHQsIGlkYlRyYW5zYWN0aW9uLCBjdXJzb3JUeXBl
LCByZXF1ZXN0SWQsIHNraXBDb3VudCwgcGFnZVNpemUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5PcGVuQ3Vyc29yQ2FsbGJhY2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KQorICAgIHsKKyAgICAgICAgZW5kKGZh
bHNlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc29yKQorICAgIHsKKyAgICAgICAgbV9pZGJD
dXJzb3IgPSBpZGJDdXJzb3I7CisgICAgICAgIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpCisg
ICAgeworICAgICAgICBpZiAobV9za2lwQ291bnQpIHsKKyAgICAgICAgICAgIC0tbV9za2lwQ291
bnQ7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAobV9yZXN1bHQtPmxlbmd0aCgpID09IG1fcGFnZVNpemUpIHsKKyAgICAg
ICAgICAgIGVuZCh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IG1faWRiQ3Vyc29yLT5rZXkoKTsKKyAgICAgICAgUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSA9IG1faWRiQ3Vyc29yLT5wcmltYXJ5S2V5KCk7CisgICAg
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gbV9pZGJDdXJzb3ItPnZh
bHVlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBwZWRWYWx1ZSA9IG1f
aW5qZWN0ZWRTY3JpcHQud3JhcFNlcmlhbGl6ZWRPYmplY3QodmFsdWUuZ2V0KCksICJpbmRleGVk
ZGIiKTsKKyAgICAgICAgUmVmUHRyPERhdGFFbnRyeT4gZGF0YUVudHJ5ID0gRGF0YUVudHJ5Ojpj
cmVhdGUoKQorICAgICAgICAgICAgLnNldEtleShrZXlGcm9tSURCS2V5KGtleS5nZXQoKSkpCisg
ICAgICAgICAgICAuc2V0UHJpbWFyeUtleShrZXlGcm9tSURCS2V5KHByaW1hcnlLZXkuZ2V0KCkp
KQorICAgICAgICAgICAgLnNldFZhbHVlKHdyYXBwZWRWYWx1ZSk7CisgICAgICAgIG1fcmVzdWx0
LT5hZGRJdGVtKGRhdGFFbnRyeSk7CisKKyAgICAgICAgbmV4dCgpOworICAgIH0KKworICAgIHZv
aWQgbmV4dCgpCisgICAgeworICAgICAgICBtX2lkYlRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRh
c2tFdmVudHMoKTsKKworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgbV9p
ZGJDdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oMCwgdGhpcywgZWMpOworICAgIH0KKworICAgIHZv
aWQgZW5kKGJvb2wgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIG1faWRiVHJhbnNhY3Rpb24tPmRp
ZENvbXBsZXRlVGFza0V2ZW50cygpOworCisgICAgICAgIHN3aXRjaCAobV9jdXJzb3JUeXBlKSB7
CisgICAgICAgIGNhc2UgT2JqZWN0U3RvcmVEYXRhQ3Vyc29yOgorICAgICAgICAgICAgbV9mcm9u
dGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5vYmplY3RTdG9yZURhdGFMb2FkZWQobV9yZXF1ZXN0
SWQsIG1fcmVzdWx0LnJlbGVhc2UoKSwgaGFzTW9yZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBJbmRleERhdGFDdXJzb3I6CisgICAgICAgICAgICBtX2Zyb250ZW5kUHJvdmlk
ZXItPmZyb250ZW5kKCktPmluZGV4RGF0YUxvYWRlZChtX3JlcXVlc3RJZCwgbV9yZXN1bHQucmVs
ZWFzZSgpLCBoYXNNb3JlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
Citwcml2YXRlOgorICAgIE9wZW5DdXJzb3JDYWxsYmFjayhQYXNzUmVmUHRyPEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIGludCByZXF1
ZXN0SWQsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgICAgICA6IG1fZnJv
bnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHQoaW5qZWN0ZWRTY3JpcHQpCisgICAgICAgICwgbV9pZGJUcmFuc2FjdGlvbihpZGJUcmFuc2Fj
dGlvbikKKyAgICAgICAgLCBtX2N1cnNvclR5cGUoY3Vyc29yVHlwZSkKKyAgICAgICAgLCBtX3Jl
cXVlc3RJZChyZXF1ZXN0SWQpCisgICAgICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50KQorICAg
ICAgICAsIG1fcGFnZVNpemUocGFnZVNpemUpCisgICAgeworICAgICAgICBtX3Jlc3VsdCA9IEFy
cmF5PERhdGFFbnRyeT46OmNyZWF0ZSgpOworICAgICAgICBtX2lkYlRyYW5zYWN0aW9uLT5zZXRD
YWxsYmFja3MoSW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKCkuZ2V0KCkp
OworICAgIH0KKyAgICBSZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJv
dmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBJbmplY3RlZFNjcmlwdCBtX2luamVjdGVk
U2NyaXB0OworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1faWRi
VHJhbnNhY3Rpb247CisgICAgQ3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgaW50IG1fcmVx
dWVzdElkOworICAgIGludCBtX3NraXBDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOwor
ICAgIFJlZlB0cjxBcnJheTxEYXRhRW50cnk+ID4gbV9yZXN1bHQ7CisgICAgUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1faWRiQ3Vyc29yOworfTsKKworY2xhc3MgRGF0YUxvYWRl
ckNhbGxiYWNrIDogcHVibGljIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERhdGFMb2FkZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlk
ZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwg
Y29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSwgaW50IHNraXBDb3VudCwgdW5zaWdu
ZWQgcGFnZVNpemUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFMb2Fk
ZXJDYWxsYmFjayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIGluamVjdGVkU2NyaXB0LCBv
YmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNp
emUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5EYXRhTG9hZGVyQ2FsbGJhY2soKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBpZGJEYXRhYmFzZSkKKyAgICB7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3Zp
ZGVyLT5mcm9udGVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rp
b25Gb3JEYXRhYmFzZShpZGJEYXRhYmFzZS5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOworICAg
ICAgICBpZiAoIWlkYlRyYW5zYWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSA9IG9i
amVjdFN0b3JlRm9yVHJhbnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24uZ2V0KCksIG1fb2JqZWN0U3Rv
cmVOYW1lKTsKKyAgICAgICAgaWYgKCFpZGJPYmplY3RTdG9yZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIW1faW5kZXhOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaWRiSW5kZXggPSBpbmRleEZvck9iamVj
dFN0b3JlKGlkYk9iamVjdFN0b3JlLmdldCgpLCBtX2luZGV4TmFtZSk7CisgICAgICAgICAgICBp
ZiAoIWlkYkluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgUmVm
UHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gb3BlbkN1cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNh
bGxiYWNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCBtX2luamVjdGVkU2NyaXB0LCBpZGJU
cmFuc2FjdGlvbi5nZXQoKSwgT3BlbkN1cnNvckNhbGxiYWNrOjpJbmRleERhdGFDdXJzb3IsIG1f
cmVxdWVzdElkLCBtX3NraXBDb3VudCwgbV9wYWdlU2l6ZSk7CisKKyAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgaWRiSW5kZXgtPm9wZW5DdXJzb3IobV9pZGJL
ZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhULCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIGlkYlRyYW5zYWN0
aW9uLmdldCgpLCBlYyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8T3Bl
bkN1cnNvckNhbGxiYWNrPiBvcGVuQ3Vyc29yQ2FsbGJhY2sgPSBPcGVuQ3Vyc29yQ2FsbGJhY2s6
OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsIG1faW5qZWN0ZWRTY3JpcHQsIGlkYlRyYW5zYWN0
aW9uLmdldCgpLCBPcGVuQ3Vyc29yQ2FsbGJhY2s6Ok9iamVjdFN0b3JlRGF0YUN1cnNvciwgbV9y
ZXF1ZXN0SWQsIG1fc2tpcENvdW50LCBtX3BhZ2VTaXplKTsKKworICAgICAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAgICBpZGJPYmplY3RTdG9yZS0+b3BlbkN1cnNvciht
X2lkYktleVJhbmdlLCBJREJDdXJzb3I6Ok5FWFQsIG9wZW5DdXJzb3JDYWxsYmFjaywgaWRiVHJh
bnNhY3Rpb24uZ2V0KCksIGVjKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBE
YXRhTG9hZGVyQ2FsbGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJv
bnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgSW5q
ZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktl
eVJhbmdlLCBpbnQgc2tpcENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICAgICAgOiBtX2Zy
b250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChy
ZXF1ZXN0SWQpCisgICAgICAgICwgbV9pbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdCkKKyAg
ICAgICAgLCBtX29iamVjdFN0b3JlTmFtZShvYmplY3RTdG9yZU5hbWUpCisgICAgICAgICwgbV9p
bmRleE5hbWUoaW5kZXhOYW1lKQorICAgICAgICAsIG1faWRiS2V5UmFuZ2UoaWRiS2V5UmFuZ2Up
CisgICAgICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50KQorICAgICAgICAsIG1fcGFnZVNpemUo
cGFnZVNpemUpIHsgfQorICAgIFJlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRl
bmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOworICAgIGludCBtX3JlcXVlc3RJZDsKKyAg
ICBJbmplY3RlZFNjcmlwdCBtX2luamVjdGVkU2NyaXB0OworICAgIFN0cmluZyBtX29iamVjdFN0
b3JlTmFtZTsKKyAgICBTdHJpbmcgbV9pbmRleE5hbWU7CisgICAgUmVmUHRyPElEQktleVJhbmdl
PiBtX2lkYktleVJhbmdlOworICAgIGludCBtX3NraXBDb3VudDsKKyAgICB1bnNpZ25lZCBtX3Bh
Z2VTaXplOworfTsKKwogfSAvLyBuYW1lc3BhY2UKIAotSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
Okluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQpCitJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUq
IHN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ+KCJJbmRleGVkREIiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBz
dGF0ZSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdl
cikKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKIHsKIH0KQEAgLTMwNCw2ICs1ODUsMjYg
QEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAg
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbmRleGVkREJBZ2VudFN0YXRlOjppbmRleGVkREJBZ2Vu
dEVuYWJsZWQsIGZhbHNlKTsKIH0KIAorc3RhdGljIEZyYW1lKiBhc3NlcnRGcmFtZShjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBFcnJvclN0cmlu
ZyogZXJyb3IpCit7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZUFnZW50LT5mcmFtZUZvcklkKGZy
YW1lSWQpOworCisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgKmVycm9yID0gIkZyYW1lIG5vdCBm
b3VuZCI7CisKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK3N0YXRpYyBEb2N1bWVudCogYXNzZXJ0
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBFcnJvclN0cmluZyogZXJyb3IpCit7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IDA7CisKKyAgICBpZiAo
IWRvY3VtZW50KQorICAgICAgICAqZXJyb3IgPSAiTm8gZG9jdW1lbnQgZm9yIGdpdmVuIGZyYW1l
IGZvdW5kIjsKKworICAgIHJldHVybiBkb2N1bWVudDsKK30KKwogc3RhdGljIERvY3VtZW50KiBh
c3NlcnREb2N1bWVudChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50LCBFcnJvclN0cmluZyogZXJyb3IpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFn
ZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOwpAQCAtMzUzLDYgKzY1NCwyNiBAQCB2b2lkIElu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVycm9y
LCBpbnQgcmVxdWVzdElkLAogICAgIGRhdGFiYXNlTG9hZGVyQ2FsbGJhY2stPnN0YXJ0KGlkYkZh
Y3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkb2N1bWVudC0+ZnJhbWUoKSwgZGF0
YWJhc2VOYW1lKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERh
dGEoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6
ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlKQoreworICAgIEZyYW1l
KiBmcmFtZSA9IGFzc2VydEZyYW1lKGZyYW1lSWQsIG1fcGFnZUFnZW50LCBlcnJvcik7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFz
c2VydERvY3VtZW50KGZyYW1lLCBlcnJvcik7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAg
cmV0dXJuOworICAgIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5ID0gYXNz
ZXJ0SURCRmFjdG9yeShkb2N1bWVudCwgZXJyb3IpOworICAgIGlmICghaWRiRmFjdG9yeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3Rh
dGUoZnJhbWUpKTsKKworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlS
YW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKGtleVJhbmdlLT5nZXQoKSkgOiAwOworICAg
IFJlZlB0cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IGRhdGFMb2FkZXJDYWxsYmFjayA9IERhdGFMb2Fk
ZXJDYWxsYmFjazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCBpbmplY3Rl
ZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291
bnQsIHBhZ2VTaXplKTsKKworICAgIGRhdGFMb2FkZXJDYWxsYmFjay0+c3RhcnQoaWRiRmFjdG9y
eSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRvY3VtZW50LT5mcmFtZSgpLCBkYXRhYmFz
ZU5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggMWI0NmRkMTQz
NmVhMzA0ZjRlMjQ1MjAwOWE5ODMzNmZiY2JmYzA4YS4uYjE5ZWQ2ZTVmNWIwYzMzNzJiZTg2MGUz
NTNmOGFmMmZlYTRiNzE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JQ
YWdlQWdlbnQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNDcsOSArNDgsOSBA
QCBjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQ8SW5zcGVjdG9ySW5kZXhlZERCQWdlbgogcHVibGljOgogICAgIGNsYXNzIEZyb250ZW5kUHJv
dmlkZXI7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4g
Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3Rv
clN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIHBhZ2VBZ2VudCkp
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckluZGV4ZWREQkFnZW50KGlu
c3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2VBZ2Vu
dCkpOwogICAgIH0KICAgICB+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIApAQCAtNjIsOSAr
NjMsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWUoRXJyb3JTdHJp
bmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwogICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGlu
dCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlKTsKIHBy
aXZhdGU6Ci0gICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEluc3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CisgICAgSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAKKyAgICBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclBhZ2VB
Z2VudCogbV9wYWdlQWdlbnQ7CiAgICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRl
bmRQcm92aWRlcjsKICAgICBib29sIG1fZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCmluZGV4IDc1NzE2ZDJkMTY3
MzYwNmY2M2QzYmNjOWZjN2E1NjdhZGRjNzE4YzYuLmZhZjdkMWY5YzI3ZjNlOTYxOGY4YzJkODc4
MDQ4OGRhMzNjOWNmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5kZXhlZERCTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbmRleGVkREJNb2RlbC5qcwpAQCAtNDYsNiArNDYsODYgQEAgV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMucmVmcmVzaERhdGFiYXNlTmFt
ZXMoKTsKIH0KIAorLy9LZWVwIHRoZXNlIGluIHN5bmMgd2l0aCBXZWJDb3JlOjpJREJLZXk6OlR5
cGUKK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcyA9IHsKKyAgICBJbnZhbGlk
VHlwZTogMCwKKyAgICBBcnJheVR5cGU6ICAgMSwKKyAgICBTdHJpbmdUeXBlOiAgMiwKKyAgICBE
YXRlVHlwZTogICAgMywKKyAgICBOdW1iZXJUeXBlOiAgNCwKKyAgICBNaW5UeXBlOiAgICAgNQor
fTsKKworLyoqCisgKiBAcGFyYW0ge0luZGV4ZWREQkFnZW50LktleX0ga2V5CisgKi8KK1dlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9tS2V5ID0gZnVuY3Rpb24oa2V5KQorewor
ICAgIHZhciBpZGJLZXk7CisgICAgc3dpdGNoIChrZXkudHlwZSkgeworICAgIGNhc2UgV2ViSW5z
cGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLk51bWJlclR5cGU6CisgICAgICAgIGlkYktl
eSA9IGtleS5udW1iZXI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLktleVR5cGVzLlN0cmluZ1R5cGU6CisgICAgICAgIGlkYktleSA9IGtleS5z
dHJpbmc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1v
ZGVsLktleVR5cGVzLkRhdGVUeXBlOgorICAgICAgICBpZGJLZXkgPSBuZXcgRGF0ZShrZXkuZGF0
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LktleVR5cGVzLkFycmF5VHlwZToKKyAgICAgICAgaWRiS2V5ID0gW107CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgaWRiS2V5LnB1c2go
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkoa2V5LmFycmF5W2ldKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gaWRiS2V5OworfQorCitXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5RnJvbUlEQktleSA9IGZ1bmN0aW9uKGlkYktleSkKK3sK
KyAgICBpZiAodHlwZW9mKGlkYktleSkgPT09ICJ1bmRlZmluZWQiIHx8IGlkYktleSA9PT0gbnVs
bCkKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgCisgICAgdmFyIGtleSA9IHt9OworICAgIGtl
eS50eXBlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLkludmFsaWRUeXBl
OworICAgIHN3aXRjaCAodHlwZW9mKGlkYktleSkpIHsKKyAgICBjYXNlICJudW1iZXIiOgorICAg
ICAgICBrZXkubnVtYmVyID0gaWRiS2V5OworICAgICAgICBrZXkudHlwZSA9IFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5OdW1iZXJUeXBlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlICJzdHJpbmciOgorICAgICAgICBrZXkuc3RyaW5nID0gaWRiS2V5OworICAgICAgICBr
ZXkudHlwZSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5TdHJpbmdUeXBl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICJvYmplY3QiOgorICAgICAgICBpZiAoaWRiS2V5
IGluc3RhbmNlb2YgRGF0ZSkgeworICAgICAgICAgICAga2V5LmRhdGUgPSBpZGJLZXkuZ2V0VGlt
ZSgpOworICAgICAgICAgICAga2V5LnR5cGUgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
S2V5VHlwZXMuRGF0ZVR5cGU7CisgICAgICAgIH0gZWxzZSBpZiAoaWRiS2V5IGluc3RhbmNlb2Yg
QXJyYXkpIHsKKyAgICAgICAgICAgIGtleS5hcnJheSA9IFtdOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBpZGJLZXkubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAga2V5LmFy
cmF5LnB1c2goV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleUZyb21JREJLZXkoaWRiS2V5
W2ldKSk7CisgICAgICAgICAgICBrZXkudHlwZSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5LZXlUeXBlcy5BcnJheVR5cGU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBrZXk7Cit9CisKK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlSYW5n
ZUZyb21JREJLZXlSYW5nZSA9IGZ1bmN0aW9uKGlkYktleVJhbmdlKQoreworICAgIHZhciBJREJL
ZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7
CisgICAgaWYgKHR5cGVvZihpZGJLZXlSYW5nZSkgPT09ICJ1bmRlZmluZWQiIHx8IGlkYktleVJh
bmdlID09PSBudWxsKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAKKyAgICB2YXIga2V5UmFu
Z2UgPSB7fTsKKyAgICBrZXlSYW5nZS5sb3dlciA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5rZXlGcm9tSURCS2V5KGlkYktleVJhbmdlLmxvd2VyKTsKKyAgICBrZXlSYW5nZS51cHBlciA9
IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5KGlkYktleVJhbmdlLnVw
cGVyKTsKKyAgICBrZXlSYW5nZS5sb3dlck9wZW4gPSBpZGJLZXlSYW5nZS5sb3dlck9wZW47Cisg
ICAga2V5UmFuZ2UudXBwZXJPcGVuID0gaWRiS2V5UmFuZ2UudXBwZXJPcGVuOworICAgIHJldHVy
biBrZXlSYW5nZTsKK30KKwogV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICByZWZyZXNoRGF0YWJhc2VOYW1lczogZnVuY3Rpb24oKQogICAgIHsKQEAgLTI2Myw2
ICszNDMsNjcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMuX2luZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RE
YXRhYmFzZShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0
U3RvcmVOYW1lCisgICAgICogQHBhcmFtIHt3ZWJraXRJREJLZXlSYW5nZX0gaWRiS2V5UmFuZ2UK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gc2tpcENvdW50CisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHBhZ2VTaXplCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48V2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLkVudHJ5PiwgYm9vbGVhbil9IGNhbGxiYWNrCisgICAgICovCisgICAgbG9h
ZE9iamVjdFN0b3JlRGF0YTogZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RT
dG9yZU5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2Vu
dC5EYXRhRW50cnk+fSBkYXRhRW50cmllcworICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhh
c01vcmUKKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZGF0YUVu
dHJpZXMsIGhhc01vcmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBlbnRyaWVzID0gW107
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFFbnRyaWVzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICAgICAgdmFyIGtleSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5pZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ldLmtleSk7CisgICAgICAgICAgICAgICAgdmFy
IHByaW1hcnlLZXkgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtleShk
YXRhRW50cmllc1tpXS5wcmltYXJ5S2V5KTsKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGRhdGFFbnRyaWVzW2ldLnZhbHVl
KTsKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5FbnRyeShrZXksIHByaW1hcnlLZXksIHZhbHVlKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYWxsYmFjayhlbnRyaWVzLCBoYXNNb3JlKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucmVxdWVzdE9iamVjdFN0
b3JlRGF0YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaWRiS2V5UmFu
Z2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVyQ2FsbGJhY2spOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBkYXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURC
S2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
QXJyYXkuPFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeT4sIGJvb2xlYW4pfSBjYWxs
YmFjaworICAgICAqLworICAgIGxvYWRJbmRleERhdGE6IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFi
YXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291
bnQsIHBhZ2VTaXplLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBA
cGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcworICAg
ICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc01vcmUKKyAgICAgICAgICovCisgICAgICAgIGZ1
bmN0aW9uIGlubmVyQ2FsbGJhY2soZGF0YUVudHJpZXMsIGhhc01vcmUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBlbnRyaWVzID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGRhdGFFbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGtleSA9
IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ld
LmtleSk7ICAgIAorICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5S2V5ID0gV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkoZGF0YUVudHJpZXNbaV0ucHJpbWFyeUtleSk7
ICAgIAorICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QuZnJvbVBheWxvYWQoZGF0YUVudHJpZXNbaV0udmFsdWUpOyAgICAKKyAgICAgICAgICAgICAg
ICBlbnRyaWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeShrZXks
IHByaW1hcnlLZXksIHZhbHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWxsYmFj
ayhlbnRyaWVzLCBoYXNNb3JlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5f
aW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucmVxdWVzdEluZGV4RGF0YShmcmFtZUlkLCBkYXRhYmFz
ZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50
LCBwYWdlU2l6ZSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9CiB9CiAKQEAgLTI3
MCw2ICs0MTEsMTkgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAogLyoqCiAgKiBAY29uc3Ry
dWN0b3IKKyAqIEBwYXJhbSB7Kn0ga2V5CisgKiBAcGFyYW0geyp9IHByaW1hcnlLZXkKKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gdmFsdWUKKyAqLworV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLkVudHJ5ID0gZnVuY3Rpb24oa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSkK
K3sKKyAgICB0aGlzLmtleSA9IGtleTsKKyAgICB0aGlzLnByaW1hcnlLZXkgPSBwcmltYXJ5S2V5
OworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKICAq
IEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCiAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmln
aW4KICAqLwpAQCAtMzIzLDcgKzQ3Nyw5IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLl9sYXN0UmVxdWVzdElkID0gMDsKICAg
ICB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lQ2FsbGJhY2tzID0ge307Ci0KKyAg
ICB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3MgPSB7fTsKKyAgICB0aGlzLl9yZXF1ZXN0
RGF0YUNhbGxiYWNrcyA9IHt9OworICAgIAogICAgIEluZGV4ZWREQkFnZW50LmVuYWJsZSgpOwog
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbmRleGVkREJEaXNwYXRjaGVyKG5ldyBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlcih0aGlzKSk7CiB9CkBAIC0zOTksNiArNTU1LDkx
IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAg
ICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYmpl
Y3RTdG9yZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lCisgICAgICogQHBh
cmFtIHt3ZWJraXRJREJLZXlSYW5nZX0gaWRiS2V5UmFuZ2UKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc2tpcENvdW50CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VTaXplCisgICAgICogQHBh
cmFtIHtmdW5jdGlvbihBcnJheS48SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5PiwgYm9vbGVhbil9
IGNhbGxiYWNrCisgICAgICovCisgICAgX3JlcXVlc3REYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBk
YXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tp
cENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdElk
ID0gdGhpcy5fcmVxdWVzdElkKCk7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5EYXRhUmVxdWVzdChmcmFtZUlkLCBkYXRhYmFz
ZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBjYWxsYmFjayk7CisgICAgICAgIHRo
aXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF0gPSByZXF1ZXN0OyAKKworICAgICAg
ICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJJbmRleGVkREJBZ2Vu
dCBlcnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIga2V5UmFuZ2UgPSBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwua2V5UmFuZ2VGcm9tSURCS2V5UmFuZ2UoaWRiS2V5UmFuZ2UpOworICAgICAg
ICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YShyZXF1ZXN0SWQsIGZyYW1lSWQsIGRhdGFiYXNl
TmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIHNraXBDb3VudCwgcGFnZVNpemUsIGtl
eVJhbmdlID8ga2V5UmFuZ2UgOiB1bmRlZmluZWQsIGlubmVyQ2FsbGJhY2spOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVO
YW1lCisgICAgICogQHBhcmFtIHt3ZWJraXRJREJLZXlSYW5nZX0gaWRiS2V5UmFuZ2UKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gc2tpcENvdW50CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VT
aXplCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48SW5kZXhlZERCQWdlbnQuRGF0YUVu
dHJ5PiwgYm9vbGVhbil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdE9iamVjdFN0b3Jl
RGF0YTogZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGlk
YktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHRoaXMuX3JlcXVlc3REYXRhKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1l
LCAiIiwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNhbGxiYWNrKTsKKyAgICB9
LAorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAg
KiBAcGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcwor
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzTW9yZQorICAgICAqLworICAgIF9vYmplY3RTdG9y
ZURhdGFMb2FkZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZGF0YUVudHJpZXMsIGhhc01vcmUpCisg
ICAgeworICAgICAgICB2YXIgcmVxdWVzdCA9IHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3Jl
cXVlc3RJZF07CisgICAgICAgIGlmICghcmVxdWVzdC5jYWxsYmFjaykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgICAgIHJlcXVlc3QuY2FsbGJhY2soZGF0YUVudHJpZXMsIGhh
c01vcmUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJ
ZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gb2JqZWN0U3RvcmVOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZQor
ICAgICAqIEBwYXJhbSB7d2Via2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHNraXBDb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQor
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4s
IGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RJbmRleERhdGE6IGZ1bmN0
aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlk
YktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHRoaXMuX3JlcXVlc3REYXRhKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1l
LCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFjayk7
CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElk
CisgICAgICogQHBhcmFtIHtBcnJheS48SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVu
dHJpZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc01vcmUKKyAgICAgKi8KKyAgICBfaW5k
ZXhEYXRhTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFFbnRyaWVzLCBoYXNNb3JlKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1ty
ZXF1ZXN0SWRdOworICAgICAgICBpZiAoIXJlcXVlc3QuY2FsbGJhY2spCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGRhdGFFbnRyaWVzLCBo
YXNNb3JlKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHJldHVybiB7bnVtYmVyfQogICAg
ICAqLwogICAgIF9yZXF1ZXN0SWQ6IGZ1bmN0aW9uKCkKQEAgLTQyMCw2ICs2NjEsMTEgQEAgV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGlmICh0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXS5mcmFtZUlk
ID09PSBmcmFtZUlkKQogICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0RGF0YWJh
c2VDYWxsYmFja3NbcmVxdWVzdElkXTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9y
ICh2YXIgcmVxdWVzdElkIGluIHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzKSB7CisgICAgICAg
ICAgICBpZiAodGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXS5mcmFtZUlkID09
PSBmcmFtZUlkKQorICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxi
YWNrc1tyZXF1ZXN0SWRdOworICAgICAgICB9CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDMxLDE5
ICs2NzcsMjYgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVx
dWVzdElkXS5mcmFtZUlkID09PSBmcmFtZUlkICYmIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxi
YWNrc1tyZXF1ZXN0SWRdLmRhdGFiYXNlTmFtZSA9PT0gZGF0YWJhc2VOYW1lKQogICAgICAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXTsK
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRoaXMu
X3JlcXVlc3REYXRhQ2FsbGJhY2tzKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdERh
dGFDYWxsYmFja3NbcmVxdWVzdElkXS5mcmFtZUlkID09PSBmcmFtZUlkICYmIHRoaXMuX3JlcXVl
c3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZGF0YWJhc2VOYW1lID09PSBkYXRhYmFzZU5hbWUp
CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVl
c3RJZF07CisgICAgICAgIH0KICAgICB9LAogCiAgICAgX3Jlc2V0OiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lQ2FsbGJhY2tzID0g
e307CiAgICAgICAgIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrcyA9IHt9OwotCisgICAg
ICAgIHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzID0ge307CiAgICAgfQogfQogCiAvKioKICAq
IEBjb25zdHJ1Y3RvcgotICovCisgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICogQHBhcmFt
IHtmdW5jdGlvbihJbmRleGVkREJBZ2VudC5TZWN1cml0eU9yaWdpbldpdGhEYXRhYmFzZU5hbWVz
KX0gY2FsbGJhY2sKKyovCiBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0
YWJhc2VzRm9yRnJhbWVSZXF1ZXN0ID0gZnVuY3Rpb24oZnJhbWVJZCwgY2FsbGJhY2spCiB7CiAg
ICAgdGhpcy5mcmFtZUlkID0gZnJhbWVJZDsKQEAgLTQ1Miw2ICs3MDUsOSBAQCBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YWJhc2VzRm9yRnJhbWVSZXF1ZXN0ID0gZnVu
Y3Rpb24oZnJhbWVJZAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9
IGZyYW1lSWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAqIEBwYXJhbSB7ZnVu
Y3Rpb24oSW5kZXhlZERCQWdlbnQuRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKX0gY2FsbGJhY2sK
ICAqLwogV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLkRhdGFiYXNlUmVxdWVz
dCA9IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgY2FsbGJhY2spCiB7CkBAIC00NjIs
NiArNzE4LDIzIEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5EYXRhYmFz
ZVJlcXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzCiAKIC8qKgogICogQGNvbnN0cnVj
dG9yCisgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICogQHBhcmFtIHtzdHJpbmd9IGRhdGFi
YXNlTmFtZQorICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICogQHBhcmFtIHtz
dHJpbmd9IGluZGV4TmFtZQorICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48SW5kZXhlZERCQWdl
bnQuRGF0YUVudHJ5PiwgYm9vbGVhbil9IGNhbGxiYWNrCisgKi8KK1dlYkluc3BlY3Rvci5JbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5EYXRhUmVxdWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFi
YXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGNhbGxiYWNrKQoreworICAgIHRo
aXMuZnJhbWVJZCA9IGZyYW1lSWQ7CisgICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBkYXRhYmFzZU5h
bWU7CisgICAgdGhpcy5vYmplY3RTdG9yZU5hbWUgPSBvYmplY3RTdG9yZU5hbWU7CisgICAgdGhp
cy5pbmRleE5hbWUgPSBpbmRleE5hbWU7CisgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrOwor
fQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge0luZGV4ZWREQkFnZW50
LkRpc3BhdGNoZXJ9CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFu
YWdlcn0gaW5kZXhlZERCUmVxdWVzdE1hbmFnZXIKICAqLwpAQCAtNDg3LDUgKzc2MCwyNSBAQCBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgZGF0YWJh
c2VMb2FkZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKQog
ICAgIHsKICAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9kYXRhYmFzZUxvYWRlZChyZXF1ZXN0
SWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcyk7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCisgICAgICogQHBhcmFtIHtBcnJheS48SW5k
ZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IGhhc01vcmUKKyAgICAgKi8KKyAgICBvYmplY3RTdG9yZURhdGFMb2FkZWQ6IGZ1bmN0aW9u
KHJlcXVlc3RJZCwgZGF0YUVudHJpZXMsIGhhc01vcmUpCisgICAgeworICAgICAgICB0aGlzLl9h
Z2VudFdyYXBwZXIuX29iamVjdFN0b3JlRGF0YUxvYWRlZChyZXF1ZXN0SWQsIGRhdGFFbnRyaWVz
LCBoYXNNb3JlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJl
cXVlc3RJZAorICAgICAqIEBwYXJhbSB7QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59
IGRhdGFFbnRyaWVzCisgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisgICAgICovCisg
ICAgaW5kZXhEYXRhTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFFbnRyaWVzLCBoYXNN
b3JlKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9pbmRleERhdGFMb2FkZWQo
cmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY5MjZj
N2I5NDA4ZTllMzY5NDM1ODk4ZDFmNjM5MGYyNTEyMWZkNTMuLjliNzIwZWQxYWJmNDkxMjc4Yzli
MzQ5OGY2OWU4ZjUwZDNiZDllYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wMi0xMyAg
VnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbSW5zcGVjdG9ySW5kZXhlZERCXSBQYXNzIGRhdGEgZW50cmllcyBmcm9tIG9iamVj
dCBzdG9yZXMgYW5kIGluZGV4ZXMgdG8gZnJvbnQtZW5kLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Ut
c3RydWN0dXJlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvaW5kZXhlZGRiLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0luZGV4ZWRE
QlRlc3QuSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZVdpdGhDYWxsYmFjayk6CisgICAgICAgIChpbml0
aWFsaXplX0luZGV4ZWREQlRlc3QuSW5zcGVjdG9yVGVzdC5hZGRJREJWYWx1ZSk6CisgICAgICAg
IChpbml0aWFsaXplX0luZGV4ZWREQlRlc3QpOgorICAgICAgICAoZG9XaXRoUmVhZFdyaXRlVHJh
bnNhY3Rpb24uc3RlcDIuaW5uZXJDb21taXRDYWxsYmFjayk6CisgICAgICAgIChkb1dpdGhSZWFk
V3JpdGVUcmFuc2FjdGlvbi5zdGVwMik6CisgICAgICAgIChkb1dpdGhSZWFkV3JpdGVUcmFuc2Fj
dGlvbik6CisgICAgICAgIChhZGRJREJWYWx1ZS5kb1dpdGhSZWFkV3JpdGVUcmFuc2FjdGlvbi53
aXRoVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChhZGRJREJWYWx1ZSk6CisKIDIwMTIt
MDItMTAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogTWFrZSBTY3JpcHRzTmF2aWdhdG9yIGRlZmF1bHQgZmlsZSBzZWxlY3Rv
ci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZGNlZWMxZjBhZGFkYzhiNDg0NTM5YzM0ZTAwMTEwNmJhMzBlNDY0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRh
dGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3
OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s0CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNQorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazYK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJh
Y2s3CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2Nh
bGxiYWNrOAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazkKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2sxMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0
LkluZGV4ZWREQl9jYWxsYmFjazExCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3Rv
clRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5z
cGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxMworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5
OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazE0CitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTUKK1Rlc3RzIHRoYXQgZGF0
YSBpcyBjb3JyZWN0bHkgbG9hZGVkIGJ5IEluZGV4ZWREQk1vZGVsIGZyb20gSW5kZXhlZERCIG9i
amVjdCBzdG9yZSBhbmQgaW5kZXguCisKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxz
ZSwgc2tpcENvdW50ID0gMCwgcGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBL
ZXkgPSBrZXlfMDEsIHByaW1hcnlLZXkgPSBrZXlfMDEsIHZhbHVlID0geyJrZXkiOiJrZXlfMDEi
LCJ2YWx1ZSI6InZhbHVlXzAxIn0KKyAgICBLZXkgPSBrZXlfMDIsIHByaW1hcnlLZXkgPSBrZXlf
MDIsIHZhbHVlID0geyJrZXkiOiJrZXlfMDIiLCJ2YWx1ZSI6InZhbHVlXzAyIn0KKyAgICBLZXkg
PSBrZXlfMDMsIHByaW1hcnlLZXkgPSBrZXlfMDMsIHZhbHVlID0geyJrZXkiOiJrZXlfMDMiLCJ2
YWx1ZSI6InZhbHVlXzAzIn0KKyAgICBoYXNNb3JlID0gdHJ1ZQorRHVtcGluZyB2YWx1ZXMsIGZy
b21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAzLCBwYWdlU2l6ZSA9IDMsIGlkYktleVJhbmdl
ID0gbnVsbAorICAgIEtleSA9IGtleV8wNCwgcHJpbWFyeUtleSA9IGtleV8wNCwgdmFsdWUgPSB7
ImtleSI6ImtleV8wNCIsInZhbHVlIjoidmFsdWVfMDQifQorICAgIEtleSA9IGtleV8wNSwgcHJp
bWFyeUtleSA9IGtleV8wNSwgdmFsdWUgPSB7ImtleSI6ImtleV8wNSIsInZhbHVlIjoidmFsdWVf
MDUifQorICAgIEtleSA9IGtleV8wNiwgcHJpbWFyeUtleSA9IGtleV8wNiwgdmFsdWUgPSB7Imtl
eSI6ImtleV8wNiIsInZhbHVlIjoidmFsdWVfMDYifQorICAgIGhhc01vcmUgPSB0cnVlCitEdW1w
aW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDYsIHBhZ2VTaXplID0g
MywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5
XzA3LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgS2V5
ID0ga2V5XzA4LCBwcmltYXJ5S2V5ID0ga2V5XzA4LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA4Iiwi
dmFsdWUiOiJ2YWx1ZV8wOCJ9CisgICAgS2V5ID0ga2V5XzA5LCBwcmltYXJ5S2V5ID0ga2V5XzA5
LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA5IiwidmFsdWUiOiJ2YWx1ZV8wOSJ9CisgICAgaGFzTW9y
ZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9
IDcsIHBhZ2VTaXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgS2V5ID0ga2V5XzA4LCBw
cmltYXJ5S2V5ID0ga2V5XzA4LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA4IiwidmFsdWUiOiJ2YWx1
ZV8wOCJ9CisgICAgS2V5ID0ga2V5XzA5LCBwcmltYXJ5S2V5ID0ga2V5XzA5LCB2YWx1ZSA9IHsi
a2V5Ijoia2V5XzA5IiwidmFsdWUiOiJ2YWx1ZV8wOSJ9CisgICAgaGFzTW9yZSA9IGZhbHNlCitE
dW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDksIHBhZ2VTaXpl
ID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgaGFzTW9yZSA9IGZhbHNlCitEdW1waW5nIHZh
bHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDEwLCBwYWdlU2l6ZSA9IDMsIGlk
YktleVJhbmdlID0gbnVsbAorICAgIGhhc01vcmUgPSBmYWxzZQorRHVtcGluZyB2YWx1ZXMsIGZy
b21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAwLCBwYWdlU2l6ZSA9IDQsIGlkYktleVJhbmdl
ID0geyJ1cHBlciI6ImtleV8wNyIsInVwcGVyT3BlbiI6ZmFsc2UsImxvd2VyT3BlbiI6dHJ1ZSwi
bG93ZXIiOiJrZXlfMDIifQorICAgIEtleSA9IGtleV8wMywgcHJpbWFyeUtleSA9IGtleV8wMywg
dmFsdWUgPSB7ImtleSI6ImtleV8wMyIsInZhbHVlIjoidmFsdWVfMDMifQorICAgIEtleSA9IGtl
eV8wNCwgcHJpbWFyeUtleSA9IGtleV8wNCwgdmFsdWUgPSB7ImtleSI6ImtleV8wNCIsInZhbHVl
IjoidmFsdWVfMDQifQorICAgIEtleSA9IGtleV8wNSwgcHJpbWFyeUtleSA9IGtleV8wNSwgdmFs
dWUgPSB7ImtleSI6ImtleV8wNSIsInZhbHVlIjoidmFsdWVfMDUifQorICAgIEtleSA9IGtleV8w
NiwgcHJpbWFyeUtleSA9IGtleV8wNiwgdmFsdWUgPSB7ImtleSI6ImtleV8wNiIsInZhbHVlIjoi
dmFsdWVfMDYifQorICAgIGhhc01vcmUgPSB0cnVlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4
ID0gZmFsc2UsIHNraXBDb3VudCA9IDAsIHBhZ2VTaXplID0gNSwgaWRiS2V5UmFuZ2UgPSB7InVw
cGVyIjoia2V5XzA3IiwidXBwZXJPcGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6
ImtleV8wMiJ9CisgICAgS2V5ID0ga2V5XzAzLCBwcmltYXJ5S2V5ID0ga2V5XzAzLCB2YWx1ZSA9
IHsia2V5Ijoia2V5XzAzIiwidmFsdWUiOiJ2YWx1ZV8wMyJ9CisgICAgS2V5ID0ga2V5XzA0LCBw
cmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFsdWUiOiJ2YWx1
ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2YWx1ZSA9IHsi
a2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5XzA2LCBwcmlt
YXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUiOiJ2YWx1ZV8w
NiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5XzA3LCB2YWx1ZSA9IHsia2V5
Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgaGFzTW9yZSA9IGZhbHNlCitEdW1w
aW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDAsIHBhZ2VTaXplID0g
NiwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3IiwidXBwZXJPcGVuIjpmYWxzZSwibG93
ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAgS2V5ID0ga2V5XzAzLCBwcmltYXJ5
S2V5ID0ga2V5XzAzLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAzIiwidmFsdWUiOiJ2YWx1ZV8wMyJ9
CisgICAgS2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoi
a2V5XzA0IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5
ID0ga2V5XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9Cisg
ICAgS2V5ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5
XzA2IiwidmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0g
a2V5XzA3LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAg
aGFzTW9yZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBD
b3VudCA9IDEsIHBhZ2VTaXplID0gNCwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3Iiwi
dXBwZXJPcGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAg
S2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0
IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5
XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5
ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2Iiwi
dmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5XzA3
LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgaGFzTW9y
ZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9
IDEsIHBhZ2VTaXplID0gNSwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3IiwidXBwZXJP
cGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAgS2V5ID0g
a2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFs
dWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2
YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5
XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUi
OiJ2YWx1ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5XzA3LCB2YWx1
ZSA9IHsia2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgaGFzTW9yZSA9IGZh
bHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDEsIHBh
Z2VTaXplID0gNiwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3IiwidXBwZXJPcGVuIjpm
YWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAgS2V5ID0ga2V5XzA0
LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFsdWUiOiJ2
YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2YWx1ZSA9
IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5XzA2LCBw
cmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUiOiJ2YWx1
ZV8wNiJ9CisgICAgS2V5ID0ga2V5XzA3LCBwcmltYXJ5S2V5ID0ga2V5XzA3LCB2YWx1ZSA9IHsi
a2V5Ijoia2V5XzA3IiwidmFsdWUiOiJ2YWx1ZV8wNyJ9CisgICAgaGFzTW9yZSA9IGZhbHNlCitE
dW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gdHJ1ZSwgc2tpcENvdW50ID0gMCwgcGFnZVNpemUg
PSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBLZXkgPSB2YWx1ZV8wMSwgcHJpbWFyeUtleSA9
IGtleV8wMSwgdmFsdWUgPSB7ImtleSI6ImtleV8wMSIsInZhbHVlIjoidmFsdWVfMDEifQorICAg
IEtleSA9IHZhbHVlXzAyLCBwcmltYXJ5S2V5ID0ga2V5XzAyLCB2YWx1ZSA9IHsia2V5Ijoia2V5
XzAyIiwidmFsdWUiOiJ2YWx1ZV8wMiJ9CisgICAgS2V5ID0gdmFsdWVfMDMsIHByaW1hcnlLZXkg
PSBrZXlfMDMsIHZhbHVlID0geyJrZXkiOiJrZXlfMDMiLCJ2YWx1ZSI6InZhbHVlXzAzIn0KKyAg
ICBoYXNNb3JlID0gdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MjJlM2ZmYTAzMmFmYTRiYjI1YzcyZmQ1NzkxMTMxMWNiODc0MjQ2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRh
dGEuaHRtbApAQCAtMCwwICsxLDIwMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaW5kZXhlZGRiLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBJ
REJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFu
Z2U7CisgICAgdmFyIGluZGV4ZWREQk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbCgpOworICAgIHZhciBtYWluRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVN
b2RlbC5tYWluRnJhbWUuaWQ7CisgICAgdmFyIGRhdGFiYXNlTmFtZSA9ICJ0ZXN0RGF0YWJhc2Ui
OworICAgIHZhciBvYmplY3RTdG9yZU5hbWUgPSAidGVzdE9iamVjdFN0b3JlIjsKKyAgICB2YXIg
aW5kZXhOYW1lID0gInRlc3RJbmRleE5hbWUiOworCisgICAgZnVuY3Rpb24gYWRkSURCVmFsdWVz
KGNvdW50LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgYWRk
VmFsdWVzKCk7CisKKyAgICAgICAgZnVuY3Rpb24gYWRkVmFsdWVzKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGkgPT0gY291bnQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsraTsK
KyAgICAgICAgICAgIHZhciBpZCA9IGkgPCAxMCA/ICIwIiArIGkgOiBpOworICAgICAgICAgICAg
dmFyIGtleSA9ICJrZXlfIiArIGlkOworICAgICAgICAgICAgdmFyIHZhbHVlID0gInZhbHVlXyIg
KyBpZDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkSURCVmFsdWUobWFpbkZyYW1lSWQs
IGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCB7IGtleToga2V5LCB2YWx1ZTogdmFsdWUg
fSwgIiIsIGFkZFZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2Fk
VmFsdWVzQW5kRHVtcChmcm9tSW5kZXgsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXpl
LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1w
aW5nIHZhbHVlcywgZnJvbUluZGV4ID0gIiArIGZyb21JbmRleCArICIsIHNraXBDb3VudCA9ICIg
KyBza2lwQ291bnQgKyAiLCBwYWdlU2l6ZSA9ICIgKyBwYWdlU2l6ZSArICIsIGlkYktleVJhbmdl
ID0gIiArIEpTT04uc3RyaW5naWZ5KGlkYktleVJhbmdlKSk7CisgICAgICAgIGlmIChmcm9tSW5k
ZXgpCisgICAgICAgICAgICBpbmRleGVkREJNb2RlbC5sb2FkSW5kZXhEYXRhKG1haW5GcmFtZUlk
LCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwg
c2tpcENvdW50LCBwYWdlU2l6ZSwgaW5uZXJDYWxsYmFjayk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGluZGV4ZWREQk1vZGVsLmxvYWRPYmplY3RTdG9yZURhdGEobWFpbkZyYW1lSWQsIGRh
dGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdl
U2l6ZSwgaW5uZXJDYWxsYmFjayk7CisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhl
bnRyaWVzLCBoYXNNb3JlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaW5kZXggPSAwOwor
ICAgICAgICAgICAgdmFyIGVudHJ5OworICAgICAgICAgICAgZHVtcEVudHJpZXMoKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gZHVtcEVudHJpZXMoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmIChpbmRleCA9PT0gZW50cmllcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICBoYXNNb3JlID0gIiArIGhhc01vcmUpOwor
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVudHJ5ID0gZW50cmllc1tp
bmRleF07CisgICAgICAgICAgICAgICAgZW50cnkudmFsdWUuY2FsbEZ1bmN0aW9uSlNPTihkdW1w
TWUsIGR1bXBlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wTWUoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZHVtcGVkKHZhbHVlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgS2V5ID0gIiArIGVu
dHJ5LmtleSArICIsIHByaW1hcnlLZXkgPSAiICsgZW50cnkucHJpbWFyeUtleSArICIsIHZhbHVl
ID0gIiArIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBkdW1wRW50cmllcygpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdl
Ykluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNlTmFtZXNM
b2FkZWQiLCBmaWxsRGF0YWJhc2UsIGZhbHNlKTsKKworICAgIGZ1bmN0aW9uIGZpbGxEYXRhYmFz
ZSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURhdGFiYXNlKG1haW5GcmFt
ZUlkLCBkYXRhYmFzZU5hbWUsIHN0ZXAyKTsKKworICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlT2JqZWN0U3RvcmUobWFp
bkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCAia2V5IiwgdHJ1ZSwgc3Rl
cDMpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZU9iamVjdFN0b3JlSW5kZXgobWFpbkZyYW1l
SWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsICJ2YWx1ZSIsIGZh
bHNlLCB0cnVlLCBzdGVwNCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwNCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGFkZElEQlZhbHVlcyg5LCByZWZyZXNoRGF0YWJhc2Up
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVmcmVzaERhdGFiYXNlKCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZUxvYWRlZCIsIHJ1bk9iamVjdFN0b3Jl
VGVzdHMsIGZhbHNlKTsKKyAgICAgICAgaW5kZXhlZERCTW9kZWwucmVmcmVzaERhdGFiYXNlKG1h
aW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bk9iamVj
dFN0b3JlVGVzdHMoKQorICAgIHsKKyAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIG51
bGwsIDAsIDMsIHN0ZXAyKQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIG51bGwsIDMsIDMsIHN0ZXAzKQor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICB7CisgICAgICAg
ICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgNiwgMywgc3RlcDQpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICB7CisgICAgICAgICAgICBs
b2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgNywgMywgc3RlcDUpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc3RlcDUoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFs
dWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgOSwgMywgc3RlcDYpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc3RlcDYoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5k
RHVtcChmYWxzZSwgbnVsbCwgMTAsIDMsIHN0ZXA3KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHN0ZXA3KCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAo
ZmFsc2UsIElEQktleVJhbmdlLmJvdW5kKCJrZXlfMDIiLCAia2V5XzA3IiwgdHJ1ZSwgZmFsc2Up
LCAwLCA0LCBzdGVwOCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwOCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlSYW5n
ZS5ib3VuZCgia2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwgMCwgNSwgc3RlcDkpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDkoKQorICAgICAgICB7CisgICAgICAg
ICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91bmQoImtleV8wMiIs
ICJrZXlfMDciLCB0cnVlLCBmYWxzZSksIDAsIDYsIHN0ZXAxMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzdGVwMTAoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVz
QW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91bmQoImtleV8wMiIsICJrZXlfMDciLCB0cnVl
LCBmYWxzZSksIDEsIDQsIHN0ZXAxMSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
dGVwMTEoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwg
SURCS2V5UmFuZ2UuYm91bmQoImtleV8wMiIsICJrZXlfMDciLCB0cnVlLCBmYWxzZSksIDEsIDUs
IHN0ZXAxMik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMTIoKQorICAgICAg
ICB7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91
bmQoImtleV8wMiIsICJrZXlfMDciLCB0cnVlLCBmYWxzZSksIDEsIDYsIHN0ZXAxMyk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMTMoKQorICAgICAgICB7CisgICAgICAgICAg
ICBydW5JbmRleFRlc3RzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5J
bmRleFRlc3RzKCkKKyAgICB7CisgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKHRydWUsIG51bGws
IDAsIDMsIHN0ZXAyKQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY2xlYXJEYXRhYmFzZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rp
b24gY2xlYXJEYXRhYmFzZSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmRlbGV0ZU9i
amVjdFN0b3JlSW5kZXgobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1l
LCBpbmRleE5hbWUsIHN0ZXAyKTsKKworICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZGVsZXRlT2JqZWN0U3RvcmUobWFpbkZyYW1l
SWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBzdGVwMyk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZGVsZXRlRGF0YWJhc2UobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgc3RlcDQpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0
aGF0IGRhdGEgaXMgY29ycmVjdGx5IGxvYWRlZCBieSBJbmRleGVkREJNb2RlbCBmcm9tIEluZGV4
ZWREQiBvYmplY3Qgc3RvcmUgYW5kIGluZGV4LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFz
ZS1uYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvZGF0YWJhc2UtbmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDBmYjM0NGQwYzNkYTQ5
ZGE1NjAzNTU4M2FjMjk5NDY0M2ExNjA5ZTcuLmVjZjgwMjcwMzQ3NDY4OTE3MzljNDllNGNjNmNk
MWE0OTdlMWZkYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLWV4cGVjdGVkLnR4
dApAQCAtMSw3ICsxLDcgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVz
dC5JbmRleGVkREJfY2FsbGJhY2sxCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3Rv
clRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNw
ZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3Nzog
SW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s0CitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
Nzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMQorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazIKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2szCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNAogVGVzdHMg
dGhhdCBkYXRhYmFzZSBuYW1lcyBhcmUgY29ycmVjdGx5IGxvYWRlZCBhbmQgc2F2ZWQgaW4gSW5k
ZXhlZERCTW9kZWwuCiAKIER1bXBpbmcgZGF0YWJhc2UgbmFtZXM6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0CmluZGV4IDAyODVhYzQyMjAyYWEyNzQx
MTE3YTM0Mzc2ZWQ0OGE2Mjg3MmE0MjguLmY4NmJhMGY4MTI5NjkzMWUzMzk2MzE4N2M1NDI0M2Ew
MTU0NzY4ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUtZXhwZWN0
ZWQudHh0CkBAIC0xLDEzICsxLDEzIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3Bl
Y3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJ
bnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazIKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3
NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2szCi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazUKLUNPTlNPTEUgTUVT
U0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s2Ci1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNwotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazgK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJh
Y2s5Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2Nh
bGxiYWNrMTAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVk
REJfY2FsbGJhY2sxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5k
ZXhlZERCX2NhbGxiYWNrMgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0
LkluZGV4ZWREQl9jYWxsYmFjazMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9y
VGVzdC5JbmRleGVkREJfY2FsbGJhY2s0CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3Bl
Y3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJ
bnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazYKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3
OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s3CitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrOAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazkKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxMAogVGVzdHMg
dGhhdCBkYXRhYmFzZSBuYW1lcyBhcmUgY29ycmVjdGx5IGxvYWRlZCBhbmQgc2F2ZWQgaW4gSW5k
ZXhlZERCTW9kZWwuCiAKIER1bXBpbmcgZGF0YWJhc2U6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvaW5kZXhlZGRiLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvaW5kZXhlZGRiLXRlc3QuanMK
aW5kZXggMDI4NWEwZTdlMTkwNjQ3ZWYxNmYzZTE4Zjc5ZjFjZmNkNzM4MWFiZS4uNjA2MDJlZjUw
YjA0MWVkM2RkNWUyODAwZDQ1YjJhNzliZDY5OTI2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9pbmRleGVkZGItdGVzdC5q
cwpAQCAtMTEsMTIgKzExLDggQEAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZVdpdGhDYWxsYmFjayA9
IGZ1bmN0aW9uKGZyYW1lSWQsIG1ldGhvZE5hbWUsIHBhcmFtZXRlcnMsIGMKICAgICB2YXIgY2Fs
bGJhY2tJZCA9ICsrbGFzdENhbGxiYWNrSWQ7CiAgICAgY2FsbGJhY2tzW2NhbGxiYWNrSWRdID0g
Y2FsbGJhY2s7CiAgICAgdmFyIHBhcmFtZXRlcnNTdHJpbmcgPSAiXCIiICsgY2FsbGJhY2tJZFBy
ZWZpeCArIGNhbGxiYWNrSWQgKyAiXCIiOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1l
dGVycy5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAodHlwZW9mKHBhcmFtZXRlcnNbaV0pID09
PSAic3RyaW5nIikKLSAgICAgICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgKz0gIiwgXCIiICsgcGFy
YW1ldGVyc1tpXSArICJcIiI7Ci0gICAgICAgIGVsc2UgaWYgKCh0eXBlb2YocGFyYW1ldGVyc1tp
XSkgPT09ICJudW1iZXIiKSB8fCAodHlwZW9mKHBhcmFtZXRlcnNbaV0pID09PSAiYm9vbGVhbiIp
KQotICAgICAgICAgICAgcGFyYW1ldGVyc1N0cmluZyArPSAiLCAiICsgcGFyYW1ldGVyc1tpXTsK
LSAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKQor
ICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nICs9ICIsICIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0
ZXJzW2ldKTsKIAogICAgIHZhciByZXF1ZXN0U3RyaW5nID0gbWV0aG9kTmFtZSArICIoIiArIHBh
cmFtZXRlcnNTdHJpbmcgKyAiKSI7CiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShy
ZXF1ZXN0U3RyaW5nKTsKQEAgLTY4LDkgKzY0LDE1IEBAIEluc3BlY3RvclRlc3QuZGVsZXRlT2Jq
ZWN0U3RvcmVJbmRleCA9IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3Rv
CiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZVdpdGhDYWxsYmFjayhmcmFtZUlkLCAiZGVsZXRl
T2JqZWN0U3RvcmVJbmRleCIsIFtkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgb2JqZWN0
U3RvcmVJbmRleE5hbWVdLCBjYWxsYmFjaykKIH07CiAKK0luc3BlY3RvclRlc3QuYWRkSURCVmFs
dWUgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgdmFs
dWUsIGtleSwgY2FsbGJhY2spCit7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZVdpdGhDYWxs
YmFjayhmcmFtZUlkLCAiYWRkSURCVmFsdWUiLCBbZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5h
bWUsIHZhbHVlLCBrZXldLCBjYWxsYmFjaykKK307CisKIH07CiAKIHZhciBpbmRleGVkREIgPSB3
aW5kb3cuaW5kZXhlZGRiIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREI7Cit2YXIgSURCVHJhbnNh
Y3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0
aW9uOwogCiBmdW5jdGlvbiBkaXNwYXRjaENhbGxiYWNrKGNhbGxiYWNrSWQpCiB7CkBAIC0xMTYs
NiArMTE4LDI0IEBAIGZ1bmN0aW9uIGRvV2l0aFZlcnNpb25UcmFuc2FjdGlvbihkYXRhYmFzZU5h
bWUsIGNhbGxiYWNrLCBjb21taXRDYWxsYmFjaykKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGRvV2l0
aFJlYWRXcml0ZVRyYW5zYWN0aW9uKGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBjYWxs
YmFjaywgY29tbWl0Q2FsbGJhY2spCit7CisgICAgZG9XaXRoRGF0YWJhc2UoZGF0YWJhc2VOYW1l
LCBzdGVwMik7CisKKyAgICBmdW5jdGlvbiBzdGVwMihkYikKKyAgICB7CisgICAgICAgIHZhciB0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFtvYmplY3RTdG9yZU5hbWVdLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKTsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKKyAgICAgICAgY2FsbGJhY2sob2JqZWN0U3Rv
cmUsIGlubmVyQ29tbWl0Q2FsbGJhY2spOworCisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ29tbWl0
Q2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBkYi5jbG9zZSgpOworICAgICAgICAg
ICAgY29tbWl0Q2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogZnVuY3Rpb24gY3Jl
YXRlRGF0YWJhc2UoY2FsbGJhY2tJZCwgZGF0YWJhc2VOYW1lKQogewogICAgIHZhciByZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGF0YWJhc2VOYW1lLCAwKTsKQEAgLTE3OCwzICsxOTgsMTkgQEAg
ZnVuY3Rpb24gZGVsZXRlT2JqZWN0U3RvcmVJbmRleChjYWxsYmFja0lkLCBkYXRhYmFzZU5hbWUs
IG9iamVjdFN0b3JlTmFtZSwgb2JqZWMKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGFkZElEQlZhbHVl
KGNhbGxiYWNrSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCB2YWx1ZSwga2V5KQor
eworICAgIGRvV2l0aFJlYWRXcml0ZVRyYW5zYWN0aW9uKGRhdGFiYXNlTmFtZSwgb2JqZWN0U3Rv
cmVOYW1lLCB3aXRoVHJhbnNhY3Rpb25DYWxsYmFjaywgZGlzcGF0Y2hDYWxsYmFjay5iaW5kKHRo
aXMsIGNhbGxiYWNrSWQpKQorCisgICAgZnVuY3Rpb24gd2l0aFRyYW5zYWN0aW9uQ2FsbGJhY2so
b2JqZWN0U3RvcmUsIGNvbW1pdENhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3Q7
CisgICAgICAgIGlmIChrZXkpCisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KHZhbHVlLCBrZXkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHZhbHVlKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gb25JbmRleGVkREJF
cnJvcjsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb21taXRDYWxsYmFjazsKKyAgICB9
Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126969</attachid>
            <date>2012-02-14 06:26:46 -0800</date>
            <delta_ts>2012-02-14 08:20:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78503-20120214182644.patch</filename>
            <type>text/plain</type>
            <size>67673</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UwYzNjM2E5M2U3ZTI5
YTc0YmE0ZWUzYmVhMmU0NmFlMjRlODNiMi4uMjU1MjZhMjI0YWY1NmQyODU4MTQzODRkMjBjN2Vh
OTFkMzc4NTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAyLTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtJbnNwZWN0b3JJbmRleGVkREJdIFBhc3MgZGF0YSBlbnRyaWVzIGZyb20gb2JqZWN0IHN0
b3JlcyBhbmQgaW5kZXhlcyB0byBmcm9udC1lbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZUZvckluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAo
SW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6YXNzZXJ0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9t
S2V5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlSYW5nZUZyb21JREJL
ZXlSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBl
Ll9sb2FkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5sb2FkT2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUubG9hZEluZGV4RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
QlJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUuX3JlcXVlc3REYXRhLmlubmVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fcmVxdWVzdERh
dGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3Rv
dHlwZS5yZXF1ZXN0T2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX29iamVjdFN0b3JlRGF0YUxvYWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJl
cXVlc3RJbmRleERhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyLnByb3RvdHlwZS5faW5kZXhEYXRhTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lRGV0YWNoZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZGF0
YWJhc2VSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFu
YWdlci5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJS
ZXF1ZXN0TWFuYWdlci5EYXRhUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCRGlzcGF0Y2hlci5wcm90b3R5cGUuZGF0YWJhc2VMb2FkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLm9iamVjdFN0b3JlRGF0YUxvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUu
aW5kZXhEYXRhTG9hZGVkKToKKwogMjAxMi0wMi0xNCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5y
b3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bVGV4bWFwXSBSZWZhY3RvciBiYWNr
aW5nLXN0b3JlIGNvZGUgaW4gVGV4dHVyZU1hcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggM2FjNmVjZjU4MTM0
M2M2MjVhNjQyZDYxYmM0ZTI1ZDk1OTdjOWRlNC4uNWY1OGUxNGUyOTViMjQwYzI2YTg5ODE2ZmM3
YzFhOGM3YTFkOWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZp
Z2F0b3IuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0
Lmg+CkBAIC0xNDUyLDYgKzE0NTMsMTQgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICBy
ZXR1cm4gcmVzdWx0LmZpcnN0OwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK1NjcmlwdFZh
bHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShz
Y3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCk7CisgICAg
cmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlKTsKK30K
KyNlbmRpZgorCiBKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
SlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBN
ZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
dG9KUyhkZXN0aW5hdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBjYWVkNjQ3M2MwNGM2ZWQ2YzM3MmI0
NmFmMTI4YjlmMTU2Mjg1NWEwLi43NWNlNjk0YjI0OGU3OTQ3MTNlNDUyYjNkMWJiOTVjMzkyNTcx
MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTZXJpYWxpemVkU2NyaXB0VmFs
dWVfaAogI2RlZmluZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAogCisjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01Miw2ICs1Myw3IEBAIGVudW0g
U2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIAogZW51bSBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKK2NsYXNzIFNjcmlwdFZhbHVlOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMg
UmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKQEAgLTc3LDYgKzc5LDEwIEBAIHB1
YmxpYzoKICAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uLCBNZXNzYWdlUG9ydEFycmF5Kik7CiAgICAgSlNWYWx1ZVJlZiBkZXNlcmlh
bGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlw
dFN0YXRlKik7CisjZW5kaWYKKwogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgpIHsg
cmV0dXJuIG1fZGF0YTsgfQogCiAgICAgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggOTE4MWI3M2Y1M2M5YzYxYjYxYjdiZDI4MjM5ZTAzOWUzZTY0ZTdkMC4uMzA3MmNiODQ1
NjE1ZTdlOTIyNmM2M2EwYzI0NzA4YmE0MjY2MGY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yMjU4LDQgKzIy
NTgsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoTWVzc2FnZVBvcnRBcnJheSogbWVzc2EKICAgICByZXR1cm4gZGVzZXJpYWxpemVy
LmRlc2VyaWFsaXplKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorU2NyaXB0VmFsdWUg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAg
IHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoc2NyaXB0U3RhdGUtPmNvbnRleHQoKSk7
CisKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoZGVzZXJpYWxpemUoKSk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBkM2E2NjhiOTgzYzQwYWI0YjM4YWE2Nzdm
ZDM3NzMzYjMzMDRjMWUyLi42OGIxOTU0ZDVmNTExMWUxODU4ZTIyOTA4YmYxOTE0MmI4Mjc2Mzk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaApAQCAtNzYsNiArNzYsMTAgQEAgcHVibGljOgogICAgIC8vIGNhc2Ugb2YgZmFpbHVy
ZS4KICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemUoTWVzc2FnZVBvcnRBcnJh
eSogPSAwKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgU2NyaXB0VmFsdWUgZGVzZXJp
YWxpemVGb3JJbnNwZWN0b3IoU2NyaXB0U3RhdGUqKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IGVudW0gU3RyaW5nRGF0YU1vZGUgewogICAgICAgICBTdHJpbmdWYWx1ZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2
OTIyMjkwYmY0YTQzYWY2ZmE2NWFkNzcuLjhmNzQ1YWYwZTI5ZmJjMGJmNjEyZGIzYTMyMWQ3ZGI3
ZmM3YTdiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtMTU0LDcgKzE1NCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVk
U2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsCiB9CiAjZW5kaWYK
IAotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0
KFNjcmlwdFZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChTY3JpcHRWYWx1ZSB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNO
b1ZhbHVlKCkpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24obV9pbmplY3Rl
ZFNjcmlwdE9iamVjdCwgIndyYXBPYmplY3QiKTsKQEAgLTE3Niw2ICsxNzYsMTIgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShOb2RlKiBub2Rl
LCBjb25zdCBTdHJpbmcmIGcKICAgICByZXR1cm4gd3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1
ZShub2RlKSwgZ3JvdXBOYW1lKTsKIH0KIAorUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IElu
amVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0Cit7
CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRl
c2VyaWFsaXplRm9ySW5zcGVjdG9yKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KSk7CisgICAgcmV0dXJuIHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUsIGdyb3VwTmFtZSk7Cit9CisK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNT
RVJUKCFoYXNOb1ZhbHVlKCkpOwpAQCAtMTkzLDcgKzE5OSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogICAgIHJl
bGVhc2VGdW5jdGlvbi5jYWxsKCk7CiB9CiAKLWJvb2wgSW5qZWN0ZWRTY3JpcHQ6OmNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdygpCitib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3coKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggZjJiN2FjMTUyYjM4YTRlODk3NDZh
NzBiZjMxNTM1ZjQxM2ZiODYxNC4uYTRhZDA5NjFiNGRmZmJiOGI2NmMyYzZiYjNkYTI4MzY4Mzg3
ZmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTg3
LDggKzg3LDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBD
YWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiB3cmFwT2JqZWN0KFNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2Ny
aXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1l
KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gd3JhcFNlcmlhbGl6ZWRPYmplY3Qo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0Owog
ICAgIHZvaWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3Vw
KGNvbnN0IFN0cmluZyYpOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQpAQCAtOTgsNyAr
OTksNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2spKFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJ
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KCk7CisgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKICAg
ICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRG
dW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29sKiB3YXNU
aHJvd24pOwogICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1NDUxZjNkMjY5YjdlNTdkN2I2
MTE1YzNiYWIxODZkZDRlNWRkZTU1Li41ZjNlOWQwNDI4NmU0NmQwMmJjNjJkMTc1NDJhOGUwNThl
MmRkNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC05NzEs
NiArOTcxLDM5IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidW5pcXVlIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCBpbmRleCBpcyB1bmlxdWUu
IiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm11bHRpRW50cnkiLCAidHlwZSI6
ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIGluZGV4IGFsbG93cyBtdWx0aXBs
ZSBlbnRyaWVzIGZvciBhIGtleS4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJLZXkiLAorICAgICAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IktleS4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibnVtYmVy
IiwgInN0cmluZyIsICJkYXRlIiwgImFycmF5Il0sICJkZXNjcmlwdGlvbiI6ICJLZXkgdHlwZS4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibnVtYmVyIiwgInR5cGUiOiAibnVt
YmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk51bWJlciB2YWx1ZS4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RyaW5nIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlN0cmluZyB2YWx1ZS4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0ZSIsICJ0eXBlIjogIm51bWJlciIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJEYXRlIHZhbHVlLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJhcnJheSIsICJ0eXBlIjogImFycmF5IiwgIm9wdGlvbmFs
IjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJLZXkiIH0sICJkZXNjcmlwdGlvbiI6ICJBcnJh
eSB2YWx1ZS4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJLZXlSYW5nZSIsCisgICAgICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiS2V5IHJh
bmdlLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibG93ZXIiLCAiJHJlZiI6ICJLZXkiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiTG93ZXIgYm91bmQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVwcGVyIiwgIiRyZWYiOiAiS2V5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIlVwcGVyIGJvdW5kLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJs
b3dlck9wZW4iLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUgbG93
ZXIgYm91bmQgaXMgb3Blbi4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXBw
ZXJPcGVuIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlIHVwcGVy
IGJvdW5kIGlzIG9wZW4uIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiRGF0YUVudHJ5IiwKKyAgICAgICAg
ICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJLZXkuIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJrZXkiLCAiJHJlZiI6ICJLZXkiLCAiZGVzY3JpcHRpb24iOiAiS2V5
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmltYXJ5S2V5IiwgIiRyZWYi
OiAiS2V5IiwgImRlc2NyaXB0aW9uIjogIlByaW1hcnkga2V5LiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIsICIkcmVmIjogIlJ1bnRpbWUuUmVtb3RlT2JqZWN0Iiwg
ImRlc2NyaXB0aW9uIjogIlZhbHVlLiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg
IH0KICAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpAQCAtOTk0LDEwICsxMDI3LDI0
IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGFiYXNlIiwKICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWQu
IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQiLCAiJHJlZiI6ICJO
ZXR3b3JrLkZyYW1lSWQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJh
c2VOYW1lIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZnJhbWVJZCIsICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJG
cmFtZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1l
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9CiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVz
dHMgZGF0YWJhc2Ugd2l0aCBnaXZlbiBuYW1lIGluIGdpdmVuIGZyYW1lLiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGEi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
UmVxdWVzdCBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIs
ICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBpZC4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5cGUiOiAi
c3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm9iamVjdFN0b3JlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJPYmplY3Qgc3RvcmUgbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaW5kZXhOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IkluZGV4IG5hbWUsIGVtcHR5IHN0cmluZyBmb3Igb2JqZWN0IHN0b3JlIGRhdGEgcmVxdWVzdHMu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNraXBDb3VudCIsICJ0eXBlIjog
ImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHJlY29yZHMgdG8gc2tpcC4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFnZVNpemUiLCAidHlwZSI6ICJpbnRl
Z2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiByZWNvcmRzIHRvIGZldGNoLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJrZXlSYW5nZSIsICIkcmVmIjogIktleVJhbmdl
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIktleSByYW5nZS4iIH0KKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyBk
YXRhIGZyb20gb2JqZWN0IHN0b3JlIG9yIGluZGV4LiIKICAgICAgICAgICAgIH0KICAgICAgICAg
XSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAgLTEwMTQsNiArMTA2MSwyMiBAQAogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVz
Y3JpcHRpb24iOiAiUmVxdWVzdCBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzIiwgIiRyZWYiOiAiRGF0YWJhc2VXaXRoT2JqZWN0
U3RvcmVzIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIHdpdGggYW4gYXJyYXkgb2Ygb2JqZWN0
IHN0b3Jlcy4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIm9iamVjdFN0b3JlRGF0YUxvYWRlZCIsCisg
ICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZXF1
ZXN0IGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RTdG9yZURh
dGFFbnRyaWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkRhdGFFbnRy
eSIgfSwgImRlc2NyaXB0aW9uIjogIkFycmF5IG9mIG9iamVjdCBzdG9yZSBkYXRhIGVudHJpZXMu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhc01vcmUiLCAidHlwZSI6ICJi
b29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRoZXJlIGFyZSBtb3JlIGVudHJpZXMg
dG8gZmV0Y2ggaW4gdGhlIGdpdmVuIHJhbmdlLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5kZXhE
YXRhTG9hZGVkIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2Ny
aXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImluZGV4RGF0YUVudHJpZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
RGF0YUVudHJ5IiB9LCAiZGVzY3JpcHRpb24iOiAiQXJyYXkgb2YgaW5kZXggZGF0YSBlbnRyaWVz
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYXNNb3JlIiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0aGVyZSBhcmUgbW9yZSBlbnRyaWVz
IHRvIGZldGNoIGluIHRoZSBnaXZlbiByYW5nZS4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGVjNTBiYzVmODU0ZjYwN2VkNTA0ZjZh
YTc1NDQxZDU2ZDA1N2Q5YTUuLjMzOWVlZmY3YzAxZTU5ZDJhMmQ3ODdlYTQ1NDU3ZDcwMTYwNGZi
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUuZ2V0KCksIHBhZ2VBZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9z
dGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBhZ2VBZ2VudCkpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBiMDA1MjU5NjY2
MTFmNmFlOWUwMmM0ZDQ1NTlhMGFlNDdkMjcyMGMyLi42Nzg2NjA1OTYwOTQwMDMwNjlkYjYyZjIw
ZjNjZjI3YTU5ZTQwNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTQwLDEyICs0MCwxNyBAQAogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JvdXBTZXR0aW5ncy5oIgogI2luY2x1ZGUgIklEQkNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCS2V5
LmgiCisjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKQEAgLTU3LDggKzYyLDEyIEBACiAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsK
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OlNlY3VyaXR5T3JpZ2luV2l0
aERhdGFiYXNlTmFtZXM7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpE
YXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5k
ZXhlZERCOjpEYXRhRW50cnk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERC
OjpLZXk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsK
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlOwogdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIApA
QCAtMTAyLDYgKzExMSwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgp
IHsgfQogfTsKIAorY2xhc3MgSW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjayA6IHB1Ymxp
YyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjaz4gY3JlYXRlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjaygp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJREJUcmFuc2FjdGlvbkNhbGxiYWNr
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBvbkNvbXBsZXRlKCkgeyB9Citwcml2YXRlOgorICAgIEluc3BlY3RvcklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2soKSB7IH0KK307CisKIGNsYXNzIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayA6IHB1
YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBjcmVhdGUoSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCkBAIC0yNjIsMTAgKzI4NiwyNzkgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9yZXF1ZXN0SWQ7CiB9OwogCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCit7CisgICAg
UmVmUHRyPElEQktleT4gaWRiS2V5OworCisgICAgU3RyaW5nIHR5cGU7CisgICAgaWYgKCFrZXkt
PmdldFN0cmluZygidHlwZSIsICZ0eXBlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbnVtYmVyLCAoIm51bWJlciIpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgc3RyaW5nLCAoInN0cmluZyIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgZGF0ZSwgKCJkYXRlIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBhcnJheSwgKCJhcnJheSIpKTsKKworICAgIGlmICh0eXBlID09IG51bWJlcikg
eworICAgICAgICBkb3VibGUgbnVtYmVyOworICAgICAgICBpZiAoIWtleS0+Z2V0TnVtYmVyKCJu
dW1iZXIiLCAmbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZGJLZXkg
PSBJREJLZXk6OmNyZWF0ZU51bWJlcihudW1iZXIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBz
dHJpbmcpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgaWYgKCFrZXktPmdldFN0
cmluZygic3RyaW5nIiwgJnN0cmluZykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
aWRiS2V5ID0gSURCS2V5OjpjcmVhdGVTdHJpbmcoc3RyaW5nKTsKKyAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gZGF0ZSkgeworICAgICAgICBkb3VibGUgZGF0ZTsKKyAgICAgICAgaWYgKCFrZXktPmdl
dE51bWJlcigiZGF0ZSIsICZkYXRlKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZGJLZXkgPSBJREJLZXk6OmNyZWF0ZURhdGUoZGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09
IGFycmF5KSB7CisgICAgICAgIElEQktleTo6S2V5QXJyYXkga2V5QXJyYXk7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBrZXktPmdldEFycmF5KCJhcnJheSIpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gYXJyYXktPmdldChpKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKKyAgICAgICAgICAgIGlm
ICghdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAga2V5QXJyYXkuYXBwZW5kKGlkYktleUZyb21JbnNwZWN0b3JPYmplY3Qob2Jq
ZWN0LmdldCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVB
cnJheShrZXlBcnJheSk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIGlkYktleS5yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShJbnNwZWN0b3JPYmplY3QqIGtleVJhbmdlKQorewor
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvd2VyID0ga2V5UmFuZ2UtPmdldE9iamVjdCgi
bG93ZXIiKTsKKyAgICBSZWZQdHI8SURCS2V5PiBpZGJMb3dlciA9IGxvd2VyID8gaWRiS2V5RnJv
bUluc3BlY3Rvck9iamVjdChsb3dlci5nZXQoKSkgOiAwOworICAgIGlmIChsb3dlciAmJiAhaWRi
TG93ZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
dXBwZXIgPSBrZXlSYW5nZS0+Z2V0T2JqZWN0KCJ1cHBlciIpOworICAgIFJlZlB0cjxJREJLZXk+
IGlkYlVwcGVyID0gdXBwZXIgPyBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KHVwcGVyLmdldCgp
KSA6IDA7CisgICAgaWYgKHVwcGVyICYmICFpZGJVcHBlcikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBib29sIGxvd2VyT3BlbjsKKyAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJsb3dl
ck9wZW4iLCAmbG93ZXJPcGVuKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSURCS2V5UmFuZ2U6
Okxvd2VyQm91bmRUeXBlIGxvd2VyQm91bmRUeXBlID0gbG93ZXJPcGVuID8gSURCS2V5UmFuZ2U6
Okxvd2VyQm91bmRPcGVuIDogSURCS2V5UmFuZ2U6Okxvd2VyQm91bmRDbG9zZWQ7CisKKyAgICBi
b29sIHVwcGVyT3BlbjsKKyAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJ1cHBlck9wZW4i
LCAmdXBwZXJPcGVuKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSURCS2V5UmFuZ2U6OlVwcGVy
Qm91bmRUeXBlIHVwcGVyQm91bmRUeXBlID0gdXBwZXJPcGVuID8gSURCS2V5UmFuZ2U6OlVwcGVy
Qm91bmRPcGVuIDogSURCS2V5UmFuZ2U6OlVwcGVyQm91bmRDbG9zZWQ7CisKKyAgICBSZWZQdHI8
SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlID0gSURCS2V5UmFuZ2U6OmNyZWF0ZShpZGJMb3dlciwg
aWRiVXBwZXIsIGxvd2VyQm91bmRUeXBlLCB1cHBlckJvdW5kVHlwZSk7CisgICAgcmV0dXJuIGlk
YktleVJhbmdlLnJlbGVhc2UoKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8S2V5PiBrZXlGcm9t
SURCS2V5KElEQktleSogaWRiS2V5KQoreworICAgIGlmICghaWRiS2V5IHx8ICFpZGJLZXktPnZh
bGlkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEtleT4ga2V5OworICAgIHN3
aXRjaCAoaWRiS2V5LT50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleTo6SW52YWxpZFR5cGU6Cisg
ICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgSURC
S2V5OjpOdW1iZXJUeXBlOiB7CisgICAgICAgIFJlZlB0cjxLZXk+IHRtcEtleSA9IEtleTo6Y3Jl
YXRlKCkuc2V0VHlwZShLZXk6OlR5cGU6Ok51bWJlcik7CisgICAgICAgIGtleSA9IHRtcEtleTsK
KyAgICAgICAga2V5LT5zZXROdW1iZXIoaWRiS2V5LT5udW1iZXIoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZTogeworICAgICAgICBSZWZQdHI8
S2V5PiB0bXBLZXkgPSBLZXk6OmNyZWF0ZSgpLnNldFR5cGUoS2V5OjpUeXBlOjpTdHJpbmcpOwor
ICAgICAgICBrZXkgPSB0bXBLZXk7CisgICAgICAgIGtleS0+c2V0U3RyaW5nKGlkYktleS0+c3Ry
aW5nKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBl
OiB7CisgICAgICAgIFJlZlB0cjxLZXk+IHRtcEtleSA9IEtleTo6Y3JlYXRlKCkuc2V0VHlwZShL
ZXk6OlR5cGU6OkRhdGUpOworICAgICAgICBrZXkgPSB0bXBLZXk7CisgICAgICAgIGtleS0+c2V0
RGF0ZShpZGJLZXktPmRhdGUoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIElE
QktleTo6QXJyYXlUeXBlOiB7CisgICAgICAgIFJlZlB0cjxLZXk+IHRtcEtleSA9IEtleTo6Y3Jl
YXRlKCkuc2V0VHlwZShLZXk6OlR5cGU6OkFycmF5KTsKKyAgICAgICAga2V5ID0gdG1wS2V5Owor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNy
ZWF0ZSgpOworICAgICAgICBJREJLZXk6OktleUFycmF5IGtleUFycmF5ID0gaWRiS2V5LT5hcnJh
eSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleUFycmF5LnNpemUoKTsgKytp
KQorICAgICAgICAgICAgYXJyYXktPnB1c2hPYmplY3Qoa2V5RnJvbUlEQktleShrZXlBcnJheVtp
XS5nZXQoKSkpOworICAgICAgICBrZXktPnNldEFycmF5KGFycmF5KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIH0KKyAgICByZXR1cm4ga2V5LnJlbGVhc2UoKTsKK30KKworY2xhc3MgT3Bl
bkN1cnNvckNhbGxiYWNrIDogcHVibGljIEluc3BlY3RvcklEQkNhbGxiYWNrIHsKK3B1YmxpYzoK
KyAgICBlbnVtIEN1cnNvclR5cGUgeworICAgICAgICBPYmplY3RTdG9yZURhdGFDdXJzb3IsCisg
ICAgICAgIEluZGV4RGF0YUN1cnNvcgorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxP
cGVuQ3Vyc29yQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGlkYlRyYW5zYWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIGludCByZXF1ZXN0SWQsIGlu
dCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBPcGVuQ3Vyc29yQ2FsbGJhY2soZnJvbnRlbmRQcm92aWRlciwgaW5qZWN0ZWRT
Y3JpcHQsIGlkYlRyYW5zYWN0aW9uLCBjdXJzb3JUeXBlLCByZXF1ZXN0SWQsIHNraXBDb3VudCwg
cGFnZVNpemUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5PcGVuQ3Vyc29yQ2FsbGJhY2soKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KQorICAgIHsKKyAgICAgICAgZW5kKGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
aWRiQ3Vyc29yKQorICAgIHsKKyAgICAgICAgbV9pZGJDdXJzb3IgPSBpZGJDdXJzb3I7CisgICAg
ICAgIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpCisgICAgeworICAgICAgICBpZiAobV9za2lw
Q291bnQpIHsKKyAgICAgICAgICAgIC0tbV9za2lwQ291bnQ7CisgICAgICAgICAgICBuZXh0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9yZXN1bHQt
Pmxlbmd0aCgpID09IG1fcGFnZVNpemUpIHsKKyAgICAgICAgICAgIGVuZCh0cnVlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleSA9
IG1faWRiQ3Vyc29yLT5rZXkoKTsKKyAgICAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9
IG1faWRiQ3Vyc29yLT5wcmltYXJ5S2V5KCk7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlID0gbV9pZGJDdXJzb3ItPnZhbHVlKCk7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHdyYXBwZWRWYWx1ZSA9IG1faW5qZWN0ZWRTY3JpcHQud3JhcFNlcmlh
bGl6ZWRPYmplY3QodmFsdWUuZ2V0KCksICJpbmRleGVkZGIiKTsKKyAgICAgICAgUmVmUHRyPERh
dGFFbnRyeT4gZGF0YUVudHJ5ID0gRGF0YUVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAgLnNl
dEtleShrZXlGcm9tSURCS2V5KGtleS5nZXQoKSkpCisgICAgICAgICAgICAuc2V0UHJpbWFyeUtl
eShrZXlGcm9tSURCS2V5KHByaW1hcnlLZXkuZ2V0KCkpKQorICAgICAgICAgICAgLnNldFZhbHVl
KHdyYXBwZWRWYWx1ZSk7CisgICAgICAgIG1fcmVzdWx0LT5hZGRJdGVtKGRhdGFFbnRyeSk7CisK
KyAgICAgICAgbmV4dCgpOworICAgIH0KKworICAgIHZvaWQgbmV4dCgpCisgICAgeworICAgICAg
ICBtX2lkYlRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKKworICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgbV9pZGJDdXJzb3ItPmNvbnRpbnVlRnVuY3Rp
b24oMCwgdGhpcywgZWMpOworICAgIH0KKworICAgIHZvaWQgZW5kKGJvb2wgaGFzTW9yZSkKKyAg
ICB7CisgICAgICAgIG1faWRiVHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwor
CisgICAgICAgIHN3aXRjaCAobV9jdXJzb3JUeXBlKSB7CisgICAgICAgIGNhc2UgT2JqZWN0U3Rv
cmVEYXRhQ3Vyc29yOgorICAgICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgp
LT5vYmplY3RTdG9yZURhdGFMb2FkZWQobV9yZXF1ZXN0SWQsIG1fcmVzdWx0LnJlbGVhc2UoKSwg
aGFzTW9yZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmRleERhdGFDdXJz
b3I6CisgICAgICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmluZGV4RGF0
YUxvYWRlZChtX3JlcXVlc3RJZCwgbV9yZXN1bHQucmVsZWFzZSgpLCBoYXNNb3JlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIE9wZW5DdXJz
b3JDYWxsYmFjayhQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFBy
b3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9u
LCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIGludCByZXF1ZXN0SWQsIGludCBza2lwQ291bnQsIHVu
c2lnbmVkIHBhZ2VTaXplKQorICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFBy
b3ZpZGVyKQorICAgICAgICAsIG1faW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHQpCisgICAg
ICAgICwgbV9pZGJUcmFuc2FjdGlvbihpZGJUcmFuc2FjdGlvbikKKyAgICAgICAgLCBtX2N1cnNv
clR5cGUoY3Vyc29yVHlwZSkKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAg
ICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50KQorICAgICAgICAsIG1fcGFnZVNpemUocGFnZVNp
emUpCisgICAgeworICAgICAgICBtX3Jlc3VsdCA9IEFycmF5PERhdGFFbnRyeT46OmNyZWF0ZSgp
OworICAgICAgICBtX2lkYlRyYW5zYWN0aW9uLT5zZXRDYWxsYmFja3MoSW5zcGVjdG9ySURCVHJh
bnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKCkuZ2V0KCkpOworICAgIH0KKyAgICBSZWZQdHI8SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRl
cjsKKyAgICBJbmplY3RlZFNjcmlwdCBtX2luamVjdGVkU2NyaXB0OworICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1faWRiVHJhbnNhY3Rpb247CisgICAgQ3Vyc29y
VHlwZSBtX2N1cnNvclR5cGU7CisgICAgaW50IG1fcmVxdWVzdElkOworICAgIGludCBtX3NraXBD
b3VudDsKKyAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOworICAgIFJlZlB0cjxBcnJheTxEYXRhRW50
cnk+ID4gbV9yZXN1bHQ7CisgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1f
aWRiQ3Vyc29yOworfTsKKworY2xhc3MgRGF0YUxvYWRlckNhbGxiYWNrIDogcHVibGljIEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFM
b2FkZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0
IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBp
ZGJLZXlSYW5nZSwgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFMb2FkZXJDYWxsYmFjayhmcm9udGVuZFByb3Zp
ZGVyLCByZXF1ZXN0SWQsIGluamVjdGVkU2NyaXB0LCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFt
ZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5EYXRhTG9hZGVyQ2FsbGJhY2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSkKKyAg
ICB7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IGlkYlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShpZGJEYXRhYmFz
ZS5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOworICAgICAgICBpZiAoIWlkYlRyYW5zYWN0aW9u
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlRm9yVHJhbnNhY3Rpb24o
aWRiVHJhbnNhY3Rpb24uZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKKyAgICAgICAgaWYgKCFp
ZGJPYmplY3RTdG9yZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1faW5k
ZXhOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZElu
dGVyZmFjZT4gaWRiSW5kZXggPSBpbmRleEZvck9iamVjdFN0b3JlKGlkYk9iamVjdFN0b3JlLmdl
dCgpLCBtX2luZGV4TmFtZSk7CisgICAgICAgICAgICBpZiAoIWlkYkluZGV4KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4g
b3BlbkN1cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUobV9mcm9udGVu
ZFByb3ZpZGVyLCBtX2luamVjdGVkU2NyaXB0LCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwgT3BlbkN1
cnNvckNhbGxiYWNrOjpJbmRleERhdGFDdXJzb3IsIG1fcmVxdWVzdElkLCBtX3NraXBDb3VudCwg
bV9wYWdlU2l6ZSk7CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAg
ICAgICAgaWRiSW5kZXgtPm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhU
LCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBlYyk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8T3BlbkN1cnNvckNhbGxiYWNrPiBvcGVuQ3Vy
c29yQ2FsbGJhY2sgPSBPcGVuQ3Vyc29yQ2FsbGJhY2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlk
ZXIsIG1faW5qZWN0ZWRTY3JpcHQsIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBPcGVuQ3Vyc29yQ2Fs
bGJhY2s6Ok9iamVjdFN0b3JlRGF0YUN1cnNvciwgbV9yZXF1ZXN0SWQsIG1fc2tpcENvdW50LCBt
X3BhZ2VTaXplKTsKKworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAg
ICAgICBpZGJPYmplY3RTdG9yZS0+b3BlbkN1cnNvcihtX2lkYktleVJhbmdlLCBJREJDdXJzb3I6
Ok5FWFQsIG9wZW5DdXJzb3JDYWxsYmFjaywgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKKyAg
ICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBEYXRhTG9hZGVyQ2FsbGJhY2soUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQ
cm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2Ny
aXB0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5h
bWUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlLCBpbnQgc2tpcENvdW50LCB1
bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQ
cm92aWRlcikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAgICAgICwgbV9p
bmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdCkKKyAgICAgICAgLCBtX29iamVjdFN0b3JlTmFt
ZShvYmplY3RTdG9yZU5hbWUpCisgICAgICAgICwgbV9pbmRleE5hbWUoaW5kZXhOYW1lKQorICAg
ICAgICAsIG1faWRiS2V5UmFuZ2UoaWRiS2V5UmFuZ2UpCisgICAgICAgICwgbV9za2lwQ291bnQo
c2tpcENvdW50KQorICAgICAgICAsIG1fcGFnZVNpemUocGFnZVNpemUpIHsgfQorICAgIFJlZlB0
cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFBy
b3ZpZGVyOworICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJbmplY3RlZFNjcmlwdCBtX2luamVj
dGVkU2NyaXB0OworICAgIFN0cmluZyBtX29iamVjdFN0b3JlTmFtZTsKKyAgICBTdHJpbmcgbV9p
bmRleE5hbWU7CisgICAgUmVmUHRyPElEQktleVJhbmdlPiBtX2lkYktleVJhbmdlOworICAgIGlu
dCBtX3NraXBDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOworfTsKKwogfSAvLyBuYW1l
c3BhY2UKIAotSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRl
KiBzdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KCJJ
bmRleGVkREIiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKKyAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcGFnZUFnZW50KHBh
Z2VBZ2VudCkKIHsKIH0KQEAgLTMwNCw2ICs1OTcsMjYgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJ
bmRleGVkREJBZ2VudFN0YXRlOjppbmRleGVkREJBZ2VudEVuYWJsZWQsIGZhbHNlKTsKIH0KIAor
c3RhdGljIEZyYW1lKiBhc3NlcnRGcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lSWQsIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50LCBFcnJvclN0cmluZyogZXJyb3IpCit7CisgICAgRnJhbWUq
IGZyYW1lID0gcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOworCisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgKmVycm9yID0gIkZyYW1lIG5vdCBmb3VuZCI7CisKKyAgICByZXR1cm4gZnJh
bWU7Cit9CisKK3N0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBF
cnJvclN0cmluZyogZXJyb3IpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyBm
cmFtZS0+ZG9jdW1lbnQoKSA6IDA7CisKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAqZXJy
b3IgPSAiTm8gZG9jdW1lbnQgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIjsKKworICAgIHJldHVybiBk
b2N1bWVudDsKK30KKwogc3RhdGljIERvY3VtZW50KiBhc3NlcnREb2N1bWVudChjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBFcnJvclN0cmluZyog
ZXJyb3IpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1l
SWQpOwpAQCAtMzUzLDYgKzY2NiwzMCBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpy
ZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgcmVxdWVzdElkLAogICAgIGRh
dGFiYXNlTG9hZGVyQ2FsbGJhY2stPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLCBkb2N1bWVudC0+ZnJhbWUoKSwgZGF0YWJhc2VOYW1lKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yLCBp
bnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRl
eE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGtleVJhbmdlKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGFzc2VydEZyYW1lKGZy
YW1lSWQsIG1fcGFnZUFnZW50LCBlcnJvcik7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGZyYW1lLCBlcnJv
cik7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIElEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9yeShkb2N1bWVudCwg
ZXJyb3IpOworICAgIGlmICghaWRiRmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5q
ZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3RhdGUoZnJhbWUpKTsKKworICAgIFJlZlB0
cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtl
eVJhbmdlKGtleVJhbmdlLT5nZXQoKSkgOiAwOworICAgIGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5
UmFuZ2UpIHsKKyAgICAgICAgKmVycm9yID0gIkNhbiBub3QgcGFyc2Uga2V5IHJhbmdlLiI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8RGF0YUxvYWRlckNhbGxiYWNrPiBk
YXRhTG9hZGVyQ2FsbGJhY2sgPSBEYXRhTG9hZGVyQ2FsbGJhY2s6OmNyZWF0ZShtX2Zyb250ZW5k
UHJvdmlkZXIsIHJlcXVlc3RJZCwgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFtZSwgaW5k
ZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSk7CisgICAgZGF0YUxvYWRl
ckNhbGxiYWNrLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwg
ZG9jdW1lbnQtPmZyYW1lKCksIGRhdGFiYXNlTmFtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaAppbmRleCAxYjQ2ZGQxNDM2ZWEzMDRmNGUyNDUyMDA5YTk4MzM2ZmJjYmZjMDhh
Li5iMTllZDZlNWY1YjBjMzM3MmJlODYwZTM1M2Y4YWYyZmVhNGI3MTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtMzks
NiArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CkBAIC00Nyw5ICs0OCw5IEBAIGNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50
IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRleGVkREJBZ2VuCiBwdWJs
aWM6CiAgICAgY2xhc3MgRnJvbnRlbmRQcm92aWRlcjsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEluc3BlY3RvckluZGV4ZWREQkFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JJbmRleGVkREJB
Z2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
c3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChpbnN0cnVtZW50aW5n
QWdlbnRzLCBzdGF0ZSwgcGFnZUFnZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGluamVj
dGVkU2NyaXB0TWFuYWdlciwgcGFnZUFnZW50KSk7CiAgICAgfQogICAgIH5JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudCgpOwogCkBAIC02Miw5ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFi
YXNlTmFtZXNGb3JGcmFtZShFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmlu
ZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyos
IGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Pioga2V5UmFuZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKKyAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKIAorICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXI7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBSZWZQdHI8
RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwogICAgIGJvb2wgbV9lbmFibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVk
REJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERC
TW9kZWwuanMKaW5kZXggNzU3MTZkMmQxNjczNjA2ZjYzZDNiY2M5ZmM3YTU2N2FkZGM3MThjNi4u
YzYzZWU5MzMxMDg1YWJmNjA0MjNmYjdlYmJhN2UxZDUyYzhhM2Y2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCkBAIC00
Niw2ICs0Niw4NCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwgPSBmdW5jdGlvbigpCiAg
ICAgdGhpcy5yZWZyZXNoRGF0YWJhc2VOYW1lcygpOwogfQogCitXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwuS2V5VHlwZXMgPSB7CisgICAgTnVtYmVyVHlwZTogICJudW1iZXIiLAorICAgIFN0
cmluZ1R5cGU6ICAic3RyaW5nIiwKKyAgICBEYXRlVHlwZTogICAgImRhdGUiLAorICAgIEFycmF5
VHlwZTogICAiYXJyYXkiCit9OworCisvKioKKyAqIEBwYXJhbSB7SW5kZXhlZERCQWdlbnQuS2V5
fSBrZXkKKyAqLworV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkgPSBm
dW5jdGlvbihrZXkpCit7CisgICAgdmFyIGlkYktleTsKKyAgICBzd2l0Y2ggKGtleS50eXBlKSB7
CisgICAgY2FzZSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuTnVtYmVyVHlw
ZToKKyAgICAgICAgaWRiS2V5ID0ga2V5Lm51bWJlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuU3RyaW5nVHlwZToKKyAgICAg
ICAgaWRiS2V5ID0ga2V5LnN0cmluZzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuRGF0ZVR5cGU6CisgICAgICAgIGlkYktleSA9
IG5ldyBEYXRlKGtleS5kYXRlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuQXJyYXlUeXBlOgorICAgICAgICBpZGJLZXkgPSBb
XTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICBpZGJLZXkucHVzaChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtl
eShrZXkuYXJyYXlbaV0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBpZGJL
ZXk7Cit9CisKK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5ID0gZnVu
Y3Rpb24oaWRiS2V5KQoreworICAgIGlmICh0eXBlb2YoaWRiS2V5KSA9PT0gInVuZGVmaW5lZCIg
fHwgaWRiS2V5ID09PSBudWxsKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAKKyAgICB2YXIg
a2V5ID0ge307CisgICAgc3dpdGNoICh0eXBlb2YoaWRiS2V5KSkgeworICAgIGNhc2UgIm51bWJl
ciI6CisgICAgICAgIGtleS5udW1iZXIgPSBpZGJLZXk7CisgICAgICAgIGtleS50eXBlID0gV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLk51bWJlclR5cGU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIGtleS5zdHJpbmcgPSBpZGJLZXk7Cisg
ICAgICAgIGtleS50eXBlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLlN0
cmluZ1R5cGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgIGlm
IChpZGJLZXkgaW5zdGFuY2VvZiBEYXRlKSB7CisgICAgICAgICAgICBrZXkuZGF0ZSA9IGlkYktl
eS5nZXRUaW1lKCk7CisgICAgICAgICAgICBrZXkudHlwZSA9IFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5LZXlUeXBlcy5EYXRlVHlwZTsKKyAgICAgICAgfSBlbHNlIGlmIChpZGJLZXkgaW5z
dGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAga2V5LmFycmF5ID0gW107CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGlkYktleS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAg
ICBrZXkuYXJyYXkucHVzaChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5RnJvbUlEQktl
eShpZGJLZXlbaV0pKTsKKyAgICAgICAgICAgIGtleS50eXBlID0gV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLktleVR5cGVzLkFycmF5VHlwZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIGtl
eTsKK30KKworV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJhbmdlRnJvbUlEQktleVJh
bmdlID0gZnVuY3Rpb24oaWRiS2V5UmFuZ2UpCit7CisgICAgdmFyIElEQktleVJhbmdlID0gd2lu
ZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsKKyAgICBpZiAodHlw
ZW9mKGlkYktleVJhbmdlKSA9PT0gInVuZGVmaW5lZCIgfHwgaWRiS2V5UmFuZ2UgPT09IG51bGwp
CisgICAgICAgIHJldHVybiBudWxsOworICAgIAorICAgIHZhciBrZXlSYW5nZSA9IHt9OworICAg
IGtleVJhbmdlLmxvd2VyID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleUZyb21JREJL
ZXkoaWRiS2V5UmFuZ2UubG93ZXIpOworICAgIGtleVJhbmdlLnVwcGVyID0gV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLmtleUZyb21JREJLZXkoaWRiS2V5UmFuZ2UudXBwZXIpOworICAgIGtl
eVJhbmdlLmxvd2VyT3BlbiA9IGlkYktleVJhbmdlLmxvd2VyT3BlbjsKKyAgICBrZXlSYW5nZS51
cHBlck9wZW4gPSBpZGJLZXlSYW5nZS51cHBlck9wZW47CisgICAgcmV0dXJuIGtleVJhbmdlOwor
fQorCiBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgIHJlZnJl
c2hEYXRhYmFzZU5hbWVzOiBmdW5jdGlvbigpCiAgICAgewpAQCAtMjYzLDYgKzM0MSw2NyBAQCBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucmVxdWVzdERhdGFiYXNlKGZyYW1l
SWQsIGRhdGFiYXNlTmFtZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGRhdGFiYXNlTmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3RTdG9yZU5hbWUKKyAg
ICAgKiBAcGFyYW0ge3dlYmtpdElEQktleVJhbmdlfSBpZGJLZXlSYW5nZQorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBza2lwQ291bnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUKKyAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
RW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBsb2FkT2JqZWN0U3RvcmVE
YXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaWRi
S2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
LyoqCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59
IGRhdGFFbnRyaWVzCisgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzTW9yZQorICAgICAg
ICAgKi8KKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhkYXRhRW50cmllcywgaGFzTW9y
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YUVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICB2YXIga2V5ID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21L
ZXkoZGF0YUVudHJpZXNbaV0ua2V5KTsKKyAgICAgICAgICAgICAgICB2YXIgcHJpbWFyeUtleSA9
IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ld
LnByaW1hcnlLZXkpOworICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZGF0YUVudHJpZXNbaV0udmFsdWUpOworICAgICAgICAg
ICAgICAgIGVudHJpZXMucHVzaChuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkVudHJ5
KGtleSwgcHJpbWFyeUtleSwgdmFsdWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
bGxiYWNrKGVudHJpZXMsIGhhc01vcmUpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5faW5k
ZXhlZERCUmVxdWVzdE1hbmFnZXIucmVxdWVzdE9iamVjdFN0b3JlRGF0YShmcmFtZUlkLCBkYXRh
YmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNp
emUsIGlubmVyQ2FsbGJhY2spOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZnJhbWVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGluZGV4TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdl
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5FbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAqLworICAgIGxv
YWRJbmRleERhdGE6IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVO
YW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxJbmRleGVk
REJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcworICAgICAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IGhhc01vcmUKKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2so
ZGF0YUVudHJpZXMsIGhhc01vcmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBlbnRyaWVz
ID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFFbnRyaWVzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGtleSA9IFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5pZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ldLmtleSk7CisgICAgICAgICAgICAg
ICAgdmFyIHByaW1hcnlLZXkgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuaWRiS2V5RnJv
bUtleShkYXRhRW50cmllc1tpXS5wcmltYXJ5S2V5KTsKKyAgICAgICAgICAgICAgICB2YXIgdmFs
dWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGRhdGFFbnRyaWVzW2ld
LnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5FbnRyeShrZXksIHByaW1hcnlLZXksIHZhbHVlKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjYWxsYmFjayhlbnRyaWVzLCBoYXNNb3JlKTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX2luZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RJbmRleERhdGEo
ZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5
UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAg
ICAgfQogfQogCkBAIC0yNzAsNiArNDA5LDE5IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CiAK
IC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0geyp9IGtleQorICogQHBhcmFtIHsqfSBw
cmltYXJ5S2V5CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9IHZhbHVlCisg
Ki8KK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeSA9IGZ1bmN0aW9uKGtleSwgcHJp
bWFyeUtleSwgdmFsdWUpCit7CisgICAgdGhpcy5rZXkgPSBrZXk7CisgICAgdGhpcy5wcmltYXJ5
S2V5ID0gcHJpbWFyeUtleTsKKyAgICB0aGlzLnZhbHVlID0gdmFsdWU7Cit9CisKKy8qKgorICog
QGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAogICogQHBhcmFtIHtzdHJp
bmd9IHNlY3VyaXR5T3JpZ2luCiAgKi8KQEAgLTMyMyw3ICs0NzUsOSBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCUmVxdWVzdE1hbmFnZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fbGFzdFJl
cXVlc3RJZCA9IDA7CiAgICAgdGhpcy5fcmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxi
YWNrcyA9IHt9OwotCisgICAgdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzID0ge307Cisg
ICAgdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3MgPSB7fTsKKyAgICAKICAgICBJbmRleGVkREJB
Z2VudC5lbmFibGUoKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVySW5kZXhlZERCRGlz
cGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIodGhpcykpOwogfQpA
QCAtMzk5LDYgKzU1Myw5MSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIu
cHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZnJhbWVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4
TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdl
U2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFF
bnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAqLworICAgIF9yZXF1ZXN0RGF0YTogZnVu
Y3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwg
aWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJZCgpOworICAgICAgICB2YXIgcmVxdWVz
dCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YVJlcXVlc3Qo
ZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgY2FsbGJh
Y2spOworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdID0gcmVx
dWVzdDsgCisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhlcnJvcikKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJv
cigiSW5kZXhlZERCQWdlbnQgZXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIGtleVJhbmdlID0g
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJhbmdlRnJvbUlEQktleVJhbmdlKGlkYktl
eVJhbmdlKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGEocmVxdWVzdElkLCBm
cmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBza2lwQ291
bnQsIHBhZ2VTaXplLCBrZXlSYW5nZSA/IGtleVJhbmdlIDogdW5kZWZpbmVkLCBpbm5lckNhbGxi
YWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURCS2V5UmFuZ2V9IGlk
YktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAorICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4
ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAqLworICAgIHJl
cXVlc3RPYmplY3RTdG9yZURhdGE6IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2Jq
ZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2sp
CisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUs
IG9iamVjdFN0b3JlTmFtZSwgIiIsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBj
YWxsYmFjayk7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
cmVxdWVzdElkCisgICAgICogQHBhcmFtIHtBcnJheS48SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5
Pn0gZGF0YUVudHJpZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc01vcmUKKyAgICAgKi8K
KyAgICBfb2JqZWN0U3RvcmVEYXRhTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFFbnRy
aWVzLCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSB0aGlzLl9yZXF1ZXN0
RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAgICBpZiAoIXJlcXVlc3QuY2FsbGJhY2sp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICByZXF1ZXN0LmNhbGxiYWNr
KGRhdGFFbnRyaWVzLCBoYXNNb3JlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBpbmRleE5hbWUKKyAgICAgKiBAcGFyYW0ge3dlYmtpdElEQktleVJhbmdlfSBpZGJLZXlS
YW5nZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwQ291bnQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gcGFnZVNpemUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxJbmRleGVkREJB
Z2VudC5EYXRhRW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0
SW5kZXhEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFt
ZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2sp
CisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUs
IG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdl
U2l6ZSwgY2FsbGJhY2spOworICAgIH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7QXJyYXkuPEluZGV4ZWREQkFnZW50LkRh
dGFFbnRyeT59IGRhdGFFbnRyaWVzCisgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisg
ICAgICovCisgICAgX2luZGV4RGF0YUxvYWRlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBkYXRhRW50
cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVz
dERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKCFyZXF1ZXN0LmNhbGxiYWNr
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgcmVxdWVzdC5jYWxsYmFj
ayhkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEByZXR1
cm4ge251bWJlcn0KICAgICAgKi8KICAgICBfcmVxdWVzdElkOiBmdW5jdGlvbigpCkBAIC00MjAs
NiArNjU5LDExIEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3Jl
cXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKICAgICAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF07CiAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGZvciAodmFyIHJlcXVlc3RJZCBpbiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxi
YWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVl
c3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKKyAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5f
cmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsKKyAgICAgICAgfQogICAgIH0sCiAKICAg
ICAvKioKQEAgLTQzMSwxOSArNjc1LDI2IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdERhdGFi
YXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCAmJiB0aGlzLl9yZXF1
ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXS5kYXRhYmFzZU5hbWUgPT09IGRhdGFiYXNl
TmFtZSkKICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJh
Y2tzW3JlcXVlc3RJZF07CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAodmFyIHJl
cXVlc3RJZCBpbiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrcykgeworICAgICAgICAgICAgaWYg
KHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJ
ZCAmJiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdLmRhdGFiYXNlTmFtZSA9
PT0gZGF0YWJhc2VOYW1lKQorICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0RGF0
YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAgICB9CiAgICAgfSwKIAogICAgIF9yZXNldDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVxdWVzdERhdGFiYXNlTmFtZXNGb3JG
cmFtZUNhbGxiYWNrcyA9IHt9OwogICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFj
a3MgPSB7fTsKLQorICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrcyA9IHt9OwogICAg
IH0KIH0KIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqLworICogQHBhcmFtIHtzdHJpbmd9IGZy
YW1lSWQKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oSW5kZXhlZERCQWdlbnQuU2VjdXJpdHlPcmlnaW5X
aXRoRGF0YWJhc2VOYW1lcyl9IGNhbGxiYWNrCisqLwogV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJl
cXVlc3RNYW5hZ2VyLkRhdGFiYXNlc0ZvckZyYW1lUmVxdWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQs
IGNhbGxiYWNrKQogewogICAgIHRoaXMuZnJhbWVJZCA9IGZyYW1lSWQ7CkBAIC00NTIsNiArNzAz
LDkgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLkRhdGFiYXNlc0ZvckZy
YW1lUmVxdWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAq
IEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1l
CisgKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4ZWREQkFnZW50LkRhdGFiYXNlV2l0aE9iamVjdFN0
b3Jlcyl9IGNhbGxiYWNrCiAgKi8KIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdl
ci5EYXRhYmFzZVJlcXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIGNhbGxi
YWNrKQogewpAQCAtNDYyLDYgKzcxNiwyMyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVz
dE1hbmFnZXIuRGF0YWJhc2VSZXF1ZXN0ID0gZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhcwogCiAv
KioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAqIEBwYXJh
bSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3RTdG9yZU5h
bWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICovCitX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YVJlcXVlc3QgPSBmdW5jdGlv
bihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBjYWxs
YmFjaykKK3sKKyAgICB0aGlzLmZyYW1lSWQgPSBmcmFtZUlkOworICAgIHRoaXMuZGF0YWJhc2VO
YW1lID0gZGF0YWJhc2VOYW1lOworICAgIHRoaXMub2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3Rv
cmVOYW1lOworICAgIHRoaXMuaW5kZXhOYW1lID0gaW5kZXhOYW1lOworICAgIHRoaXMuY2FsbGJh
Y2sgPSBjYWxsYmFjazsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRz
IHtJbmRleGVkREJBZ2VudC5EaXNwYXRjaGVyfQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCUmVxdWVzdE1hbmFnZXJ9IGluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyCiAgKi8KQEAgLTQ4
Nyw1ICs3NTgsMjUgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBl
ID0gewogICAgIGRhdGFiYXNlTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFiYXNlV2l0
aE9iamVjdFN0b3JlcykKICAgICB7CiAgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5fZGF0YWJh
c2VMb2FkZWQocmVxdWVzdElkLCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpOworICAgIH0sCisg
ICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAgICAqIEBw
YXJhbSB7QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59IGRhdGFFbnRyaWVzCisgICAg
ICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisgICAgICovCisgICAgb2JqZWN0U3RvcmVEYXRh
TG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFFbnRyaWVzLCBoYXNNb3JlKQorICAgIHsK
KyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9vYmplY3RTdG9yZURhdGFMb2FkZWQocmVxdWVz
dElkLCBkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxJbmRleGVkREJB
Z2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFz
TW9yZQorICAgICAqLworICAgIGluZGV4RGF0YUxvYWRlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBk
YXRhRW50cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5f
aW5kZXhEYXRhTG9hZGVkKHJlcXVlc3RJZCwgZGF0YUVudHJpZXMsIGhhc01vcmUpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAwYTZlNWJhMmUzZDA4ZGI0ZjczYmM4MDljNDJhMjkxYTQ1OWQ3ZWQwLi4xOWI4
OWNhZjEwMzRjMDQzMzAxNTkxMzhiMjEwZmNmMGZkZjc2YjkxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMDItMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogW0luc3BlY3RvckluZGV4ZWREQl0gUGFzcyBkYXRhIGVu
dHJpZXMgZnJvbSBvYmplY3Qgc3RvcmVzIGFuZCBpbmRleGVzIHRvIGZyb250LWVuZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTAzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFz
ZS1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5k
ZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzOgorICAgICAgICAoaW5p
dGlhbGl6ZV9JbmRleGVkREJUZXN0Lkluc3BlY3RvclRlc3QuZXZhbHVhdGVXaXRoQ2FsbGJhY2sp
OgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJUZXN0Lkluc3BlY3RvclRlc3QuYWRkSURC
VmFsdWUpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJUZXN0KToKKyAgICAgICAgKGRv
V2l0aFJlYWRXcml0ZVRyYW5zYWN0aW9uLnN0ZXAyLmlubmVyQ29tbWl0Q2FsbGJhY2spOgorICAg
ICAgICAoZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24uc3RlcDIpOgorICAgICAgICAoZG9XaXRo
UmVhZFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoYWRkSURCVmFsdWUuZG9XaXRoUmVhZFdy
aXRlVHJhbnNhY3Rpb24ud2l0aFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoYWRkSURC
VmFsdWUpOgorCiAyMDEyLTAyLTE0ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRWxlbWVudHMgcGFuZWwgbmVlZHMgdG8gYmUgYWJsZSB0byBwcmV2
aWV3IGltYWdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFkY2VlYzFmMGFkYWRjOGI0ODQ1MzljMzRlMDAxMTA2YmEzMGU0NjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0
YWJhc2UtZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NCBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2syCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMworQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazQK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJh
Y2s1CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2Nh
bGxiYWNrNgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazcKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2s4CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3Qu
SW5kZXhlZERCX2NhbGxiYWNrOQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JU
ZXN0LkluZGV4ZWREQl9jYWxsYmFjazEwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3Bl
Y3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTog
SW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxMgorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEzCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTQKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxNQorVGVzdHMg
dGhhdCBkYXRhIGlzIGNvcnJlY3RseSBsb2FkZWQgYnkgSW5kZXhlZERCTW9kZWwgZnJvbSBJbmRl
eGVkREIgb2JqZWN0IHN0b3JlIGFuZCBpbmRleC4KKworRHVtcGluZyB2YWx1ZXMsIGZyb21JbmRl
eCA9IGZhbHNlLCBza2lwQ291bnQgPSAwLCBwYWdlU2l6ZSA9IDMsIGlkYktleVJhbmdlID0gbnVs
bAorICAgIEtleSA9IGtleV8wMSwgcHJpbWFyeUtleSA9IGtleV8wMSwgdmFsdWUgPSB7ImtleSI6
ImtleV8wMSIsInZhbHVlIjoidmFsdWVfMDEifQorICAgIEtleSA9IGtleV8wMiwgcHJpbWFyeUtl
eSA9IGtleV8wMiwgdmFsdWUgPSB7ImtleSI6ImtleV8wMiIsInZhbHVlIjoidmFsdWVfMDIifQor
ICAgIEtleSA9IGtleV8wMywgcHJpbWFyeUtleSA9IGtleV8wMywgdmFsdWUgPSB7ImtleSI6Imtl
eV8wMyIsInZhbHVlIjoidmFsdWVfMDMifQorICAgIGhhc01vcmUgPSB0cnVlCitEdW1waW5nIHZh
bHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDMsIHBhZ2VTaXplID0gMywgaWRi
S2V5UmFuZ2UgPSBudWxsCisgICAgS2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2
YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5
XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUi
OiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1
ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgaGFzTW9yZSA9IHRy
dWUKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gNiwgcGFn
ZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBLZXkgPSBrZXlfMDcsIHByaW1hcnlL
ZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZhbHVlXzA3In0K
KyAgICBLZXkgPSBrZXlfMDgsIHByaW1hcnlLZXkgPSBrZXlfMDgsIHZhbHVlID0geyJrZXkiOiJr
ZXlfMDgiLCJ2YWx1ZSI6InZhbHVlXzA4In0KKyAgICBLZXkgPSBrZXlfMDksIHByaW1hcnlLZXkg
PSBrZXlfMDksIHZhbHVlID0geyJrZXkiOiJrZXlfMDkiLCJ2YWx1ZSI6InZhbHVlXzA5In0KKyAg
ICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tp
cENvdW50ID0gNywgcGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBLZXkgPSBr
ZXlfMDgsIHByaW1hcnlLZXkgPSBrZXlfMDgsIHZhbHVlID0geyJrZXkiOiJrZXlfMDgiLCJ2YWx1
ZSI6InZhbHVlXzA4In0KKyAgICBLZXkgPSBrZXlfMDksIHByaW1hcnlLZXkgPSBrZXlfMDksIHZh
bHVlID0geyJrZXkiOiJrZXlfMDkiLCJ2YWx1ZSI6InZhbHVlXzA5In0KKyAgICBoYXNNb3JlID0g
ZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gOSwg
cGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1
bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMTAsIHBhZ2VTaXpl
ID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgaGFzTW9yZSA9IGZhbHNlCitEdW1waW5nIHZh
bHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3VudCA9IDAsIHBhZ2VTaXplID0gNCwgaWRi
S2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3IiwidXBwZXJPcGVuIjpmYWxzZSwibG93ZXJPcGVu
Ijp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAgS2V5ID0ga2V5XzAzLCBwcmltYXJ5S2V5ID0g
a2V5XzAzLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAzIiwidmFsdWUiOiJ2YWx1ZV8wMyJ9CisgICAg
S2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0
IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5
XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5
ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2Iiwi
dmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgaGFzTW9yZSA9IHRydWUKK0R1bXBpbmcgdmFsdWVzLCBm
cm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMCwgcGFnZVNpemUgPSA1LCBpZGJLZXlSYW5n
ZSA9IHsidXBwZXIiOiJrZXlfMDciLCJ1cHBlck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRydWUs
Imxvd2VyIjoia2V5XzAyIn0KKyAgICBLZXkgPSBrZXlfMDMsIHByaW1hcnlLZXkgPSBrZXlfMDMs
IHZhbHVlID0geyJrZXkiOiJrZXlfMDMiLCJ2YWx1ZSI6InZhbHVlXzAzIn0KKyAgICBLZXkgPSBr
ZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZhbHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1
ZSI6InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlfMDUsIHByaW1hcnlLZXkgPSBrZXlfMDUsIHZh
bHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6InZhbHVlXzA1In0KKyAgICBLZXkgPSBrZXlf
MDYsIHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVlID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6
InZhbHVlXzA2In0KKyAgICBLZXkgPSBrZXlfMDcsIHByaW1hcnlLZXkgPSBrZXlfMDcsIHZhbHVl
ID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZhbHVlXzA3In0KKyAgICBoYXNNb3JlID0gZmFs
c2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMCwgcGFn
ZVNpemUgPSA2LCBpZGJLZXlSYW5nZSA9IHsidXBwZXIiOiJrZXlfMDciLCJ1cHBlck9wZW4iOmZh
bHNlLCJsb3dlck9wZW4iOnRydWUsImxvd2VyIjoia2V5XzAyIn0KKyAgICBLZXkgPSBrZXlfMDMs
IHByaW1hcnlLZXkgPSBrZXlfMDMsIHZhbHVlID0geyJrZXkiOiJrZXlfMDMiLCJ2YWx1ZSI6InZh
bHVlXzAzIn0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZhbHVlID0g
eyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlfMDUsIHBy
aW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6InZhbHVl
XzA1In0KKyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVlID0geyJr
ZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBLZXkgPSBrZXlfMDcsIHByaW1h
cnlLZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZhbHVlXzA3
In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxz
ZSwgc2tpcENvdW50ID0gMSwgcGFnZVNpemUgPSA0LCBpZGJLZXlSYW5nZSA9IHsidXBwZXIiOiJr
ZXlfMDciLCJ1cHBlck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRydWUsImxvd2VyIjoia2V5XzAy
In0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZhbHVlID0geyJrZXki
OiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlfMDUsIHByaW1hcnlL
ZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6InZhbHVlXzA1In0K
KyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVlID0geyJrZXkiOiJr
ZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBLZXkgPSBrZXlfMDcsIHByaW1hcnlLZXkg
PSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZhbHVlXzA3In0KKyAg
ICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tp
cENvdW50ID0gMSwgcGFnZVNpemUgPSA1LCBpZGJLZXlSYW5nZSA9IHsidXBwZXIiOiJrZXlfMDci
LCJ1cHBlck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRydWUsImxvd2VyIjoia2V5XzAyIn0KKyAg
ICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZhbHVlID0geyJrZXkiOiJrZXlf
MDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlfMDUsIHByaW1hcnlLZXkgPSBr
ZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6InZhbHVlXzA1In0KKyAgICBL
ZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVlID0geyJrZXkiOiJrZXlfMDYi
LCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBLZXkgPSBrZXlfMDcsIHByaW1hcnlLZXkgPSBrZXlf
MDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZhbHVlXzA3In0KKyAgICBoYXNN
b3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50
ID0gMSwgcGFnZVNpemUgPSA2LCBpZGJLZXlSYW5nZSA9IHsidXBwZXIiOiJrZXlfMDciLCJ1cHBl
ck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRydWUsImxvd2VyIjoia2V5XzAyIn0KKyAgICBLZXkg
PSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZhbHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2
YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlfMDUsIHByaW1hcnlLZXkgPSBrZXlfMDUs
IHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6InZhbHVlXzA1In0KKyAgICBLZXkgPSBr
ZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVlID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1
ZSI6InZhbHVlXzA2In0KKyAgICBLZXkgPSBrZXlfMDcsIHByaW1hcnlLZXkgPSBrZXlfMDcsIHZh
bHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZhbHVlXzA3In0KKyAgICBoYXNNb3JlID0g
ZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSB0cnVlLCBza2lwQ291bnQgPSAwLCBw
YWdlU2l6ZSA9IDMsIGlkYktleVJhbmdlID0gbnVsbAorICAgIEtleSA9IHZhbHVlXzAxLCBwcmlt
YXJ5S2V5ID0ga2V5XzAxLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAxIiwidmFsdWUiOiJ2YWx1ZV8w
MSJ9CisgICAgS2V5ID0gdmFsdWVfMDIsIHByaW1hcnlLZXkgPSBrZXlfMDIsIHZhbHVlID0geyJr
ZXkiOiJrZXlfMDIiLCJ2YWx1ZSI6InZhbHVlXzAyIn0KKyAgICBLZXkgPSB2YWx1ZV8wMywgcHJp
bWFyeUtleSA9IGtleV8wMywgdmFsdWUgPSB7ImtleSI6ImtleV8wMyIsInZhbHVlIjoidmFsdWVf
MDMifQorICAgIGhhc01vcmUgPSB0cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYyMmUzZmZhMDMyYWZhNGJiMjVjNzJmZDU3OTExMzExY2I4NzQyNDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0
YWJhc2UtZGF0YS5odG1sCkBAIC0wLDAgKzEsMjAxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJpbmRl
eGVkZGItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgdmFyIElEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJ
REJLZXlSYW5nZTsKKyAgICB2YXIgaW5kZXhlZERCTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsKCk7CisgICAgdmFyIG1haW5GcmFtZUlkID0gV2ViSW5zcGVjdG9yLnJlc291
cmNlVHJlZU1vZGVsLm1haW5GcmFtZS5pZDsKKyAgICB2YXIgZGF0YWJhc2VOYW1lID0gInRlc3RE
YXRhYmFzZSI7CisgICAgdmFyIG9iamVjdFN0b3JlTmFtZSA9ICJ0ZXN0T2JqZWN0U3RvcmUiOwor
ICAgIHZhciBpbmRleE5hbWUgPSAidGVzdEluZGV4TmFtZSI7CisKKyAgICBmdW5jdGlvbiBhZGRJ
REJWYWx1ZXMoY291bnQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIGkgPSAwOworICAg
ICAgICBhZGRWYWx1ZXMoKTsKKworICAgICAgICBmdW5jdGlvbiBhZGRWYWx1ZXMoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaSA9PSBjb3VudCkgeworICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgKytpOworICAgICAgICAgICAgdmFyIGlkID0gaSA8IDEwID8gIjAiICsgaSA6IGk7CisgICAg
ICAgICAgICB2YXIga2V5ID0gImtleV8iICsgaWQ7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSAi
dmFsdWVfIiArIGlkOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRJREJWYWx1ZShtYWlu
RnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIHsga2V5OiBrZXksIHZhbHVl
OiB2YWx1ZSB9LCAiIiwgYWRkVmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIGxvYWRWYWx1ZXNBbmREdW1wKGZyb21JbmRleCwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwg
cGFnZVNpemUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkR1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSAiICsgZnJvbUluZGV4ICsgIiwgc2tpcENv
dW50ID0gIiArIHNraXBDb3VudCArICIsIHBhZ2VTaXplID0gIiArIHBhZ2VTaXplICsgIiwgaWRi
S2V5UmFuZ2UgPSAiICsgSlNPTi5zdHJpbmdpZnkoaWRiS2V5UmFuZ2UpKTsKKyAgICAgICAgaWYg
KGZyb21JbmRleCkKKyAgICAgICAgICAgIGluZGV4ZWREQk1vZGVsLmxvYWRJbmRleERhdGEobWFp
bkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlkYktl
eVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBpbm5lckNhbGxiYWNrKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaW5kZXhlZERCTW9kZWwubG9hZE9iamVjdFN0b3JlRGF0YShtYWluRnJh
bWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291
bnQsIHBhZ2VTaXplLCBpbm5lckNhbGxiYWNrKTsKKworICAgICAgICBmdW5jdGlvbiBpbm5lckNh
bGxiYWNrKGVudHJpZXMsIGhhc01vcmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpbmRl
eCA9IDA7CisgICAgICAgICAgICB2YXIgZW50cnk7CisgICAgICAgICAgICBkdW1wRW50cmllcygp
OworCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wRW50cmllcygpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBlbnRyaWVzLmxlbmd0aCkgeworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgIGhhc01vcmUgPSAiICsgaGFz
TW9yZSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZW50cnkgPSBl
bnRyaWVzW2luZGV4XTsKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZS5jYWxsRnVuY3Rpb25K
U09OKGR1bXBNZSwgZHVtcGVkLmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgICsraW5kZXg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGR1bXBNZSgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wZWQodmFsdWUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICBLZXkg
PSAiICsgZW50cnkua2V5ICsgIiwgcHJpbWFyeUtleSA9ICIgKyBlbnRyeS5wcmltYXJ5S2V5ICsg
IiwgdmFsdWUgPSAiICsgdmFsdWUpOworICAgICAgICAgICAgICAgIGR1bXBFbnRyaWVzKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNu
aWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLCAiZGF0YWJh
c2VOYW1lc0xvYWRlZCIsIGZpbGxEYXRhYmFzZSwgZmFsc2UpOworCisgICAgZnVuY3Rpb24gZmls
bERhdGFiYXNlKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGF0YWJhc2Uo
bWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgc3RlcDIpOworCisgICAgICAgIGZ1bmN0aW9uIHN0
ZXAyKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVPYmplY3RT
dG9yZShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsICJrZXkiLCB0
cnVlLCBzdGVwMyk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlT2JqZWN0U3RvcmVJbmRleCht
YWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgInZh
bHVlIiwgZmFsc2UsIHRydWUsIHN0ZXA0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHN0ZXA0KCkKKyAgICAgICAgeworICAgICAgICAgICAgYWRkSURCVmFsdWVzKDksIHJlZnJlc2hE
YXRhYmFzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiByZWZyZXNoRGF0YWJh
c2UoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNlTG9hZGVkIiwgcnVuT2Jq
ZWN0U3RvcmVUZXN0cywgZmFsc2UpOworICAgICAgICBpbmRleGVkREJNb2RlbC5yZWZyZXNoRGF0
YWJhc2UobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
cnVuT2JqZWN0U3RvcmVUZXN0cygpCisgICAgeworICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChm
YWxzZSwgbnVsbCwgMCwgMywgc3RlcDIpCisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAg
ICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgMywgMywg
c3RlcDMpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBudWxsLCA2LCAzLCBzdGVwNCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBudWxsLCA3LCAzLCBzdGVwNSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwNSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBudWxsLCA5LCAzLCBzdGVwNik7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzdGVwNigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRW
YWx1ZXNBbmREdW1wKGZhbHNlLCBudWxsLCAxMCwgMywgc3RlcDcpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc3RlcDcoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVz
QW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91bmQoImtleV8wMiIsICJrZXlfMDciLCB0cnVl
LCBmYWxzZSksIDAsIDQsIHN0ZXA4KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0
ZXA4KCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIElE
QktleVJhbmdlLmJvdW5kKCJrZXlfMDIiLCAia2V5XzA3IiwgdHJ1ZSwgZmFsc2UpLCAwLCA1LCBz
dGVwOSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwOSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlSYW5nZS5ib3VuZCgi
a2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwgMCwgNiwgc3RlcDEwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxMCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxv
YWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlSYW5nZS5ib3VuZCgia2V5XzAyIiwgImtleV8w
NyIsIHRydWUsIGZhbHNlKSwgMSwgNCwgc3RlcDExKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHN0ZXAxMSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1w
KGZhbHNlLCBJREJLZXlSYW5nZS5ib3VuZCgia2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNl
KSwgMSwgNSwgc3RlcDEyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxMigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlS
YW5nZS5ib3VuZCgia2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwgMSwgNiwgc3RlcDEz
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxMygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJ1bkluZGV4VGVzdHMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIHJ1bkluZGV4VGVzdHMoKQorICAgIHsKKyAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAodHJ1
ZSwgbnVsbCwgMCwgMywgc3RlcDIpCisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAg
ICB7CisgICAgICAgICAgICBjbGVhckRhdGFiYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjbGVhckRhdGFiYXNlKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
ZGVsZXRlT2JqZWN0U3RvcmVJbmRleChtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RT
dG9yZU5hbWUsIGluZGV4TmFtZSwgc3RlcDIpOworCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
KyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kZWxldGVPYmplY3RTdG9yZSht
YWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIHN0ZXAzKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kZWxldGVEYXRhYmFzZShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBz
dGVwNCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAg
ICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PlRlc3RzIHRoYXQgZGF0YSBpcyBjb3JyZWN0bHkgbG9hZGVkIGJ5IEluZGV4ZWREQk1vZGVsIGZy
b20gSW5kZXhlZERCIG9iamVjdCBzdG9yZSBhbmQgaW5kZXguPC9wPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L2RhdGFiYXNlLW5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQKaW5kZXggMGZiMzQ0
ZDBjM2RhNDlkYTU2MDM1NTgzYWMyOTk0NjQzYTE2MDllNy4uZWNmODAyNzAzNDc0Njg5MTczOWM0
OWU0Y2M2Y2QxYTQ5N2UxZmRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNw
ZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3Nzog
SW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2syCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
Nzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMwotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazQKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMgorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s0
CiBUZXN0cyB0aGF0IGRhdGFiYXNlIG5hbWVzIGFyZSBjb3JyZWN0bHkgbG9hZGVkIGFuZCBzYXZl
ZCBpbiBJbmRleGVkREJNb2RlbC4KIAogRHVtcGluZyBkYXRhYmFzZSBuYW1lczoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1z
dHJ1Y3R1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKaW5kZXggMDI4NWFjNDIy
MDJhYTI3NDExMTdhMzQzNzZlZDQ4YTYyODcyYTQyOC4uZjg2YmEwZjgxMjk2OTMxZTMzOTYzMTg3
YzU0MjQzYTAxNTQ3Njg4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVy
ZS1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsMTMgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3
NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxCi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMgotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazMKLUNPTlNPTEUgTUVT
U0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s0Ci1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNQotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazYK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJh
Y2s3Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2Nh
bGxiYWNrOAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazkKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2sxMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0
LkluZGV4ZWREQl9jYWxsYmFjazEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9y
VGVzdC5JbmRleGVkREJfY2FsbGJhY2syCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3Bl
Y3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJ
bnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3
OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s1CitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazcKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s4CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrOQorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEw
CiBUZXN0cyB0aGF0IGRhdGFiYXNlIG5hbWVzIGFyZSBjb3JyZWN0bHkgbG9hZGVkIGFuZCBzYXZl
ZCBpbiBJbmRleGVkREJNb2RlbC4KIAogRHVtcGluZyBkYXRhYmFzZToKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9pbmRleGVkZGItdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9pbmRleGVkZGIt
dGVzdC5qcwppbmRleCAwMjg1YTBlN2UxOTA2NDdlZjE2ZjNlMThmNzlmMWNmY2Q3MzgxYWJlLi42
MDYwMmVmNTBiMDQxZWQzZGQ1ZTI4MDBkNDViMmE3OWJkNjk5MjZiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvaW5kZXhlZGRiLXRlc3QuanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRk
Yi10ZXN0LmpzCkBAIC0xMSwxMiArMTEsOCBAQCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlV2l0aENh
bGxiYWNrID0gZnVuY3Rpb24oZnJhbWVJZCwgbWV0aG9kTmFtZSwgcGFyYW1ldGVycywgYwogICAg
IHZhciBjYWxsYmFja0lkID0gKytsYXN0Q2FsbGJhY2tJZDsKICAgICBjYWxsYmFja3NbY2FsbGJh
Y2tJZF0gPSBjYWxsYmFjazsKICAgICB2YXIgcGFyYW1ldGVyc1N0cmluZyA9ICJcIiIgKyBjYWxs
YmFja0lkUHJlZml4ICsgY2FsbGJhY2tJZCArICJcIiI7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICh0eXBlb2YocGFyYW1ldGVy
c1tpXSkgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgcGFyYW1ldGVyc1N0cmluZyArPSAiLCBc
IiIgKyBwYXJhbWV0ZXJzW2ldICsgIlwiIjsKLSAgICAgICAgZWxzZSBpZiAoKHR5cGVvZihwYXJh
bWV0ZXJzW2ldKSA9PT0gIm51bWJlciIpIHx8ICh0eXBlb2YocGFyYW1ldGVyc1tpXSkgPT09ICJi
b29sZWFuIikpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nICs9ICIsICIgKyBwYXJhbWV0
ZXJzW2ldOwotICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3Ro
OyArK2kpCisgICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgKz0gIiwgIiArIEpTT04uc3RyaW5naWZ5
KHBhcmFtZXRlcnNbaV0pOwogCiAgICAgdmFyIHJlcXVlc3RTdHJpbmcgPSBtZXRob2ROYW1lICsg
IigiICsgcGFyYW1ldGVyc1N0cmluZyArICIpIjsKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKHJlcXVlc3RTdHJpbmcpOwpAQCAtNjgsOSArNjQsMTUgQEAgSW5zcGVjdG9yVGVzdC5k
ZWxldGVPYmplY3RTdG9yZUluZGV4ID0gZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBv
YmplY3RTdG8KICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlV2l0aENhbGxiYWNrKGZyYW1lSWQs
ICJkZWxldGVPYmplY3RTdG9yZUluZGV4IiwgW2RhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1l
LCBvYmplY3RTdG9yZUluZGV4TmFtZV0sIGNhbGxiYWNrKQogfTsKIAorSW5zcGVjdG9yVGVzdC5h
ZGRJREJWYWx1ZSA9IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVO
YW1lLCB2YWx1ZSwga2V5LCBjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
V2l0aENhbGxiYWNrKGZyYW1lSWQsICJhZGRJREJWYWx1ZSIsIFtkYXRhYmFzZU5hbWUsIG9iamVj
dFN0b3JlTmFtZSwgdmFsdWUsIGtleV0sIGNhbGxiYWNrKQorfTsKKwogfTsKIAogdmFyIGluZGV4
ZWREQiA9IHdpbmRvdy5pbmRleGVkZGIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQjsKK3ZhciBJ
REJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURC
VHJhbnNhY3Rpb247CiAKIGZ1bmN0aW9uIGRpc3BhdGNoQ2FsbGJhY2soY2FsbGJhY2tJZCkKIHsK
QEAgLTExNiw2ICsxMTgsMjQgQEAgZnVuY3Rpb24gZG9XaXRoVmVyc2lvblRyYW5zYWN0aW9uKGRh
dGFiYXNlTmFtZSwgY2FsbGJhY2ssIGNvbW1pdENhbGxiYWNrKQogICAgIH0KIH0KIAorZnVuY3Rp
b24gZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24oZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5h
bWUsIGNhbGxiYWNrLCBjb21taXRDYWxsYmFjaykKK3sKKyAgICBkb1dpdGhEYXRhYmFzZShkYXRh
YmFzZU5hbWUsIHN0ZXAyKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAyKGRiKQorICAgIHsKKyAgICAg
ICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oW29iamVjdFN0b3JlTmFtZV0sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpOworICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworICAgICAgICBjYWxsYmFjayhv
YmplY3RTdG9yZSwgaW5uZXJDb21taXRDYWxsYmFjayk7CisKKyAgICAgICAgZnVuY3Rpb24gaW5u
ZXJDb21taXRDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRiLmNsb3NlKCk7Cisg
ICAgICAgICAgICBjb21taXRDYWxsYmFjaygpOworICAgICAgICB9CisgICAgfQorfQorCiBmdW5j
dGlvbiBjcmVhdGVEYXRhYmFzZShjYWxsYmFja0lkLCBkYXRhYmFzZU5hbWUpCiB7CiAgICAgdmFy
IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYXRhYmFzZU5hbWUsIDApOwpAQCAtMTc4LDMgKzE5
OCwxOSBAQCBmdW5jdGlvbiBkZWxldGVPYmplY3RTdG9yZUluZGV4KGNhbGxiYWNrSWQsIGRhdGFi
YXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBvYmplYwogICAgIH0KIH0KIAorZnVuY3Rpb24gYWRk
SURCVmFsdWUoY2FsbGJhY2tJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIHZhbHVl
LCBrZXkpCit7CisgICAgZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24oZGF0YWJhc2VOYW1lLCBv
YmplY3RTdG9yZU5hbWUsIHdpdGhUcmFuc2FjdGlvbkNhbGxiYWNrLCBkaXNwYXRjaENhbGxiYWNr
LmJpbmQodGhpcywgY2FsbGJhY2tJZCkpCisKKyAgICBmdW5jdGlvbiB3aXRoVHJhbnNhY3Rpb25D
YWxsYmFjayhvYmplY3RTdG9yZSwgY29tbWl0Q2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIg
cmVxdWVzdDsKKyAgICAgICAgaWYgKGtleSkKKyAgICAgICAgICAgIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQodmFsdWUsIGtleSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQodmFsdWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBvbklu
ZGV4ZWREQkVycm9yOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbW1pdENhbGxiYWNr
OworICAgIH0KK30KKwo=
</data>
<flag name="commit-queue"
          id="128966"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126981</attachid>
            <date>2012-02-14 08:19:26 -0800</date>
            <delta_ts>2012-02-14 23:16:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78503-20120214201924.patch</filename>
            <type>text/plain</type>
            <size>70205</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UwYzNjM2E5M2U3ZTI5
YTc0YmE0ZWUzYmVhMmU0NmFlMjRlODNiMi4uMjU1MjZhMjI0YWY1NmQyODU4MTQzODRkMjBjN2Vh
OTFkMzc4NTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAyLTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtJbnNwZWN0b3JJbmRleGVkREJdIFBhc3MgZGF0YSBlbnRyaWVzIGZyb20gb2JqZWN0IHN0
b3JlcyBhbmQgaW5kZXhlcyB0byBmcm9udC1lbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1kYXRhLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZUZvckluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAo
SW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6YXNzZXJ0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9t
S2V5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlGcm9tSURCS2V5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5rZXlSYW5nZUZyb21JREJL
ZXlSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBl
Ll9sb2FkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5sb2FkT2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUubG9hZEluZGV4RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwuRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
QlJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlci5wcm90b3R5cGUuX3JlcXVlc3REYXRhLmlubmVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fcmVxdWVzdERh
dGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3Rv
dHlwZS5yZXF1ZXN0T2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX29iamVjdFN0b3JlRGF0YUxvYWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJl
cXVlc3RJbmRleERhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyLnByb3RvdHlwZS5faW5kZXhEYXRhTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lRGV0YWNoZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZGF0
YWJhc2VSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFu
YWdlci5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJS
ZXF1ZXN0TWFuYWdlci5EYXRhUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCRGlzcGF0Y2hlci5wcm90b3R5cGUuZGF0YWJhc2VMb2FkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLm9iamVjdFN0b3JlRGF0YUxvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUu
aW5kZXhEYXRhTG9hZGVkKToKKwogMjAxMi0wMi0xNCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5y
b3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bVGV4bWFwXSBSZWZhY3RvciBiYWNr
aW5nLXN0b3JlIGNvZGUgaW4gVGV4dHVyZU1hcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggM2FjNmVjZjU4MTM0
M2M2MjVhNjQyZDYxYmM0ZTI1ZDk1OTdjOWRlNC4uNWY1OGUxNGUyOTViMjQwYzI2YTg5ODE2ZmM3
YzFhOGM3YTFkOWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZp
Z2F0b3IuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0
Lmg+CkBAIC0xNDUyLDYgKzE0NTMsMTQgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICBy
ZXR1cm4gcmVzdWx0LmZpcnN0OwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK1NjcmlwdFZh
bHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShz
Y3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCk7CisgICAg
cmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRhKCksIHZhbHVlKTsKK30K
KyNlbmRpZgorCiBKU1ZhbHVlUmVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
SlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBN
ZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
dG9KUyhkZXN0aW5hdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBjYWVkNjQ3M2MwNGM2ZWQ2YzM3MmI0
NmFmMTI4YjlmMTU2Mjg1NWEwLi43NWNlNjk0YjI0OGU3OTQ3MTNlNDUyYjNkMWJiOTVjMzkyNTcx
MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTZXJpYWxpemVkU2NyaXB0VmFs
dWVfaAogI2RlZmluZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAogCisjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01Miw2ICs1Myw3IEBAIGVudW0g
U2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIAogZW51bSBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKK2NsYXNzIFNjcmlwdFZhbHVlOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMg
UmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKQEAgLTc3LDYgKzc5LDEwIEBAIHB1
YmxpYzoKICAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uLCBNZXNzYWdlUG9ydEFycmF5Kik7CiAgICAgSlNWYWx1ZVJlZiBkZXNlcmlh
bGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlw
dFN0YXRlKik7CisjZW5kaWYKKwogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgpIHsg
cmV0dXJuIG1fZGF0YTsgfQogCiAgICAgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggOTE4MWI3M2Y1M2M5YzYxYjYxYjdiZDI4MjM5ZTAzOWUzZTY0ZTdkMC4uMzA3MmNiODQ1
NjE1ZTdlOTIyNmM2M2EwYzI0NzA4YmE0MjY2MGY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yMjU4LDQgKzIy
NTgsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoTWVzc2FnZVBvcnRBcnJheSogbWVzc2EKICAgICByZXR1cm4gZGVzZXJpYWxpemVy
LmRlc2VyaWFsaXplKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorU2NyaXB0VmFsdWUg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAg
IHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoc2NyaXB0U3RhdGUtPmNvbnRleHQoKSk7
CisKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoZGVzZXJpYWxpemUoKSk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBkM2E2NjhiOTgzYzQwYWI0YjM4YWE2Nzdm
ZDM3NzMzYjMzMDRjMWUyLi42OGIxOTU0ZDVmNTExMWUxODU4ZTIyOTA4YmYxOTE0MmI4Mjc2Mzk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaApAQCAtNzYsNiArNzYsMTAgQEAgcHVibGljOgogICAgIC8vIGNhc2Ugb2YgZmFpbHVy
ZS4KICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzZXJpYWxpemUoTWVzc2FnZVBvcnRBcnJh
eSogPSAwKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgU2NyaXB0VmFsdWUgZGVzZXJp
YWxpemVGb3JJbnNwZWN0b3IoU2NyaXB0U3RhdGUqKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IGVudW0gU3RyaW5nRGF0YU1vZGUgewogICAgICAgICBTdHJpbmdWYWx1ZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDZkMDliMjkxN2I4ODU0MzE2
OTIyMjkwYmY0YTQzYWY2ZmE2NWFkNzcuLjhmNzQ1YWYwZTI5ZmJjMGJmNjEyZGIzYTMyMWQ3ZGI3
ZmM3YTdiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtMTU0LDcgKzE1NCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVk
U2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsCiB9CiAjZW5kaWYK
IAotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0
KFNjcmlwdFZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChTY3JpcHRWYWx1ZSB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNO
b1ZhbHVlKCkpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24obV9pbmplY3Rl
ZFNjcmlwdE9iamVjdCwgIndyYXBPYmplY3QiKTsKQEAgLTE3Niw2ICsxNzYsMTIgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShOb2RlKiBub2Rl
LCBjb25zdCBTdHJpbmcmIGcKICAgICByZXR1cm4gd3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1
ZShub2RlKSwgZ3JvdXBOYW1lKTsKIH0KIAorUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IElu
amVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0Cit7
CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRl
c2VyaWFsaXplRm9ySW5zcGVjdG9yKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KSk7CisgICAgcmV0dXJuIHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUsIGdyb3VwTmFtZSk7Cit9CisK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNT
RVJUKCFoYXNOb1ZhbHVlKCkpOwpAQCAtMTkzLDcgKzE5OSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogICAgIHJl
bGVhc2VGdW5jdGlvbi5jYWxsKCk7CiB9CiAKLWJvb2wgSW5qZWN0ZWRTY3JpcHQ6OmNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdygpCitib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3coKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggZjJiN2FjMTUyYjM4YTRlODk3NDZh
NzBiZjMxNTM1ZjQxM2ZiODYxNC4uYTRhZDA5NjFiNGRmZmJiOGI2NmMyYzZiYjNkYTI4MzY4Mzg3
ZmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTg3
LDggKzg3LDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHdyYXBD
YWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiB3cmFwT2JqZWN0KFNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2Ny
aXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1l
KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gd3JhcFNlcmlhbGl6ZWRPYmplY3Qo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNvbnN0Owog
ICAgIHZvaWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3Vw
KGNvbnN0IFN0cmluZyYpOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQpAQCAtOTgsNyAr
OTksNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2spKFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJ
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KCk7CisgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKICAg
ICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRG
dW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0LCBib29sKiB3YXNU
aHJvd24pOwogICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1NDUxZjNkMjY5YjdlNTdkN2I2
MTE1YzNiYWIxODZkZDRlNWRkZTU1Li41ZjNlOWQwNDI4NmU0NmQwMmJjNjJkMTc1NDJhOGUwNThl
MmRkNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC05NzEs
NiArOTcxLDM5IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidW5pcXVlIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCBpbmRleCBpcyB1bmlxdWUu
IiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm11bHRpRW50cnkiLCAidHlwZSI6
ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIGluZGV4IGFsbG93cyBtdWx0aXBs
ZSBlbnRyaWVzIGZvciBhIGtleS4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJLZXkiLAorICAgICAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IktleS4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibnVtYmVy
IiwgInN0cmluZyIsICJkYXRlIiwgImFycmF5Il0sICJkZXNjcmlwdGlvbiI6ICJLZXkgdHlwZS4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibnVtYmVyIiwgInR5cGUiOiAibnVt
YmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk51bWJlciB2YWx1ZS4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RyaW5nIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlN0cmluZyB2YWx1ZS4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0ZSIsICJ0eXBlIjogIm51bWJlciIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJEYXRlIHZhbHVlLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJhcnJheSIsICJ0eXBlIjogImFycmF5IiwgIm9wdGlvbmFs
IjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJLZXkiIH0sICJkZXNjcmlwdGlvbiI6ICJBcnJh
eSB2YWx1ZS4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJLZXlSYW5nZSIsCisgICAgICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiS2V5IHJh
bmdlLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibG93ZXIiLCAiJHJlZiI6ICJLZXkiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiTG93ZXIgYm91bmQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVwcGVyIiwgIiRyZWYiOiAiS2V5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIlVwcGVyIGJvdW5kLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJs
b3dlck9wZW4iLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUgbG93
ZXIgYm91bmQgaXMgb3Blbi4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXBw
ZXJPcGVuIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlIHVwcGVy
IGJvdW5kIGlzIG9wZW4uIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiRGF0YUVudHJ5IiwKKyAgICAgICAg
ICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJLZXkuIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJrZXkiLCAiJHJlZiI6ICJLZXkiLCAiZGVzY3JpcHRpb24iOiAiS2V5
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmltYXJ5S2V5IiwgIiRyZWYi
OiAiS2V5IiwgImRlc2NyaXB0aW9uIjogIlByaW1hcnkga2V5LiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIsICIkcmVmIjogIlJ1bnRpbWUuUmVtb3RlT2JqZWN0Iiwg
ImRlc2NyaXB0aW9uIjogIlZhbHVlLiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg
IH0KICAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpAQCAtOTk0LDEwICsxMDI3LDI0
IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGFiYXNlIiwKICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWQu
IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQiLCAiJHJlZiI6ICJO
ZXR3b3JrLkZyYW1lSWQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJh
c2VOYW1lIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZnJhbWVJZCIsICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJG
cmFtZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1l
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9CiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVz
dHMgZGF0YWJhc2Ugd2l0aCBnaXZlbiBuYW1lIGluIGdpdmVuIGZyYW1lLiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGEi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
UmVxdWVzdCBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIs
ICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBpZC4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5cGUiOiAi
c3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm9iamVjdFN0b3JlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJPYmplY3Qgc3RvcmUgbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaW5kZXhOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IkluZGV4IG5hbWUsIGVtcHR5IHN0cmluZyBmb3Igb2JqZWN0IHN0b3JlIGRhdGEgcmVxdWVzdHMu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNraXBDb3VudCIsICJ0eXBlIjog
ImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHJlY29yZHMgdG8gc2tpcC4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFnZVNpemUiLCAidHlwZSI6ICJpbnRl
Z2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiByZWNvcmRzIHRvIGZldGNoLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJrZXlSYW5nZSIsICIkcmVmIjogIktleVJhbmdl
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIktleSByYW5nZS4iIH0KKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyBk
YXRhIGZyb20gb2JqZWN0IHN0b3JlIG9yIGluZGV4LiIKICAgICAgICAgICAgIH0KICAgICAgICAg
XSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAgLTEwMTQsNiArMTA2MSwyMiBAQAogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVz
Y3JpcHRpb24iOiAiUmVxdWVzdCBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzIiwgIiRyZWYiOiAiRGF0YWJhc2VXaXRoT2JqZWN0
U3RvcmVzIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIHdpdGggYW4gYXJyYXkgb2Ygb2JqZWN0
IHN0b3Jlcy4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIm9iamVjdFN0b3JlRGF0YUxvYWRlZCIsCisg
ICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZXF1
ZXN0IGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RTdG9yZURh
dGFFbnRyaWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkRhdGFFbnRy
eSIgfSwgImRlc2NyaXB0aW9uIjogIkFycmF5IG9mIG9iamVjdCBzdG9yZSBkYXRhIGVudHJpZXMu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhc01vcmUiLCAidHlwZSI6ICJi
b29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRoZXJlIGFyZSBtb3JlIGVudHJpZXMg
dG8gZmV0Y2ggaW4gdGhlIGdpdmVuIHJhbmdlLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5kZXhE
YXRhTG9hZGVkIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2Ny
aXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImluZGV4RGF0YUVudHJpZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
RGF0YUVudHJ5IiB9LCAiZGVzY3JpcHRpb24iOiAiQXJyYXkgb2YgaW5kZXggZGF0YSBlbnRyaWVz
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYXNNb3JlIiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0aGVyZSBhcmUgbW9yZSBlbnRyaWVz
IHRvIGZldGNoIGluIHRoZSBnaXZlbiByYW5nZS4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGVjNTBiYzVmODU0ZjYwN2VkNTA0ZjZh
YTc1NDQxZDU2ZDA1N2Q5YTUuLjMzOWVlZmY3YzAxZTU5ZDJhMmQ3ODdlYTQ1NDU3ZDcwMTYwNGZi
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUuZ2V0KCksIHBhZ2VBZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9z
dGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBhZ2VBZ2VudCkpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBiMDA1MjU5NjY2
MTFmNmFlOWUwMmM0ZDQ1NTlhMGFlNDdkMjcyMGMyLi5kY2Q0M2IzMDkwMTJmOWRiN2Y4OWU4ZDdh
MmM1ZmM3MTgzYjJlMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTQwLDEyICs0MCwxNyBAQAogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JvdXBTZXR0aW5ncy5oIgogI2luY2x1ZGUgIklEQkNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCS2V5
LmgiCisjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKQEAgLTU3LDggKzYyLDEyIEBACiAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsK
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OlNlY3VyaXR5T3JpZ2luV2l0
aERhdGFiYXNlTmFtZXM7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpE
YXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5k
ZXhlZERCOjpEYXRhRW50cnk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERC
OjpLZXk7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsK
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlOwogdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIApA
QCAtMTAyLDYgKzExMSwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgp
IHsgfQogfTsKIAorY2xhc3MgSW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjayA6IHB1Ymxp
YyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjaz4gY3JlYXRlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjaygp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJREJUcmFuc2FjdGlvbkNhbGxiYWNr
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBvbkNvbXBsZXRlKCkgeyB9Citwcml2YXRlOgorICAgIEluc3BlY3RvcklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2soKSB7IH0KK307CisKIGNsYXNzIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayA6IHB1
YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBjcmVhdGUoSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCkBAIC0yNjIsMTAgKzI4NiwyODIgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9yZXF1ZXN0SWQ7CiB9OwogCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCit7CisgICAg
UmVmUHRyPElEQktleT4gaWRiS2V5OworCisgICAgU3RyaW5nIHR5cGU7CisgICAgaWYgKCFrZXkt
PmdldFN0cmluZygidHlwZSIsICZ0eXBlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbnVtYmVyLCAoIm51bWJlciIpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgc3RyaW5nLCAoInN0cmluZyIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgZGF0ZSwgKCJkYXRlIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBhcnJheSwgKCJhcnJheSIpKTsKKworICAgIGlmICh0eXBlID09IG51bWJlcikg
eworICAgICAgICBkb3VibGUgbnVtYmVyOworICAgICAgICBpZiAoIWtleS0+Z2V0TnVtYmVyKCJu
dW1iZXIiLCAmbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZGJLZXkg
PSBJREJLZXk6OmNyZWF0ZU51bWJlcihudW1iZXIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBz
dHJpbmcpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgaWYgKCFrZXktPmdldFN0
cmluZygic3RyaW5nIiwgJnN0cmluZykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
aWRiS2V5ID0gSURCS2V5OjpjcmVhdGVTdHJpbmcoc3RyaW5nKTsKKyAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gZGF0ZSkgeworICAgICAgICBkb3VibGUgZGF0ZTsKKyAgICAgICAgaWYgKCFrZXktPmdl
dE51bWJlcigiZGF0ZSIsICZkYXRlKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZGJLZXkgPSBJREJLZXk6OmNyZWF0ZURhdGUoZGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09
IGFycmF5KSB7CisgICAgICAgIElEQktleTo6S2V5QXJyYXkga2V5QXJyYXk7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBrZXktPmdldEFycmF5KCJhcnJheSIpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gYXJyYXktPmdldChpKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKKyAgICAgICAgICAgIGlm
ICghdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAga2V5QXJyYXkuYXBwZW5kKGlkYktleUZyb21JbnNwZWN0b3JPYmplY3Qob2Jq
ZWN0LmdldCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVB
cnJheShrZXlBcnJheSk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIGlkYktleS5yZWxlYXNlKCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShJbnNwZWN0b3JPYmplY3QqIGtleVJhbmdlKQorewor
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvd2VyID0ga2V5UmFuZ2UtPmdldE9iamVjdCgi
bG93ZXIiKTsKKyAgICBSZWZQdHI8SURCS2V5PiBpZGJMb3dlciA9IGxvd2VyID8gaWRiS2V5RnJv
bUluc3BlY3Rvck9iamVjdChsb3dlci5nZXQoKSkgOiAwOworICAgIGlmIChsb3dlciAmJiAhaWRi
TG93ZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
dXBwZXIgPSBrZXlSYW5nZS0+Z2V0T2JqZWN0KCJ1cHBlciIpOworICAgIFJlZlB0cjxJREJLZXk+
IGlkYlVwcGVyID0gdXBwZXIgPyBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KHVwcGVyLmdldCgp
KSA6IDA7CisgICAgaWYgKHVwcGVyICYmICFpZGJVcHBlcikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBib29sIGxvd2VyT3BlbjsKKyAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJsb3dl
ck9wZW4iLCAmbG93ZXJPcGVuKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSURCS2V5UmFuZ2U6
Okxvd2VyQm91bmRUeXBlIGxvd2VyQm91bmRUeXBlID0gbG93ZXJPcGVuID8gSURCS2V5UmFuZ2U6
Okxvd2VyQm91bmRPcGVuIDogSURCS2V5UmFuZ2U6Okxvd2VyQm91bmRDbG9zZWQ7CisKKyAgICBi
b29sIHVwcGVyT3BlbjsKKyAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJ1cHBlck9wZW4i
LCAmdXBwZXJPcGVuKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSURCS2V5UmFuZ2U6OlVwcGVy
Qm91bmRUeXBlIHVwcGVyQm91bmRUeXBlID0gdXBwZXJPcGVuID8gSURCS2V5UmFuZ2U6OlVwcGVy
Qm91bmRPcGVuIDogSURCS2V5UmFuZ2U6OlVwcGVyQm91bmRDbG9zZWQ7CisKKyAgICBSZWZQdHI8
SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlID0gSURCS2V5UmFuZ2U6OmNyZWF0ZShpZGJMb3dlciwg
aWRiVXBwZXIsIGxvd2VyQm91bmRUeXBlLCB1cHBlckJvdW5kVHlwZSk7CisgICAgcmV0dXJuIGlk
YktleVJhbmdlLnJlbGVhc2UoKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8S2V5PiBrZXlGcm9t
SURCS2V5KElEQktleSogaWRiS2V5KQoreworICAgIGlmICghaWRiS2V5IHx8ICFpZGJLZXktPnZh
bGlkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEtleT4ga2V5OworICAgIHN3
aXRjaCAoaWRiS2V5LT50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleTo6SW52YWxpZFR5cGU6Cisg
ICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgSURC
S2V5OjpOdW1iZXJUeXBlOiB7CisgICAgICAgIFJlZlB0cjxLZXk+IHRtcEtleSA9IEtleTo6Y3Jl
YXRlKCkuc2V0VHlwZShLZXk6OlR5cGU6Ok51bWJlcik7CisgICAgICAgIGtleSA9IHRtcEtleTsK
KyAgICAgICAga2V5LT5zZXROdW1iZXIoaWRiS2V5LT5udW1iZXIoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZTogeworICAgICAgICBSZWZQdHI8
S2V5PiB0bXBLZXkgPSBLZXk6OmNyZWF0ZSgpLnNldFR5cGUoS2V5OjpUeXBlOjpTdHJpbmcpOwor
ICAgICAgICBrZXkgPSB0bXBLZXk7CisgICAgICAgIGtleS0+c2V0U3RyaW5nKGlkYktleS0+c3Ry
aW5nKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBl
OiB7CisgICAgICAgIFJlZlB0cjxLZXk+IHRtcEtleSA9IEtleTo6Y3JlYXRlKCkuc2V0VHlwZShL
ZXk6OlR5cGU6OkRhdGUpOworICAgICAgICBrZXkgPSB0bXBLZXk7CisgICAgICAgIGtleS0+c2V0
RGF0ZShpZGJLZXktPmRhdGUoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIElE
QktleTo6QXJyYXlUeXBlOiB7CisgICAgICAgIFJlZlB0cjxLZXk+IHRtcEtleSA9IEtleTo6Y3Jl
YXRlKCkuc2V0VHlwZShLZXk6OlR5cGU6OkFycmF5KTsKKyAgICAgICAga2V5ID0gdG1wS2V5Owor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNy
ZWF0ZSgpOworICAgICAgICBJREJLZXk6OktleUFycmF5IGtleUFycmF5ID0gaWRiS2V5LT5hcnJh
eSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleUFycmF5LnNpemUoKTsgKytp
KQorICAgICAgICAgICAgYXJyYXktPnB1c2hPYmplY3Qoa2V5RnJvbUlEQktleShrZXlBcnJheVtp
XS5nZXQoKSkpOworICAgICAgICBrZXktPnNldEFycmF5KGFycmF5KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIH0KKyAgICByZXR1cm4ga2V5LnJlbGVhc2UoKTsKK30KKworY2xhc3MgT3Bl
bkN1cnNvckNhbGxiYWNrIDogcHVibGljIEluc3BlY3RvcklEQkNhbGxiYWNrIHsKK3B1YmxpYzoK
KyAgICBlbnVtIEN1cnNvclR5cGUgeworICAgICAgICBPYmplY3RTdG9yZURhdGFDdXJzb3IsCisg
ICAgICAgIEluZGV4RGF0YUN1cnNvcgorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxP
cGVuQ3Vyc29yQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGlkYlRyYW5zYWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIGludCByZXF1ZXN0SWQsIGlu
dCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBPcGVuQ3Vyc29yQ2FsbGJhY2soZnJvbnRlbmRQcm92aWRlciwgaW5qZWN0ZWRT
Y3JpcHQsIGlkYlRyYW5zYWN0aW9uLCBjdXJzb3JUeXBlLCByZXF1ZXN0SWQsIHNraXBDb3VudCwg
cGFnZVNpemUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5PcGVuQ3Vyc29yQ2FsbGJhY2soKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KQorICAgIHsKKyAgICAgICAgZW5kKGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
aWRiQ3Vyc29yKQorICAgIHsKKyAgICAgICAgbV9pZGJDdXJzb3IgPSBpZGJDdXJzb3I7CisgICAg
ICAgIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpCisgICAgeworICAgICAgICBpZiAobV9za2lw
Q291bnQpIHsKKyAgICAgICAgICAgIC0tbV9za2lwQ291bnQ7CisgICAgICAgICAgICBuZXh0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9yZXN1bHQt
Pmxlbmd0aCgpID09IG1fcGFnZVNpemUpIHsKKyAgICAgICAgICAgIGVuZCh0cnVlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleSA9
IG1faWRiQ3Vyc29yLT5rZXkoKTsKKyAgICAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9
IG1faWRiQ3Vyc29yLT5wcmltYXJ5S2V5KCk7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlID0gbV9pZGJDdXJzb3ItPnZhbHVlKCk7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHdyYXBwZWRWYWx1ZSA9IG1faW5qZWN0ZWRTY3JpcHQud3JhcFNlcmlh
bGl6ZWRPYmplY3QodmFsdWUuZ2V0KCksIFN0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPERhdGFF
bnRyeT4gZGF0YUVudHJ5ID0gRGF0YUVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldEtl
eShrZXlGcm9tSURCS2V5KGtleS5nZXQoKSkpCisgICAgICAgICAgICAuc2V0UHJpbWFyeUtleShr
ZXlGcm9tSURCS2V5KHByaW1hcnlLZXkuZ2V0KCkpKQorICAgICAgICAgICAgLnNldFZhbHVlKHdy
YXBwZWRWYWx1ZSk7CisgICAgICAgIG1fcmVzdWx0LT5hZGRJdGVtKGRhdGFFbnRyeSk7CisKKyAg
ICAgICAgbmV4dCgpOworICAgIH0KKworICAgIHZvaWQgbmV4dCgpCisgICAgeworICAgICAgICBt
X2lkYlRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKKworICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgbV9pZGJDdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24o
MCwgdGhpcywgZWMpOworICAgIH0KKworICAgIHZvaWQgZW5kKGJvb2wgaGFzTW9yZSkKKyAgICB7
CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIG1faWRiVHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2
ZW50cygpOworCisgICAgICAgIHN3aXRjaCAobV9jdXJzb3JUeXBlKSB7CisgICAgICAgIGNhc2Ug
T2JqZWN0U3RvcmVEYXRhQ3Vyc29yOgorICAgICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5m
cm9udGVuZCgpLT5vYmplY3RTdG9yZURhdGFMb2FkZWQobV9yZXF1ZXN0SWQsIG1fcmVzdWx0LnJl
bGVhc2UoKSwgaGFzTW9yZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmRl
eERhdGFDdXJzb3I6CisgICAgICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkt
PmluZGV4RGF0YUxvYWRlZChtX3JlcXVlc3RJZCwgbV9yZXN1bHQucmVsZWFzZSgpLCBoYXNNb3Jl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAg
IE9wZW5DdXJzb3JDYWxsYmFjayhQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpG
cm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGlkYlRy
YW5zYWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIGludCByZXF1ZXN0SWQsIGludCBza2lw
Q291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihm
cm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1faW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3Jp
cHQpCisgICAgICAgICwgbV9pZGJUcmFuc2FjdGlvbihpZGJUcmFuc2FjdGlvbikKKyAgICAgICAg
LCBtX2N1cnNvclR5cGUoY3Vyc29yVHlwZSkKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0
SWQpCisgICAgICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50KQorICAgICAgICAsIG1fcGFnZVNp
emUocGFnZVNpemUpCisgICAgeworICAgICAgICBtX3Jlc3VsdCA9IEFycmF5PERhdGFFbnRyeT46
OmNyZWF0ZSgpOworICAgICAgICBtX2lkYlRyYW5zYWN0aW9uLT5zZXRDYWxsYmFja3MoSW5zcGVj
dG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKCkuZ2V0KCkpOworICAgIH0KKyAgICBS
ZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRl
bmRQcm92aWRlcjsKKyAgICBJbmplY3RlZFNjcmlwdCBtX2luamVjdGVkU2NyaXB0OworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1faWRiVHJhbnNhY3Rpb247Cisg
ICAgQ3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CisgICAgaW50IG1fcmVxdWVzdElkOworICAgIGlu
dCBtX3NraXBDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOworICAgIFJlZlB0cjxBcnJh
eTxEYXRhRW50cnk+ID4gbV9yZXN1bHQ7CisgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+IG1faWRiQ3Vyc29yOworfTsKKworY2xhc3MgRGF0YUxvYWRlckNhbGxiYWNrIDogcHVi
bGljIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERhdGFMb2FkZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8SW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0
SWQsIGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBv
YmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBpZGJLZXlSYW5nZSwgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFMb2FkZXJDYWxsYmFjayhmcm9u
dGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIGluamVjdGVkU2NyaXB0LCBvYmplY3RTdG9yZU5hbWUs
IGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5EYXRhTG9hZGVyQ2FsbGJhY2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRh
YmFzZSkKKyAgICB7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShp
ZGJEYXRhYmFzZS5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOworICAgICAgICBpZiAoIWlkYlRy
YW5zYWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlRm9yVHJh
bnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24uZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKKyAgICAg
ICAgaWYgKCFpZGJPYmplY3RTdG9yZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoIW1faW5kZXhOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gaWRiSW5kZXggPSBpbmRleEZvck9iamVjdFN0b3JlKGlkYk9iamVj
dFN0b3JlLmdldCgpLCBtX2luZGV4TmFtZSk7CisgICAgICAgICAgICBpZiAoIWlkYkluZGV4KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JD
YWxsYmFjaz4gb3BlbkN1cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUo
bV9mcm9udGVuZFByb3ZpZGVyLCBtX2luamVjdGVkU2NyaXB0LCBpZGJUcmFuc2FjdGlvbi5nZXQo
KSwgT3BlbkN1cnNvckNhbGxiYWNrOjpJbmRleERhdGFDdXJzb3IsIG1fcmVxdWVzdElkLCBtX3Nr
aXBDb3VudCwgbV9wYWdlU2l6ZSk7CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgICAgICAgICAgaWRiSW5kZXgtPm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZSwgSURCQ3Vy
c29yOjpORVhULCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBlYyk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8T3BlbkN1cnNvckNhbGxiYWNr
PiBvcGVuQ3Vyc29yQ2FsbGJhY2sgPSBPcGVuQ3Vyc29yQ2FsbGJhY2s6OmNyZWF0ZShtX2Zyb250
ZW5kUHJvdmlkZXIsIG1faW5qZWN0ZWRTY3JpcHQsIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBPcGVu
Q3Vyc29yQ2FsbGJhY2s6Ok9iamVjdFN0b3JlRGF0YUN1cnNvciwgbV9yZXF1ZXN0SWQsIG1fc2tp
cENvdW50LCBtX3BhZ2VTaXplKTsKKworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgICAgICAgICBpZGJPYmplY3RTdG9yZS0+b3BlbkN1cnNvcihtX2lkYktleVJhbmdlLCBJ
REJDdXJzb3I6Ok5FWFQsIG9wZW5DdXJzb3JDYWxsYmFjaywgaWRiVHJhbnNhY3Rpb24uZ2V0KCks
IGVjKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBEYXRhTG9hZGVyQ2FsbGJh
Y2soUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4g
ZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgSW5qZWN0ZWRTY3JpcHQmIGlu
amVjdGVkU2NyaXB0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5n
JiBpbmRleE5hbWUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlLCBpbnQgc2tp
cENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIo
ZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAg
ICAgICwgbV9pbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdCkKKyAgICAgICAgLCBtX29iamVj
dFN0b3JlTmFtZShvYmplY3RTdG9yZU5hbWUpCisgICAgICAgICwgbV9pbmRleE5hbWUoaW5kZXhO
YW1lKQorICAgICAgICAsIG1faWRiS2V5UmFuZ2UoaWRiS2V5UmFuZ2UpCisgICAgICAgICwgbV9z
a2lwQ291bnQoc2tpcENvdW50KQorICAgICAgICAsIG1fcGFnZVNpemUocGFnZVNpemUpIHsgfQor
ICAgIFJlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gbV9m
cm9udGVuZFByb3ZpZGVyOworICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJbmplY3RlZFNjcmlw
dCBtX2luamVjdGVkU2NyaXB0OworICAgIFN0cmluZyBtX29iamVjdFN0b3JlTmFtZTsKKyAgICBT
dHJpbmcgbV9pbmRleE5hbWU7CisgICAgUmVmUHRyPElEQktleVJhbmdlPiBtX2lkYktleVJhbmdl
OworICAgIGludCBtX3NraXBDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOworfTsKKwog
fSAvLyBuYW1lc3BhY2UKIAotSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ+KCJJbmRleGVkREIiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKKyAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKIHsKIH0KQEAgLTMwNCwzNCArNjAwLDU0IEBAIHZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fc3RhdGUtPnNl
dEJvb2xlYW4oSW5kZXhlZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdlbnRFbmFibGVkLCBmYWxz
ZSk7CiB9CiAKLXN0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgRXJyb3JTdHJpbmcqIGVycm9y
KQorc3RhdGljIEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOworCisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkZyYW1lIG5vdCBmb3VuZCI7CisK
KyAgICByZXR1cm4gZnJhbWU7Cit9CisKK3N0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUpCit7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IDA7CiAKICAgICBpZiAoIWRv
Y3VtZW50KQotICAgICAgICAqZXJyb3IgPSAiTm8gZG9jdW1lbnQgZm9yIGdpdmVuIGZyYW1lIGZv
dW5kIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIGRvY3VtZW50IGZvciBnaXZlbiBmcmFt
ZSBmb3VuZCI7CiAKICAgICByZXR1cm4gZG9jdW1lbnQ7CiB9CiAKLXN0YXRpYyBJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZSogYXNzZXJ0SURCRmFjdG9yeShEb2N1bWVudCogZG9jdW1lbnQsIEVy
cm9yU3RyaW5nKiBlcnJvcikKK3N0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50KQoreworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2VBZ2VudC0+ZnJhbWVG
b3JJZChmcmFtZUlkKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5k
b2N1bWVudCgpIDogMDsKKworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICplcnJvclN0cmlu
ZyA9ICJObyBkb2N1bWVudCBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiOworCisgICAgcmV0dXJuIGRv
Y3VtZW50OworfQorCitzdGF0aWMgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGFzc2VydElE
QkZhY3RvcnkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7
CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPnBhZ2UoKSA6IDA7CiAgICAg
SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZhY3RvcnkgPSBwYWdlID8gcGFnZS0+Z3Jv
dXAoKS5pZGJGYWN0b3J5KCkgOiAwOwogCiAgICAgaWYgKCFpZGJGYWN0b3J5KQotICAgICAgICAq
ZXJyb3IgPSAiTm8gSW5kZXhlZERCIGZhY3RvcnkgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIjsKKyAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk5vIEluZGV4ZWREQiBmYWN0b3J5IGZvciBnaXZlbiBmcmFt
ZSBmb3VuZCI7CiAKICAgICByZXR1cm4gaWRiRmFjdG9yeTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZShFcnJvclN0cmluZyog
ZXJyb3IsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCkKK3ZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCiB7
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZnJhbWVJZCwgbV9wYWdl
QWdlbnQsIGVycm9yKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChl
cnJvclN0cmluZywgZnJhbWVJZCwgbV9wYWdlQWdlbnQpOwogICAgIGlmICghZG9jdW1lbnQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9y
eSA9IGFzc2VydElEQkZhY3RvcnkoZG9jdW1lbnQsIGVycm9yKTsKKyAgICBJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZXJyb3JTdHJpbmcs
IGRvY3VtZW50KTsKICAgICBpZiAoIWlkYkZhY3RvcnkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MzQwLDEyICs2NTYsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERh
dGFiYXNlTmFtZXNGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3IsIGkKICAgICBpZGJGYWN0b3J5
LT5nZXREYXRhYmFzZU5hbWVzKGNhbGxiYWNrLmdldCgpLCBkb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKSwgZG9jdW1lbnQtPmZyYW1lKCksIGdyb3VwU2V0dGluZ3MtPmluZGV4ZWREQkRhdGFiYXNl
UGF0aCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFi
YXNlKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUp
CiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZnJhbWVJZCwgbV9w
YWdlQWdlbnQsIGVycm9yKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVu
dChlcnJvclN0cmluZywgZnJhbWVJZCwgbV9wYWdlQWdlbnQpOwogICAgIGlmICghZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFj
dG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZG9jdW1lbnQsIGVycm9yKTsKKyAgICBJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZXJyb3JTdHJp
bmcsIGRvY3VtZW50KTsKICAgICBpZiAoIWlkYkZhY3RvcnkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMzUzLDYgKzY2OSwzMCBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0
RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgcmVxdWVzdElkLAogICAgIGRhdGFiYXNl
TG9hZGVyQ2FsbGJhY2stPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLCBkb2N1bWVudC0+ZnJhbWUoKSwgZGF0YWJhc2VOYW1lKTsKIH0KIAordm9pZCBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRl
eE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGtleVJhbmdlKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGFzc2VydEZyYW1lKGVy
cm9yU3RyaW5nLCBmcmFtZUlkLCBtX3BhZ2VBZ2VudCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9y
U3RyaW5nLCBmcmFtZSk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAg
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9y
eShlcnJvclN0cmluZywgZG9jdW1lbnQpOworICAgIGlmICghaWRiRmFjdG9yeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3RhdGUoZnJh
bWUpKTsKKworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/
IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKGtleVJhbmdlLT5nZXQoKSkgOiAwOworICAgIGlmIChr
ZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNhbiBu
b3QgcGFyc2Uga2V5IHJhbmdlLiI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQ
dHI8RGF0YUxvYWRlckNhbGxiYWNrPiBkYXRhTG9hZGVyQ2FsbGJhY2sgPSBEYXRhTG9hZGVyQ2Fs
bGJhY2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgaW5qZWN0ZWRTY3Jp
cHQsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBw
YWdlU2l6ZSk7CisgICAgZGF0YUxvYWRlckNhbGxiYWNrLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgZG9jdW1lbnQtPmZyYW1lKCksIGRhdGFiYXNlTmFtZSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCAxYjQ2ZGQxNDM2ZWEzMDRm
NGUyNDUyMDA5YTk4MzM2ZmJjYmZjMDhhLi5iMTllZDZlNWY1YjBjMzM3MmJlODYwZTM1M2Y4YWYy
ZmVhNGI3MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2Vu
dDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CkBAIC00Nyw5ICs0OCw5IEBAIGNsYXNz
IEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JJbmRleGVkREJBZ2VuCiBwdWJsaWM6CiAgICAgY2xhc3MgRnJvbnRlbmRQcm92aWRlcjsK
IAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50PiBjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUq
IHN0YXRlLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgcGFnZUFnZW50KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoaW5zdHJ1bWVu
dGluZ0FnZW50cywgc3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlciwgcGFnZUFnZW50KSk7CiAg
ICAgfQogICAgIH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCkBAIC02Miw5ICs2MywxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZShFcnJvclN0cmluZyosIGlu
dCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3REYXRhYmFzZShFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3Rv
cmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VT
aXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UpOwogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVj
dG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKIAorICAgIEluamVjdGVkU2NyaXB0TWFu
YWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3Zp
ZGVyOwogICAgIGJvb2wgbV9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKaW5kZXggNzU3MTZkMmQxNjczNjA2ZjYz
ZDNiY2M5ZmM3YTU2N2FkZGM3MThjNi4uYzYzZWU5MzMxMDg1YWJmNjA0MjNmYjdlYmJhN2UxZDUy
YzhhM2Y2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luZGV4ZWREQk1vZGVsLmpzCkBAIC00Niw2ICs0Niw4NCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5yZWZyZXNoRGF0YWJhc2VOYW1lcygpOwog
fQogCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMgPSB7CisgICAgTnVtYmVy
VHlwZTogICJudW1iZXIiLAorICAgIFN0cmluZ1R5cGU6ICAic3RyaW5nIiwKKyAgICBEYXRlVHlw
ZTogICAgImRhdGUiLAorICAgIEFycmF5VHlwZTogICAiYXJyYXkiCit9OworCisvKioKKyAqIEBw
YXJhbSB7SW5kZXhlZERCQWdlbnQuS2V5fSBrZXkKKyAqLworV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLmlkYktleUZyb21LZXkgPSBmdW5jdGlvbihrZXkpCit7CisgICAgdmFyIGlkYktleTsK
KyAgICBzd2l0Y2ggKGtleS50eXBlKSB7CisgICAgY2FzZSBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwuS2V5VHlwZXMuTnVtYmVyVHlwZToKKyAgICAgICAgaWRiS2V5ID0ga2V5Lm51bWJlcjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5
VHlwZXMuU3RyaW5nVHlwZToKKyAgICAgICAgaWRiS2V5ID0ga2V5LnN0cmluZzsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuRGF0
ZVR5cGU6CisgICAgICAgIGlkYktleSA9IG5ldyBEYXRlKGtleS5kYXRlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuS2V5VHlwZXMuQXJyYXlU
eXBlOgorICAgICAgICBpZGJLZXkgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBr
ZXkubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBpZGJLZXkucHVzaChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtleShrZXkuYXJyYXlbaV0pKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiBpZGJLZXk7Cit9CisKK1dlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5rZXlGcm9tSURCS2V5ID0gZnVuY3Rpb24oaWRiS2V5KQoreworICAgIGlmICh0eXBlb2Yo
aWRiS2V5KSA9PT0gInVuZGVmaW5lZCIgfHwgaWRiS2V5ID09PSBudWxsKQorICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICAKKyAgICB2YXIga2V5ID0ge307CisgICAgc3dpdGNoICh0eXBlb2YoaWRi
S2V5KSkgeworICAgIGNhc2UgIm51bWJlciI6CisgICAgICAgIGtleS5udW1iZXIgPSBpZGJLZXk7
CisgICAgICAgIGtleS50eXBlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVz
Lk51bWJlclR5cGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgInN0cmluZyI6CisgICAgICAg
IGtleS5zdHJpbmcgPSBpZGJLZXk7CisgICAgICAgIGtleS50eXBlID0gV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLktleVR5cGVzLlN0cmluZ1R5cGU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgIm9iamVjdCI6CisgICAgICAgIGlmIChpZGJLZXkgaW5zdGFuY2VvZiBEYXRlKSB7CisgICAg
ICAgICAgICBrZXkuZGF0ZSA9IGlkYktleS5nZXRUaW1lKCk7CisgICAgICAgICAgICBrZXkudHlw
ZSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5LZXlUeXBlcy5EYXRlVHlwZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChpZGJLZXkgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAga2V5
LmFycmF5ID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkYktleS5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgICAgICBrZXkuYXJyYXkucHVzaChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwua2V5RnJvbUlEQktleShpZGJLZXlbaV0pKTsKKyAgICAgICAgICAgIGtleS50
eXBlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLkFycmF5VHlwZTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICB9CisgICAgcmV0dXJuIGtleTsKK30KKworV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1v
ZGVsLmtleVJhbmdlRnJvbUlEQktleVJhbmdlID0gZnVuY3Rpb24oaWRiS2V5UmFuZ2UpCit7Cisg
ICAgdmFyIElEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJ
REJLZXlSYW5nZTsKKyAgICBpZiAodHlwZW9mKGlkYktleVJhbmdlKSA9PT0gInVuZGVmaW5lZCIg
fHwgaWRiS2V5UmFuZ2UgPT09IG51bGwpCisgICAgICAgIHJldHVybiBudWxsOworICAgIAorICAg
IHZhciBrZXlSYW5nZSA9IHt9OworICAgIGtleVJhbmdlLmxvd2VyID0gV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLmtleUZyb21JREJLZXkoaWRiS2V5UmFuZ2UubG93ZXIpOworICAgIGtleVJh
bmdlLnVwcGVyID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleUZyb21JREJLZXkoaWRi
S2V5UmFuZ2UudXBwZXIpOworICAgIGtleVJhbmdlLmxvd2VyT3BlbiA9IGlkYktleVJhbmdlLmxv
d2VyT3BlbjsKKyAgICBrZXlSYW5nZS51cHBlck9wZW4gPSBpZGJLZXlSYW5nZS51cHBlck9wZW47
CisgICAgcmV0dXJuIGtleVJhbmdlOworfQorCiBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
cHJvdG90eXBlID0gewogICAgIHJlZnJlc2hEYXRhYmFzZU5hbWVzOiBmdW5jdGlvbigpCiAgICAg
ewpAQCAtMjYzLDYgKzM0MSw2NyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFn
ZXIucmVxdWVzdERhdGFiYXNlKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgY2FsbGJhY2suYmluZCh0
aGlzKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlk
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBvYmplY3RTdG9yZU5hbWUKKyAgICAgKiBAcGFyYW0ge3dlYmtpdElEQktleVJhbmdlfSBp
ZGJLZXlSYW5nZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwQ291bnQKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gcGFnZVNpemUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKKyAgICAg
Ki8KKyAgICBsb2FkT2JqZWN0U3RvcmVEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5h
bWUsIG9iamVjdFN0b3JlTmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPElu
ZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59IGRhdGFFbnRyaWVzCisgICAgICAgICAqIEBwYXJhbSB7
Ym9vbGVhbn0gaGFzTW9yZQorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxs
YmFjayhkYXRhRW50cmllcywgaGFzTW9yZSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGVu
dHJpZXMgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YUVudHJpZXMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIga2V5ID0gV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkoZGF0YUVudHJpZXNbaV0ua2V5KTsKKyAgICAgICAg
ICAgICAgICB2YXIgcHJpbWFyeUtleSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJL
ZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ldLnByaW1hcnlLZXkpOworICAgICAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZGF0YUVudHJp
ZXNbaV0udmFsdWUpOworICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChuZXcgV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLkVudHJ5KGtleSwgcHJpbWFyeUtleSwgdmFsdWUpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGNhbGxiYWNrKGVudHJpZXMsIGhhc01vcmUpOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucmVxdWVzdE9iamVj
dFN0b3JlRGF0YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaWRiS2V5
UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVyQ2FsbGJhY2spOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBkYXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1l
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0
SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3Vu
dAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oQXJyYXkuPFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeT4sIGJvb2xlYW4pfSBj
YWxsYmFjaworICAgICAqLworICAgIGxvYWRJbmRleERhdGE6IGZ1bmN0aW9uKGZyYW1lSWQsIGRh
dGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lw
Q291bnQsIHBhZ2VTaXplLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAg
KiBAcGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcwor
ICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc01vcmUKKyAgICAgICAgICovCisgICAgICAg
IGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZGF0YUVudHJpZXMsIGhhc01vcmUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBlbnRyaWVzID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGRhdGFFbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGtl
eSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5pZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVz
W2ldLmtleSk7CisgICAgICAgICAgICAgICAgdmFyIHByaW1hcnlLZXkgPSBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtleShkYXRhRW50cmllc1tpXS5wcmltYXJ5S2V5KTsK
KyAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZy
b21QYXlsb2FkKGRhdGFFbnRyaWVzW2ldLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbnRyaWVz
LnB1c2gobmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeShrZXksIHByaW1hcnlL
ZXksIHZhbHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWxsYmFjayhlbnRyaWVz
LCBoYXNNb3JlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2luZGV4ZWREQlJlcXVlc3RN
YW5hZ2VyLnJlcXVlc3RJbmRleERhdGEoZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVy
Q2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfQogfQogCkBAIC0yNzAsNiArNDA5LDE5IEBAIFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0g
eyp9IGtleQorICogQHBhcmFtIHsqfSBwcmltYXJ5S2V5CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3R9IHZhbHVlCisgKi8KK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5F
bnRyeSA9IGZ1bmN0aW9uKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpCit7CisgICAgdGhpcy5rZXkg
PSBrZXk7CisgICAgdGhpcy5wcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsKKyAgICB0aGlzLnZhbHVl
ID0gdmFsdWU7Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge3N0cmluZ30g
ZnJhbWVJZAogICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCiAgKi8KQEAgLTMyMyw3
ICs0NzUsOSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIgPSBmdW5jdGlv
bigpCiB7CiAgICAgdGhpcy5fbGFzdFJlcXVlc3RJZCA9IDA7CiAgICAgdGhpcy5fcmVxdWVzdERh
dGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrcyA9IHt9OwotCisgICAgdGhpcy5fcmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2tzID0ge307CisgICAgdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3MgPSB7
fTsKKyAgICAKICAgICBJbmRleGVkREJBZ2VudC5lbmFibGUoKTsKICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVySW5kZXhlZERCRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWRE
QkRpc3BhdGNoZXIodGhpcykpOwogfQpAQCAtMzk5LDYgKzU1Myw5MSBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBk
YXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1lCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURCS2V5
UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAq
LworICAgIF9yZXF1ZXN0RGF0YTogZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmpl
Y3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUs
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJ
ZCgpOworICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVx
dWVzdE1hbmFnZXIuRGF0YVJlcXVlc3QoZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIGluZGV4TmFtZSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YUNh
bGxiYWNrc1tyZXF1ZXN0SWRdID0gcmVxdWVzdDsgCisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJD
YWxsYmFjayhlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiSW5kZXhlZERCQWdlbnQgZXJyb3I6ICIgKyBlcnJv
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgdmFyIGtleVJhbmdlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJh
bmdlRnJvbUlEQktleVJhbmdlKGlkYktleVJhbmdlKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGEocmVxdWVzdElkLCBmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3Jl
TmFtZSwgaW5kZXhOYW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBrZXlSYW5nZSA/IGtleVJhbmdl
IDogdW5kZWZpbmVkLCBpbm5lckNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VO
YW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQorICAgICAqIEBwYXJh
bSB7d2Via2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHNraXBDb3VudAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBj
YWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RPYmplY3RTdG9yZURhdGE6IGZ1bmN0aW9uKGZy
YW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENv
dW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0
YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgIiIsIGlkYktleVJhbmdl
LCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFjayk7CisgICAgfSwKKyAgICAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCisgICAgICogQHBhcmFtIHtBcnJheS48
SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IGhhc01vcmUKKyAgICAgKi8KKyAgICBfb2JqZWN0U3RvcmVEYXRhTG9hZGVkOiBmdW5j
dGlvbihyZXF1ZXN0SWQsIGRhdGFFbnRyaWVzLCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgdmFy
IHJlcXVlc3QgPSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAg
ICBpZiAoIXJlcXVlc3QuY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGRhdGFFbnRyaWVzLCBoYXNNb3JlKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZGF0YWJhc2VOYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3Jl
TmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKKyAgICAgKiBAcGFyYW0ge3dl
YmtpdElEQktleVJhbmdlfSBpZGJLZXlSYW5nZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lw
Q291bnQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKEFycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+LCBib29sZWFuKX0gY2FsbGJh
Y2sKKyAgICAgKi8KKyAgICByZXF1ZXN0SW5kZXhEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRh
YmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENv
dW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0
YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJL
ZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spOworICAgIH0sCisgICAgCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7
QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59IGRhdGFFbnRyaWVzCisgICAgICogQHBh
cmFtIHtib29sZWFufSBoYXNNb3JlCisgICAgICovCisgICAgX2luZGV4RGF0YUxvYWRlZDogZnVu
Y3Rpb24ocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIHZh
ciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsKKyAgICAg
ICAgaWYgKCFyZXF1ZXN0LmNhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgcmVxdWVzdC5jYWxsYmFjayhkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAgfSwK
KworICAgIC8qKgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgKi8KICAgICBfcmVxdWVz
dElkOiBmdW5jdGlvbigpCkBAIC00MjAsNiArNjU5LDExIEBAIFdlYkluc3BlY3Rvci5JbmRleGVk
REJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKICAg
ICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVl
c3RJZF07CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAodmFyIHJlcXVlc3RJZCBp
biB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3Jl
cXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKKyAgICAg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVxdWVzdElkXTsK
KyAgICAgICAgfQogICAgIH0sCiAKICAgICAvKioKQEAgLTQzMSwxOSArNjc1LDI2IEBAIFdlYklu
c3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBpZiAodGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZnJhbWVJZCA9
PT0gZnJhbWVJZCAmJiB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXS5k
YXRhYmFzZU5hbWUgPT09IGRhdGFiYXNlTmFtZSkKICAgICAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF07CiAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGZvciAodmFyIHJlcXVlc3RJZCBpbiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxi
YWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVl
c3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCAmJiB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1ty
ZXF1ZXN0SWRdLmRhdGFiYXNlTmFtZSA9PT0gZGF0YWJhc2VOYW1lKQorICAgICAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAgICB9
CiAgICAgfSwKIAogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrcyA9IHt9OwogICAgICAgICB0aGlz
Ll9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3MgPSB7fTsKLQorICAgICAgICB0aGlzLl9yZXF1ZXN0
RGF0YUNhbGxiYWNrcyA9IHt9OwogICAgIH0KIH0KIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAq
LworICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oSW5kZXhl
ZERCQWdlbnQuU2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcyl9IGNhbGxiYWNrCisqLwog
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyLkRhdGFiYXNlc0ZvckZyYW1lUmVx
dWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxiYWNrKQogewogICAgIHRoaXMuZnJhbWVJZCA9
IGZyYW1lSWQ7CkBAIC00NTIsNiArNzAzLDkgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVl
c3RNYW5hZ2VyLkRhdGFiYXNlc0ZvckZyYW1lUmVxdWVzdCA9IGZ1bmN0aW9uKGZyYW1lSWQKIAog
LyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgKiBAcGFy
YW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisgKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4ZWREQkFn
ZW50LkRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcyl9IGNhbGxiYWNrCiAgKi8KIFdlYkluc3BlY3Rv
ci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5EYXRhYmFzZVJlcXVlc3QgPSBmdW5jdGlvbihmcmFt
ZUlkLCBkYXRhYmFzZU5hbWUsIGNhbGxiYWNrKQogewpAQCAtNDYyLDYgKzcxNiwyMyBAQCBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YWJhc2VSZXF1ZXN0ID0gZnVuY3Rp
b24oZnJhbWVJZCwgZGF0YWJhcwogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtz
dHJpbmd9IGZyYW1lSWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAqIEBwYXJh
bSB7c3RyaW5nfSBvYmplY3RTdG9yZU5hbWUKKyAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUK
KyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJv
b2xlYW4pfSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFn
ZXIuRGF0YVJlcXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0
b3JlTmFtZSwgaW5kZXhOYW1lLCBjYWxsYmFjaykKK3sKKyAgICB0aGlzLmZyYW1lSWQgPSBmcmFt
ZUlkOworICAgIHRoaXMuZGF0YWJhc2VOYW1lID0gZGF0YWJhc2VOYW1lOworICAgIHRoaXMub2Jq
ZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lOworICAgIHRoaXMuaW5kZXhOYW1lID0gaW5k
ZXhOYW1lOworICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKworLyoqCisgKiBAY29u
c3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtJbmRleGVkREJBZ2VudC5EaXNwYXRjaGVyfQogICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXJ9IGluZGV4ZWREQlJl
cXVlc3RNYW5hZ2VyCiAgKi8KQEAgLTQ4Nyw1ICs3NTgsMjUgQEAgV2ViSW5zcGVjdG9yLkluZGV4
ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIGRhdGFiYXNlTG9hZGVkOiBmdW5jdGlv
bihyZXF1ZXN0SWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykKICAgICB7CiAgICAgICAgIHRo
aXMuX2FnZW50V3JhcHBlci5fZGF0YWJhc2VMb2FkZWQocmVxdWVzdElkLCBkYXRhYmFzZVdpdGhP
YmplY3RTdG9yZXMpOworICAgIH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFF
bnRyeT59IGRhdGFFbnRyaWVzCisgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNNb3JlCisgICAg
ICovCisgICAgb2JqZWN0U3RvcmVEYXRhTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFF
bnRyaWVzLCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9vYmpl
Y3RTdG9yZURhdGFMb2FkZWQocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBA
cGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcworICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzTW9yZQorICAgICAqLworICAgIGluZGV4RGF0YUxvYWRl
ZDogZnVuY3Rpb24ocmVxdWVzdElkLCBkYXRhRW50cmllcywgaGFzTW9yZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2FnZW50V3JhcHBlci5faW5kZXhEYXRhTG9hZGVkKHJlcXVlc3RJZCwgZGF0YUVu
dHJpZXMsIGhhc01vcmUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYTZlNWJhMmUzZDA4ZGI0ZjczYmM4
MDljNDJhMjkxYTQ1OWQ3ZWQwLi4xOWI4OWNhZjEwMzRjMDQzMzAxNTkxMzhiMjEwZmNmMGZkZjc2
YjkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDItMTMgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0luc3BlY3Rv
ckluZGV4ZWREQl0gUGFzcyBkYXRhIGVudHJpZXMgZnJvbSBvYmplY3Qgc3RvcmVzIGFuZCBpbmRl
eGVzIHRvIGZyb250LWVuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4
ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRk
Yi10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJUZXN0Lkluc3BlY3RvclRl
c3QuZXZhbHVhdGVXaXRoQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRleGVkREJU
ZXN0Lkluc3BlY3RvclRlc3QuYWRkSURCVmFsdWUpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbmRl
eGVkREJUZXN0KToKKyAgICAgICAgKGRvV2l0aFJlYWRXcml0ZVRyYW5zYWN0aW9uLnN0ZXAyLmlu
bmVyQ29tbWl0Q2FsbGJhY2spOgorICAgICAgICAoZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24u
c3RlcDIpOgorICAgICAgICAoZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
YWRkSURCVmFsdWUuZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24ud2l0aFRyYW5zYWN0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAoYWRkSURCVmFsdWUpOgorCiAyMDEyLTAyLTE0ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRWxlbWVudHMgcGFuZWwg
bmVlZHMgdG8gYmUgYWJsZSB0byBwcmV2aWV3IGltYWdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNl
LWRhdGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkY2VlYzFmMGFkYWRjOGI0ODQ1MzljMzRl
MDAxMTA2YmEzMGU0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4NCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2syCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3Qu
SW5kZXhlZERCX2NhbGxiYWNrMworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JU
ZXN0LkluZGV4ZWREQl9jYWxsYmFjazQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVj
dG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s1CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IElu
c3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrNgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5
OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazcKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s4CitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrOQorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEwCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMTEKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sx
MgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxs
YmFjazEzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERC
X2NhbGxiYWNrMTQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2sxNQorVGVzdHMgdGhhdCBkYXRhIGlzIGNvcnJlY3RseSBsb2FkZWQgYnkg
SW5kZXhlZERCTW9kZWwgZnJvbSBJbmRleGVkREIgb2JqZWN0IHN0b3JlIGFuZCBpbmRleC4KKwor
RHVtcGluZyB2YWx1ZXMsIGZyb21JbmRleCA9IGZhbHNlLCBza2lwQ291bnQgPSAwLCBwYWdlU2l6
ZSA9IDMsIGlkYktleVJhbmdlID0gbnVsbAorICAgIEtleSA9IGtleV8wMSwgcHJpbWFyeUtleSA9
IGtleV8wMSwgdmFsdWUgPSB7ImtleSI6ImtleV8wMSIsInZhbHVlIjoidmFsdWVfMDEifQorICAg
IEtleSA9IGtleV8wMiwgcHJpbWFyeUtleSA9IGtleV8wMiwgdmFsdWUgPSB7ImtleSI6ImtleV8w
MiIsInZhbHVlIjoidmFsdWVfMDIifQorICAgIEtleSA9IGtleV8wMywgcHJpbWFyeUtleSA9IGtl
eV8wMywgdmFsdWUgPSB7ImtleSI6ImtleV8wMyIsInZhbHVlIjoidmFsdWVfMDMifQorICAgIGhh
c01vcmUgPSB0cnVlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3Vu
dCA9IDMsIHBhZ2VTaXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgS2V5ID0ga2V5XzA0
LCBwcmltYXJ5S2V5ID0ga2V5XzA0LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFsdWUiOiJ2
YWx1ZV8wNCJ9CisgICAgS2V5ID0ga2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2YWx1ZSA9
IHsia2V5Ijoia2V5XzA1IiwidmFsdWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5XzA2LCBw
cmltYXJ5S2V5ID0ga2V5XzA2LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUiOiJ2YWx1
ZV8wNiJ9CisgICAgaGFzTW9yZSA9IHRydWUKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBm
YWxzZSwgc2tpcENvdW50ID0gNiwgcGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwKKyAg
ICBLZXkgPSBrZXlfMDcsIHByaW1hcnlLZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlf
MDciLCJ2YWx1ZSI6InZhbHVlXzA3In0KKyAgICBLZXkgPSBrZXlfMDgsIHByaW1hcnlLZXkgPSBr
ZXlfMDgsIHZhbHVlID0geyJrZXkiOiJrZXlfMDgiLCJ2YWx1ZSI6InZhbHVlXzA4In0KKyAgICBL
ZXkgPSBrZXlfMDksIHByaW1hcnlLZXkgPSBrZXlfMDksIHZhbHVlID0geyJrZXkiOiJrZXlfMDki
LCJ2YWx1ZSI6InZhbHVlXzA5In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVz
LCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gNywgcGFnZVNpemUgPSAzLCBpZGJLZXlS
YW5nZSA9IG51bGwKKyAgICBLZXkgPSBrZXlfMDgsIHByaW1hcnlLZXkgPSBrZXlfMDgsIHZhbHVl
ID0geyJrZXkiOiJrZXlfMDgiLCJ2YWx1ZSI6InZhbHVlXzA4In0KKyAgICBLZXkgPSBrZXlfMDks
IHByaW1hcnlLZXkgPSBrZXlfMDksIHZhbHVlID0geyJrZXkiOiJrZXlfMDkiLCJ2YWx1ZSI6InZh
bHVlXzA5In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXgg
PSBmYWxzZSwgc2tpcENvdW50ID0gOSwgcGFnZVNpemUgPSAzLCBpZGJLZXlSYW5nZSA9IG51bGwK
KyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwg
c2tpcENvdW50ID0gMTAsIHBhZ2VTaXplID0gMywgaWRiS2V5UmFuZ2UgPSBudWxsCisgICAgaGFz
TW9yZSA9IGZhbHNlCitEdW1waW5nIHZhbHVlcywgZnJvbUluZGV4ID0gZmFsc2UsIHNraXBDb3Vu
dCA9IDAsIHBhZ2VTaXplID0gNCwgaWRiS2V5UmFuZ2UgPSB7InVwcGVyIjoia2V5XzA3IiwidXBw
ZXJPcGVuIjpmYWxzZSwibG93ZXJPcGVuIjp0cnVlLCJsb3dlciI6ImtleV8wMiJ9CisgICAgS2V5
ID0ga2V5XzAzLCBwcmltYXJ5S2V5ID0ga2V5XzAzLCB2YWx1ZSA9IHsia2V5Ijoia2V5XzAzIiwi
dmFsdWUiOiJ2YWx1ZV8wMyJ9CisgICAgS2V5ID0ga2V5XzA0LCBwcmltYXJ5S2V5ID0ga2V5XzA0
LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA0IiwidmFsdWUiOiJ2YWx1ZV8wNCJ9CisgICAgS2V5ID0g
a2V5XzA1LCBwcmltYXJ5S2V5ID0ga2V5XzA1LCB2YWx1ZSA9IHsia2V5Ijoia2V5XzA1IiwidmFs
dWUiOiJ2YWx1ZV8wNSJ9CisgICAgS2V5ID0ga2V5XzA2LCBwcmltYXJ5S2V5ID0ga2V5XzA2LCB2
YWx1ZSA9IHsia2V5Ijoia2V5XzA2IiwidmFsdWUiOiJ2YWx1ZV8wNiJ9CisgICAgaGFzTW9yZSA9
IHRydWUKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMCwg
cGFnZVNpemUgPSA1LCBpZGJLZXlSYW5nZSA9IHsidXBwZXIiOiJrZXlfMDciLCJ1cHBlck9wZW4i
OmZhbHNlLCJsb3dlck9wZW4iOnRydWUsImxvd2VyIjoia2V5XzAyIn0KKyAgICBLZXkgPSBrZXlf
MDMsIHByaW1hcnlLZXkgPSBrZXlfMDMsIHZhbHVlID0geyJrZXkiOiJrZXlfMDMiLCJ2YWx1ZSI6
InZhbHVlXzAzIn0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZhbHVl
ID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlfMDUs
IHByaW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6InZh
bHVlXzA1In0KKyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVlID0g
eyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBLZXkgPSBrZXlfMDcsIHBy
aW1hcnlLZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZhbHVl
XzA3In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSBm
YWxzZSwgc2tpcENvdW50ID0gMCwgcGFnZVNpemUgPSA2LCBpZGJLZXlSYW5nZSA9IHsidXBwZXIi
OiJrZXlfMDciLCJ1cHBlck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRydWUsImxvd2VyIjoia2V5
XzAyIn0KKyAgICBLZXkgPSBrZXlfMDMsIHByaW1hcnlLZXkgPSBrZXlfMDMsIHZhbHVlID0geyJr
ZXkiOiJrZXlfMDMiLCJ2YWx1ZSI6InZhbHVlXzAzIn0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1h
cnlLZXkgPSBrZXlfMDQsIHZhbHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0
In0KKyAgICBLZXkgPSBrZXlfMDUsIHByaW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXki
OiJrZXlfMDUiLCJ2YWx1ZSI6InZhbHVlXzA1In0KKyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlL
ZXkgPSBrZXlfMDYsIHZhbHVlID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0K
KyAgICBLZXkgPSBrZXlfMDcsIHByaW1hcnlLZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJr
ZXlfMDciLCJ2YWx1ZSI6InZhbHVlXzA3In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcg
dmFsdWVzLCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMSwgcGFnZVNpemUgPSA0LCBp
ZGJLZXlSYW5nZSA9IHsidXBwZXIiOiJrZXlfMDciLCJ1cHBlck9wZW4iOmZhbHNlLCJsb3dlck9w
ZW4iOnRydWUsImxvd2VyIjoia2V5XzAyIn0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkg
PSBrZXlfMDQsIHZhbHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAg
ICBLZXkgPSBrZXlfMDUsIHByaW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlf
MDUiLCJ2YWx1ZSI6InZhbHVlXzA1In0KKyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBr
ZXlfMDYsIHZhbHVlID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBL
ZXkgPSBrZXlfMDcsIHByaW1hcnlLZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDci
LCJ2YWx1ZSI6InZhbHVlXzA3In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVz
LCBmcm9tSW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMSwgcGFnZVNpemUgPSA1LCBpZGJLZXlS
YW5nZSA9IHsidXBwZXIiOiJrZXlfMDciLCJ1cHBlck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRy
dWUsImxvd2VyIjoia2V5XzAyIn0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlf
MDQsIHZhbHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkg
PSBrZXlfMDUsIHByaW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2
YWx1ZSI6InZhbHVlXzA1In0KKyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYs
IHZhbHVlID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBLZXkgPSBr
ZXlfMDcsIHByaW1hcnlLZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1
ZSI6InZhbHVlXzA3In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9t
SW5kZXggPSBmYWxzZSwgc2tpcENvdW50ID0gMSwgcGFnZVNpemUgPSA2LCBpZGJLZXlSYW5nZSA9
IHsidXBwZXIiOiJrZXlfMDciLCJ1cHBlck9wZW4iOmZhbHNlLCJsb3dlck9wZW4iOnRydWUsImxv
d2VyIjoia2V5XzAyIn0KKyAgICBLZXkgPSBrZXlfMDQsIHByaW1hcnlLZXkgPSBrZXlfMDQsIHZh
bHVlID0geyJrZXkiOiJrZXlfMDQiLCJ2YWx1ZSI6InZhbHVlXzA0In0KKyAgICBLZXkgPSBrZXlf
MDUsIHByaW1hcnlLZXkgPSBrZXlfMDUsIHZhbHVlID0geyJrZXkiOiJrZXlfMDUiLCJ2YWx1ZSI6
InZhbHVlXzA1In0KKyAgICBLZXkgPSBrZXlfMDYsIHByaW1hcnlLZXkgPSBrZXlfMDYsIHZhbHVl
ID0geyJrZXkiOiJrZXlfMDYiLCJ2YWx1ZSI6InZhbHVlXzA2In0KKyAgICBLZXkgPSBrZXlfMDcs
IHByaW1hcnlLZXkgPSBrZXlfMDcsIHZhbHVlID0geyJrZXkiOiJrZXlfMDciLCJ2YWx1ZSI6InZh
bHVlXzA3In0KKyAgICBoYXNNb3JlID0gZmFsc2UKK0R1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXgg
PSB0cnVlLCBza2lwQ291bnQgPSAwLCBwYWdlU2l6ZSA9IDMsIGlkYktleVJhbmdlID0gbnVsbAor
ICAgIEtleSA9IHZhbHVlXzAxLCBwcmltYXJ5S2V5ID0ga2V5XzAxLCB2YWx1ZSA9IHsia2V5Ijoi
a2V5XzAxIiwidmFsdWUiOiJ2YWx1ZV8wMSJ9CisgICAgS2V5ID0gdmFsdWVfMDIsIHByaW1hcnlL
ZXkgPSBrZXlfMDIsIHZhbHVlID0geyJrZXkiOiJrZXlfMDIiLCJ2YWx1ZSI6InZhbHVlXzAyIn0K
KyAgICBLZXkgPSB2YWx1ZV8wMywgcHJpbWFyeUtleSA9IGtleV8wMywgdmFsdWUgPSB7ImtleSI6
ImtleV8wMyIsInZhbHVlIjoidmFsdWVfMDMifQorICAgIGhhc01vcmUgPSB0cnVlCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFz
ZS1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIv
ZGF0YWJhc2UtZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMmUzZmZhMDMyYWZhNGJiMjVjNzJmZDU3
OTExMzExY2I4NzQyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCkBAIC0wLDAgKzEsMjAxIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJpbmRleGVkZGItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIElEQktleVJhbmdlID0gd2luZG93LklEQktl
eVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsKKyAgICB2YXIgaW5kZXhlZERCTW9k
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsKCk7CisgICAgdmFyIG1haW5GcmFt
ZUlkID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZS5pZDsKKyAgICB2
YXIgZGF0YWJhc2VOYW1lID0gInRlc3REYXRhYmFzZSI7CisgICAgdmFyIG9iamVjdFN0b3JlTmFt
ZSA9ICJ0ZXN0T2JqZWN0U3RvcmUiOworICAgIHZhciBpbmRleE5hbWUgPSAidGVzdEluZGV4TmFt
ZSI7CisKKyAgICBmdW5jdGlvbiBhZGRJREJWYWx1ZXMoY291bnQsIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgdmFyIGkgPSAwOworICAgICAgICBhZGRWYWx1ZXMoKTsKKworICAgICAgICBmdW5j
dGlvbiBhZGRWYWx1ZXMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaSA9PSBjb3VudCkg
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgKytpOworICAgICAgICAgICAgdmFyIGlkID0gaSA8
IDEwID8gIjAiICsgaSA6IGk7CisgICAgICAgICAgICB2YXIga2V5ID0gImtleV8iICsgaWQ7Cisg
ICAgICAgICAgICB2YXIgdmFsdWUgPSAidmFsdWVfIiArIGlkOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRJREJWYWx1ZShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIHsga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSB9LCAiIiwgYWRkVmFsdWVzKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGxvYWRWYWx1ZXNBbmREdW1wKGZyb21JbmRleCwg
aWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkR1bXBpbmcgdmFsdWVzLCBmcm9tSW5kZXggPSAi
ICsgZnJvbUluZGV4ICsgIiwgc2tpcENvdW50ID0gIiArIHNraXBDb3VudCArICIsIHBhZ2VTaXpl
ID0gIiArIHBhZ2VTaXplICsgIiwgaWRiS2V5UmFuZ2UgPSAiICsgSlNPTi5zdHJpbmdpZnkoaWRi
S2V5UmFuZ2UpKTsKKyAgICAgICAgaWYgKGZyb21JbmRleCkKKyAgICAgICAgICAgIGluZGV4ZWRE
Qk1vZGVsLmxvYWRJbmRleERhdGEobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3Rv
cmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBpbm5l
ckNhbGxiYWNrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5kZXhlZERCTW9kZWwubG9h
ZE9iamVjdFN0b3JlRGF0YShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5h
bWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBpbm5lckNhbGxiYWNrKTsKKwor
ICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVudHJpZXMsIGhhc01vcmUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgZW50cnk7Cisg
ICAgICAgICAgICBkdW1wRW50cmllcygpOworCisgICAgICAgICAgICBmdW5jdGlvbiBkdW1wRW50
cmllcygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBlbnRy
aWVzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiICAgIGhhc01vcmUgPSAiICsgaGFzTW9yZSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4XTsKKyAgICAgICAgICAgICAgICBl
bnRyeS52YWx1ZS5jYWxsRnVuY3Rpb25KU09OKGR1bXBNZSwgZHVtcGVkLmJpbmQodGhpcykpOwor
ICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGR1bXBNZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpT
T04uc3RyaW5naWZ5KHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBkdW1wZWQodmFsdWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIiAgICBLZXkgPSAiICsgZW50cnkua2V5ICsgIiwgcHJpbWFyeUtleSA9
ICIgKyBlbnRyeS5wcmltYXJ5S2V5ICsgIiwgdmFsdWUgPSAiICsgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGR1bXBFbnRyaWVzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3Bh
dGNoZXIucHJvdG90eXBlLCAiZGF0YWJhc2VOYW1lc0xvYWRlZCIsIGZpbGxEYXRhYmFzZSwgZmFs
c2UpOworCisgICAgZnVuY3Rpb24gZmlsbERhdGFiYXNlKCkKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY3JlYXRlRGF0YWJhc2UobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgc3RlcDIp
OworCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jcmVhdGVPYmplY3RTdG9yZShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBv
YmplY3RTdG9yZU5hbWUsICJrZXkiLCB0cnVlLCBzdGVwMyk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y3JlYXRlT2JqZWN0U3RvcmVJbmRleChtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RT
dG9yZU5hbWUsIGluZGV4TmFtZSwgInZhbHVlIiwgZmFsc2UsIHRydWUsIHN0ZXA0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KCkKKyAgICAgICAgeworICAgICAgICAgICAg
YWRkSURCVmFsdWVzKDksIHJlZnJlc2hEYXRhYmFzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiByZWZyZXNoRGF0YWJhc2UoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZSwg
ImRhdGFiYXNlTG9hZGVkIiwgcnVuT2JqZWN0U3RvcmVUZXN0cywgZmFsc2UpOworICAgICAgICBp
bmRleGVkREJNb2RlbC5yZWZyZXNoRGF0YWJhc2UobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuT2JqZWN0U3RvcmVUZXN0cygpCisgICAgeworICAg
ICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgbnVsbCwgMCwgMywgc3RlcDIpCisKKyAgICAg
ICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5k
RHVtcChmYWxzZSwgbnVsbCwgMywgMywgc3RlcDMpCisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzdGVwMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZh
bHNlLCBudWxsLCA2LCAzLCBzdGVwNCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
dGVwNCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBu
dWxsLCA3LCAzLCBzdGVwNSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwNSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBudWxsLCA5
LCAzLCBzdGVwNik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwNigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBudWxsLCAxMCwgMywg
c3RlcDcpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDcoKQorICAgICAgICB7
CisgICAgICAgICAgICBsb2FkVmFsdWVzQW5kRHVtcChmYWxzZSwgSURCS2V5UmFuZ2UuYm91bmQo
ImtleV8wMiIsICJrZXlfMDciLCB0cnVlLCBmYWxzZSksIDAsIDQsIHN0ZXA4KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXA4KCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9h
ZFZhbHVlc0FuZER1bXAoZmFsc2UsIElEQktleVJhbmdlLmJvdW5kKCJrZXlfMDIiLCAia2V5XzA3
IiwgdHJ1ZSwgZmFsc2UpLCAwLCA1LCBzdGVwOSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzdGVwOSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZh
bHNlLCBJREJLZXlSYW5nZS5ib3VuZCgia2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwg
MCwgNiwgc3RlcDEwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxMCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlSYW5n
ZS5ib3VuZCgia2V5XzAyIiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwgMSwgNCwgc3RlcDExKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxMSgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGxvYWRWYWx1ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlSYW5nZS5ib3VuZCgia2V5XzAy
IiwgImtleV8wNyIsIHRydWUsIGZhbHNlKSwgMSwgNSwgc3RlcDEyKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAxMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRWYWx1
ZXNBbmREdW1wKGZhbHNlLCBJREJLZXlSYW5nZS5ib3VuZCgia2V5XzAyIiwgImtleV8wNyIsIHRy
dWUsIGZhbHNlKSwgMSwgNiwgc3RlcDEzKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHN0ZXAxMygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJ1bkluZGV4VGVzdHMoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bkluZGV4VGVzdHMoKQorICAgIHsKKyAgICAg
ICAgbG9hZFZhbHVlc0FuZER1bXAodHJ1ZSwgbnVsbCwgMCwgMywgc3RlcDIpCisKKyAgICAgICAg
ZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICB7CisgICAgICAgICAgICBjbGVhckRhdGFiYXNlKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBjbGVhckRhdGFiYXNlKCkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuZGVsZXRlT2JqZWN0U3RvcmVJbmRleChtYWluRnJhbWVJ
ZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgc3RlcDIpOworCisg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kZWxldGVPYmplY3RTdG9yZShtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RT
dG9yZU5hbWUsIHN0ZXAzKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
KyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kZWxldGVEYXRhYmFzZShtYWlu
RnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBzdGVwNCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzdGVwNCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIHRoYXQgZGF0YSBpcyBjb3JyZWN0bHkgbG9h
ZGVkIGJ5IEluZGV4ZWREQk1vZGVsIGZyb20gSW5kZXhlZERCIG9iamVjdCBzdG9yZSBhbmQgaW5k
ZXguPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy1l
eHBlY3RlZC50eHQKaW5kZXggMGZiMzQ0ZDBjM2RhNDlkYTU2MDM1NTgzYWMyOTk0NjQzYTE2MDll
Ny4uZWNmODAyNzAzNDc0Njg5MTczOWM0OWU0Y2M2Y2QxYTQ5N2UxZmRjNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRl
eGVkZGIvZGF0YWJhc2UtbmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sy
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxi
YWNrMwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9j
YWxsYmFjazQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVk
REJfY2FsbGJhY2sxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5k
ZXhlZERCX2NhbGxiYWNrMgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0
LkluZGV4ZWREQl9jYWxsYmFjazMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9y
VGVzdC5JbmRleGVkREJfY2FsbGJhY2s0CiBUZXN0cyB0aGF0IGRhdGFiYXNlIG5hbWVzIGFyZSBj
b3JyZWN0bHkgbG9hZGVkIGFuZCBzYXZlZCBpbiBJbmRleGVkREJNb2RlbC4KIAogRHVtcGluZyBk
YXRhYmFzZSBuYW1lczoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBl
Y3RlZC50eHQKaW5kZXggMDI4NWFjNDIyMDJhYTI3NDExMTdhMzQzNzZlZDQ4YTYyODcyYTQyOC4u
Zjg2YmEwZjgxMjk2OTMxZTMzOTYzMTg3YzU0MjQzYTAxNTQ3Njg4MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVy
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5k
ZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsMTMgQEAK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJh
Y2sxCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2Nh
bGxiYWNrMgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazMKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2s0Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IEluc3BlY3RvclRlc3Qu
SW5kZXhlZERCX2NhbGxiYWNrNQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3OiBJbnNwZWN0b3JU
ZXN0LkluZGV4ZWREQl9jYWxsYmFjazYKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NzogSW5zcGVj
dG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2s3Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzc6IElu
c3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrOAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc3
OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazkKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSA3NzogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2sxMAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazEKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJhY2syCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2NhbGxiYWNrMworQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWREQl9jYWxsYmFjazQK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRleGVkREJfY2FsbGJh
Y2s1CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3QuSW5kZXhlZERCX2Nh
bGxiYWNrNgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JUZXN0LkluZGV4ZWRE
Ql9jYWxsYmFjazcKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3OTogSW5zcGVjdG9yVGVzdC5JbmRl
eGVkREJfY2FsbGJhY2s4CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IEluc3BlY3RvclRlc3Qu
SW5kZXhlZERCX2NhbGxiYWNrOQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc5OiBJbnNwZWN0b3JU
ZXN0LkluZGV4ZWREQl9jYWxsYmFjazEwCiBUZXN0cyB0aGF0IGRhdGFiYXNlIG5hbWVzIGFyZSBj
b3JyZWN0bHkgbG9hZGVkIGFuZCBzYXZlZCBpbiBJbmRleGVkREJNb2RlbC4KIAogRHVtcGluZyBk
YXRhYmFzZToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
ZGV4ZWRkYi9pbmRleGVkZGItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luZGV4ZWRkYi9pbmRleGVkZGItdGVzdC5qcwppbmRleCAwMjg1YTBlN2UxOTA2NDdlZjE2
ZjNlMThmNzlmMWNmY2Q3MzgxYWJlLi42MDYwMmVmNTBiMDQxZWQzZGQ1ZTI4MDBkNDViMmE3OWJk
Njk5MjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRl
eGVkZGIvaW5kZXhlZGRiLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5kZXhlZGRiL2luZGV4ZWRkYi10ZXN0LmpzCkBAIC0xMSwxMiArMTEsOCBAQCBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlV2l0aENhbGxiYWNrID0gZnVuY3Rpb24oZnJhbWVJZCwgbWV0aG9k
TmFtZSwgcGFyYW1ldGVycywgYwogICAgIHZhciBjYWxsYmFja0lkID0gKytsYXN0Q2FsbGJhY2tJ
ZDsKICAgICBjYWxsYmFja3NbY2FsbGJhY2tJZF0gPSBjYWxsYmFjazsKICAgICB2YXIgcGFyYW1l
dGVyc1N0cmluZyA9ICJcIiIgKyBjYWxsYmFja0lkUHJlZml4ICsgY2FsbGJhY2tJZCArICJcIiI7
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIGlmICh0eXBlb2YocGFyYW1ldGVyc1tpXSkgPT09ICJzdHJpbmciKQotICAgICAgICAgICAg
cGFyYW1ldGVyc1N0cmluZyArPSAiLCBcIiIgKyBwYXJhbWV0ZXJzW2ldICsgIlwiIjsKLSAgICAg
ICAgZWxzZSBpZiAoKHR5cGVvZihwYXJhbWV0ZXJzW2ldKSA9PT0gIm51bWJlciIpIHx8ICh0eXBl
b2YocGFyYW1ldGVyc1tpXSkgPT09ICJib29sZWFuIikpCi0gICAgICAgICAgICBwYXJhbWV0ZXJz
U3RyaW5nICs9ICIsICIgKyBwYXJhbWV0ZXJzW2ldOwotICAgIH0KKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpCisgICAgICAgIHBhcmFtZXRlcnNTdHJpbmcg
Kz0gIiwgIiArIEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnNbaV0pOwogCiAgICAgdmFyIHJlcXVl
c3RTdHJpbmcgPSBtZXRob2ROYW1lICsgIigiICsgcGFyYW1ldGVyc1N0cmluZyArICIpIjsKICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKHJlcXVlc3RTdHJpbmcpOwpAQCAtNjgsOSAr
NjQsMTUgQEAgSW5zcGVjdG9yVGVzdC5kZWxldGVPYmplY3RTdG9yZUluZGV4ID0gZnVuY3Rpb24o
ZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG8KICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlV2l0aENhbGxiYWNrKGZyYW1lSWQsICJkZWxldGVPYmplY3RTdG9yZUluZGV4IiwgW2RhdGFi
YXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBvYmplY3RTdG9yZUluZGV4TmFtZV0sIGNhbGxiYWNr
KQogfTsKIAorSW5zcGVjdG9yVGVzdC5hZGRJREJWYWx1ZSA9IGZ1bmN0aW9uKGZyYW1lSWQsIGRh
dGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCB2YWx1ZSwga2V5LCBjYWxsYmFjaykKK3sKKyAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlV2l0aENhbGxiYWNrKGZyYW1lSWQsICJhZGRJREJWYWx1
ZSIsIFtkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgdmFsdWUsIGtleV0sIGNhbGxiYWNr
KQorfTsKKwogfTsKIAogdmFyIGluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkZGIgfHwgd2luZG93
LndlYmtpdEluZGV4ZWREQjsKK3ZhciBJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2Fj
dGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb247CiAKIGZ1bmN0aW9uIGRpc3BhdGNo
Q2FsbGJhY2soY2FsbGJhY2tJZCkKIHsKQEAgLTExNiw2ICsxMTgsMjQgQEAgZnVuY3Rpb24gZG9X
aXRoVmVyc2lvblRyYW5zYWN0aW9uKGRhdGFiYXNlTmFtZSwgY2FsbGJhY2ssIGNvbW1pdENhbGxi
YWNrKQogICAgIH0KIH0KIAorZnVuY3Rpb24gZG9XaXRoUmVhZFdyaXRlVHJhbnNhY3Rpb24oZGF0
YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrLCBjb21taXRDYWxsYmFjaykKK3sK
KyAgICBkb1dpdGhEYXRhYmFzZShkYXRhYmFzZU5hbWUsIHN0ZXAyKTsKKworICAgIGZ1bmN0aW9u
IHN0ZXAyKGRiKQorICAgIHsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oW29iamVjdFN0b3JlTmFtZV0sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpOworICAgICAg
ICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpOworICAgICAgICBjYWxsYmFjayhvYmplY3RTdG9yZSwgaW5uZXJDb21taXRDYWxsYmFjayk7
CisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDb21taXRDYWxsYmFjaygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRiLmNsb3NlKCk7CisgICAgICAgICAgICBjb21taXRDYWxsYmFjaygpOworICAg
ICAgICB9CisgICAgfQorfQorCiBmdW5jdGlvbiBjcmVhdGVEYXRhYmFzZShjYWxsYmFja0lkLCBk
YXRhYmFzZU5hbWUpCiB7CiAgICAgdmFyIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYXRhYmFz
ZU5hbWUsIDApOwpAQCAtMTc4LDMgKzE5OCwxOSBAQCBmdW5jdGlvbiBkZWxldGVPYmplY3RTdG9y
ZUluZGV4KGNhbGxiYWNrSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBvYmplYwog
ICAgIH0KIH0KIAorZnVuY3Rpb24gYWRkSURCVmFsdWUoY2FsbGJhY2tJZCwgZGF0YWJhc2VOYW1l
LCBvYmplY3RTdG9yZU5hbWUsIHZhbHVlLCBrZXkpCit7CisgICAgZG9XaXRoUmVhZFdyaXRlVHJh
bnNhY3Rpb24oZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIHdpdGhUcmFuc2FjdGlvbkNh
bGxiYWNrLCBkaXNwYXRjaENhbGxiYWNrLmJpbmQodGhpcywgY2FsbGJhY2tJZCkpCisKKyAgICBm
dW5jdGlvbiB3aXRoVHJhbnNhY3Rpb25DYWxsYmFjayhvYmplY3RTdG9yZSwgY29tbWl0Q2FsbGJh
Y2spCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgaWYgKGtleSkKKyAgICAg
ICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodmFsdWUsIGtleSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodmFsdWUpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSBvbkluZGV4ZWREQkVycm9yOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNvbW1pdENhbGxiYWNrOworICAgIH0KK30KKwo=
</data>
<flag name="review"
          id="128967"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="128977"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>