<?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>54785</bug_id>
          
          <creation_ts>2011-02-18 17:42:46 -0800</creation_ts>
          <short_desc>When an IDBTransaction is aborted, all requests that have not yet fired should fire an ABORT_ERR</short_desc>
          <delta_ts>2011-03-01 15:55:51 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>55502</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>mihaip</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>353942</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-18 17:42:46 -0800</bug_when>
    <thetext>When an IDBTransaction is aborted, all requests that have not yet fired should fire an ABORT_ERR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353951</commentid>
    <comment_count>1</comment_count>
      <attachid>83040</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-18 17:52:17 -0800</bug_when>
    <thetext>Created attachment 83040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353952</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-18 17:52:52 -0800</bug_when>
    <thetext>please review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354459</commentid>
    <comment_count>3</comment_count>
      <attachid>83040</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-21 01:34:14 -0800</bug_when>
    <thetext>Comment on attachment 83040
Patch

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

&gt; LayoutTests/storage/indexeddb/transaction-abort.html:55
&gt; +    request.onerror = firstAdd;

Maybe set onsuccess = unexpectedSuccessFeedback?

&gt; LayoutTests/storage/indexeddb/transaction-abort.html:66
&gt; +{

Assert that it&apos;s an ABORT_ERR?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355584</commentid>
    <comment_count>4</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-02-22 14:08:29 -0800</bug_when>
    <thetext>Bugzilla won&apos;t let me submit this comment on the patch (&quot;You are not authorized to edit attachment 83040.&quot;), but:

&gt; Source/WebCore/storage/IDBRequest.cpp:226
&gt; +    m_transaction-&gt;registerRequest(this);

What does this do?
It seems to be here so that if the SetVersion transaction aborts, the error handler on the request for a setversion transaction will be called.  But for the transaction to abort, wouldn&apos;t the setversion success handler have to already be called?  What am I missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355619</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-22 14:37:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 83040 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83040&amp;action=review
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/transaction-abort.html:55
&gt; &gt; +    request.onerror = firstAdd;
&gt; 
&gt; Maybe set onsuccess = unexpectedSuccessFeedback?

Good idea
 
&gt; &gt; LayoutTests/storage/indexeddb/transaction-abort.html:66
&gt; &gt; +{
&gt; 
&gt; Assert that it&apos;s an ABORT_ERR?

Good idea

(In reply to comment #4)
&gt; Bugzilla won&apos;t let me submit this comment on the patch (&quot;You are not authorized to edit attachment 83040 [details].&quot;), but:
&gt; 
&gt; &gt; Source/WebCore/storage/IDBRequest.cpp:226
&gt; &gt; +    m_transaction-&gt;registerRequest(this);
&gt; 
&gt; What does this do?
&gt; It seems to be here so that if the SetVersion transaction aborts, the error handler on the request for a setversion transaction will be called.  But for the transaction to abort, wouldn&apos;t the setversion success handler have to already be called?  What am I missing?

Originally I asserted that if you unregistered something it had been registered before.  And we don&apos;t fire onError when aborting something that already fired an onSuccess.  So I believe it&apos;s OK as is, but probably a bit cleaner without.  Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355673</commentid>
    <comment_count>6</comment_count>
      <attachid>83406</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-22 16:04:10 -0800</bug_when>
    <thetext>Created attachment 83406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358257</commentid>
    <comment_count>7</comment_count>
      <attachid>83406</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-25 16:10:39 -0800</bug_when>
    <thetext>Comment on attachment 83406
Patch

You have some spurious test_expectations.txt changes and conflicts that prevent EWS from running. Mind re-upping one without these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358262</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-25 16:16:14 -0800</bug_when>
    <thetext>I think the test_expectation change is a real issue...I couldn&apos;t run without it.  I can&apos;t upload a new one at the moment, but I will Monday.  The bots won&apos;t add much information though since this code only runs for Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359353</commentid>
    <comment_count>9</comment_count>
      <attachid>84120</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-28 14:22:57 -0800</bug_when>
    <thetext>Created attachment 84120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359354</commentid>
    <comment_count>10</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-28 14:26:52 -0800</bug_when>
    <thetext>Nate&apos;s OOO and this is for m11, so if someone else could look, it&apos;d be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359755</commentid>
    <comment_count>11</comment_count>
      <attachid>84120</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-01 01:57:51 -0800</bug_when>
    <thetext>Comment on attachment 84120
Patch

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

&gt; Source/WebCore/storage/IDBRequest.h:62
&gt; +        EarlyDeath = 3

Why do you use a different style for this member of the enum?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359919</commentid>
    <comment_count>12</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 08:56:33 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 84120 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84120&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/IDBRequest.h:62
&gt; &gt; +        EarlyDeath = 3
&gt; 
&gt; Why do you use a different style for this member of the enum?

Because its proper webkit style.  The others match the IDL, but this isn&apos;t in IDL.  I can make it match if you think that&apos;s better though.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359923</commentid>
    <comment_count>13</comment_count>
      <attachid>84120</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-01 09:01:00 -0800</bug_when>
    <thetext>Comment on attachment 84120
Patch

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

&gt;&gt;&gt; Source/WebCore/storage/IDBRequest.h:62
&gt;&gt;&gt; +        EarlyDeath = 3
&gt;&gt; 
&gt;&gt; Why do you use a different style for this member of the enum?
&gt; 
&gt; Because its proper webkit style.  The others match the IDL, but this isn&apos;t in IDL.  I can make it match if you think that&apos;s better though.
&gt; 
&gt; Thanks!

OK, makes sense. So while the request is in the EarlyDeath internal-only state, what state is reported to script? Or is this not relevant/possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359927</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 09:07:30 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 84120 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84120&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/storage/IDBRequest.h:62
&gt; &gt;&gt;&gt; +        EarlyDeath = 3
&gt; &gt;&gt; 
&gt; &gt;&gt; Why do you use a different style for this member of the enum?
&gt; &gt; 
&gt; &gt; Because its proper webkit style.  The others match the IDL, but this isn&apos;t in IDL.  I can make it match if you think that&apos;s better though.
&gt; &gt; 
&gt; &gt; Thanks!
&gt; 
&gt; OK, makes sense. So while the request is in the EarlyDeath internal-only state, what state is reported to script? Or is this not relevant/possible?

Not possible.  That&apos;s why readyState() has this assert: ASSERT(m_readyState == LOADING || m_readyState == DONE);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359929</commentid>
    <comment_count>15</comment_count>
      <attachid>84120</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-01 09:10:52 -0800</bug_when>
    <thetext>Comment on attachment 84120
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/storage/IDBRequest.h:62
&gt;&gt;&gt;&gt;&gt; +        EarlyDeath = 3
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Why do you use a different style for this member of the enum?
&gt;&gt;&gt; 
&gt;&gt;&gt; Because its proper webkit style.  The others match the IDL, but this isn&apos;t in IDL.  I can make it match if you think that&apos;s better though.
&gt;&gt;&gt; 
&gt;&gt;&gt; Thanks!
&gt;&gt; 
&gt;&gt; OK, makes sense. So while the request is in the EarlyDeath internal-only state, what state is reported to script? Or is this not relevant/possible?
&gt; 
&gt; Not possible.  That&apos;s why readyState() has this assert: ASSERT(m_readyState == LOADING || m_readyState == DONE);

I see, makes sense. Maybe add a comment in the enum that the EarlyDeath value is internal only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360126</commentid>
    <comment_count>16</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 12:42:33 -0800</bug_when>
    <thetext>Committed r80028: &lt;http://trac.webkit.org/changeset/80028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360178</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-01 13:23:20 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80028 might have broken Qt Linux Release
The following tests are not passing:
editing/deleting/4916235-1.html
editing/deleting/5390681.html
editing/deleting/5546763.html
editing/deleting/delete-3775172-fix.html
editing/deleting/delete-at-paragraph-boundaries-007.html
editing/deleting/delete-before-block-image-1.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360188</commentid>
    <comment_count>18</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 13:32:55 -0800</bug_when>
    <thetext>Caused regressions...need to fix up.
http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r80028%20(9911)/results.html
http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r80028%20(9911)/editing/deleting/6026335-crash-log.txt

FAULTING_SOURCE_CODE:  
   100:     ASSERT_UNUSED(wasAdded, wasAdded); // It should not have already been in the list.
   101: 
   102:     while (!m_queuedEvents.isEmpty()) {
   103:         ListHashSet&lt;RefPtr&lt;Event&gt; &gt;::iterator iter = m_queuedEvents.begin();
&gt;  104:         RefPtr&lt;Event&gt; event = *iter;
   105:         m_queuedEvents.remove(iter);
   106:         if (!event)
   107:             break;
   108:         dispatchEvent(event.get());
   109:     }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360331</commentid>
    <comment_count>19</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-01 15:55:51 -0800</bug_when>
    <thetext>Committed r80055: &lt;http://trac.webkit.org/changeset/80055&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83040</attachid>
            <date>2011-02-18 17:52:17 -0800</date>
            <delta_ts>2011-02-22 16:04:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54785-20110218175216.patch</filename>
            <type>text/plain</type>
            <size>27752</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg3NjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDkxNmU3NWQ4NThiOGFjZGRmMjI4
NDE5MDlmZmM5NGE4YTQ2YmI4Li4wYmZlM2U5NTc5MTA1NWE3NzJiMWY0MTMxNTA4MTQxN2EyNTgz
MzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMTggIEplcmVteSBPcmxvdyAgPGpv
cmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBhbiBJREJUcmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBhbGwgcmVxdWVz
dHMgdGhhdCBoYXZlIG5vdCB5ZXQgZmlyZWQgc2hvdWxkIGZpcmUgYW4gQUJPUlRfRVJSCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc4NQorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbDogQWRkZWQKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC1leHBlY3RlZC50eHQ6
IEFkZGVkCisKIDIwMTEtMDItMTYgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIENocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9y
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1hYm9ydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyYTBlZTRjZjUyOGIwZmQzMDcxMjU1
Y2U2ZDFhODEzYTcwZTNhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQwIEBA
CitUZXN0IHRyYW5zYWN0aW9uIGFib3J0cyBzZW5kIHRoZSBwcm9wZXIgb25hYm9ydCBtZXNzYWdl
cy4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit3ZWJraXRJbmRleGVkREIub3Bl
bignbmFtZScpCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2RiLnNldFZlcnNpb24oJ25ldyB2
ZXJzaW9uJykKK3NldFZlcnNpb25TdWNjZXNzKCk6Cit0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQordHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0
VGVzdAorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCitzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFtdLCB3ZWJraXRJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKQordHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZAordHJhbnMu
b25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrCitzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKQorc3RvcmUuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejIn
fSwgJ2tleTInKQorc3RvcmUuYWRkKHt4OiAndmFsdWUzJywgeTogJ3p6ejMnfSwgJ2tleTMnKQor
UEFTUyBmaXJzdEVycm9yIGlzIGZhbHNlCitQQVNTIHNlY29uZEVycm9yIGlzIGZhbHNlCitQQVNT
IGFib3J0RmlyZWQgaXMgZmFsc2UKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQo
e3g6ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgorUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VE
X0VSUgorUEFTUyBmaXJzdEVycm9yIGlzIHRydWUKK1BBU1Mgc2Vjb25kRXJyb3IgaXMgZmFsc2UK
K1BBU1MgYWJvcnRGaXJlZCBpcyBmYWxzZQorUEFTUyBmaXJzdEVycm9yIGlzIHRydWUKK1BBU1Mg
c2Vjb25kRXJyb3IgaXMgdHJ1ZQorUEFTUyBhYm9ydEZpcmVkIGlzIGZhbHNlCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKHt4OiAndmFsdWU1JywgeTogJ3p6ejUnfSwgJ2tleTUn
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTIwNmY5MTJhMzgx
MjkwOGMxYmQyZDcwYWVkYTU3M2I1NjlkNmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbApAQCAtMCwwICsxLDEw
MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNl
bmQgdGhlIHByb3BlciBvbmFib3J0IG1lc3NhZ2VzLi4iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIAorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdElu
ZGV4ZWREQi5vcGVuKCduYW1lJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVy
c2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhp
c3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1
Y2Nlc3MoKToiKTsKKyAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oW10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZCIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUyJywgeTog
J3p6ejInfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZpcnN0QWRkOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnenp6Myd9
LCAna2V5MycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gc2Vjb25kQWRkOworICAgIHRyYW5z
LmFib3J0KCk7CisKKyAgICBmaXJzdEVycm9yID0gZmFsc2U7CisgICAgc2Vjb25kRXJyb3IgPSBm
YWxzZTsKKyAgICBhYm9ydEZpcmVkID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGZpcnN0QWRkKCkK
K3sKKyAgICBzaG91bGRCZUZhbHNlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgi
c2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgZmly
c3RFcnJvciA9IHRydWU7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQo
e3g6ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworfQorCitmdW5jdGlvbiBzZWNvbmRBZGQoKQorewor
ICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOworICAgIHNob3VsZEJlRmFsc2UoInNlY29u
ZEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOworICAgIHNlY29uZEVy
cm9yID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICBz
aG91bGRCZVRydWUoImZpcnN0RXJyb3IiKTsKKyAgICBzaG91bGRCZVRydWUoInNlY29uZEVycm9y
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOworICAgIGFib3J0RmlyZWQgPSB0
cnVlOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKHt4OiAndmFsdWU1
JywgeTogJ3p6ejUnfSwgJ2tleTUnKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKKyAgICBkb25lKCk7Cit9CisKK3Rlc3QoKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDhlMzY3ZDgxNTk1YmUzMjdkODkxZDU5MTE1NmM1MmU0NmVmNjUzMzcuLmQ2MjM0NmQ0
MzNiMDQ5NDcxZWE2NmJjZjlmYmQ3ZGQwMDE1MTYwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MyBAQAorMjAxMS0wMi0xOCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGFuIElE
QlRyYW5zYWN0aW9uIGlzIGFib3J0ZWQsIGFsbCByZXF1ZXN0cyB0aGF0IGhhdmUgbm90IHlldCBm
aXJlZCBzaG91bGQgZmlyZSBhbiBBQk9SVF9FUlIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0Nzg1CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGlu
IGEgbG90IG9mIHNhbml0eSBjaGVja3MvQVNTRVJUcyB0byBtYWtlIHN1cmUgd2UncmUgZG9pbmcK
KyAgICAgICAgdGhlIHJpZ2h0IHRoaW5nIGFuZCBjb250aW51ZSB0byBkbyB0aGUgcmlnaHQgdGhp
bmcuIEl0IGFsc28gbW9kaWZpZXMgRXZlbnRRdWV1ZQorICAgICAgICBzbyB0aGF0IHdlIGNhbiBj
YW5jZWwgYW4gZXZlbnQuIFRvIGRvIHRoaXMgZWZmaWNpZW50bHksIHRoZSB2ZWN0b3IgaXMgbm93
IGEKKyAgICAgICAgTGlzdEhhc2hTZXQuCisKKyAgICAgICAgQ2FuZWxsaW5nIHRoZSBldmVudCBp
cyBoYXJkZXIvbWVzc2llciwgYnV0IHRoZSBtb3N0IGRldGVybWluaXN0aWMgdGhpbmcgdG8gZG8u
CisgICAgICAgIFRvIHRoZSB1c2VyLCB0aGUgd29yayBpc24ndCBkb25lIHVudGlsIHdlIGZpcmUg
dGhlIG9uc3VjY2Vzcy9vbmVycm9yIGhhbmRsZXIuCisgICAgICAgIFNvIHRoZSBldmVudCAod2hp
Y2ggZG9lcyBmaXJlIHRoYXQpIG5lZWRzIHRvIGJlIGNhbmNlbGFibGUuCisKKyAgICAgICAgdHJh
bnNhY3Rpb24tYWJvcnQuaHRtbCB0ZXN0cyB0aGlzLgorCisgICAgICAgICogZG9tL0V2ZW50UXVl
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9tL0V2ZW50UXVldWUu
aDoKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQ29kZS5jcHA6CisgICAgICAgICogc3RvcmFnZS9J
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjp1cGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNl
RXhjZXB0aW9uLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRLZXkpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6Cisg
ICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6fklEQlJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVhZHlTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjptYXJrRWFybHlEZWF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVl
c3QuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZWdpc3RlclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpvbkFib3J0KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmg6CisKIDIwMTEtMDItMTYgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1
ZXVlLmNwcAppbmRleCA1YTFhYmU4YWQxNWViNWNmZGVhZTRjMmJiN2NlMTQ1YjAwMjViNjEzLi5l
MDBjMDQ1MTI3NDg0ZThhNmYxYjIxNzNhYWE5ZGQzZjAzZDdlYjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50UXVldWUuY3BwCkBAIC01OSw3ICs1OSw4IEBAIEV2ZW50UXVldWU6On5FdmVudFF1ZXVlKCkK
IHZvaWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQog
ewogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwotICAgIG1fcXVldWVkRXZlbnRzLmFwcGVu
ZChldmVudCk7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChldmVudCku
c2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hv
dWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KICAgICAKICAgICBpZiAoIW1f
cGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcGVuZGluZ0V2ZW50VGlt
ZXItPnN0YXJ0T25lU2hvdCgwKTsKQEAgLTc3LDI1ICs3OCw0MSBAQCB2b2lkIEV2ZW50UXVldWU6
OmVucXVldWVTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgU2Nyb2xsRXZlbnRU
YXJnZXRUeQogICAgIGVucXVldWVFdmVudChzY3JvbGxFdmVudC5yZWxlYXNlKCkpOwogfQogCiti
b29sIEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBib29sIGZv
dW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQpOworICAgIG1fcXVldWVkRXZlbnRz
LnJlbW92ZShldmVudCk7CisgICAgaWYgKG1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOworICAgIHJldHVybiBmb3VuZDsKK30KKwog
dm9pZCBFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKIHsKICAgICBBU1NFUlQo
IW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOworICAgIEFTU0VSVCghbV9xdWV1ZWRF
dmVudHMuaXNFbXB0eSgpKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcXVldWVkRXZl
bnRzOwotICAgIHF1ZXVlZEV2ZW50cy5zd2FwKG1fcXVldWVkRXZlbnRzKTsKLSAgICAKICAgICBt
X25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5jbGVhcigpOwogCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBxdWV1ZWRFdmVudHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGRpc3BhdGNoRXZl
bnQocXVldWVkRXZlbnRzW2ldLnJlbGVhc2UoKSk7CisgICAgLy8gSW5zZXJ0IGEgbWFya2VyIGZv
ciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KKyAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmNvbnRh
aW5zKDApKTsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLnNlY29u
ZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBu
b3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCisKKyAgICB3aGlsZSAoIW1fcXVldWVk
RXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID46
Oml0ZXJhdG9yIGl0ZXIgPSBtX3F1ZXVlZEV2ZW50cy5iZWdpbigpOworICAgICAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50ID0gKml0ZXI7CisgICAgICAgIG1fcXVldWVkRXZlbnRzLnJlbW92ZShpdGVy
KTsKKyAgICAgICAgaWYgKCFldmVudCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkaXNw
YXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgRXZlbnRRdWV1ZTo6ZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBFdmVudFRhcmdldCog
ZXZlbnRUYXJnZXQgPSBldmVudC0+dGFyZ2V0KCk7Ci0gICAgaWYgKGV2ZW50VGFyZ2V0LT50b05v
ZGUoKSkKLSAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotICAgIGVs
c2UgaWYgKGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQorICAgIGlmIChldmVudFRhcmdldC0+
dG9ET01XaW5kb3coKSkKICAgICAgICAgZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCktPmRpc3Bh
dGNoRXZlbnQoZXZlbnQsIDApOwogICAgIGVsc2UKICAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKaW5kZXggYTU4OWVkODBmNWQ3
YWIxM2E1YjBhMzBjYmI3MzdjZmNkNmNkYzQ4OS4uOTRlYTcyMDJhYmRjNjc5NTQ1MjM4NzZlOTYx
MTVmYjg3ZDc0NGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCkBAIC0yOCwxMSArMjgsMTEg
QEAKICNkZWZpbmUgRXZlbnRRdWV1ZV9oCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVucXVl
dWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBlbnF1ZXVlU2Nyb2xsRXZlbnQo
UGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlKTsKKyAgICBib29sIGNhbmNl
bEV2ZW50KEV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRXZlbnRRdWV1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAogICAgIE93blB0cjxFdmVudFF1
ZXVlVGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4g
PiBtX3F1ZXVlZEV2ZW50czsKKyAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1
ZWRFdmVudHM7CiAgICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVu
dHM7CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKaW5kZXggMTExOGExYTk0OThjYTI3MzViMjc5YTdlOTc3
Nzg2YTAyZmU4NWUyYy4uOTI1OWJlOGNhZjYwOWY2YjNkOTcxNjY0YzIzMWFhNzlmOTBiMTM0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcApAQCAtMjIzLDcgKzIyMyw4IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpZGJEYXRhYmFzZUV4Y2VwdGlvbk5hbWVzW10gPSB7CiAg
ICAgIlRSQU5TSUVOVF9FUlIiLAogICAgICJUSU1FT1VUX0VSUiIsCiAgICAgIkRFQURMT0NLX0VS
UiIsCi0gICAgIlJFQURfT05MWV9FUlIiCisgICAgIlJFQURfT05MWV9FUlIiLAorICAgICJBQk9S
VF9FUlIiCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgaWRiRGF0YWJhc2VFeGNlcHRp
b25EZXNjcmlwdGlvbnNbXSA9IHsKQEAgLTIzOCw3ICsyMzksOCBAQCBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgaWRiRGF0YWJhc2VFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKICAgICAiVFJB
TlNJRU5UX0VSUiIsIC8vIEZJWE1FOiBUaGlzIGlzbid0IGV2ZW4gdXNlZC4KICAgICAiVElNRU9V
VF9FUlIiLCAvLyBUaGlzIGNhbid0IGJlIHRocm93bi4KICAgICAiREVBRExPQ0tfRVJSIiwgLy8g
VGhpcyBjYW4ndCBiZSB0aHJvd24uCi0gICAgIldyaXRlIG9wZXJhdGlvbnMgY2Fubm90IGJlIHBy
ZWZvcm1lZCBvbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbi4iCisgICAgIldyaXRlIG9wZXJhdGlv
bnMgY2Fubm90IGJlIHByZWZvcm1lZCBvbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbi4iLAorICAg
ICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBm
dWxmaWxsZWQuIgogfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAK
aW5kZXggNTMxY2FlMTQwZWZmZDBmZmQ0Njc0NDliNzVjMzZkZmNkMGNmZWFiNy4uZmExY2E3MDRm
OWI4ZTg4NmRlZWRlNGFkYWU4ZDRjZjBlZjNmMmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmNwcApAQCAtNzIsOCArNzIsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJD
dXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKIHsK
ICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250
ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9i
YWNrZW5kLT51cGRhdGUodmFsdWUsIHJlcXVlc3QsIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYg
KGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVy
biAwOworICAgIH0KICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTkxLDgg
KzkzLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiB7CiAgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+ZGVsZXRlRnVuY3Rp
b24ocmVxdWVzdCwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVx
dWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHJl
dHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMzg1ZWIzMmVlZjc0MjE0OTIzOTYy
MWExMzdiNjUyMGVhMDlkYTI5YS4uZTI3NDViNTFhNzhhOWU4YWFiNzAxZWY5MzE4ZWM2OTlhYTcw
ZjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdoaWxlICghbV9wZW5kaW5nU2V0VmVy
c2lvbkNhbGxzLmlzRW1wdHkoKSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9u
Q2FsbD4gcGVuZGluZ1NldFZlcnNpb25DYWxsID0gbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLnRh
a2VGaXJzdCgpOwogICAgICAgICBzZXRWZXJzaW9uKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+dmVy
c2lvbigpLCBwZW5kaW5nU2V0VmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBlYyk7CiAgICAgICAg
IEFTU0VSVCghZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZUV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2Vw
dGlvbi5oCmluZGV4IGY5ZWJiMWZmZTEzOGZiNDU4Mzc0ZGNjNWMxNjllMzM0OTUwNGVmNjkuLjIx
OTkxZWU3ZmIyZWY5YzE0OWZjYWU3NDBiODQ4YzhkOTg3N2M3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmgKQEAgLTU1LDcgKzU1LDggQEAgcHVi
bGljOgogICAgICAgICBUUkFOU0lFTlRfRVJSID0gSURCRGF0YWJhc2VFeGNlcHRpb25PZmZzZXQg
KyA5LAogICAgICAgICBUSU1FT1VUX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0aW9uT2Zmc2V0ICsg
MTAsCiAgICAgICAgIERFQURMT0NLX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0aW9uT2Zmc2V0ICsg
MTEsCi0gICAgICAgIFJFQURfT05MWV9FUlIgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCAr
IDEyCisgICAgICAgIFJFQURfT05MWV9FUlIgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCAr
IDEyLAorICAgICAgICBBQk9SVF9FUlIgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCArIDEz
CiAgICAgfTsKIAogICAgIHN0YXRpYyBpbnQgRXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKGludCBl
cnJvckNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCmluZGV4IDYxNTc2N2I3YzNk
Y2FiM2E4NjY1MjZmYmVhZDI2Y2U1OWFhZDgxMDUuLjYzYjgwMGU1YmY4MjIwNWEwNWRkNWI4ZDk2
NjI4ZTBlNWNiMDIxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCkBAIC02Miw4
ICs2MiwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogCiAgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+b3BlbkN1cnNvcihr
ZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVj
KTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJs
eURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIApAQCAtNzcsOCArNzksMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogCiAgICAgUmVm
UHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURC
QW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+
b3BlbktleUN1cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9u
LT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJl
cXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBy
ZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtODYsOCArOTAsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHIKIHsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7
CiAgICAgbV9iYWNrZW5kLT5nZXQoa2V5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5k
KCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1h
cmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gcmVx
dWVzdDsKIH0KIApAQCAtOTUsOCArMTAxLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmCiB7
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
YmFja2VuZC0+Z2V0S2V5KGtleSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBl
Yyk7Ci0gICAgaWYgKGVjKQorICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJrRWFy
bHlEZWF0aCgpOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNTNh
ZTI3OTY3YWI0ZmFlMTA2MzEwZTVkMmY1MmIxNDM1MDgxZmQ0Mi4uODdkMmExNGZjZjFjOTM5YmFm
MWRmMTVhMjllMGQwZWRiMTIxODU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAKQEAgLTcxLDggKzcxLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiB7
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
b2JqZWN0U3RvcmUtPmdldChrZXksIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwg
ZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vh
cmx5RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHJldHVybiByZXF1ZXN0
LnJlbGVhc2UoKTsKIH0KIApAQCAtODAsMzYgKzgyLDQ0IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzCiB7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgIG1fb2JqZWN0U3RvcmUtPnB1dCh2YWx1ZSwga2V5LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U6OkFkZE9ubHksIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5
RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgfQor
ICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fb2JqZWN0U3RvcmUtPnB1dCh2YWx1ZSwga2V5LCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9yVXBkYXRlLCByZXF1ZXN0LCBtX3Ry
YW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7Cisg
ICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiByZXF1ZXN0OworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9
CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihrZXksIHJl
cXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBp
ZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgfQorICAgIHJldHVybiByZXF1ZXN0LnJl
bGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
b2JqZWN0U3RvcmUtPmNsZWFyKHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5
RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgfQor
ICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJJbmRleD4g
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBjb25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTE0OCw4ICsxNTgsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKIAogICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQs
IElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX29iamVj
dFN0b3JlLT5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAg
cmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAg
IHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5jcHAKaW5kZXggYTNlNWVhYTYzODE1N2NkNWRlYjI3MmIyMWM4YTU1NGNiZjdlYmI3MC4u
MTE5N2VhNTJjYzk2NGQyNjliNGRiYTI1MDExZDc0ZGVlYzNlZWMwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSURCSW5k
ZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdU
cmFuc2FjdGlvbk1vbml0b3IuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDEyICs1OSwxNyBAQCBJREJSZXF1ZXN0OjpJREJSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyYwogICAgICwgbV9yZWFkeVN0YXRlKExPQURJTkcpCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNl
KQogewotICAgIGlmIChtX3RyYW5zYWN0aW9uKQorICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7Cisg
ICAgICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKICAgICAgICAgSURC
UGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSk7CisgICAgfQogfQogCiBJREJSZXF1ZXN0Ojp+SURCUmVxdWVz
dCgpCiB7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBET05FIHx8IG1fcmVhZHlTdGF0ZSA9
PSBFYXJseURlYXRoKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbikKKyAgICAgICAgbV90cmFuc2Fj
dGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SURCQW55PiBJ
REJSZXF1ZXN0OjpyZXN1bHQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkBAIC0xMDUsOSArMTEx
LDE2IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlJlcXVlc3Q6OnRyYW5zYWN0aW9u
KCkgY29uc3QKIAogdW5zaWduZWQgc2hvcnQgSURCUmVxdWVzdDo6cmVhZHlTdGF0ZSgpIGNvbnN0
CiB7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBMT0FESU5HIHx8IG1fcmVhZHlTdGF0ZSA9
PSBET05FKTsKICAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwogfQogCit2b2lkIElEQlJlcXVlc3Q6
Om1hcmtFYXJseURlYXRoKCkKK3sKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IExPQURJTkcp
OworICAgIG1fcmVhZHlTdGF0ZSA9IEVhcmx5RGVhdGg7Cit9CisKIGJvb2wgSURCUmVxdWVzdDo6
cmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICBBU1NF
UlQoIW1fZmluaXNoZWQpOwpAQCAtMTI2LDYgKzEzOSwzMiBAQCBib29sIElEQlJlcXVlc3Q6OnJl
c2V0UmVhZHlTdGF0ZShJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK0lEQkFueSogSURCUmVxdWVzdDo6c291cmNlKCkKK3sKKyAgICByZXR1cm4gbV9z
b3VyY2UuZ2V0KCk7Cit9CisKK3ZvaWQgSURCUmVxdWVzdDo6YWJvcnQoKQoreworICAgIGlmICht
X3JlYWR5U3RhdGUgIT0gTE9BRElORykgeworICAgICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09
IERPTkUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVl
ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVu
dFF1ZXVlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VucXVldWVkRXZlbnRzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGJvb2wgcmVtb3ZlZCA9IGV2ZW50UXVldWUtPmNhbmNlbEV2
ZW50KG1fZW5xdWV1ZWRFdmVudHNbaV0uZ2V0KCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
bW92ZWQsIHJlbW92ZWQpOworICAgIH0KKyAgICBtX2VucXVldWVkRXZlbnRzLmNsZWFyKCk7CisK
KyAgICBtX2Vycm9yQ29kZSA9IDA7CisgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcoKTsKKyAg
ICBtX3Jlc3VsdC5jbGVhcigpOworICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFi
b3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOworfQorCiB2b2lk
IElEQlJlcXVlc3Q6Om9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikK
IHsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYm
ICFtX3Jlc3VsdCk7CkBAIC0xODQsNiArMjIzLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHBycEJhY2tlbmQK
ICAgICBBU1NFUlQobV9zb3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OklEQkRhdGFiYXNlVHlwZSk7
CiAgICAgbV9zb3VyY2UtPmlkYkRhdGFiYXNlKCktPnNldFNldFZlcnNpb25UcmFuc2FjdGlvbihm
cm9udGVuZC5nZXQoKSk7CiAKKyAgICBtX3RyYW5zYWN0aW9uLT5yZWdpc3RlclJlcXVlc3QodGhp
cyk7CiAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5z
YWN0aW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSk7CiAKICAgICBtX3Jlc3VsdCA9IElEQkFu
eTo6Y3JlYXRlKGZyb250ZW5kLnJlbGVhc2UoKSk7CkBAIC0yMTgsMTIgKzI1OCwxOCBAQCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1ZXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QKIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKIHsKICAgICBBU1NFUlQoIW1fZmluaXNoZWQpOworICAgIEFTU0VSVChtX2VucXVldWVk
RXZlbnRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9yZWFkeVN0
YXRlIDwgRE9ORSk7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2Nr
ZWRFdmVudCkKICAgICAgICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKIAorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9lbnF1ZXVlZEV2ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
bV9lbnF1ZXVlZEV2ZW50c1tpXS5nZXQoKSA9PSBldmVudC5nZXQoKSkKKyAgICAgICAgICAgIG1f
ZW5xdWV1ZWRFdmVudHMucmVtb3ZlKGkpOworICAgIH0KKwogICAgIFZlY3RvcjxSZWZQdHI8RXZl
bnRUYXJnZXQ+ID4gdGFyZ2V0czsKICAgICB0YXJnZXRzLmFwcGVuZCh0aGlzKTsKICAgICBpZiAo
bV90cmFuc2FjdGlvbikgewpAQCAtMjQwLDcgKzI4Niw2IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBib29sIGRvbnRQcmV2ZW50
RGVmYXVsdCA9IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdl
dHMpOwogCiAgICAgLy8gSWYgdGhlIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIHRoZW4g
d2UnbGwgZmlyZSBhZ2Fpbi4KLS8vICAgIGlmIChtX3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgp
ICE9IElEQkFueTo6SURCQ3Vyc29yVHlwZSAmJiBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMu
YmxvY2tlZEV2ZW50KQogICAgIGlmIChtX3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElE
QkFueTo6SURCQ3Vyc29yVHlwZSkKICAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7CiAKQEAgLTI2
MywxMiArMzA4LDggQEAgdm9pZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1
bWVudCgpKTsKICAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CiAgICAgZXZlbnQt
PnNldFRhcmdldCh0aGlzKTsKLSAgICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwot
fQotCi1JREJBbnkqIElEQlJlcXVlc3Q6OnNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNl
LmdldCgpOworICAgIGV2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudC5nZXQoKSk7CisgICAg
bV9lbnF1ZXVlZEV2ZW50cy5hcHBlbmQoZXZlbnQpOwogfQogCiBFdmVudFRhcmdldERhdGEqIElE
QlJlcXVlc3Q6OmV2ZW50VGFyZ2V0RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5o
CmluZGV4IGU0MGYxYjE1N2NmYmQwZDg2ZTUyMzk3MjFiN2MzZjQ3ZWIxMzEwNWIuLmExOTA4M2Yz
ZDM4MDgyNGU1M2FkMTU1Y2Q2MjIyMTYzYWQ3NjBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5oCkBAIC01OCwxNSArNTgsMTggQEAgcHVibGljOgogICAgIC8vIERlZmluZWQgaW4g
dGhlIElETAogICAgIGVudW0gUmVhZHlTdGF0ZSB7CiAgICAgICAgIExPQURJTkcgPSAxLAotICAg
ICAgICBET05FID0gMgorICAgICAgICBET05FID0gMiwKKyAgICAgICAgRWFybHlEZWF0aCA9IDMK
ICAgICB9OwogICAgIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGUoKSBjb25zdDsKIAogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3VjY2Vzcyk7CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CiAKKyAgICB2b2lkIG1hcmtFYXJseURlYXRoKCk7
CiAgICAgYm9vbCByZXNldFJlYWR5U3RhdGUoSURCVHJhbnNhY3Rpb24qKTsKICAgICBJREJBbnkq
IHNvdXJjZSgpOworICAgIHZvaWQgYWJvcnQoKTsKIAogICAgIC8vIElEQkNhbGxiYWNrcwogICAg
IHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwpAQCAt
MTEwLDYgKzExMyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsK
ICAgICBib29sIG1fZmluaXNoZWQ7IC8vIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UnbGwgZmlyZSBh
bnkgbW9yZSBldmVudHM/IElmIG5vdCwgd2UncmUgZmluaXNoZWQuCisgICAgVmVjdG9yPFJlZlB0
cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHAKaW5kZXggNmI3MzlmY2I0YWYwYTBlMzliZjRhOWZiMGRlY2Q1MzJlOTM0NzdlMy4uNGNlY2Rj
NTAwNTZkNGMwNjQwNDM1MzM5N2RhM2FmYzU4MzI4NjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTEwMyw4ICsxMDMsMjUgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbjo6YWJvcnQoKQogICAgICAgICBtX2JhY2tlbmQtPmFib3J0KCk7CiB9CiAKK3ZvaWQg
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIG1fY2hpbGRSZXF1ZXN0cy5hZGQocmVxdWVzdCk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rp
b246OnVucmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgLy8gSWYg
d2UgYWJvcnRlZCB0aGUgcmVxdWVzdCwgaXQgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiByZW1vdmVk
LgorICAgIG1fY2hpbGRSZXF1ZXN0cy5yZW1vdmUocmVxdWVzdCk7Cit9CisKIHZvaWQgSURCVHJh
bnNhY3Rpb246Om9uQWJvcnQoKQogeworICAgIHdoaWxlICghbV9jaGlsZFJlcXVlc3RzLmlzRW1w
dHkoKSkgeworICAgICAgICBJREJSZXF1ZXN0KiByZXF1ZXN0ID0gKm1fY2hpbGRSZXF1ZXN0cy5i
ZWdpbigpOworICAgICAgICBtX2NoaWxkUmVxdWVzdHMucmVtb3ZlKHJlcXVlc3QpOworICAgICAg
ICByZXF1ZXN0LT5hYm9ydCgpOworICAgIH0KKwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCB0cnVlLCB0cnVlKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAppbmRleCBmZjRmZWI2MTIzMTFjYWJiM2ZmMGEz
NjA4NDVjMzViOWRiZTRlM2E4Li5iNTc3OGFkNzcxN2U5NTgzNTJmYmFiZDRhY2I3YmE5OGY2MGVk
ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCkBAIC02Miw2ICs2
Miw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFib3J0KCk7
CiAKKyAgICB2b2lkIHJlZ2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0Kik7CisgICAgdm9pZCB1bnJl
Z2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0Kik7CisKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGFib3J0KTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNv
bXBsZXRlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKQEAg
LTEwMCw2ICsxMDMsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIHNob3J0IG1fbW9kZTsKICAg
ICBib29sIG1fZmluaXNoZWQ7IC8vIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UnbGwgZmlyZSBhbnkg
bW9yZSBldmVudHMgb3IgYWxsb3cgYW55IG5ldyB0cmFuc2FjdGlvbnM/IElmIG5vdCwgd2UncmUg
ZmluaXNoZWQuCiAKKyAgICBMaXN0SGFzaFNldDxJREJSZXF1ZXN0Kj4gbV9jaGlsZFJlcXVlc3Rz
OworCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83406</attachid>
            <date>2011-02-22 16:04:10 -0800</date>
            <delta_ts>2011-02-28 14:22:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54785-20110222160409.patch</filename>
            <type>text/plain</type>
            <size>29615</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg3NjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDkxNmU3NWQ4NThiOGFjZGRmMjI4
NDE5MDlmZmM5NGE4YTQ2YmI4Li4wYmZlM2U5NTc5MTA1NWE3NzJiMWY0MTMxNTA4MTQxN2EyNTgz
MzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMTggIEplcmVteSBPcmxvdyAgPGpv
cmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBhbiBJREJUcmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBhbGwgcmVxdWVz
dHMgdGhhdCBoYXZlIG5vdCB5ZXQgZmlyZWQgc2hvdWxkIGZpcmUgYW4gQUJPUlRfRVJSCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc4NQorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbDogQWRkZWQKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC1leHBlY3RlZC50eHQ6
IEFkZGVkCisKIDIwMTEtMDItMTYgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIENocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKaW5kZXggYjJkOTVmMmVjZDFmMWNjM2Y2Mjc2MDVmYzI4ZDE2OWQ4MTEzODJlNS4uOGZhYzFi
YmE1ZmZiYjEwZTdhMDZhZDIzNGZlNTM1Mzc5OTliZDFiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjk1OCw3ICsy
OTU4LDcgQEAgQlVHQ1I3MDY4NiBNQUMgOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9jamstc2Vn
bWVudGF0aW9uLmh0bWwgPSBURVhUCiAvLyBBZGRlZCBieSBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC83NjY3NAogQlVHQ1I3MDg4MiBXSU4gOiBmYXN0L3RleHQvb2Zmc2V0Rm9yUG9z
aXRpb24tY29tcGxleC1mYWxsYmFjay5odG1sID0gVEVYVAogCi1CVUdDUjcwOTQyIFdJTkRPV1Mg
OiBlZGl0aW5nL2V4ZWNDb21tYW5kL2JyZWFrLW91dC1vZi1lbXB0eS1saXN0LWl0ZW0uaHRtbCA9
IFBBU1MgVElNRU9VVAorQlVHQ1I3MDk0MiBXSU4gOiBlZGl0aW5nL2V4ZWNDb21tYW5kL2JyZWFr
LW91dC1vZi1lbXB0eS1saXN0LWl0ZW0uaHRtbCA9IFBBU1MgVElNRU9VVAogQlVHUk5JV0EgU0xP
VyBXSU4gOiBlZGl0aW5nL2V4ZWNDb21tYW5kLzQ3ODY0MDQtMS5odG1sID0gUEFTUwogCiAvLyBB
ZGRlZCBieSBhbmQgc3RhcnRlZCBjcmFzaGluZyBhdCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC83Njc0MwpAQCAtMzQ2Nyw0ICszNDY3LDQgQEAgQlVHVjhfMTE2OCA6IGZhc3QvanMv
bW96aWxsYS9zdHJpY3QvQi4xLjIuaHRtbCA9IFRFWFQKIEJVR1Y4XzExNjggOiBmYXN0L2pzL21v
emlsbGEvc3RyaWN0L2V2YWwtdmFyaWFibGUtZW52aXJvbm1lbnQuaHRtbCA9IFRFWFQKIEJVR1Y4
XzExNjggOiBmYXN0L2pzL21vemlsbGEvc3RyaWN0L2Z1bmN0aW9uLW5hbWUtYXJpdHkuaHRtbCA9
IFRFWFQKIEJVR1Y4XzExNjggOiBmYXN0L2pzL21vemlsbGEvc3RyaWN0L3ByaW1pdGl2ZS10aGlz
LW5vLXdyaXRlYmFjay5odG1sID0gVEVYVAotQlVHVjhfMTE2OCA6IGZhc3QvanMvbW96aWxsYS9z
dHJpY3QvdGhpcy1mb3ItZnVuY3Rpb24tZXhwcmVzc2lvbi1yZWN1cnNpb24uaHRtbCA9IFRFWFQK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitCVUdWOF8xMTY4IDogZmFzdC9qcy9tb3ppbGxh
L3N0cmljdC90aGlzLWZvci1mdW5jdGlvbi1leHByZXNzaW9uLXJlY3Vyc2lvbi5odG1sID0gVEVY
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YWJvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNh
Y3Rpb24tYWJvcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzYmNiNzA2OWE3MDNmMDNjNzkw
ZDFlZTkxYjQ3YTE4ZTc2YmQ5NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
MiBAQAorVGVzdCB0cmFuc2FjdGlvbiBhYm9ydHMgc2VuZCB0aGUgcHJvcGVyIG9uYWJvcnQgbWVz
c2FnZXMuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKword2Via2l0SW5kZXhlZERC
Lm9wZW4oJ25hbWUnKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpCitzZXRWZXJzaW9uU3VjY2VzcygpOgordHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK3RyYW5zLm9uY29tcGxldGUgPSBz
dGFydFRlc3QKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQorc3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAn
enp6J30sICdrZXknKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbihbXSwgd2Via2l0SURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkKK3RyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQKK3Ry
YW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaworc3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK3N0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6
enoyJ30sICdrZXkyJykKK3N0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkz
JykKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5BQk9SVF9FUlIKK1BBU1MgZmlyc3RFcnJvciBpcyBmYWxzZQorUEFTUyBzZWNvbmRFcnJv
ciBpcyBmYWxzZQorUEFTUyBhYm9ydEZpcmVkIGlzIGZhbHNlCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gc3RvcmUuYWRkKHt4OiAndmFsdWU0JywgeTogJ3p6ejQnfSwgJ2tleTQnKQorUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfQUxMT1dFRF9FUlIKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyB3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5BQk9SVF9FUlIKK1BBU1MgZmlyc3RFcnJvciBpcyB0cnVl
CitQQVNTIHNlY29uZEVycm9yIGlzIGZhbHNlCitQQVNTIGFib3J0RmlyZWQgaXMgZmFsc2UKK1BB
U1MgZmlyc3RFcnJvciBpcyB0cnVlCitQQVNTIHNlY29uZEVycm9yIGlzIHRydWUKK1BBU1MgYWJv
cnRGaXJlZCBpcyBmYWxzZQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZCh7eDog
J3ZhbHVlNScsIHk6ICd6eno1J30sICdrZXk1JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJS
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmJkMGMwMGQzODRmNWQ0OWE0YzUzYjlmNWYwYzZlZWRmYmZiMmQ1NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWFib3J0Lmh0bWwKQEAgLTAsMCArMSwxMDMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IHRyYW5zYWN0aW9uIGFib3J0cyBzZW5kIHRoZSBwcm9wZXIgb25hYm9ydCBtZXNzYWdl
cy4uIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbignbmFtZScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygp
Cit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgd2luZG93LnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRU
ZXN0Iik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFtdLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlv
bkFib3J0ZWQiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3Rl
ZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0
ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7
eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBzZWNvbmRBZGQ7CisgICAgdHJhbnMuYWJvcnQoKTsKKworICAgIGZpcnN0RXJyb3IgPSBmYWxz
ZTsKKyAgICBzZWNvbmRFcnJvciA9IGZhbHNlOworICAgIGFib3J0RmlyZWQgPSBmYWxzZTsKK30K
KworZnVuY3Rpb24gZmlyc3RBZGQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJy
b3JDb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpOworICAgIHNo
b3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJzZWNvbmRFcnJv
ciIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKKyAgICBmaXJzdEVycm9yID0g
dHJ1ZTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ3ZhbHVl
NCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0FMTE9XRURfRVJSIik7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEFkZCgpCit7CisgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
QUJPUlRfRVJSIik7CisgICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxk
QmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7
CisgICAgc2Vjb25kRXJyb3IgPSB0cnVlOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0
ZWQoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOworICAgIHNob3VsZEJlVHJ1
ZSgic2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAg
YWJvcnRGaXJlZCA9IHRydWU7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5h
ZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScpIiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwordGVzdCgpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggOGUzNjdkODE1OTViZTMyN2Q4OTFkNTkxMTU2YzUyZTQ2ZWY2
NTMzNy4uZDYyMzQ2ZDQzM2IwNDk0NzFlYTY2YmNmOWZiZDdkZDAwMTUxNjA5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYzIEBACisyMDExLTAyLTE4ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gYW4gSURCVHJhbnNhY3Rpb24gaXMgYWJvcnRlZCwgYWxsIHJlcXVlc3RzIHRoYXQg
aGF2ZSBub3QgeWV0IGZpcmVkIHNob3VsZCBmaXJlIGFuIEFCT1JUX0VSUgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ3ODUKKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgaW4gYSBsb3Qgb2Ygc2FuaXR5IGNoZWNrcy9BU1NFUlRzIHRvIG1ha2Ugc3Vy
ZSB3ZSdyZSBkb2luZworICAgICAgICB0aGUgcmlnaHQgdGhpbmcgYW5kIGNvbnRpbnVlIHRvIGRv
IHRoZSByaWdodCB0aGluZy4gSXQgYWxzbyBtb2RpZmllcyBFdmVudFF1ZXVlCisgICAgICAgIHNv
IHRoYXQgd2UgY2FuIGNhbmNlbCBhbiBldmVudC4gVG8gZG8gdGhpcyBlZmZpY2llbnRseSwgdGhl
IHZlY3RvciBpcyBub3cgYQorICAgICAgICBMaXN0SGFzaFNldC4KKworICAgICAgICBDYW5lbGxp
bmcgdGhlIGV2ZW50IGlzIGhhcmRlci9tZXNzaWVyLCBidXQgdGhlIG1vc3QgZGV0ZXJtaW5pc3Rp
YyB0aGluZyB0byBkby4KKyAgICAgICAgVG8gdGhlIHVzZXIsIHRoZSB3b3JrIGlzbid0IGRvbmUg
dW50aWwgd2UgZmlyZSB0aGUgb25zdWNjZXNzL29uZXJyb3IgaGFuZGxlci4KKyAgICAgICAgU28g
dGhlIGV2ZW50ICh3aGljaCBkb2VzIGZpcmUgdGhhdCkgbmVlZHMgdG8gYmUgY2FuY2VsYWJsZS4K
KworICAgICAgICB0cmFuc2FjdGlvbi1hYm9ydC5odG1sIHRlc3RzIHRoaXMuCisKKyAgICAgICAg
KiBkb20vRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFF1ZXVlOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBk
b20vRXZlbnRRdWV1ZS5oOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Db2RlLmNwcDoKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQklu
ZGV4OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtleSk6CisgICAgICAg
ICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphZGQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXF1ZXN0Ojp+SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZWFk
eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om1hcmtFYXJseURlYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvblN1
Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCUmVxdWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6dW5yZWdpc3RlclJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uaDoKKwogMjAxMS0wMi0xNiAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dh
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UXVldWUuY3BwCmluZGV4IDVhMWFiZThhZDE1ZWI1Y2ZkZWFlNGMyYmI3Y2Ux
NDViMDAyNWI2MTMuLmUwMGMwNDUxMjc0ODRlOGE2ZjFiMjE3M2FhYTlkZDNmMDNkN2ViNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAKQEAgLTU5LDcgKzU5LDggQEAgRXZlbnRRdWV1ZTo6
fkV2ZW50UXVldWUoKQogdm9pZCBFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSk7Ci0gICAgbV9xdWV1
ZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVu
dHMuYWRkKGV2ZW50KS5zZWNvbmQ7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRk
ZWQpOyAvLyBJdCBzaG91bGQgbm90IGhhdmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgogICAg
IAogICAgIGlmICghbV9wZW5kaW5nRXZlbnRUaW1lci0+aXNBY3RpdmUoKSkKICAgICAgICAgbV9w
ZW5kaW5nRXZlbnRUaW1lci0+c3RhcnRPbmVTaG90KDApOwpAQCAtNzcsMjUgKzc4LDQxIEBAIHZv
aWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZVNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0
LCBTY3JvbGxFdmVudFRhcmdldFR5CiAgICAgZW5xdWV1ZUV2ZW50KHNjcm9sbEV2ZW50LnJlbGVh
c2UoKSk7CiB9CiAKK2Jvb2wgRXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQoRXZlbnQqIGV2ZW50KQor
eworICAgIGJvb2wgZm91bmQgPSBtX3F1ZXVlZEV2ZW50cy5jb250YWlucyhldmVudCk7CisgICAg
bV9xdWV1ZWRFdmVudHMucmVtb3ZlKGV2ZW50KTsKKyAgICBpZiAobV9xdWV1ZWRFdmVudHMuaXNF
bXB0eSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7CisgICAgcmV0dXJu
IGZvdW5kOworfQorCiB2b2lkIEV2ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKQog
ewogICAgIEFTU0VSVCghbV9wZW5kaW5nRXZlbnRUaW1lci0+aXNBY3RpdmUoKSk7CisgICAgQVNT
RVJUKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxFdmVu
dD4gPiBxdWV1ZWRFdmVudHM7Ci0gICAgcXVldWVkRXZlbnRzLnN3YXAobV9xdWV1ZWRFdmVudHMp
OwotICAgIAogICAgIG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmNsZWFyKCk7CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1ZXVlZEV2ZW50cy5zaXplKCk7IGkrKykKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudChxdWV1ZWRFdmVudHNbaV0ucmVsZWFzZSgpKTsKKyAgICAvLyBJbnNl
cnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNob3VsZCBzdG9wLgorICAgIEFTU0VSVCghbV9xdWV1
ZWRFdmVudHMuY29udGFpbnMoMCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50
cy5hZGQoMCkuc2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsg
Ly8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KKworICAgIHdo
aWxlICghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIExpc3RIYXNoU2V0PFJl
ZlB0cjxFdmVudD4gPjo6aXRlcmF0b3IgaXRlciA9IG1fcXVldWVkRXZlbnRzLmJlZ2luKCk7Cisg
ICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSAqaXRlcjsKKyAgICAgICAgbV9xdWV1ZWRFdmVu
dHMucmVtb3ZlKGl0ZXIpOworICAgICAgICBpZiAoIWV2ZW50KQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIH0KIH0KIAogdm9pZCBF
dmVudFF1ZXVlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAg
IEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCA9IGV2ZW50LT50YXJnZXQoKTsKLSAgICBpZiAoZXZl
bnRUYXJnZXQtPnRvTm9kZSgpKQotICAgICAgICBldmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChl
dmVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCkpCisgICAgaWYg
KGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQogICAgICAgICBldmVudFRhcmdldC0+dG9ET01X
aW5kb3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCwgMCk7CiAgICAgZWxzZQogICAgICAgICBldmVu
dFRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAppbmRl
eCBhNTg5ZWQ4MGY1ZDdhYjEzYTViMGEzMGNiYjczN2NmY2Q2Y2RjNDg5Li45NGVhNzIwMmFiZGM2
Nzk1NDUyMzg3NmU5NjExNWZiODdkNzQ0ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKQEAg
LTI4LDExICsyOCwxMSBAQAogI2RlZmluZSBFdmVudFF1ZXVlX2gKIAogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIGVucXVl
dWVTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+LCBTY3JvbGxFdmVudFRhcmdldFR5cGUpOwor
ICAgIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBF
dmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKQEAgLTY4LDcgKzY5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAg
T3duUHRyPEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKLSAgICBWZWN0b3I8
UmVmUHRyPEV2ZW50PiA+IG1fcXVldWVkRXZlbnRzOworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxF
dmVudD4gPiBtX3F1ZXVlZEV2ZW50czsKICAgICBIYXNoU2V0PE5vZGUqPiBtX25vZGVzV2l0aFF1
ZXVlZFNjcm9sbEV2ZW50czsKICAgICAKICAgICBmcmllbmQgY2xhc3MgRXZlbnRRdWV1ZVRpbWVy
OyAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAppbmRleCAxMTE4YTFhOTQ5OGNh
MjczNWIyNzlhN2U5Nzc3ODZhMDJmZTg1ZTJjLi45MjU5YmU4Y2FmNjA5ZjZiM2Q5NzE2NjRjMjMx
YWE3OWY5MGIxMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCkBAIC0yMjMs
NyArMjIzLDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGlkYkRhdGFiYXNlRXhjZXB0aW9u
TmFtZXNbXSA9IHsKICAgICAiVFJBTlNJRU5UX0VSUiIsCiAgICAgIlRJTUVPVVRfRVJSIiwKICAg
ICAiREVBRExPQ0tfRVJSIiwKLSAgICAiUkVBRF9PTkxZX0VSUiIKKyAgICAiUkVBRF9PTkxZX0VS
UiIsCisgICAgIkFCT1JUX0VSUiIKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpZGJE
YXRhYmFzZUV4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0gewpAQCAtMjM4LDcgKzIzOSw4IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpZGJEYXRhYmFzZUV4Y2VwdGlvbkRlc2NyaXB0aW9uc1td
ID0gewogICAgICJUUkFOU0lFTlRfRVJSIiwgLy8gRklYTUU6IFRoaXMgaXNuJ3QgZXZlbiB1c2Vk
LgogICAgICJUSU1FT1VUX0VSUiIsIC8vIFRoaXMgY2FuJ3QgYmUgdGhyb3duLgogICAgICJERUFE
TE9DS19FUlIiLCAvLyBUaGlzIGNhbid0IGJlIHRocm93bi4KLSAgICAiV3JpdGUgb3BlcmF0aW9u
cyBjYW5ub3QgYmUgcHJlZm9ybWVkIG9uIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uLiIKKyAgICAi
V3JpdGUgb3BlcmF0aW9ucyBjYW5ub3QgYmUgcHJlZm9ybWVkIG9uIGEgcmVhZC1vbmx5IHRyYW5z
YWN0aW9uLiIsCisgICAgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVl
c3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4iCiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ3Vyc29yLmNwcAppbmRleCA1MzFjYWUxNDBlZmZkMGZmZDQ2NzQ0OWI3NWMzNmRmY2QwY2Zl
YWI3Li5mYTFjYTcwNGY5YjhlODg2ZGVlZGU0YWRhZThkNGNmMGVmM2YyYTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCkBAIC03Miw4ICs3MiwxMCBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZQogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVz
dDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdl
dCgpKTsKICAgICBtX2JhY2tlbmQtPnVwZGF0ZSh2YWx1ZSwgcmVxdWVzdCwgZWMpOwotICAgIGlm
IChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsK
ICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsK
IH0KIApAQCAtOTEsOCArOTMsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6
OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKIHsKICAgICBS
ZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5k
LT5kZWxldGVGdW5jdGlvbihyZXF1ZXN0LCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGlmIChlYykg
eworICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwogICAgICAgICByZXR1cm4gMDsK
KyAgICB9CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzODVlYjMy
ZWVmNzQyMTQ5MjM5NjIxYTEzN2I2NTIwZWEwOWRhMjlhLi5lMjc0NWI1MWE3OGE5ZThhYWI3MDFl
ZjkzMThlYzY5OWFhNzBmNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKCFt
X3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8UGVu
ZGluZ1NldFZlcnNpb25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwgPSBtX3BlbmRpbmdTZXRW
ZXJzaW9uQ2FsbHMudGFrZUZpcnN0KCk7CiAgICAgICAgIHNldFZlcnNpb24ocGVuZGluZ1NldFZl
cnNpb25DYWxsLT52ZXJzaW9uKCksIHBlbmRpbmdTZXRWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCks
IGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlRXhjZXB0aW9uLmgKaW5kZXggZjllYmIxZmZlMTM4ZmI0NTgzNzRkY2M1YzE2OWUz
MzQ5NTA0ZWY2OS4uMjE5OTFlZTdmYjJlZjljMTQ5ZmNhZTc0MGI4NDhjOGQ5ODc3Yzc2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaApAQCAtNTUs
NyArNTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIFRSQU5TSUVOVF9FUlIgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbk9mZnNldCArIDksCiAgICAgICAgIFRJTUVPVVRfRVJSID0gSURCRGF0YWJhc2VFeGNl
cHRpb25PZmZzZXQgKyAxMCwKICAgICAgICAgREVBRExPQ0tfRVJSID0gSURCRGF0YWJhc2VFeGNl
cHRpb25PZmZzZXQgKyAxMSwKLSAgICAgICAgUkVBRF9PTkxZX0VSUiA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uT2Zmc2V0ICsgMTIKKyAgICAgICAgUkVBRF9PTkxZX0VSUiA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uT2Zmc2V0ICsgMTIsCisgICAgICAgIEFCT1JUX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uT2Zmc2V0ICsgMTMKICAgICB9OwogCiAgICAgc3RhdGljIGludCBFcnJvckNvZGVUb0V4Y2Vw
dGlvbkNvZGUoaW50IGVycm9yQ29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5pZGwKaW5kZXggM2I4YjA5ZjZkNGU4NjE3MTAwNzE5NDRlZmViMjFj
NDQzMjEwYzIxZS4uZDYwMzA1NzM4YmRkMmQ4NGFmZmRjMWFmOWM3MGU1MDRiMGQ4OGVlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwKQEAg
LTUyLDYgKzUyLDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBUSU1FT1VUX0VSUiA9IDEwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBERUFE
TE9DS19FUlIgPSAxMTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUkVBRF9PTkxZX0VS
UiA9IDEyOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBQk9SVF9FUlIgPSAxMzsKICAg
ICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCmluZGV4IDYxNTc2N2I3YzNk
Y2FiM2E4NjY1MjZmYmVhZDI2Y2U1OWFhZDgxMDUuLjYzYjgwMGU1YmY4MjIwNWEwNWRkNWI4ZDk2
NjI4ZTBlNWNiMDIxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCkBAIC02Miw4
ICs2MiwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogCiAgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+b3BlbkN1cnNvcihr
ZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVj
KTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJs
eURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIApAQCAtNzcsOCArNzksMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogCiAgICAgUmVm
UHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURC
QW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+
b3BlbktleUN1cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9u
LT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJl
cXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBy
ZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtODYsOCArOTAsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHIKIHsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7
CiAgICAgbV9iYWNrZW5kLT5nZXQoa2V5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5k
KCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1h
cmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gcmVx
dWVzdDsKIH0KIApAQCAtOTUsOCArMTAxLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmCiB7
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
YmFja2VuZC0+Z2V0S2V5KGtleSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBl
Yyk7Ci0gICAgaWYgKGVjKQorICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJrRWFy
bHlEZWF0aCgpOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNTNh
ZTI3OTY3YWI0ZmFlMTA2MzEwZTVkMmY1MmIxNDM1MDgxZmQ0Mi4uODdkMmExNGZjZjFjOTM5YmFm
MWRmMTVhMjllMGQwZWRiMTIxODU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAKQEAgLTcxLDggKzcxLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiB7
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
b2JqZWN0U3RvcmUtPmdldChrZXksIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwg
ZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vh
cmx5RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHJldHVybiByZXF1ZXN0
LnJlbGVhc2UoKTsKIH0KIApAQCAtODAsMzYgKzgyLDQ0IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzCiB7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgIG1fb2JqZWN0U3RvcmUtPnB1dCh2YWx1ZSwga2V5LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U6OkFkZE9ubHksIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5
RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgfQor
ICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fb2JqZWN0U3RvcmUtPnB1dCh2YWx1ZSwga2V5LCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9yVXBkYXRlLCByZXF1ZXN0LCBtX3Ry
YW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7Cisg
ICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiByZXF1ZXN0OworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9
CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihrZXksIHJl
cXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBp
ZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgfQorICAgIHJldHVybiByZXF1ZXN0LnJl
bGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
b2JqZWN0U3RvcmUtPmNsZWFyKHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5
RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgfQor
ICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJJbmRleD4g
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBjb25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTE0OCw4ICsxNTgsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKIAogICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQs
IElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX29iamVj
dFN0b3JlLT5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAgICAg
cmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAg
IHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5jcHAKaW5kZXggYTNlNWVhYTYzODE1N2NkNWRlYjI3MmIyMWM4YTU1NGNiZjdlYmI3MC4u
NDM4MGE4MjA5YzY1ZjkxN2MwYjUxOWM2N2ZiYjEzZTY2ZjlmOTA4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSURCSW5k
ZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdU
cmFuc2FjdGlvbk1vbml0b3IuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDEyICs1OSwxNyBAQCBJREJSZXF1ZXN0OjpJREJSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyYwogICAgICwgbV9yZWFkeVN0YXRlKExPQURJTkcpCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNl
KQogewotICAgIGlmIChtX3RyYW5zYWN0aW9uKQorICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7Cisg
ICAgICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKICAgICAgICAgSURC
UGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSk7CisgICAgfQogfQogCiBJREJSZXF1ZXN0Ojp+SURCUmVxdWVz
dCgpCiB7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBET05FIHx8IG1fcmVhZHlTdGF0ZSA9
PSBFYXJseURlYXRoKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbikKKyAgICAgICAgbV90cmFuc2Fj
dGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SURCQW55PiBJ
REJSZXF1ZXN0OjpyZXN1bHQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkBAIC0xMDUsOSArMTEx
LDE2IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlJlcXVlc3Q6OnRyYW5zYWN0aW9u
KCkgY29uc3QKIAogdW5zaWduZWQgc2hvcnQgSURCUmVxdWVzdDo6cmVhZHlTdGF0ZSgpIGNvbnN0
CiB7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBMT0FESU5HIHx8IG1fcmVhZHlTdGF0ZSA9
PSBET05FKTsKICAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwogfQogCit2b2lkIElEQlJlcXVlc3Q6
Om1hcmtFYXJseURlYXRoKCkKK3sKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IExPQURJTkcp
OworICAgIG1fcmVhZHlTdGF0ZSA9IEVhcmx5RGVhdGg7Cit9CisKIGJvb2wgSURCUmVxdWVzdDo6
cmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICBBU1NF
UlQoIW1fZmluaXNoZWQpOwpAQCAtMTI2LDYgKzEzOSwzMiBAQCBib29sIElEQlJlcXVlc3Q6OnJl
c2V0UmVhZHlTdGF0ZShJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK0lEQkFueSogSURCUmVxdWVzdDo6c291cmNlKCkKK3sKKyAgICByZXR1cm4gbV9z
b3VyY2UuZ2V0KCk7Cit9CisKK3ZvaWQgSURCUmVxdWVzdDo6YWJvcnQoKQoreworICAgIGlmICht
X3JlYWR5U3RhdGUgIT0gTE9BRElORykgeworICAgICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09
IERPTkUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVl
ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVu
dFF1ZXVlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VucXVldWVkRXZlbnRzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGJvb2wgcmVtb3ZlZCA9IGV2ZW50UXVldWUtPmNhbmNlbEV2
ZW50KG1fZW5xdWV1ZWRFdmVudHNbaV0uZ2V0KCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
bW92ZWQsIHJlbW92ZWQpOworICAgIH0KKyAgICBtX2VucXVldWVkRXZlbnRzLmNsZWFyKCk7CisK
KyAgICBtX2Vycm9yQ29kZSA9IDA7CisgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcoKTsKKyAg
ICBtX3Jlc3VsdC5jbGVhcigpOworICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFi
b3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOworfQorCiB2b2lk
IElEQlJlcXVlc3Q6Om9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikK
IHsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYm
ICFtX3Jlc3VsdCk7CkBAIC0yMTgsMTIgKzI1NywxOCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBJREJSZXF1ZXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIGJvb2wgSURCUmVx
dWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBBU1NF
UlQoIW1fZmluaXNoZWQpOworICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CiAg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50
YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlIDwgRE9ORSk7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkKICAgICAgICAg
bV9yZWFkeVN0YXRlID0gRE9ORTsKIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnF1
ZXVlZEV2ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9lbnF1ZXVlZEV2ZW50c1tp
XS5nZXQoKSA9PSBldmVudC5nZXQoKSkKKyAgICAgICAgICAgIG1fZW5xdWV1ZWRFdmVudHMucmVt
b3ZlKGkpOworICAgIH0KKwogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gdGFyZ2V0
czsKICAgICB0YXJnZXRzLmFwcGVuZCh0aGlzKTsKICAgICBpZiAobV90cmFuc2FjdGlvbikgewpA
QCAtMjQwLDcgKzI4NSw2IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOwogCiAgICAgLy8gSWYg
dGhlIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIHRoZW4gd2UnbGwgZmlyZSBhZ2Fpbi4K
LS8vICAgIGlmIChtX3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vy
c29yVHlwZSAmJiBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMuYmxvY2tlZEV2ZW50KQogICAg
IGlmIChtX3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yVHlw
ZSkKICAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7CiAKQEAgLTI2MywxMiArMzA3LDggQEAgdm9p
ZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKICAgICBFdmVu
dFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
LSAgICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwotfQotCi1JREJBbnkqIElEQlJl
cXVlc3Q6OnNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIG1fc291cmNlLmdldCgpOworICAgIGV2ZW50
UXVldWUtPmVucXVldWVFdmVudChldmVudC5nZXQoKSk7CisgICAgbV9lbnF1ZXVlZEV2ZW50cy5h
cHBlbmQoZXZlbnQpOwogfQogCiBFdmVudFRhcmdldERhdGEqIElEQlJlcXVlc3Q6OmV2ZW50VGFy
Z2V0RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IGU0MGYxYjE1N2Nm
YmQwZDg2ZTUyMzk3MjFiN2MzZjQ3ZWIxMzEwNWIuLmExOTA4M2YzZDM4MDgyNGU1M2FkMTU1Y2Q2
MjIyMTYzYWQ3NjBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC01OCwx
NSArNTgsMTggQEAgcHVibGljOgogICAgIC8vIERlZmluZWQgaW4gdGhlIElETAogICAgIGVudW0g
UmVhZHlTdGF0ZSB7CiAgICAgICAgIExPQURJTkcgPSAxLAotICAgICAgICBET05FID0gMgorICAg
ICAgICBET05FID0gMiwKKyAgICAgICAgRWFybHlEZWF0aCA9IDMKICAgICB9OwogICAgIHVuc2ln
bmVkIHNob3J0IHJlYWR5U3RhdGUoKSBjb25zdDsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoc3VjY2Vzcyk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihlcnJvcik7CiAKKyAgICB2b2lkIG1hcmtFYXJseURlYXRoKCk7CiAgICAgYm9vbCByZXNldFJl
YWR5U3RhdGUoSURCVHJhbnNhY3Rpb24qKTsKICAgICBJREJBbnkqIHNvdXJjZSgpOworICAgIHZv
aWQgYWJvcnQoKTsKIAogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkVy
cm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwpAQCAtMTEwLDYgKzExMyw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBib29sIG1fZmluaXNo
ZWQ7IC8vIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UnbGwgZmlyZSBhbnkgbW9yZSBldmVudHM/IElm
IG5vdCwgd2UncmUgZmluaXNoZWQuCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVl
dWVkRXZlbnRzOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNmI3MzlmY2I0
YWYwYTBlMzliZjRhOWZiMGRlY2Q1MzJlOTM0NzdlMy4uNGNlY2RjNTAwNTZkNGMwNjQwNDM1MzM5
N2RhM2FmYzU4MzI4NjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5jcHAKQEAgLTEwMyw4ICsxMDMsMjUgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQog
ICAgICAgICBtX2JhY2tlbmQtPmFib3J0KCk7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnJl
Z2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIG1fY2hpbGRSZXF1ZXN0
cy5hZGQocmVxdWVzdCk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJSZXF1
ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgLy8gSWYgd2UgYWJvcnRlZCB0aGUgcmVx
dWVzdCwgaXQgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiByZW1vdmVkLgorICAgIG1fY2hpbGRSZXF1
ZXN0cy5yZW1vdmUocmVxdWVzdCk7Cit9CisKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQo
KQogeworICAgIHdoaWxlICghbV9jaGlsZFJlcXVlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICBJ
REJSZXF1ZXN0KiByZXF1ZXN0ID0gKm1fY2hpbGRSZXF1ZXN0cy5iZWdpbigpOworICAgICAgICBt
X2NoaWxkUmVxdWVzdHMucmVtb3ZlKHJlcXVlc3QpOworICAgICAgICByZXF1ZXN0LT5hYm9ydCgp
OworICAgIH0KKwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5h
Ym9ydEV2ZW50LCB0cnVlLCB0cnVlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb24uaAppbmRleCBmZjRmZWI2MTIzMTFjYWJiM2ZmMGEzNjA4NDVjMzViOWRiZTRlM2E4
Li5iNTc3OGFkNzcxN2U5NTgzNTJmYmFiZDRhY2I3YmE5OGY2MGVkZTU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCkBAIC02Miw2ICs2Miw5IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFib3J0KCk7CiAKKyAgICB2b2lkIHJlZ2lz
dGVyUmVxdWVzdChJREJSZXF1ZXN0Kik7CisgICAgdm9pZCB1bnJlZ2lzdGVyUmVxdWVzdChJREJS
ZXF1ZXN0Kik7CisKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsK
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvbXBsZXRlKTsKICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKQEAgLTEwMCw2ICsxMDMsOCBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIHNob3J0IG1fbW9kZTsKICAgICBib29sIG1fZmluaXNoZWQ7
IC8vIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UnbGwgZmlyZSBhbnkgbW9yZSBldmVudHMgb3IgYWxs
b3cgYW55IG5ldyB0cmFuc2FjdGlvbnM/IElmIG5vdCwgd2UncmUgZmluaXNoZWQuCiAKKyAgICBM
aXN0SGFzaFNldDxJREJSZXF1ZXN0Kj4gbV9jaGlsZFJlcXVlc3RzOworCiAgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84120</attachid>
            <date>2011-02-28 14:22:57 -0800</date>
            <delta_ts>2011-03-01 09:10:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54785-20110228142256.patch</filename>
            <type>text/plain</type>
            <size>27525</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk5MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YzE1ZmJkMjkwYTk1YzIwZDYwY2U3
ODlkOTRmM2IxMWZiNzg2ZjM1Li45YjZkNjUzYTk2Mjg4ZmRiNDkwNTg1YzZjNTUzMmQ0ODA3MGIz
YjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMTggIEplcmVteSBPcmxvdyAgPGpv
cmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBhbiBJREJUcmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBhbGwgcmVxdWVz
dHMgdGhhdCBoYXZlIG5vdCB5ZXQgZmlyZWQgc2hvdWxkIGZpcmUgYW4gQUJPUlRfRVJSCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc4NQorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbDogQWRkZWQKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC1leHBlY3RlZC50eHQ6
IEFkZGVkCisKIDIwMTEtMDItMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3ODc4OS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFi
b3J0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2JjYjcwNjlhNzAzZjAzYzc5MGQxZWU5MWI0
N2ExOGU3NmJkOTcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1Rl
c3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhlIHByb3BlciBvbmFib3J0IG1lc3NhZ2VzLi4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCdu
YW1lJykKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKQorc2V0VmVyc2lvblN1Y2Nlc3MoKToKK3RyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
UEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCit0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0
CitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkKK3N0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAn
a2V5JykKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oW10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpCit0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkCit0cmFucy5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2sKK3N0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpCitzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAn
a2V5MicpCitzdG9yZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAna2V5MycpCitQQVNT
IGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQUJP
UlRfRVJSCitQQVNTIGZpcnN0RXJyb3IgaXMgZmFsc2UKK1BBU1Mgc2Vjb25kRXJyb3IgaXMgZmFs
c2UKK1BBU1MgYWJvcnRGaXJlZCBpcyBmYWxzZQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0
b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0FMTE9XRURfRVJSCitQQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgd2Via2l0SURCRGF0
YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSCitQQVNTIGZpcnN0RXJyb3IgaXMgdHJ1ZQorUEFTUyBz
ZWNvbmRFcnJvciBpcyBmYWxzZQorUEFTUyBhYm9ydEZpcmVkIGlzIGZhbHNlCitQQVNTIGZpcnN0
RXJyb3IgaXMgdHJ1ZQorUEFTUyBzZWNvbmRFcnJvciBpcyB0cnVlCitQQVNTIGFib3J0RmlyZWQg
aXMgZmFsc2UKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoe3g6ICd2YWx1ZTUn
LCB5OiAnenp6NSd9LCAna2V5NScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZiZDBjMDBkMzg0ZjVkNDlhNGM1M2I5ZjVmMGM2ZWVkZmJmYjJkNTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9y
dC5odG1sCkBAIC0wLDAgKzEsMTAzIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCB0
cmFuc2FjdGlvbiBhYm9ydHMgc2VuZCB0aGUgcHJvcGVyIG9uYWJvcnQgbWVzc2FnZXMuLiIpOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ25hbWUnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAg
IGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHdpbmRvdy50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOwor
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30s
ICdrZXknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVk
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0
ZUNhbGxiYWNrIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5h
ZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gZmlyc3RBZGQ7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZTMnLCB5OiAnenp6Myd9LCAna2V5MycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gc2Vjb25k
QWRkOworICAgIHRyYW5zLmFib3J0KCk7CisKKyAgICBmaXJzdEVycm9yID0gZmFsc2U7CisgICAg
c2Vjb25kRXJyb3IgPSBmYWxzZTsKKyAgICBhYm9ydEZpcmVkID0gZmFsc2U7Cit9CisKK2Z1bmN0
aW9uIGZpcnN0QWRkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIs
ICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5BQk9SVF9FUlIiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgZmlyc3RFcnJvciA9IHRydWU7CisK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTQnLCB5OiAn
enp6NCd9LCAna2V5NCcpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VE
X0VSUiIpOworfQorCitmdW5jdGlvbiBzZWNvbmRBZGQoKQoreworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VS
UiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOworICAgIHNob3VsZEJlRmFsc2Uo
InNlY29uZEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOworICAgIHNl
Y29uZEVycm9yID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sK
KyAgICBzaG91bGRCZVRydWUoImZpcnN0RXJyb3IiKTsKKyAgICBzaG91bGRCZVRydWUoInNlY29u
ZEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOworICAgIGFib3J0Rmly
ZWQgPSB0cnVlOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKHt4OiAn
dmFsdWU1JywgeTogJ3p6ejUnfSwgJ2tleTUnKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfQUxMT1dFRF9FUlIiKTsKKyAgICBkb25lKCk7Cit9CisKK3Rlc3QoKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDRiZmRmMWUyNDcwNzYwMjFjMzdhNGQ0OTVlOGEzMDk2NzZhZjdlMzMuLjg4
ZGFjYjI2ZDEyMWMzODIyODU2NjMwNWZlM2I1ZTc2NDc0MWY2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxMS0wMi0xOCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVu
IGFuIElEQlRyYW5zYWN0aW9uIGlzIGFib3J0ZWQsIGFsbCByZXF1ZXN0cyB0aGF0IGhhdmUgbm90
IHlldCBmaXJlZCBzaG91bGQgZmlyZSBhbiBBQk9SVF9FUlIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0Nzg1CisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGluIGEgbG90IG9mIHNhbml0eSBjaGVja3MvQVNTRVJUcyB0byBtYWtlIHN1cmUgd2UncmUg
ZG9pbmcKKyAgICAgICAgdGhlIHJpZ2h0IHRoaW5nIGFuZCBjb250aW51ZSB0byBkbyB0aGUgcmln
aHQgdGhpbmcuIEl0IGFsc28gbW9kaWZpZXMgRXZlbnRRdWV1ZQorICAgICAgICBzbyB0aGF0IHdl
IGNhbiBjYW5jZWwgYW4gZXZlbnQuIFRvIGRvIHRoaXMgZWZmaWNpZW50bHksIHRoZSB2ZWN0b3Ig
aXMgbm93IGEKKyAgICAgICAgTGlzdEhhc2hTZXQuCisKKyAgICAgICAgQ2FuZWxsaW5nIHRoZSBl
dmVudCBpcyBoYXJkZXIvbWVzc2llciwgYnV0IHRoZSBtb3N0IGRldGVybWluaXN0aWMgdGhpbmcg
dG8gZG8uCisgICAgICAgIFRvIHRoZSB1c2VyLCB0aGUgd29yayBpc24ndCBkb25lIHVudGlsIHdl
IGZpcmUgdGhlIG9uc3VjY2Vzcy9vbmVycm9yIGhhbmRsZXIuCisgICAgICAgIFNvIHRoZSBldmVu
dCAod2hpY2ggZG9lcyBmaXJlIHRoYXQpIG5lZWRzIHRvIGJlIGNhbmNlbGFibGUuCisKKyAgICAg
ICAgdHJhbnNhY3Rpb24tYWJvcnQuaHRtbCB0ZXN0cyB0aGlzLgorCisgICAgICAgICogZG9tL0V2
ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9tL0V2ZW50
UXVldWUuaDoKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQ29kZS5jcHA6CisgICAgICAgICogc3Rv
cmFnZS9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjp1cGRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAg
ICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlRXhjZXB0aW9uLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRLZXkpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNv
cik6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
fklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVhZHlTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjptYXJrRWFybHlEZWF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVx
dWVzdDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QlJlcXVlc3QuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZWdpc3RlclJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkFib3J0KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmg6CisKIDIwMTEtMDItMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3ODc4OS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcAppbmRleCA1YTFhYmU4YWQxNWViNWNmZGVhZTRjMmJi
N2NlMTQ1YjAwMjViNjEzLi5lMDBjMDQ1MTI3NDg0ZThhNmYxYjIxNzNhYWE5ZGQzZjAzZDdlYjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwCkBAIC01OSw3ICs1OSw4IEBAIEV2ZW50UXVl
dWU6On5FdmVudFF1ZXVlKCkKIHZvaWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwotICAgIG1f
cXVldWVkRXZlbnRzLmFwcGVuZChldmVudCk7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVk
RXZlbnRzLmFkZChldmVudCkuc2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdh
c0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4K
ICAgICAKICAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCiAgICAgICAg
IG1fcGVuZGluZ0V2ZW50VGltZXItPnN0YXJ0T25lU2hvdCgwKTsKQEAgLTc3LDI1ICs3OCw0MSBA
QCB2b2lkIEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+IHRh
cmdldCwgU2Nyb2xsRXZlbnRUYXJnZXRUeQogICAgIGVucXVldWVFdmVudChzY3JvbGxFdmVudC5y
ZWxlYXNlKCkpOwogfQogCitib29sIEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBldmVu
dCkKK3sKKyAgICBib29sIGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQpOwor
ICAgIG1fcXVldWVkRXZlbnRzLnJlbW92ZShldmVudCk7CisgICAgaWYgKG1fcXVldWVkRXZlbnRz
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOworICAgIHJl
dHVybiBmb3VuZDsKK30KKwogdm9pZCBFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVk
KCkKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOworICAg
IEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gcXVldWVkRXZlbnRzOwotICAgIHF1ZXVlZEV2ZW50cy5zd2FwKG1fcXVldWVkRXZl
bnRzKTsKLSAgICAKICAgICBtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5jbGVhcigpOwog
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWV1ZWRFdmVudHMuc2l6ZSgpOyBpKyspCi0g
ICAgICAgIGRpc3BhdGNoRXZlbnQocXVldWVkRXZlbnRzW2ldLnJlbGVhc2UoKSk7CisgICAgLy8g
SW5zZXJ0IGEgbWFya2VyIGZvciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KKyAgICBBU1NFUlQoIW1f
cXVldWVkRXZlbnRzLmNvbnRhaW5zKDApKTsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRF
dmVudHMuYWRkKDApLnNlY29uZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRl
ZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCisKKyAg
ICB3aGlsZSAoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX3F1ZXVlZEV2ZW50cy5iZWdpbigp
OworICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gKml0ZXI7CisgICAgICAgIG1fcXVldWVk
RXZlbnRzLnJlbW92ZShpdGVyKTsKKyAgICAgICAgaWYgKCFldmVudCkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKKyAgICB9CiB9CiAKIHZv
aWQgRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsK
ICAgICBFdmVudFRhcmdldCogZXZlbnRUYXJnZXQgPSBldmVudC0+dGFyZ2V0KCk7Ci0gICAgaWYg
KGV2ZW50VGFyZ2V0LT50b05vZGUoKSkKLSAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZl
bnQoZXZlbnQpOwotICAgIGVsc2UgaWYgKGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQorICAg
IGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkKICAgICAgICAgZXZlbnRUYXJnZXQtPnRv
RE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOwogICAgIGVsc2UKICAgICAgICAg
ZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgK
aW5kZXggYTU4OWVkODBmNWQ3YWIxM2E1YjBhMzBjYmI3MzdjZmNkNmNkYzQ4OS4uOTRlYTcyMDJh
YmRjNjc5NTQ1MjM4NzZlOTYxMTVmYjg3ZDc0NGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5o
CkBAIC0yOCwxMSArMjgsMTEgQEAKICNkZWZpbmUgRXZlbnRRdWV1ZV9oCiAKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBl
bnF1ZXVlU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBl
KTsKKyAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC02OCw3ICs2OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAog
ICAgIE93blB0cjxFdmVudFF1ZXVlVGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7Ci0gICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4gPiBtX3F1ZXVlZEV2ZW50czsKKyAgICBMaXN0SGFzaFNldDxSZWZQ
dHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7CiAgICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dp
dGhRdWV1ZWRTY3JvbGxFdmVudHM7CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVU
aW1lcjsgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKaW5kZXggMTExOGExYTk0
OThjYTI3MzViMjc5YTdlOTc3Nzg2YTAyZmU4NWUyYy4uOTI1OWJlOGNhZjYwOWY2YjNkOTcxNjY0
YzIzMWFhNzlmOTBiMTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bkNvZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcApAQCAt
MjIzLDcgKzIyMyw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpZGJEYXRhYmFzZUV4Y2Vw
dGlvbk5hbWVzW10gPSB7CiAgICAgIlRSQU5TSUVOVF9FUlIiLAogICAgICJUSU1FT1VUX0VSUiIs
CiAgICAgIkRFQURMT0NLX0VSUiIsCi0gICAgIlJFQURfT05MWV9FUlIiCisgICAgIlJFQURfT05M
WV9FUlIiLAorICAgICJBQk9SVF9FUlIiCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
aWRiRGF0YWJhc2VFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKQEAgLTIzOCw3ICsyMzksOCBA
QCBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgaWRiRGF0YWJhc2VFeGNlcHRpb25EZXNjcmlwdGlv
bnNbXSA9IHsKICAgICAiVFJBTlNJRU5UX0VSUiIsIC8vIEZJWE1FOiBUaGlzIGlzbid0IGV2ZW4g
dXNlZC4KICAgICAiVElNRU9VVF9FUlIiLCAvLyBUaGlzIGNhbid0IGJlIHRocm93bi4KICAgICAi
REVBRExPQ0tfRVJSIiwgLy8gVGhpcyBjYW4ndCBiZSB0aHJvd24uCi0gICAgIldyaXRlIG9wZXJh
dGlvbnMgY2Fubm90IGJlIHByZWZvcm1lZCBvbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbi4iCisg
ICAgIldyaXRlIG9wZXJhdGlvbnMgY2Fubm90IGJlIHByZWZvcm1lZCBvbiBhIHJlYWQtb25seSB0
cmFuc2FjdGlvbi4iLAorICAgICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQsIHNvIHRoZSBy
ZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIgogfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5jcHAKaW5kZXggNTMxY2FlMTQwZWZmZDBmZmQ0Njc0NDliNzVjMzZkZmNk
MGNmZWFiNy4uZmExY2E3MDRmOWI4ZTg4NmRlZWRlNGFkYWU4ZDRjZjBlZjNmMmE1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcApAQCAtNzIsOCArNzIsMTAgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmUKIHsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJl
cXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlv
bi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT51cGRhdGUodmFsdWUsIHJlcXVlc3QsIGVjKTsKLSAg
ICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRo
KCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNl
KCk7CiB9CiAKQEAgLTkxLDggKzkzLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vy
c29yOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiB7CiAg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFj
a2VuZC0+ZGVsZXRlRnVuY3Rpb24ocmVxdWVzdCwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAo
ZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAgcmV0dXJu
IDA7CisgICAgfQogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCmluZGV4IGY5ZWJiMWZmZTEz
OGZiNDU4Mzc0ZGNjNWMxNjllMzM0OTUwNGVmNjkuLjIxOTkxZWU3ZmIyZWY5YzE0OWZjYWU3NDBi
ODQ4YzhkOTg3N2M3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
RXhjZXB0aW9uLmgKQEAgLTU1LDcgKzU1LDggQEAgcHVibGljOgogICAgICAgICBUUkFOU0lFTlRf
RVJSID0gSURCRGF0YWJhc2VFeGNlcHRpb25PZmZzZXQgKyA5LAogICAgICAgICBUSU1FT1VUX0VS
UiA9IElEQkRhdGFiYXNlRXhjZXB0aW9uT2Zmc2V0ICsgMTAsCiAgICAgICAgIERFQURMT0NLX0VS
UiA9IElEQkRhdGFiYXNlRXhjZXB0aW9uT2Zmc2V0ICsgMTEsCi0gICAgICAgIFJFQURfT05MWV9F
UlIgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCArIDEyCisgICAgICAgIFJFQURfT05MWV9F
UlIgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCArIDEyLAorICAgICAgICBBQk9SVF9FUlIg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCArIDEzCiAgICAgfTsKIAogICAgIHN0YXRpYyBp
bnQgRXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKGludCBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsCmluZGV4IDNiOGIwOWY2ZDRl
ODYxNzEwMDcxOTQ0ZWZlYjIxYzQ0MzIxMGMyMWUuLmQ2MDMwNTczOGJkZDJkODRhZmZkYzFhZjlj
NzBlNTA0YjBkODhlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2VFeGNlcHRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VFeGNlcHRpb24uaWRsCkBAIC01Miw2ICs1Miw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVElNRU9VVF9FUlIgPSAxMDsKICAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgREVBRExPQ0tfRVJSID0gMTE7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IFJFQURfT05MWV9FUlIgPSAxMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
QUJPUlRfRVJSID0gMTM7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNw
cAppbmRleCA2MTU3NjdiN2MzZGNhYjNhODY2NTI2ZmJlYWQyNmNlNTlhYWQ4MTA1Li42M2I4MDBl
NWJmODIyMDVhMDVkZDViOGQ5NjYyOGUwZTVjYjAyMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4LmNwcApAQCAtNjIsOCArNjIsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKIAog
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRl
eHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2Jh
Y2tlbmQtPm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGlmIChlYykgeworICAgICAg
ICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAg
ICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTc3LDggKzc5LDEwIEBAIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6
Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgp
KTsKICAgICBtX2JhY2tlbmQtPm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgcmVx
dWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGlm
IChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwogICAgICAgICByZXR1
cm4gMDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTg2LDggKzkwLDEwIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiB7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Z2V0KGtleSwgcmVxdWVzdCwgbV90
cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGlmIChlYykgewor
ICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwogICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTk1LDggKzEwMSwxMCBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZgogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0
aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmdldEtleShrZXksIHJlcXVlc3QsIG1fdHJhbnNh
Y3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykKKyAgICBpZiAoZWMpIHsKKyAgICAg
ICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQog
ICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuY3BwCmluZGV4IDUzYWUyNzk2N2FiNGZhZTEwNjMxMGU1ZDJmNTJiMTQzNTA4MWZkNDIu
Ljg3ZDJhMTRmY2YxYzkzOWJhZjFkZjE1YTI5ZTBkMGVkYjEyMTg1NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC03MSw4ICs3MSwxMCBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzcwogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0
aW9uLmdldCgpKTsKICAgICBtX29iamVjdFN0b3JlLT5nZXQoa2V5LCByZXF1ZXN0LCBtX3RyYW5z
YWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAg
ICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0K
ICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTgwLDM2ICs4Miw0NCBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzcwogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0
ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3Ry
YW5zYWN0aW9uLmdldCgpKTsKICAgICBtX29iamVjdFN0b3JlLT5wdXQodmFsdWUsIGtleSwgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpBZGRPbmx5LCByZXF1ZXN0LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAg
IHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biByZXF1ZXN0OworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX29iamVjdFN0b3Jl
LT5wdXQodmFsdWUsIGtleSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpBZGRPclVw
ZGF0ZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVj
KQorICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwogICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICB9CisgICAgcmV0dXJuIHJl
cXVlc3QucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9vYmplY3RTdG9yZS0+ZGVs
ZXRlRnVuY3Rpb24oa2V5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsK
LSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURl
YXRoKCk7CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiByZXF1ZXN0OworICAgIH0KKyAg
ICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0
aW9uLmdldCgpKTsKICAgICBtX29iamVjdFN0b3JlLT5jbGVhcihyZXF1ZXN0LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAgaWYgKGVjKSB7CisgICAgICAg
IHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biByZXF1ZXN0OworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKIFBh
c3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29uc3QgT3B0aW9uc09iamVjdCYgb3B0
aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNDgsOCArMTU4LDEwIEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9vYmplY3RTdG9yZS0+b3BlbkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uLCBy
ZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpCisgICAg
aWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7CiAgICAgICAgIHJl
dHVybiAwOworICAgIH0KICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDZjZmZhYjgwZjYzMzRiZDEyNjgyYmIx
OWE2OTMyYjM3OTAxZTY0Y2YuLjNkOGUyZjI4NzgyYTVmMWRkOTkyMjZhMjk2MmU4NDU2NzlhZmRm
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtNDIsNiArNDIsNyBA
QAogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNp
bmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCisjaW5jbHVkZSAiSURCVHJh
bnNhY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCwxMiArNTksMTcgQEAg
SURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fcmVhZHlTdGF0ZShMT0FESU5HKQogICAg
ICwgbV9maW5pc2hlZChmYWxzZSkKIHsKLSAgICBpZiAobV90cmFuc2FjdGlvbikKKyAgICBpZiAo
bV90cmFuc2FjdGlvbikgeworICAgICAgICBtX3RyYW5zYWN0aW9uLT5yZWdpc3RlclJlcXVlc3Qo
dGhpcyk7CiAgICAgICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJlbW92ZVBlbmRp
bmdUcmFuc2FjdGlvbihtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkpOworICAgIH0KIH0KIAogSURC
UmVxdWVzdDo6fklEQlJlcXVlc3QoKQogeworICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gRE9O
RSB8fCBtX3JlYWR5U3RhdGUgPT0gRWFybHlEZWF0aCk7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24p
CisgICAgICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPElEQkFueT4gSURCUmVxdWVzdDo6cmVzdWx0KEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdApAQCAtMTA1LDkgKzExMSwxNiBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJS
ZXF1ZXN0Ojp0cmFuc2FjdGlvbigpIGNvbnN0CiAKIHVuc2lnbmVkIHNob3J0IElEQlJlcXVlc3Q6
OnJlYWR5U3RhdGUoKSBjb25zdAogeworICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gTE9BRElO
RyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7CiAgICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsKIH0K
IAordm9pZCBJREJSZXF1ZXN0OjptYXJrRWFybHlEZWF0aCgpCit7CisgICAgQVNTRVJUKG1fcmVh
ZHlTdGF0ZSA9PSBMT0FESU5HKTsKKyAgICBtX3JlYWR5U3RhdGUgPSBFYXJseURlYXRoOworfQor
CiBib29sIElEQlJlcXVlc3Q6OnJlc2V0UmVhZHlTdGF0ZShJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2ZpbmlzaGVkKTsKQEAgLTEyNiw2ICsxMzksMzIgQEAg
Ym9vbCBJREJSZXF1ZXN0OjpyZXNldFJlYWR5U3RhdGUoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitJREJBbnkqIElEQlJlcXVlc3Q6OnNvdXJjZSgp
Cit7CisgICAgcmV0dXJuIG1fc291cmNlLmdldCgpOworfQorCit2b2lkIElEQlJlcXVlc3Q6OmFi
b3J0KCkKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IExPQURJTkcpIHsKKyAgICAgICAgQVNT
RVJUKG1fcmVhZHlTdGF0ZSA9PSBET05FKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7CisgICAgRXZl
bnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKS0+ZXZlbnRRdWV1ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9lbnF1ZXVlZEV2ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBib29sIHJlbW92ZWQgPSBl
dmVudFF1ZXVlLT5jYW5jZWxFdmVudChtX2VucXVldWVkRXZlbnRzW2ldLmdldCgpKTsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKKyAgICB9CisgICAgbV9lbnF1ZXVl
ZEV2ZW50cy5jbGVhcigpOworCisgICAgbV9lcnJvckNvZGUgPSAwOworICAgIG1fZXJyb3JNZXNz
YWdlID0gU3RyaW5nKCk7CisgICAgbV9yZXN1bHQuY2xlYXIoKTsKKyAgICBvbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QUJPUlRfRVJSLCAiVGhl
IHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmls
bGVkLiIpKTsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4gZXJyb3IpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9y
TWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOwpAQCAtMjE4LDEyICsyNTcsMTggQEAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogSURCUmVxdWVzdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFtX2ZpbmlzaGVkKTsKKyAgICBBU1NFUlQobV9lbnF1ZXVl
ZEV2ZW50cy5zaXplKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKG1fcmVhZHlT
dGF0ZSA8IERPTkUpOwogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9j
a2VkRXZlbnQpCiAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7CiAKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZW5xdWV1ZWRFdmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KG1fZW5xdWV1ZWRFdmVudHNbaV0uZ2V0KCkgPT0gZXZlbnQuZ2V0KCkpCisgICAgICAgICAgICBt
X2VucXVldWVkRXZlbnRzLnJlbW92ZShpKTsKKyAgICB9CisKICAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50VGFyZ2V0PiA+IHRhcmdldHM7CiAgICAgdGFyZ2V0cy5hcHBlbmQodGhpcyk7CiAgICAgaWYg
KG1fdHJhbnNhY3Rpb24pIHsKQEAgLTI0MCw3ICsyODUsNiBAQCBib29sIElEQlJlcXVlc3Q6OmRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgYm9vbCBkb250UHJldmVu
dERlZmF1bHQgPSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJn
ZXRzKTsKIAogICAgIC8vIElmIHRoZSByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCB0aGVu
IHdlJ2xsIGZpcmUgYWdhaW4uCi0vLyAgICBpZiAobV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUo
KSAhPSBJREJBbnk6OklEQkN1cnNvclR5cGUgJiYgZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVz
LmJsb2NrZWRFdmVudCkKICAgICBpZiAobV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJ
REJBbnk6OklEQkN1cnNvclR5cGUpCiAgICAgICAgIG1fZmluaXNoZWQgPSB0cnVlOwogCkBAIC0y
NjksMTIgKzMxMyw4IEBAIHZvaWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IGV2ZW50KQogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9j
dW1lbnQoKSk7CiAgICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+ZXZlbnRRdWV1ZSgpOwogICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsK
LX0KLQotSURCQW55KiBJREJSZXF1ZXN0Ojpzb3VyY2UoKQotewotICAgIHJldHVybiBtX3NvdXJj
ZS5nZXQoKTsKKyAgICBldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQuZ2V0KCkpOworICAg
IG1fZW5xdWV1ZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKIH0KIAogRXZlbnRUYXJnZXREYXRhKiBJ
REJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
aAppbmRleCA1ZjI0NjlkZmUyYWY0ZjY2YTVhNjI5MmIzOWQ3NjZiNDBiMDU3ZWQ5Li4wYTc2YzBk
NzlkODM1YWU1Yjc1YmQ4Zjk4ZTZjNmNhNTc5NTU4MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlJlcXVlc3QuaApAQCAtNTgsMTUgKzU4LDE4IEBAIHB1YmxpYzoKICAgICAvLyBEZWZpbmVkIGlu
IHRoZSBJREwKICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAgICBMT0FESU5HID0gMSwKLSAg
ICAgICAgRE9ORSA9IDIKKyAgICAgICAgRE9ORSA9IDIsCisgICAgICAgIEVhcmx5RGVhdGggPSAz
CiAgICAgfTsKICAgICB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlKCkgY29uc3Q7CiAKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN1Y2Nlc3MpOwogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCisgICAgdm9pZCBtYXJrRWFybHlEZWF0aCgp
OwogICAgIGJvb2wgcmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKik7CiAgICAgSURCQW55
KiBzb3VyY2UoKTsKKyAgICB2b2lkIGFib3J0KCk7CiAKICAgICAvLyBJREJDYWxsYmFja3MKICAg
ICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKQEAg
LTExMSw2ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
CiAgICAgYm9vbCBtX2ZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUg
YW55IG1vcmUgZXZlbnRzPyBJZiBub3QsIHdlJ3JlIGZpbmlzaGVkLgorICAgIFZlY3RvcjxSZWZQ
dHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2
ZW50VGFyZ2V0RGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDZiNzM5ZmNiNGFmMGEwZTM5YmY0YTlmYjBkZWNkNTMyZTkzNDc3ZTMuLjRjZWNk
YzUwMDU2ZDRjMDY0MDQzNTMzOTdkYTNhZmM1ODMyODY2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xMDMsOCArMTAzLDI1IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246OmFib3J0KCkKICAgICAgICAgbV9iYWNrZW5kLT5hYm9ydCgpOwogfQogCit2b2lk
IElEQlRyYW5zYWN0aW9uOjpyZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBtX2NoaWxkUmVxdWVzdHMuYWRkKHJlcXVlc3QpOworfQorCit2b2lkIElEQlRyYW5zYWN0
aW9uOjp1bnJlZ2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIC8vIElm
IHdlIGFib3J0ZWQgdGhlIHJlcXVlc3QsIGl0IHdpbGwgYWxyZWFkeSBoYXZlIGJlZW4gcmVtb3Zl
ZC4KKyAgICBtX2NoaWxkUmVxdWVzdHMucmVtb3ZlKHJlcXVlc3QpOworfQorCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpvbkFib3J0KCkKIHsKKyAgICB3aGlsZSAoIW1fY2hpbGRSZXF1ZXN0cy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9ICptX2NoaWxkUmVxdWVzdHMu
YmVnaW4oKTsKKyAgICAgICAgbV9jaGlsZFJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0KTsKKyAgICAg
ICAgcmVxdWVzdC0+YWJvcnQoKTsKKyAgICB9CisKICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwgdHJ1ZSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggZmY0ZmViNjEyMzExY2FiYjNmZjBh
MzYwODQ1YzM1YjlkYmU0ZTNhOC4uYjU3NzhhZDc3MTdlOTU4MzUyZmJhYmQ0YWNiN2JhOThmNjBl
ZGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaApAQCAtNjIsNiAr
NjIsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhYm9ydCgp
OwogCisgICAgdm9pZCByZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCopOworICAgIHZvaWQgdW5y
ZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCopOworCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihhYm9ydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihj
b21wbGV0ZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CkBA
IC0xMDAsNiArMTAzLDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CiAg
ICAgYm9vbCBtX2ZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55
IG1vcmUgZXZlbnRzIG9yIGFsbG93IGFueSBuZXcgdHJhbnNhY3Rpb25zPyBJZiBub3QsIHdlJ3Jl
IGZpbmlzaGVkLgogCisgICAgTGlzdEhhc2hTZXQ8SURCUmVxdWVzdCo+IG1fY2hpbGRSZXF1ZXN0
czsKKwogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAK
</data>
<flag name="review"
          id="76073"
          type_id="1"
          status="+"
          setter="steveblock"
    />
          </attachment>
      

    </bug>

</bugzilla>