<?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>124430</bug_id>
          
          <creation_ts>2013-11-15 12:43:01 -0800</creation_ts>
          <short_desc>AX: Add ability to fetch only visible table rows.</short_desc>
          <delta_ts>2013-11-18 16:30:28 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.9</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Samuel White">samuel_white</reporter>
          <assigned_to name="Samuel White">samuel_white</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951161</commentid>
    <comment_count>0</comment_count>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 12:43:01 -0800</bug_when>
    <thetext>Currently AXRows and AXVisibleRows return the same thing. We have a FIXME line that should be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951162</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-11-15 12:43:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/15483239&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951163</commentid>
    <comment_count>2</comment_count>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 12:46:40 -0800</bug_when>
    <thetext>Should also fixup the AccessibilityTable rowHeaders and colHeaders methods while we are in there. Specifically, they both have static_casts we can convert to toAccessibilityTable calls and they both have unnecessary continue statements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951165</commentid>
    <comment_count>3</comment_count>
      <attachid>217072</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 12:53:09 -0800</bug_when>
    <thetext>Created attachment 217072
Initial patch for feedback only.

Patch added visibleRows method to AccessibilityTable. I selected to gather these rows each time the method was called (rather than cacheing like m_rows and m_columns) because they will be different after each scroll. Would add too much churn.

Also, added ability to get arrays of elements with a specific attribute to DRT. Should help with test brevity moving forward. i.e. less need to dump all attrs as text to see a single array based val.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951187</commentid>
    <comment_count>4</comment_count>
      <attachid>217079</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 13:51:08 -0800</bug_when>
    <thetext>Created attachment 217079
Rebased feedback patch.

Rebased patch for feedback to get EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951189</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-15 13:53:09 -0800</bug_when>
    <thetext>Attachment 217079 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/platform/mac/accessibility/table-visible-rows-expected.txt&apos;, u&apos;LayoutTests/platform/mac/accessibility/table-visible-rows.html&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableRow.h&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Tools/DumpRenderTree/AccessibilityUIElement.cpp&apos;, u&apos;Tools/DumpRenderTree/AccessibilityUIElement.h&apos;, u&apos;Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm&apos;]&quot; exit_code: 1
Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:83:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951193</commentid>
    <comment_count>6</comment_count>
      <attachid>217081</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 13:57:12 -0800</bug_when>
    <thetext>Created attachment 217081
Fixed patch for feedback.

Removed semicolon that snuck in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951195</commentid>
    <comment_count>7</comment_count>
      <attachid>217082</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 13:58:59 -0800</bug_when>
    <thetext>Created attachment 217082
Repeat WITH fix.

Oops. REAL fixed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951214</commentid>
    <comment_count>8</comment_count>
      <attachid>217082</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-15 14:40:33 -0800</bug_when>
    <thetext>Comment on attachment 217082
Repeat WITH fix.

Attachment 217082 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/24558002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951227</commentid>
    <comment_count>9</comment_count>
      <attachid>217082</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-11-15 15:02:13 -0800</bug_when>
    <thetext>Comment on attachment 217082
Repeat WITH fix.

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

&gt; LayoutTests/platform/mac/accessibility/table-visible-rows.html:38
&gt; +        shouldBe(&quot;visibleRows&quot;, &quot;3&quot;);

can you hide the content of this test when the test is done so that the ABCDE don&apos;t end up in the text expectations?

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:455
&gt; +void AccessibilityTable::visibleRows(AccessibilityChildrenVector&amp; rows)

instead of replacing columnHeaders will visibleRows, can you just make a new visibleRows method -- that should cut down the on the churn in the patch and make it easier to read

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:462
&gt; +    unsigned rowCount = m_rows.size();

i think .size() returns a size_t so we should use that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951301</commentid>
    <comment_count>10</comment_count>
      <attachid>217082</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-15 17:27:26 -0800</bug_when>
    <thetext>Comment on attachment 217082
Repeat WITH fix.

Attachment 217082 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/24538018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951303</commentid>
    <comment_count>11</comment_count>
      <attachid>217109</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 17:41:32 -0800</bug_when>
    <thetext>Created attachment 217109
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951305</commentid>
    <comment_count>12</comment_count>
      <attachid>217109</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-15 17:47:43 -0800</bug_when>
    <thetext>Comment on attachment 217109
Updated patch.

Attachment 217109 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/23748362</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951306</commentid>
    <comment_count>13</comment_count>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 17:53:17 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 217082 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217082&amp;action=review
&gt; 
&gt; &gt; LayoutTests/platform/mac/accessibility/table-visible-rows.html:38
&gt; &gt; +        shouldBe(&quot;visibleRows&quot;, &quot;3&quot;);
&gt; 
&gt; can you hide the content of this test when the test is done so that the ABCDE don&apos;t end up in the text expectations?

Hmm. I don&apos;t see this being done anyplace else and it seems that it would be somewhat confusing as this text dump is often relied on as part of the test.

For example, if the test involved removing a node, we would expect to NOT see that node in the dump. Also, if something changes that is causing nodes to be removed or lost, removing them in our tests would hide that. Right?

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:455
&gt; &gt; +void AccessibilityTable::visibleRows(AccessibilityChildrenVector&amp; rows)
&gt; 
&gt; instead of replacing columnHeaders will visibleRows, can you just make a new visibleRows method -- that should cut down the on the churn in the patch and make it easier to read

I flipped these around to match their declaration order and make the group easier to find and parse. The group being:

void columnHeaders(AccessibilityChildrenVector&amp;);
void rowHeaders(AccessibilityChildrenVector&amp;);
void visibleRows(AccessibilityChildrenVector&amp;);

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:462
&gt; &gt; +    unsigned rowCount = m_rows.size();
&gt; 
&gt; i think .size() returns a size_t so we should use that

Indeed. I prefer this as well. I was trying to maintain parity with the surrounding methods but I updated them all to size_t. Which, since I was already touching them to remove the unnecessary continue statements as stated above, seems ok.

Thanks as usual for the helpful feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951307</commentid>
    <comment_count>14</comment_count>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-15 17:54:08 -0800</bug_when>
    <thetext>Will fix the elf and win failures in next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951310</commentid>
    <comment_count>15</comment_count>
      <attachid>217109</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-15 18:24:48 -0800</bug_when>
    <thetext>Comment on attachment 217109
Updated patch.

Attachment 217109 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/24488020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951640</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-11-18 09:44:56 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 217082 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217082&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/platform/mac/accessibility/table-visible-rows.html:38
&gt; &gt; &gt; +        shouldBe(&quot;visibleRows&quot;, &quot;3&quot;);
&gt; &gt; 
&gt; &gt; can you hide the content of this test when the test is done so that the ABCDE don&apos;t end up in the text expectations?
&gt; 
&gt; Hmm. I don&apos;t see this being done anyplace else and it seems that it would be somewhat confusing as this text dump is often relied on as part of the test.
&gt; 
&gt; For example, if the test involved removing a node, we would expect to NOT see that node in the dump. Also, if something changes that is causing nodes to be removed or lost, removing them in our tests would hide that. Right?

A bunch of AX tests do this. Ryosuke has been recommending doing this to me. 

If media tests had done this then we wouldn&apos;t have had to modify 500 files when we made that recent &lt;video&gt; tag change. I think it makes the test output easier to read, because we&apos;re not testing the dump text routines

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:455
&gt; &gt; &gt; +void AccessibilityTable::visibleRows(AccessibilityChildrenVector&amp; rows)
&gt; &gt; 
&gt; &gt; instead of replacing columnHeaders will visibleRows, can you just make a new visibleRows method -- that should cut down the on the churn in the patch and make it easier to read
&gt; 
&gt; I flipped these around to match their declaration order and make the group easier to find and parse. The group being:
&gt; 
&gt; void columnHeaders(AccessibilityChildrenVector&amp;);
&gt; void rowHeaders(AccessibilityChildrenVector&amp;);
&gt; void visibleRows(AccessibilityChildrenVector&amp;);
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:462
&gt; &gt; &gt; +    unsigned rowCount = m_rows.size();
&gt; &gt; 
&gt; &gt; i think .size() returns a size_t so we should use that
&gt; 
&gt; Indeed. I prefer this as well. I was trying to maintain parity with the surrounding methods but I updated them all to size_t. Which, since I was already touching them to remove the unnecessary continue statements as stated above, seems ok.
&gt; 
&gt; Thanks as usual for the helpful feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951664</commentid>
    <comment_count>17</comment_count>
      <attachid>217207</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-18 10:26:28 -0800</bug_when>
    <thetext>Created attachment 217207
Updated patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951666</commentid>
    <comment_count>18</comment_count>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-18 10:27:58 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; (From update of attachment 217082 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217082&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; LayoutTests/platform/mac/accessibility/table-visible-rows.html:38
&gt; &gt; &gt; &gt; +        shouldBe(&quot;visibleRows&quot;, &quot;3&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; can you hide the content of this test when the test is done so that the ABCDE don&apos;t end up in the text expectations?
&gt; &gt; 
&gt; &gt; Hmm. I don&apos;t see this being done anyplace else and it seems that it would be somewhat confusing as this text dump is often relied on as part of the test.
&gt; &gt; 
&gt; &gt; For example, if the test involved removing a node, we would expect to NOT see that node in the dump. Also, if something changes that is causing nodes to be removed or lost, removing them in our tests would hide that. Right?
&gt; 
&gt; A bunch of AX tests do this. Ryosuke has been recommending doing this to me. 
&gt; 
&gt; If media tests had done this then we wouldn&apos;t have had to modify 500 files when we made that recent &lt;video&gt; tag change. I think it makes the test output easier to read, because we&apos;re not testing the dump text routines

Great point. Thanks for clarifying. Fixed.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:455
&gt; &gt; &gt; &gt; +void AccessibilityTable::visibleRows(AccessibilityChildrenVector&amp; rows)
&gt; &gt; &gt; 
&gt; &gt; &gt; instead of replacing columnHeaders will visibleRows, can you just make a new visibleRows method -- that should cut down the on the churn in the patch and make it easier to read
&gt; &gt; 
&gt; &gt; I flipped these around to match their declaration order and make the group easier to find and parse. The group being:
&gt; &gt; 
&gt; &gt; void columnHeaders(AccessibilityChildrenVector&amp;);
&gt; &gt; void rowHeaders(AccessibilityChildrenVector&amp;);
&gt; &gt; void visibleRows(AccessibilityChildrenVector&amp;);
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:462
&gt; &gt; &gt; &gt; +    unsigned rowCount = m_rows.size();
&gt; &gt; &gt; 
&gt; &gt; &gt; i think .size() returns a size_t so we should use that
&gt; &gt; 
&gt; &gt; Indeed. I prefer this as well. I was trying to maintain parity with the surrounding methods but I updated them all to size_t. Which, since I was already touching them to remove the unnecessary continue statements as stated above, seems ok.
&gt; &gt; 
&gt; &gt; Thanks as usual for the helpful feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951720</commentid>
    <comment_count>19</comment_count>
      <attachid>217207</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-11-18 11:38:23 -0800</bug_when>
    <thetext>Comment on attachment 217207
Updated patch for review.

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

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:435
&gt; +        if (header)

the above line can be put inside the if

if (AccessibilityObj *header = )

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:451
&gt; +            headers.append(header);

this seems like an unnecessary change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951809</commentid>
    <comment_count>20</comment_count>
      <attachid>217236</attachid>
    <who name="Samuel White">samuel_white</who>
    <bug_when>2013-11-18 14:41:08 -0800</bug_when>
    <thetext>Created attachment 217236
Update patch for review.

Updates per review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951866</commentid>
    <comment_count>21</comment_count>
      <attachid>217236</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-18 16:30:25 -0800</bug_when>
    <thetext>Comment on attachment 217236
Update patch for review.

Clearing flags on attachment: 217236

Committed r159468: &lt;http://trac.webkit.org/changeset/159468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951867</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-18 16:30:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217072</attachid>
            <date>2013-11-15 12:53:09 -0800</date>
            <delta_ts>2013-11-15 13:51:08 -0800</delta_ts>
            <desc>Initial patch for feedback only.</desc>
            <filename>feedback.patch</filename>
            <type>text/plain</type>
            <size>17279</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXZpc2libGUtcm93cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMTE1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0EKK0IKK0MKK0QKK0UKK1RoaXMgdGVzdHMgdGhhdCBB
WFZpc2libGVSb3dzIHJldHVybnMgdmlzaWJsZSByb3dzIGNvcnJlY3RseS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgcm93cyBpcyA1CitQQVNTIHZpc2libGVSb3dzIGlz
IDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12
aXNpYmxlLXJvd3MuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLXZpc2libGUtcm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMyNWM0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub2Zmc2NyZWVu
IHsKKyAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgICAgIHRvcDo5OTk5cHg7CisgICAg
fQorPC9zdHlsZT4KKzx0aXRsZT5UYWJsZSBWaXNpYmxlIFJvd3M8L3RpdGxlPgorPC9oZWFkPgor
PGJvZHk+CisKKzxkaXYgaWQ9InRhYmxlIiByb2xlPSJncmlkIj4KKzxkaXYgY2xhc3M9Im9uc2Ny
ZWVuIiByb2xlPSJyb3ciPjxzcGFuIHJvbGU9ImdyaWRjZWxsIj5BPC9zcGFuPjwvZGl2PgorPGRp
diBjbGFzcz0ib25zY3JlZW4iIHJvbGU9InJvdyI+PHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkI8L3Nw
YW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJvbnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJn
cmlkY2VsbCI+Qzwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93
Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNj
cmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RTwvc3Bhbj48L2Rpdj4KKzwv
ZGl2PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgQVhWaXNpYmxl
Um93cyByZXR1cm5zIHZpc2libGUgcm93cyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgdGFibGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAg
ICAgIAorICAgICAgICAvLyBBbGwgcm93cy4KKyAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS51aUVs
ZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKCJBWFJvd3MiKS5sZW5ndGg7CisgICAgICAgIHNob3Vs
ZEJlKCJyb3dzIiwgIjUiKTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2libGUgcm93cy4KKyAg
ICAgICAgdmFyIHZpc2libGVSb3dzID0gdGFibGUudWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1
ZSgiQVhWaXNpYmxlUm93cyIpLmxlbmd0aDsKKyAgICAgICAgc2hvdWxkQmUoInZpc2libGVSb3dz
IiwgIjMiKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmlu
ZGV4IGM4NTY4ODYuLjMxNjEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQyMSw3ICs0MjEsMjIgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnJvd3MoKQogICAgIAogICAgIHJldHVybiBtX3Jvd3M7CiB9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlOjpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
aGVhZGVycykKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCisgICAgdW5zaWduZWQgY29s
dW1uQ291bnQgPSBtX2NvbHVtbnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb2x1bW5Db3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKG1fY29sdW1uc1tpXS5nZXQoKSktPmhlYWRl
ck9iamVjdCgpOworICAgICAgICBpZiAoaGVhZGVyKQorICAgICAgICAgICAgaGVhZGVycy5hcHBl
bmQoaGVhZGVyKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFk
ZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIpCkBAIC00MzAsMzAgKzQ0NSwyOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgdXBk
YXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIHVuc2lnbmVkIHJvd0NvdW50ID0g
bV9yb3dzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgcm93Q291bnQ7ICsr
aykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGVSb3cqPihtX3Jvd3Nba10uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsK
LSAgICAgICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaGVh
ZGVycy5hcHBlbmQoaGVhZGVyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm93Q291
bnQ7ICsraSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vz
c2liaWxpdHlUYWJsZVJvdyhtX3Jvd3NbaV0uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKKyAgICAg
ICAgaWYgKGhlYWRlcikKKyAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CiAgICAg
fQogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1uSGVhZGVycyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6dmlz
aWJsZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzKQogewogICAgIGlmICgh
bV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHVwZGF0ZUNoaWxkcmVuSWZO
ZWNlc3NhcnkoKTsKICAgICAKLSAgICB1bnNpZ25lZCBjb2xDb3VudCA9IG1fY29sdW1ucy5zaXpl
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNvbENvdW50OyArK2spIHsKLSAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uKj4obV9jb2x1bW5zW2tdLmdldCgpKS0+aGVhZGVyT2JqZWN0KCk7Ci0gICAg
ICAgIGlmICghaGVhZGVyKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGhlYWRlcnMu
YXBwZW5kKGhlYWRlcik7CisgICAgdW5zaWduZWQgcm93Q291bnQgPSBtX3Jvd3Muc2l6ZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByb3dDb3VudDsgKytpKSB7CisgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IG1fcm93c1tpXS5nZXQoKTsKKyAgICAgICAgaWYgKHJv
dyAmJiAhcm93LT5pc09mZlNjcmVlbigpKQorICAgICAgICAgICAgcm93cy5hcHBlbmQocm93KTsK
ICAgICB9CiB9Ci0gICAgCisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxscyhBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNlbGxzKQogewogICAg
IGlmICghbV9yZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IDAzOWYwNGQuLmFiMWNiNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjksNyAr
NjksOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZvaWQgcm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKTsKLQorICAgIHZvaWQgdmlzaWJsZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJik7CisgICAgCiAgICAgLy8gYW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNo
aWxkcmVuLCBhbGwgdGhlIG9iamVjdHMgdGhhdCBhY3QgYXMgaGVhZGVycwogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGhlYWRlckNvbnRhaW5lcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAppbmRleCA0ZmIz
NDQzLi4zZjE5Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKQEAgLTY1LDcgKzY1LDkgQEAgcHJpdmF0ZToK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3RGb3JTZWN0aW9uKFJlbmRlclRh
YmxlU2VjdGlvbiosIGJvb2wgdGhUYWdSZXF1aXJlZCk7CiAgICAgdmlydHVhbCBib29sIGNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwotICAgCisKK0FD
Q0VTU0lCSUxJVFlfT0JKRUNUX1RZUEVfQ0FTVFMoQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLCBp
c1RhYmxlQ29sdW1uKCkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRpZiAvLyBB
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggMGVlMGNlOC4uYjAzYzNkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZVJvdy5oCkBAIC02Myw3ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgT1ZFUlJJREU7
CiB9OyAKLSAgIAorCitBQ0NFU1NJQklMSVRZX09CSkVDVF9UWVBFX0NBU1RTKEFjY2Vzc2liaWxp
dHlUYWJsZVJvdywgaXNUYWJsZVJvdygpKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIAogCiAj
ZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRhYmxlUm93X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KaW5kZXggZWMyYzMyYi4uM2FkN2EzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTIzNTEsMTEgKzIzNTEsMTUgQEAgc3RhdGljIE5T
U3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAg
IH0KICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpIHsKLSAg
ICAgICAgLy8gVE9ETzogZGlzdGluZ3Vpc2ggYmV0d2VlbiB2aXNpYmxlIGFuZCBub24tdmlzaWJs
ZSByb3dzCi0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgICAgIFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHN0YXRpY19jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZSo+KG1fb2JqZWN0KS0+cm93cygpKTsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSkKKyAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHRvQWNjZXNzaWJpbGl0eVRhYmxlKG1fb2JqZWN0
KS0+cm93cygpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKSB7CisgICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igdmlz
aWJsZVJvd3M7CisgICAgICAgICAgICB0b0FjY2Vzc2liaWxpdHlUYWJsZShtX29iamVjdCktPnZp
c2libGVSb3dzKHZpc2libGVSb3dzKTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KHZpc2libGVSb3dzKTsKICAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gVE9ETzog
ZGlzdGluZ3Vpc2ggYmV0d2VlbiB2aXNpYmxlIGFuZCBub24tdmlzaWJsZSBjb2x1bW5zCiAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29s
dW1uc0F0dHJpYnV0ZV0gfHwKICAgICAgICAgICAgIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV0pIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggNjk4MWYz
Zi4uYTBjMDdjMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAKQEAgLTQ2Miw2ICs0NjIsMjQgQEAgc3RhdGljIEpTVmFsdWVSZWYgc3RyaW5n
QXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1lbnRBcnJh
eUF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKyAgICAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0
cmlidXRlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwg
ZXhjZXB0aW9uKSk7CisgICAgCisgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVs
ZW1lbnRzOworICAgIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT51aUVsZW1lbnRBcnJheUF0dHJp
YnV0ZVZhbHVlKGF0dHJpYnV0ZS5nZXQoKSwgZWxlbWVudHMpOworICAgIAorICAgIHVuc2lnbmVk
IGVsZW1lbnRDb3VudCA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICBKU1ZhbHVlUmVmIHZhbHVlRWxl
bWVudHNbZWxlbWVudENvdW50XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVu
dENvdW50OyArK2kpCisgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGVsZW1lbnRzW2ld
KTsKKyAgICAKKyAgICByZXR1cm4gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgZWxlbWVudENv
dW50LCB2YWx1ZUVsZW1lbnRzLCBleGNlcHRpb24pOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiB1
aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlOwpAQCAtMTE2MSw2
ICsxMTc5LDEwIEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSCiBKU1N0cmluZ1JlZiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CiAj
ZW5kaWYKIAorI2lmICFQTEFURk9STShNQUMpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYsIFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiYpIGNvbnN0IHsgfQorI2VuZGlmCisKICNpZiAhUExBVEZPUk0oV0lO
KQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqIG90aGVyRWxlbWVudCkKIHsKQEAgLTEzODYsNiArMTQwOCw3IEBAIEpTQ2xhc3NSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcygpCiAgICAgICAgIHsgInRpdGxlVUlF
bGVtZW50IiwgdGl0bGVVSUVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRT
ZWxlY3RlZFRleHRSYW5nZSIsIHNldFNlbGVjdGVkVGV4dFJhbmdlQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic3RyaW5nQXR0cmlidXRlVmFsdWUiLCBzdHJpbmdBdHRyaWJ1dGVWYWx1ZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUi
LCB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAidWlFbGVtZW50QXR0cmlidXRlVmFsdWUiLCB1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlckF0dHJpYnV0ZVZhbHVlIiwgbnVtYmVyQXR0
cmlidXRlVmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJib29sQXR0cmlidXRlVmFs
dWUiLCBib29sQXR0cmlidXRlVmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IGQ0OTQyYjcuLmIzZWEyZDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAg
LTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXR0cmlidXRlcyAtIHBsYXRmb3JtLWlu
ZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucwogICAgIEpTU3RyaW5nUmVmIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgZG91YmxlIG51bWJlckF0dHJpYnV0
ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgdm9pZCB1aUVsZW1lbnRBcnJheUF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+JiBlbGVtZW50cykgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB1
aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0OyAgICAK
ICAgICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAg
IGJvb2wgaXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0KaW5kZXggOTQ3ZWI2Yi4uNjUyZTU1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTQxNiw2ICs0MTYsMTUg
QEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1l
bnRzKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmlu
Z1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcih2YWx1
ZSwgZWxlbWVudHMpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCBiODFmMmJkLi4y
NmExMjY2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTgwLDYgKzgwLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQoKSB7IH0KIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUoKSB7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJlc3MoKSB7IH0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgeyByZXR1cm4g
MDsgfQorSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9OwogUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgY29uc3QgeyByZXR1cm4gMDsgfQog
ZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3Ry
aW5nUmVmKSB7IHJldHVybiAwOyB9CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgKaW5kZXggNzU5NzQ0Mi4uYWYzZWYzZCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXR0cmlidXRl
cyAtIHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucwogICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OwogICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OworICAgIEpTVmFsdWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsK
ICAgICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAg
IGJvb2wgaXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKQEAgLTI1
Myw2ICsyNTQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRMaW5rZWRVSUVsZW1lbnRzKFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0RG9j
dW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyAg
ICAKKyAgICB2b2lkIGdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmLCBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKSBjb25zdDsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEhB
VkUoQUNDRVNTSUJJTElUWSkpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbAppbmRleCBmNDVhOGMyLi5jNDVjOGRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKQEAgLTU2LDYgKzU2LDcgQEAgaW50ZXJmYWNl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewogCiAgICAgRE9NU3RyaW5nIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKICAgICBkb3VibGUgbnVtYmVyQXR0cmlidXRlVmFsdWUo
RE9NU3RyaW5nIGF0dHIpOworICAgIG9iamVjdCB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVl
KERPTVN0cmluZyBhdHRyKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEF0
dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsgIAogICAgIGJvb2xlYW4gYm9vbEF0dHJpYnV0
ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKICAgICBib29sZWFuIGlzQXR0cmlidXRlU3VwcG9ydGVk
KERPTVN0cmluZyBhdHRyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCmluZGV4IDFhYTYyYzUuLjY1YjE1ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbQpAQCAtMjIzLDYgKzIyMywxNSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZQogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudHMpIGNv
bnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNB
cnJheSBjbGFzc11dKQorICAgICAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKHZhbHVlLCBlbGVt
ZW50cyk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCiB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiYgZWxlbWVudFZlY3RvcikKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
QEAgLTQzOSw2ICs0NDgsMjIgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJl
ckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICByZXR1cm4gMDsKIH0K
IAorSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBXS0J1bmRsZUZy
YW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
V0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisgICAgCisgICAg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGVsZW1lbnRzOworICAgIGdl
dFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKGF0dHJpYnV0ZSwgZWxlbWVudHMpOworICAgIAorICAg
IHVuc2lnbmVkIGVsZW1lbnRDb3VudCA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICBKU1ZhbHVlUmVm
IHZhbHVlRWxlbWVudHNbZWxlbWVudENvdW50XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZWxlbWVudENvdW50OyArK2kpCisgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVj
dE1ha2UoY29udGV4dCwgZWxlbWVudHNbaV0tPndyYXBwZXJDbGFzcygpLCBlbGVtZW50c1tpXS5n
ZXQoKSk7CisgICAgCisgICAgcmV0dXJuIEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIGVsZW1l
bnRDb3VudCwgdmFsdWVFbGVtZW50cywgMCk7Cit9CisKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217079</attachid>
            <date>2013-11-15 13:51:08 -0800</date>
            <delta_ts>2013-11-15 13:57:12 -0800</delta_ts>
            <desc>Rebased feedback patch.</desc>
            <filename>feedback.patch</filename>
            <type>text/plain</type>
            <size>16386</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXZpc2libGUtcm93cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMTE1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0EKK0IKK0MKK0QKK0UKK1RoaXMgdGVzdHMgdGhhdCBB
WFZpc2libGVSb3dzIHJldHVybnMgdmlzaWJsZSByb3dzIGNvcnJlY3RseS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgcm93cyBpcyA1CitQQVNTIHZpc2libGVSb3dzIGlz
IDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12
aXNpYmxlLXJvd3MuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLXZpc2libGUtcm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMyNWM0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub2Zmc2NyZWVu
IHsKKyAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgICAgIHRvcDo5OTk5cHg7CisgICAg
fQorPC9zdHlsZT4KKzx0aXRsZT5UYWJsZSBWaXNpYmxlIFJvd3M8L3RpdGxlPgorPC9oZWFkPgor
PGJvZHk+CisKKzxkaXYgaWQ9InRhYmxlIiByb2xlPSJncmlkIj4KKzxkaXYgY2xhc3M9Im9uc2Ny
ZWVuIiByb2xlPSJyb3ciPjxzcGFuIHJvbGU9ImdyaWRjZWxsIj5BPC9zcGFuPjwvZGl2PgorPGRp
diBjbGFzcz0ib25zY3JlZW4iIHJvbGU9InJvdyI+PHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkI8L3Nw
YW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJvbnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJn
cmlkY2VsbCI+Qzwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93
Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNj
cmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RTwvc3Bhbj48L2Rpdj4KKzwv
ZGl2PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgQVhWaXNpYmxl
Um93cyByZXR1cm5zIHZpc2libGUgcm93cyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgdGFibGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAg
ICAgIAorICAgICAgICAvLyBBbGwgcm93cy4KKyAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS51aUVs
ZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKCJBWFJvd3MiKS5sZW5ndGg7CisgICAgICAgIHNob3Vs
ZEJlKCJyb3dzIiwgIjUiKTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2libGUgcm93cy4KKyAg
ICAgICAgdmFyIHZpc2libGVSb3dzID0gdGFibGUudWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1
ZSgiQVhWaXNpYmxlUm93cyIpLmxlbmd0aDsKKyAgICAgICAgc2hvdWxkQmUoInZpc2libGVSb3dz
IiwgIjMiKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmlu
ZGV4IDg2ODBiMDguLmYxOGMzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQyMSw3ICs0MjEsMjIgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnJvd3MoKQogICAgIAogICAgIHJldHVybiBtX3Jvd3M7CiB9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlOjpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
aGVhZGVycykKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCisgICAgdW5zaWduZWQgY29s
dW1uQ291bnQgPSBtX2NvbHVtbnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb2x1bW5Db3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKG1fY29sdW1uc1tpXS5nZXQoKSktPmhlYWRl
ck9iamVjdCgpOworICAgICAgICBpZiAoaGVhZGVyKQorICAgICAgICAgICAgaGVhZGVycy5hcHBl
bmQoaGVhZGVyKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFk
ZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIpCkBAIC00MzAsMzAgKzQ0NSwyOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgdXBk
YXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIHVuc2lnbmVkIHJvd0NvdW50ID0g
bV9yb3dzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgcm93Q291bnQ7ICsr
aykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxp
dHlUYWJsZVJvdyhtX3Jvd3Nba10uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKLSAgICAgICAgaWYg
KCFoZWFkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaGVhZGVycy5hcHBlbmQo
aGVhZGVyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm93Q291bnQ7ICsraSkgewor
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxpdHlUYWJs
ZVJvdyhtX3Jvd3NbaV0uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKKyAgICAgICAgaWYgKGhlYWRl
cikKKyAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CiAgICAgfQogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIGhlYWRlcnMpCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6dmlzaWJsZVJvd3MoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzKQogewogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsK
ICAgICAKLSAgICB1bnNpZ25lZCBjb2xDb3VudCA9IG1fY29sdW1ucy5zaXplKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBrID0gMDsgayA8IGNvbENvdW50OyArK2spIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogaGVhZGVyID0gdG9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4obV9jb2x1bW5z
W2tdLmdldCgpKS0+aGVhZGVyT2JqZWN0KCk7Ci0gICAgICAgIGlmICghaGVhZGVyKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CisgICAgdW5z
aWduZWQgcm93Q291bnQgPSBtX3Jvd3Muc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByb3dDb3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9
IG1fcm93c1tpXS5nZXQoKTsKKyAgICAgICAgaWYgKHJvdyAmJiAhcm93LT5pc09mZlNjcmVlbigp
KQorICAgICAgICAgICAgcm93cy5hcHBlbmQocm93KTsKICAgICB9CiB9Ci0gICAgCisKIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxscyhBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNlbGxzKQogewogICAgIGlmICghbV9yZW5kZXJlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4
IDAzOWYwNGQuLmFiMWNiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjksNyArNjksOCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAg
IHZvaWQgcm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLQorICAgIHZv
aWQgdmlzaWJsZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgCiAgICAg
Ly8gYW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNoaWxkcmVuLCBhbGwgdGhlIG9iamVjdHMg
dGhhdCBhY3QgYXMgaGVhZGVycwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlckNvbnRh
aW5lcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuaAppbmRleCBjOGVlYzQyLi5iMDNjM2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHJpdmF0ZToKIH07IAogCiBBQ0NFU1NJQklMSVRZX09CSkVDVF9UWVBFX0NB
U1RTKEFjY2Vzc2liaWxpdHlUYWJsZVJvdywgaXNUYWJsZVJvdygpKQotICAgCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGFibGVSb3dfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1ZjYxZGNhLi4xODk5NGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjM1MywxMSAr
MjM1MywxNSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJp
bGl0eVJvbGUgdmFsdWUpCiAgICAgfQogICAgIAogICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkgewotICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZp
c2libGUgYW5kIG5vbi12aXNpYmxlIHJvd3MKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSB8fAotICAgICAgICAg
ICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVS
b3dzQXR0cmlidXRlXSkgeworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKQogICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkodG9BY2Nlc3NpYmlsaXR5VGFibGUobV9vYmplY3QpLT5yb3dzKCkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB2aXNpYmxlUm93czsKKyAg
ICAgICAgICAgIHRvQWNjZXNzaWJpbGl0eVRhYmxlKG1fb2JqZWN0KS0+dmlzaWJsZVJvd3Modmlz
aWJsZVJvd3MpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZVJv
d3MpOwogICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRl
XSB8fAogICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCA2OTgxZjNmLi5hMGMwN2MwIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApA
QCAtNDYyLDYgKzQ2MiwyNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFs
dWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworICAgIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGUoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICAKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CisgICAg
dG9BWEVsZW1lbnQodGhpc09iamVjdCktPnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlLmdldCgpLCBlbGVtZW50cyk7CisgICAgCisgICAgdW5zaWduZWQgZWxlbWVudENvdW50
ID0gZWxlbWVudHMuc2l6ZSgpOworICAgIEpTVmFsdWVSZWYgdmFsdWVFbGVtZW50c1tlbGVtZW50
Q291bnRdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkK
KyAgICAgICAgdmFsdWVFbGVtZW50c1tpXSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VK
U0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNbaV0pOworICAgIAorICAg
IHJldHVybiBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCBlbGVtZW50Q291bnQsIHZhbHVlRWxl
bWVudHMsIGV4Y2VwdGlvbik7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGU7CkBAIC0xMTYxLDYgKzExNzksMTAgQEAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1IKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisjaWYg
IVBMQVRGT1JNKE1BQykKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJy
YXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+JikgY29uc3QgeyB9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShXSU4pCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJF
bGVtZW50KQogewpAQCAtMTM4Niw2ICsxNDA4LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAidGl0bGVVSUVsZW1lbnQiLCB0aXRs
ZVVJRWxlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNlbGVjdGVkVGV4dFJh
bmdlIiwgc2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
dHJpbmdBdHRyaWJ1dGVWYWx1ZSIsIHN0cmluZ0F0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICAgICAgeyAidWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSIsIHVpRWxlbWVudEFy
cmF5QXR0cmlidXRlVmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZSIsIHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAibnVtYmVyQXR0cmlidXRlVmFsdWUiLCBudW1iZXJBdHRyaWJ1dGVWYWx1ZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImJvb2xBdHRyaWJ1dGVWYWx1ZSIsIGJvb2xBdHRy
aWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMzUzM2UwNi4uMTBlNDJmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMTA2LDYgKzEwNiw3
IEBAIHB1YmxpYzoKICAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1w
bGVtZW50YXRpb25zCiAgICAgSlNTdHJpbmdSZWYgc3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKTsKICAgICBkb3VibGUgbnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKTsKKyAgICB2b2lkIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVs
ZW1lbnRzKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3Q7ICAgIAogICAgIGJvb2wgYm9v
bEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgYm9vbCBpc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA2Njk1
YjU3Li4wOWQxNTY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtNDE2LDYgKzQxNiwxNSBAQCBKU1N0cmluZ1Jl
ZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudHMpIGNvbnN0Cit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBj
bGFzc11dKQorICAgICAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKHZhbHVlLCBlbGVtZW50cyk7
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDVmODhiNDIuLjQ4MWI2NzggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtODAsNiArODAsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzaG93TWVudSgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVz
cygpIHsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9CitKU1ZhbHVl
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSBjb25zdCB7IHJldHVybiAwOyB9CiBkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsgcmV0
dXJuIDA7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAppbmRleCBmMWQzMmY2Li4xNjQxZTYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApA
QCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0t
aW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgZG91Ymxl
IG51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgSlNWYWx1
ZVJlZiB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgIGJvb2wgYm9v
bEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgYm9vbCBpc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpAQCAtMjU0LDYgKzI1NSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBnZXREb2N1bWVudExpbmtzKFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIAorICAgIHZvaWQg
Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYsIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKaW5kZXggZjQ1YThjMi4uYzQ1YzhkYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCkBAIC01Niw2
ICs1Niw3IEBAIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKIAogICAgIERPTVN0
cmluZyBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgZG91YmxlIG51
bWJlckF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKKyAgICBvYmplY3QgdWlFbGVtZW50
QXJyYXlBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCB1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7ICAKICAgICBi
b29sZWFuIGJvb2xBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgYm9vbGVhbiBp
c0F0dHJpYnV0ZVN1cHBvcnRlZChET01TdHJpbmcgYXR0cik7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBmMTFkMTFiLi4wMTgyMzNhIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTIyNiw2ICsyMjYsMTUgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWUKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+ID4mIGVsZW1lbnRzKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05T
U3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY29udmVydE5TQXJyYXlU
b1ZlY3Rvcih2YWx1ZSwgZWxlbWVudHMpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30K
Kwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCkBAIC00NDIsNiArNDUxLDIyIEBAIGRvdWJsZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
CiAgICAgcmV0dXJuIDA7CiB9CiAKK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0
Cit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0Nv
bnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWlu
RnJhbWUpOworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiBlbGVtZW50czsKKyAgICBnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGVs
ZW1lbnRzKTsKKyAgICAKKyAgICB1bnNpZ25lZCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXpl
KCk7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZUVsZW1lbnRzW2VsZW1lbnRDb3VudF07CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQorICAgICAgICB2YWx1ZUVs
ZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLT53cmFwcGVyQ2xh
c3MoKSwgZWxlbWVudHNbaV0uZ2V0KCkpOworICAgIAorICAgIHJldHVybiBKU09iamVjdE1ha2VB
cnJheShjb250ZXh0LCBlbGVtZW50Q291bnQsIHZhbHVlRWxlbWVudHMsIDApOworfQorCiBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217081</attachid>
            <date>2013-11-15 13:57:12 -0800</date>
            <delta_ts>2013-11-15 13:58:59 -0800</delta_ts>
            <desc>Fixed patch for feedback.</desc>
            <filename>feedback.patch</filename>
            <type>text/plain</type>
            <size>16386</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXZpc2libGUtcm93cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMTE1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0EKK0IKK0MKK0QKK0UKK1RoaXMgdGVzdHMgdGhhdCBB
WFZpc2libGVSb3dzIHJldHVybnMgdmlzaWJsZSByb3dzIGNvcnJlY3RseS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgcm93cyBpcyA1CitQQVNTIHZpc2libGVSb3dzIGlz
IDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12
aXNpYmxlLXJvd3MuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLXZpc2libGUtcm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMyNWM0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub2Zmc2NyZWVu
IHsKKyAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgICAgIHRvcDo5OTk5cHg7CisgICAg
fQorPC9zdHlsZT4KKzx0aXRsZT5UYWJsZSBWaXNpYmxlIFJvd3M8L3RpdGxlPgorPC9oZWFkPgor
PGJvZHk+CisKKzxkaXYgaWQ9InRhYmxlIiByb2xlPSJncmlkIj4KKzxkaXYgY2xhc3M9Im9uc2Ny
ZWVuIiByb2xlPSJyb3ciPjxzcGFuIHJvbGU9ImdyaWRjZWxsIj5BPC9zcGFuPjwvZGl2PgorPGRp
diBjbGFzcz0ib25zY3JlZW4iIHJvbGU9InJvdyI+PHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkI8L3Nw
YW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJvbnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJn
cmlkY2VsbCI+Qzwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93
Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNj
cmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RTwvc3Bhbj48L2Rpdj4KKzwv
ZGl2PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgQVhWaXNpYmxl
Um93cyByZXR1cm5zIHZpc2libGUgcm93cyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgdGFibGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAg
ICAgIAorICAgICAgICAvLyBBbGwgcm93cy4KKyAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS51aUVs
ZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKCJBWFJvd3MiKS5sZW5ndGg7CisgICAgICAgIHNob3Vs
ZEJlKCJyb3dzIiwgIjUiKTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2libGUgcm93cy4KKyAg
ICAgICAgdmFyIHZpc2libGVSb3dzID0gdGFibGUudWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1
ZSgiQVhWaXNpYmxlUm93cyIpLmxlbmd0aDsKKyAgICAgICAgc2hvdWxkQmUoInZpc2libGVSb3dz
IiwgIjMiKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmlu
ZGV4IDg2ODBiMDguLmYxOGMzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQyMSw3ICs0MjEsMjIgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnJvd3MoKQogICAgIAogICAgIHJldHVybiBtX3Jvd3M7CiB9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlOjpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
aGVhZGVycykKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCisgICAgdW5zaWduZWQgY29s
dW1uQ291bnQgPSBtX2NvbHVtbnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb2x1bW5Db3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKG1fY29sdW1uc1tpXS5nZXQoKSktPmhlYWRl
ck9iamVjdCgpOworICAgICAgICBpZiAoaGVhZGVyKQorICAgICAgICAgICAgaGVhZGVycy5hcHBl
bmQoaGVhZGVyKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFk
ZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIpCkBAIC00MzAsMzAgKzQ0NSwyOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgdXBk
YXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIHVuc2lnbmVkIHJvd0NvdW50ID0g
bV9yb3dzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgcm93Q291bnQ7ICsr
aykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxp
dHlUYWJsZVJvdyhtX3Jvd3Nba10uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKLSAgICAgICAgaWYg
KCFoZWFkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaGVhZGVycy5hcHBlbmQo
aGVhZGVyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm93Q291bnQ7ICsraSkgewor
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxpdHlUYWJs
ZVJvdyhtX3Jvd3NbaV0uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKKyAgICAgICAgaWYgKGhlYWRl
cikKKyAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CiAgICAgfQogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIGhlYWRlcnMpCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6dmlzaWJsZVJvd3MoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzKQogewogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsK
ICAgICAKLSAgICB1bnNpZ25lZCBjb2xDb3VudCA9IG1fY29sdW1ucy5zaXplKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBrID0gMDsgayA8IGNvbENvdW50OyArK2spIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogaGVhZGVyID0gdG9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4obV9jb2x1bW5z
W2tdLmdldCgpKS0+aGVhZGVyT2JqZWN0KCk7Ci0gICAgICAgIGlmICghaGVhZGVyKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CisgICAgdW5z
aWduZWQgcm93Q291bnQgPSBtX3Jvd3Muc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByb3dDb3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9
IG1fcm93c1tpXS5nZXQoKTsKKyAgICAgICAgaWYgKHJvdyAmJiAhcm93LT5pc09mZlNjcmVlbigp
KQorICAgICAgICAgICAgcm93cy5hcHBlbmQocm93KTsKICAgICB9CiB9Ci0gICAgCisKIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxscyhBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNlbGxzKQogewogICAgIGlmICghbV9yZW5kZXJlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4
IDAzOWYwNGQuLmFiMWNiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjksNyArNjksOCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAg
IHZvaWQgcm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLQorICAgIHZv
aWQgdmlzaWJsZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgCiAgICAg
Ly8gYW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNoaWxkcmVuLCBhbGwgdGhlIG9iamVjdHMg
dGhhdCBhY3QgYXMgaGVhZGVycwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlckNvbnRh
aW5lcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuaAppbmRleCBjOGVlYzQyLi5iMDNjM2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHJpdmF0ZToKIH07IAogCiBBQ0NFU1NJQklMSVRZX09CSkVDVF9UWVBFX0NB
U1RTKEFjY2Vzc2liaWxpdHlUYWJsZVJvdywgaXNUYWJsZVJvdygpKQotICAgCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGFibGVSb3dfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1ZjYxZGNhLi4xODk5NGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjM1MywxMSAr
MjM1MywxNSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJp
bGl0eVJvbGUgdmFsdWUpCiAgICAgfQogICAgIAogICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkgewotICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZp
c2libGUgYW5kIG5vbi12aXNpYmxlIHJvd3MKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSB8fAotICAgICAgICAg
ICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVS
b3dzQXR0cmlidXRlXSkgeworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKQogICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkodG9BY2Nlc3NpYmlsaXR5VGFibGUobV9vYmplY3QpLT5yb3dzKCkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB2aXNpYmxlUm93czsKKyAg
ICAgICAgICAgIHRvQWNjZXNzaWJpbGl0eVRhYmxlKG1fb2JqZWN0KS0+dmlzaWJsZVJvd3Modmlz
aWJsZVJvd3MpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZVJv
d3MpOwogICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRl
XSB8fAogICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCA2OTgxZjNmLi5hMGMwN2MwIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApA
QCAtNDYyLDYgKzQ2MiwyNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFs
dWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworICAgIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGUoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICAKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CisgICAg
dG9BWEVsZW1lbnQodGhpc09iamVjdCktPnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlLmdldCgpLCBlbGVtZW50cyk7CisgICAgCisgICAgdW5zaWduZWQgZWxlbWVudENvdW50
ID0gZWxlbWVudHMuc2l6ZSgpOworICAgIEpTVmFsdWVSZWYgdmFsdWVFbGVtZW50c1tlbGVtZW50
Q291bnRdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkK
KyAgICAgICAgdmFsdWVFbGVtZW50c1tpXSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VK
U0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNbaV0pOworICAgIAorICAg
IHJldHVybiBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCBlbGVtZW50Q291bnQsIHZhbHVlRWxl
bWVudHMsIGV4Y2VwdGlvbik7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGU7CkBAIC0xMTYxLDYgKzExNzksMTAgQEAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1IKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisjaWYg
IVBMQVRGT1JNKE1BQykKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJy
YXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+JikgY29uc3QgeyB9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShXSU4pCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJF
bGVtZW50KQogewpAQCAtMTM4Niw2ICsxNDA4LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAidGl0bGVVSUVsZW1lbnQiLCB0aXRs
ZVVJRWxlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNlbGVjdGVkVGV4dFJh
bmdlIiwgc2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
dHJpbmdBdHRyaWJ1dGVWYWx1ZSIsIHN0cmluZ0F0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICAgICAgeyAidWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSIsIHVpRWxlbWVudEFy
cmF5QXR0cmlidXRlVmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZSIsIHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAibnVtYmVyQXR0cmlidXRlVmFsdWUiLCBudW1iZXJBdHRyaWJ1dGVWYWx1ZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImJvb2xBdHRyaWJ1dGVWYWx1ZSIsIGJvb2xBdHRy
aWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMzUzM2UwNi4uMTBlNDJmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMTA2LDYgKzEwNiw3
IEBAIHB1YmxpYzoKICAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1w
bGVtZW50YXRpb25zCiAgICAgSlNTdHJpbmdSZWYgc3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKTsKICAgICBkb3VibGUgbnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKTsKKyAgICB2b2lkIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVs
ZW1lbnRzKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3Q7ICAgIAogICAgIGJvb2wgYm9v
bEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgYm9vbCBpc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA2Njk1
YjU3Li4wOWQxNTY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtNDE2LDYgKzQxNiwxNSBAQCBKU1N0cmluZ1Jl
ZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudHMpIGNvbnN0Cit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBj
bGFzc11dKQorICAgICAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKHZhbHVlLCBlbGVtZW50cyk7
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDVmODhiNDIuLjQ4MWI2NzggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtODAsNiArODAsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzaG93TWVudSgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVz
cygpIHsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9CitKU1ZhbHVl
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSBjb25zdCB7IHJldHVybiAwOyB9CiBkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsgcmV0
dXJuIDA7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAppbmRleCBmMWQzMmY2Li4xNjQxZTYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApA
QCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0t
aW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgZG91Ymxl
IG51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgSlNWYWx1
ZVJlZiB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgIGJvb2wgYm9v
bEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgYm9vbCBpc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpAQCAtMjU0LDYgKzI1NSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBnZXREb2N1bWVudExpbmtzKFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIAorICAgIHZvaWQg
Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYsIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKaW5kZXggZjQ1YThjMi4uYzQ1YzhkYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCkBAIC01Niw2
ICs1Niw3IEBAIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKIAogICAgIERPTVN0
cmluZyBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgZG91YmxlIG51
bWJlckF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKKyAgICBvYmplY3QgdWlFbGVtZW50
QXJyYXlBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCB1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7ICAKICAgICBi
b29sZWFuIGJvb2xBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgYm9vbGVhbiBp
c0F0dHJpYnV0ZVN1cHBvcnRlZChET01TdHJpbmcgYXR0cik7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBmMTFkMTFiLi4wMTgyMzNhIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTIyNiw2ICsyMjYsMTUgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWUKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+ID4mIGVsZW1lbnRzKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwor
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05T
U3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY29udmVydE5TQXJyYXlU
b1ZlY3Rvcih2YWx1ZSwgZWxlbWVudHMpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30K
Kwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCkBAIC00NDIsNiArNDUxLDIyIEBAIGRvdWJsZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
CiAgICAgcmV0dXJuIDA7CiB9CiAKK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0
Cit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWlu
RnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0Nv
bnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWlu
RnJhbWUpOworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiBlbGVtZW50czsKKyAgICBnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGVs
ZW1lbnRzKTsKKyAgICAKKyAgICB1bnNpZ25lZCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXpl
KCk7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZUVsZW1lbnRzW2VsZW1lbnRDb3VudF07CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQorICAgICAgICB2YWx1ZUVs
ZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLT53cmFwcGVyQ2xh
c3MoKSwgZWxlbWVudHNbaV0uZ2V0KCkpOworICAgIAorICAgIHJldHVybiBKU09iamVjdE1ha2VB
cnJheShjb250ZXh0LCBlbGVtZW50Q291bnQsIHZhbHVlRWxlbWVudHMsIDApOworfQorCiBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217082</attachid>
            <date>2013-11-15 13:58:59 -0800</date>
            <delta_ts>2013-11-15 17:41:32 -0800</delta_ts>
            <desc>Repeat WITH fix.</desc>
            <filename>feedback.patch</filename>
            <type>text/plain</type>
            <size>16385</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXZpc2libGUtcm93cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMTE1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0EKK0IKK0MKK0QKK0UKK1RoaXMgdGVzdHMgdGhhdCBB
WFZpc2libGVSb3dzIHJldHVybnMgdmlzaWJsZSByb3dzIGNvcnJlY3RseS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgcm93cyBpcyA1CitQQVNTIHZpc2libGVSb3dzIGlz
IDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12
aXNpYmxlLXJvd3MuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLXZpc2libGUtcm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMyNWM0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub2Zmc2NyZWVu
IHsKKyAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgICAgIHRvcDo5OTk5cHg7CisgICAg
fQorPC9zdHlsZT4KKzx0aXRsZT5UYWJsZSBWaXNpYmxlIFJvd3M8L3RpdGxlPgorPC9oZWFkPgor
PGJvZHk+CisKKzxkaXYgaWQ9InRhYmxlIiByb2xlPSJncmlkIj4KKzxkaXYgY2xhc3M9Im9uc2Ny
ZWVuIiByb2xlPSJyb3ciPjxzcGFuIHJvbGU9ImdyaWRjZWxsIj5BPC9zcGFuPjwvZGl2PgorPGRp
diBjbGFzcz0ib25zY3JlZW4iIHJvbGU9InJvdyI+PHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkI8L3Nw
YW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJvbnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJn
cmlkY2VsbCI+Qzwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93
Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNj
cmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RTwvc3Bhbj48L2Rpdj4KKzwv
ZGl2PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgQVhWaXNpYmxl
Um93cyByZXR1cm5zIHZpc2libGUgcm93cyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgdGFibGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAg
ICAgIAorICAgICAgICAvLyBBbGwgcm93cy4KKyAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS51aUVs
ZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKCJBWFJvd3MiKS5sZW5ndGg7CisgICAgICAgIHNob3Vs
ZEJlKCJyb3dzIiwgIjUiKTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2libGUgcm93cy4KKyAg
ICAgICAgdmFyIHZpc2libGVSb3dzID0gdGFibGUudWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1
ZSgiQVhWaXNpYmxlUm93cyIpLmxlbmd0aDsKKyAgICAgICAgc2hvdWxkQmUoInZpc2libGVSb3dz
IiwgIjMiKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmlu
ZGV4IDg2ODBiMDguLmYxOGMzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQyMSw3ICs0MjEsMjIgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnJvd3MoKQogICAgIAogICAgIHJldHVybiBtX3Jvd3M7CiB9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlOjpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
aGVhZGVycykKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCisgICAgdW5zaWduZWQgY29s
dW1uQ291bnQgPSBtX2NvbHVtbnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb2x1bW5Db3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKG1fY29sdW1uc1tpXS5nZXQoKSktPmhlYWRl
ck9iamVjdCgpOworICAgICAgICBpZiAoaGVhZGVyKQorICAgICAgICAgICAgaGVhZGVycy5hcHBl
bmQoaGVhZGVyKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFk
ZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIpCkBAIC00MzAsMzAgKzQ0NSwyOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGhlYWRlcnMpCiAgICAgdXBk
YXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIHVuc2lnbmVkIHJvd0NvdW50ID0g
bV9yb3dzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgcm93Q291bnQ7ICsr
aykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxp
dHlUYWJsZVJvdyhtX3Jvd3Nba10uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKLSAgICAgICAgaWYg
KCFoZWFkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaGVhZGVycy5hcHBlbmQo
aGVhZGVyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm93Q291bnQ7ICsraSkgewor
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxpdHlUYWJs
ZVJvdyhtX3Jvd3NbaV0uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKKyAgICAgICAgaWYgKGhlYWRl
cikKKyAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CiAgICAgfQogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImIGhlYWRlcnMpCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6dmlzaWJsZVJvd3MoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzKQogewogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsK
ICAgICAKLSAgICB1bnNpZ25lZCBjb2xDb3VudCA9IG1fY29sdW1ucy5zaXplKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBrID0gMDsgayA8IGNvbENvdW50OyArK2spIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogaGVhZGVyID0gdG9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4obV9jb2x1bW5z
W2tdLmdldCgpKS0+aGVhZGVyT2JqZWN0KCk7Ci0gICAgICAgIGlmICghaGVhZGVyKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGhlYWRlcnMuYXBwZW5kKGhlYWRlcik7CisgICAgdW5z
aWduZWQgcm93Q291bnQgPSBtX3Jvd3Muc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByb3dDb3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9
IG1fcm93c1tpXS5nZXQoKTsKKyAgICAgICAgaWYgKHJvdyAmJiAhcm93LT5pc09mZlNjcmVlbigp
KQorICAgICAgICAgICAgcm93cy5hcHBlbmQocm93KTsKICAgICB9CiB9Ci0gICAgCisKIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxscyhBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNlbGxzKQogewogICAgIGlmICghbV9yZW5kZXJlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4
IDAzOWYwNGQuLmFiMWNiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjksNyArNjksOCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAg
IHZvaWQgcm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLQorICAgIHZv
aWQgdmlzaWJsZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgCiAgICAg
Ly8gYW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNoaWxkcmVuLCBhbGwgdGhlIG9iamVjdHMg
dGhhdCBhY3QgYXMgaGVhZGVycwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlckNvbnRh
aW5lcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuaAppbmRleCBjOGVlYzQyLi5iMDNjM2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHJpdmF0ZToKIH07IAogCiBBQ0NFU1NJQklMSVRZX09CSkVDVF9UWVBFX0NB
U1RTKEFjY2Vzc2liaWxpdHlUYWJsZVJvdywgaXNUYWJsZVJvdygpKQotICAgCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGFibGVSb3dfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1ZjYxZGNhLi4xODk5NGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjM1MywxMSAr
MjM1MywxNSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJp
bGl0eVJvbGUgdmFsdWUpCiAgICAgfQogICAgIAogICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3Np
YmlsaXR5VGFibGUoKSkgewotICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZp
c2libGUgYW5kIG5vbi12aXNpYmxlIHJvd3MKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSB8fAotICAgICAgICAg
ICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVS
b3dzQXR0cmlidXRlXSkgeworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKQogICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkodG9BY2Nlc3NpYmlsaXR5VGFibGUobV9vYmplY3QpLT5yb3dzKCkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB2aXNpYmxlUm93czsKKyAg
ICAgICAgICAgIHRvQWNjZXNzaWJpbGl0eVRhYmxlKG1fb2JqZWN0KS0+dmlzaWJsZVJvd3Modmlz
aWJsZVJvd3MpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZVJv
d3MpOwogICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRl
XSB8fAogICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCA2OTgxZjNmLi5hMGMwN2MwIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApA
QCAtNDYyLDYgKzQ2MiwyNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFs
dWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworICAgIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGUoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICAKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CisgICAg
dG9BWEVsZW1lbnQodGhpc09iamVjdCktPnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlLmdldCgpLCBlbGVtZW50cyk7CisgICAgCisgICAgdW5zaWduZWQgZWxlbWVudENvdW50
ID0gZWxlbWVudHMuc2l6ZSgpOworICAgIEpTVmFsdWVSZWYgdmFsdWVFbGVtZW50c1tlbGVtZW50
Q291bnRdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkK
KyAgICAgICAgdmFsdWVFbGVtZW50c1tpXSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VK
U0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29udGV4dCwgZWxlbWVudHNbaV0pOworICAgIAorICAg
IHJldHVybiBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCBlbGVtZW50Q291bnQsIHZhbHVlRWxl
bWVudHMsIGV4Y2VwdGlvbik7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGU7CkBAIC0xMTYxLDYgKzExNzksMTAgQEAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1IKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisjaWYg
IVBMQVRGT1JNKE1BQykKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJy
YXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+JikgY29uc3QgeyB9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShXSU4pCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJF
bGVtZW50KQogewpAQCAtMTM4Niw2ICsxNDA4LDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAidGl0bGVVSUVsZW1lbnQiLCB0aXRs
ZVVJRWxlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNlbGVjdGVkVGV4dFJh
bmdlIiwgc2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
dHJpbmdBdHRyaWJ1dGVWYWx1ZSIsIHN0cmluZ0F0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICAgICAgeyAidWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSIsIHVpRWxlbWVudEFy
cmF5QXR0cmlidXRlVmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZSIsIHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAibnVtYmVyQXR0cmlidXRlVmFsdWUiLCBudW1iZXJBdHRyaWJ1dGVWYWx1ZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImJvb2xBdHRyaWJ1dGVWYWx1ZSIsIGJvb2xBdHRy
aWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMzUzM2UwNi4uMTBlNDJmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMTA2LDYgKzEwNiw3
IEBAIHB1YmxpYzoKICAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1w
bGVtZW50YXRpb25zCiAgICAgSlNTdHJpbmdSZWYgc3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKTsKICAgICBkb3VibGUgbnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKTsKKyAgICB2b2lkIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVs
ZW1lbnRzKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3Q7ICAgIAogICAgIGJvb2wgYm9v
bEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgYm9vbCBpc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA2Njk1
YjU3Li4wOWQxNTY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtNDE2LDYgKzQxNiwxNSBAQCBKU1N0cmluZ1Jl
ZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudHMpIGNvbnN0Cit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBj
bGFzc11dKQorICAgICAgICBjb252ZXJ0TlNBcnJheVRvVmVjdG9yKHZhbHVlLCBlbGVtZW50cyk7
CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDVmODhiNDIuLjQ2OGUxZDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtODAsNiArODAsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzaG93TWVudSgpIHsgfQogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVz
cygpIHsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9CitKU1ZhbHVl
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIGRvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgeyByZXR1
cm4gMDsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CmluZGV4IGYxZDMyZjYuLjE2NDFlNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBA
IC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIC8vIEF0dHJpYnV0ZXMgLSBwbGF0Zm9ybS1p
bmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKICAgICBkb3VibGUg
bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKKyAgICBKU1ZhbHVl
UmVmIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHVpRWxlbWVudEF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3Q7CiAgICAgYm9vbCBib29s
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKICAgICBib29sIGlzQXR0cmli
dXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CkBAIC0yNTQsNiArMjU1LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgZ2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKICAgICB2b2lkIGdldERvY3VtZW50TGlua3MoVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CisgICAgCisgICAgdm9pZCBn
ZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiwgVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiA+JikgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAppbmRleCBmNDVhOGMyLi5jNDVjOGRjIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKQEAgLTU2LDYg
KzU2LDcgQEAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewogCiAgICAgRE9NU3Ry
aW5nIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKICAgICBkb3VibGUgbnVt
YmVyQXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0dHIpOworICAgIG9iamVjdCB1aUVsZW1lbnRB
cnJheUF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsgIAogICAgIGJv
b2xlYW4gYm9vbEF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKICAgICBib29sZWFuIGlz
QXR0cmlidXRlU3VwcG9ydGVkKERPTVN0cmluZyBhdHRyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGYxMWQxMWIuLjAxODIzM2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMjI2LDYgKzIyNiwxNSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZQogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gPiYgZWxlbWVudHMpIGNvbnN0Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNT
dHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAgICBjb252ZXJ0TlNBcnJheVRv
VmVjdG9yKHZhbHVlLCBlbGVtZW50cyk7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQor
CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKQEAgLTQ0Miw2ICs0NTEsMjIgQEAgZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkK
ICAgICByZXR1cm4gMDsKIH0KIAorSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QK
K3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5G
cmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29u
dGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5G
cmFtZSk7CisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
IGVsZW1lbnRzOworICAgIGdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKGF0dHJpYnV0ZSwgZWxl
bWVudHMpOworICAgIAorICAgIHVuc2lnbmVkIGVsZW1lbnRDb3VudCA9IGVsZW1lbnRzLnNpemUo
KTsKKyAgICBKU1ZhbHVlUmVmIHZhbHVlRWxlbWVudHNbZWxlbWVudENvdW50XTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyArK2kpCisgICAgICAgIHZhbHVlRWxl
bWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgZWxlbWVudHNbaV0tPndyYXBwZXJDbGFz
cygpLCBlbGVtZW50c1tpXS5nZXQoKSk7CisgICAgCisgICAgcmV0dXJuIEpTT2JqZWN0TWFrZUFy
cmF5KGNvbnRleHQsIGVsZW1lbnRDb3VudCwgdmFsdWVFbGVtZW50cywgMCk7Cit9CisKIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlF
bGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwo=
</data>
<flag name="commit-queue"
          id="240164"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217109</attachid>
            <date>2013-11-15 17:41:32 -0800</date>
            <delta_ts>2013-11-18 10:26:28 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>table-visible-rows.patch</filename>
            <type>text/plain</type>
            <size>20448</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5k
ZXggNjk4MWYzZi4uZTM4NjYyNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTQ2Miw2ICs0NjIsMjQgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgc3RyaW5nQXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiB1aUVs
ZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gYXR0cmlidXRlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgCisgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IGVsZW1lbnRzOworICAgIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT51aUVsZW1lbnRB
cnJheUF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZS5nZXQoKSwgZWxlbWVudHMpOworICAgIAorICAg
IHNpemVfdCBlbGVtZW50Q291bnQgPSBlbGVtZW50cy5zaXplKCk7CisgICAgSlNWYWx1ZVJlZiB2
YWx1ZUVsZW1lbnRzW2VsZW1lbnRDb3VudF07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGVsZW1lbnRDb3VudDsgKytpKQorICAgICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBlbGVt
ZW50c1tpXSk7CisgICAgCisgICAgcmV0dXJuIEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIGVs
ZW1lbnRDb3VudCwgdmFsdWVFbGVtZW50cywgZXhjZXB0aW9uKTsKK30KKwogc3RhdGljIEpTVmFs
dWVSZWYgdWlFbGVtZW50QXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZTsKQEAg
LTExNjEsNiArMTE3OSwxMCBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUgogSlNTdHJpbmdSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4g
MDsgfQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmLCBWZWN0b3I8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mKSBjb25zdCB7IH0KKyNlbmRpZgorCiAjaWYgIVBMQVRG
T1JNKFdJTikKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpCiB7CkBAIC0xMzg2LDYgKzE0MDgsNyBAQCBKU0Ns
YXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MoKQogICAgICAgICB7ICJ0
aXRsZVVJRWxlbWVudCIsIHRpdGxlVUlFbGVtZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0U2VsZWN0ZWRUZXh0UmFuZ2UiLCBzZXRTZWxlY3RlZFRleHRSYW5nZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInN0cmluZ0F0dHJpYnV0ZVZhbHVlIiwgc3RyaW5nQXR0cmlidXRl
VmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJ1aUVsZW1lbnRBcnJheUF0dHJpYnV0
ZVZhbHVlIiwgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlIiwgdWlFbGVtZW50QXR0cmlidXRlVmFs
dWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJBdHRyaWJ1dGVWYWx1ZSIsIG51
bWJlckF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYm9vbEF0dHJp
YnV0ZVZhbHVlIiwgYm9vbEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCAzNTMzZTA2Li4x
MGU0MmZkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCkBAIC0xMDYsNiArMTA2LDcgQEAgcHVibGljOgogICAgIC8vIEF0dHJpYnV0ZXMgLSBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGRvdWJsZSBudW1iZXJB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIHZvaWQgdWlFbGVtZW50
QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudHMpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25z
dDsgICAgCiAgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KTsKICAgICBib29sIGlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCmluZGV4IDY2OTViNTcuLjA5ZDE1NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC00MTYsNiAr
NDE2LDE1IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
JiBlbGVtZW50cykgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIGNvbnZlcnROU0FycmF5VG9WZWN0
b3IodmFsdWUsIGVsZW1lbnRzKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0
cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggNWY4
OGI0Mi4uNDY4ZTFkMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC04MCw2
ICs4MCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KCkgeyB9CiB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNob3dNZW51KCkgeyB9CiB2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXNzKCkgeyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsg
cmV0dXJuIDA7IH0KK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50
QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgY29uc3QgeyByZXR1cm4g
MDsgfQogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmKSB7IHJldHVybiAwOyB9CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggZjFkMzJmNi4uMTY0MWU2MyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXR0
cmlidXRlcyAtIHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucwogICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpOwogICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpOworICAgIEpTVmFsdWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBj
b25zdDsKICAgICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OwogICAgIGJvb2wgaXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsK
QEAgLTI1NCw2ICsyNTUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRMaW5rZWRVSUVsZW1l
bnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQg
Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4m
KTsKKyAgICAKKyAgICB2b2lkIGdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVm
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKSBjb25zdDsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCmluZGV4IGY0
NWE4YzIuLmM0NWM4ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbApAQCAtNTYsNiArNTYsNyBAQCBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCB7CiAKICAgICBET01TdHJpbmcgc3RyaW5nQXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0
dHIpOwogICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7Cisg
ICAgb2JqZWN0IHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0dHIpOwog
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoRE9NU3Ry
aW5nIGF0dHIpOyAgCiAgICAgYm9vbGVhbiBib29sQXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0
dHIpOwogICAgIGJvb2xlYW4gaXNBdHRyaWJ1dGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGF0dHIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggZjExZDExYi4u
NmNlZDM2MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBA
IC0yMjYsNiArMjI2LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1l
bnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lCiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxl
bWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50cykgY29uc3QKK3sKKyAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRl
XV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAg
ICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IodmFsdWUsIGVsZW1lbnRzKTsKKyAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hp
bGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVj
dG9yKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtNDQyLDYgKzQ1MSwyMiBA
QCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiAwOwogfQogCitKU1ZhbHVlUmVmIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKSBjb25zdAoreworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0g
V0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCkt
PnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2
YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+ID4gZWxlbWVudHM7CisgICAgZ2V0VUlFbGVtZW50c1dpdGhBdHRy
aWJ1dGUoYXR0cmlidXRlLCBlbGVtZW50cyk7CisgICAgCisgICAgc2l6ZV90IGVsZW1lbnRDb3Vu
dCA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICBKU1ZhbHVlUmVmIHZhbHVlRWxlbWVudHNbZWxlbWVu
dENvdW50XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQor
ICAgICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRz
W2ldLT53cmFwcGVyQ2xhc3MoKSwgZWxlbWVudHNbaV0uZ2V0KCkpOworICAgIAorICAgIHJldHVy
biBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCBlbGVtZW50Q291bnQsIHZhbHVlRWxlbWVudHMs
IDApOworfQorCiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXZpc2libGUtcm93cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJs
ZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjIyMTE1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTYgQEAKK0EKK0IKK0MKK0QKK0UKK1RoaXMgdGVzdHMgdGhhdCBBWFZpc2libGVSb3dzIHJl
dHVybnMgdmlzaWJsZSByb3dzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgcm93cyBpcyA1CitQQVNTIHZpc2libGVSb3dzIGlzIDMKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXZpc2libGUt
cm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNWM0M2YKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90
YWJsZS12aXNpYmxlLXJvd3MuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub2Zmc2NyZWVuIHsKKyAgICAgICAgcG9z
aXRpb246cmVsYXRpdmU7CisgICAgICAgIHRvcDo5OTk5cHg7CisgICAgfQorPC9zdHlsZT4KKzx0
aXRsZT5UYWJsZSBWaXNpYmxlIFJvd3M8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYg
aWQ9InRhYmxlIiByb2xlPSJncmlkIj4KKzxkaXYgY2xhc3M9Im9uc2NyZWVuIiByb2xlPSJyb3ci
PjxzcGFuIHJvbGU9ImdyaWRjZWxsIj5BPC9zcGFuPjwvZGl2PgorPGRpdiBjbGFzcz0ib25zY3Jl
ZW4iIHJvbGU9InJvdyI+PHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkI8L3NwYW4+PC9kaXY+Cis8ZGl2
IGNsYXNzPSJvbnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+Qzwvc3Bh
bj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJn
cmlkY2VsbCI+RDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93
Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RTwvc3Bhbj48L2Rpdj4KKzwvZGl2PgorCis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgQVhWaXNpYmxlUm93cyByZXR1cm5zIHZp
c2libGUgcm93cyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAgICAgIAorICAgICAgICAv
LyBBbGwgcm93cy4KKyAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS51aUVsZW1lbnRBcnJheUF0dHJp
YnV0ZVZhbHVlKCJBWFJvd3MiKS5sZW5ndGg7CisgICAgICAgIHNob3VsZEJlKCJyb3dzIiwgIjUi
KTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2libGUgcm93cy4KKyAgICAgICAgdmFyIHZpc2li
bGVSb3dzID0gdGFibGUudWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlUm93
cyIpLmxlbmd0aDsKKyAgICAgICAgc2hvdWxkQmUoInZpc2libGVSb3dzIiwgIjMiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDg2ODBiMDguLmFm
M2Q4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAKQEAgLTQyMSw3ICs0MjEsMjIgQEAgQWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvd3MoKQog
ICAgIAogICAgIHJldHVybiBtX3Jvd3M7CiB9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpj
b2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKK3sKKyAg
ICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1cGRhdGVDaGls
ZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCisgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gbV9jb2x1
bW5zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbHVtbkNvdW50OyArK2kp
IHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gdG9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4obV9jb2x1bW5zW2ldLmdldCgpKS0+aGVhZGVyT2JqZWN0KCk7CisgICAgICAg
IGlmIChoZWFkZXIpCisgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOworICAgIH0K
K30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvd0hlYWRlcnMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBoZWFkZXJzKQogewogICAgIGlmICghbV9yZW5kZXJlcikKQEAgLTQyOSwz
MSArNDQ0LDI5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dIZWFkZXJzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAgICAKICAgICB1cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KCk7CiAgICAgCi0gICAgdW5zaWduZWQgcm93Q291bnQgPSBtX3Jvd3Muc2l6ZSgp
OwotICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlUm93KG1f
cm93c1trXS5nZXQoKSktPmhlYWRlck9iamVjdCgpOwotICAgICAgICBpZiAoIWhlYWRlcikKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOworICAg
IHNpemVfdCByb3dDb3VudCA9IG1fcm93cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByb3dDb3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlUm93KG1fcm93c1tpXS5nZXQoKSktPmhlYWRlck9iamVj
dCgpOworICAgICAgICBpZiAoaGVhZGVyKQorICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoaGVh
ZGVyKTsKICAgICB9CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1bW5IZWFkZXJz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKK3ZvaWQgQWNjZXNzaWJpbGl0
eVRhYmxlOjp2aXNpYmxlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MpCiB7
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgdXBkYXRl
Q2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAotICAgIHVuc2lnbmVkIGNvbENvdW50ID0gbV9j
b2x1bW5zLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY29sQ291bnQ7ICsr
aykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbihtX2NvbHVtbnNba10uZ2V0KCkpLT5oZWFkZXJPYmplY3QoKTsKLSAgICAg
ICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaGVhZGVycy5h
cHBlbmQoaGVhZGVyKTsKKyAgICBzaXplX3Qgcm93Q291bnQgPSBtX3Jvd3Muc2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm93Q291bnQ7ICsraSkgeworICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiByb3cgPSBtX3Jvd3NbaV0uZ2V0KCk7CisgICAgICAgIGlmIChyb3cgJiYg
IXJvdy0+aXNPZmZTY3JlZW4oKSkKKyAgICAgICAgICAgIHJvd3MuYXBwZW5kKHJvdyk7CiAgICAg
fQogfQotICAgIAorCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjZWxscykKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuaAppbmRleCAwMzlmMDRkLi5kZDM1NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKQEAgLTY5LDcgKzY5LDgg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29sdW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIHJvd0hlYWRlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7Ci0KKyAgICB2b2lkIHZpc2libGVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpOworICAgIAogICAgIC8vIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zLCBhcyBjaGlsZHJl
biwgYWxsIHRoZSBvYmplY3RzIHRoYXQgYWN0IGFzIGhlYWRlcnMKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBoZWFkZXJDb250YWluZXIoKTsKIApAQCAtOTgsNyArOTksNyBAQCBwcml2YXRlOgog
fTsKIAogQUNDRVNTSUJJTElUWV9PQkpFQ1RfVFlQRV9DQVNUUyhBY2Nlc3NpYmlsaXR5VGFibGUs
IGlzVGFibGUoKSkKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKIAogI2VuZGlmIC8v
IEFjY2Vzc2liaWxpdHlUYWJsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCBjOGVlYzQyLi5iMDNjM2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIH07IAogCiBBQ0NFU1NJQklMSVRZX09C
SkVDVF9UWVBFX0NBU1RTKEFjY2Vzc2liaWxpdHlUYWJsZVJvdywgaXNUYWJsZVJvdygpKQotICAg
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3dfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1ZjYx
ZGNhLi4xODk5NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpA
QCAtMjM1MywxMSArMjM1MywxNSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJp
bmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgfQogICAgIAogICAgIGlmIChtX29iamVj
dC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkgewotICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlz
aCBiZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIHJvd3MKLSAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSB8
fAotICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkgeworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKQogICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodG9BY2Nlc3NpYmlsaXR5VGFibGUobV9vYmplY3Qp
LT5yb3dzKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB2aXNp
YmxlUm93czsKKyAgICAgICAgICAgIHRvQWNjZXNzaWJpbGl0eVRhYmxlKG1fb2JqZWN0KS0+dmlz
aWJsZVJvd3ModmlzaWJsZVJvd3MpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkodmlzaWJsZVJvd3MpOwogICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBUT0RPOiBk
aXN0aW5ndWlzaCBiZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMKICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1
bW5zQXR0cmlidXRlXSB8fAogICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGQyNzI0N2IuLmQzYjJiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0x
MS0xNSAgU2FtdWVsIFdoaXRlICA8c2FtdWVsX3doaXRlQGFwcGxlLmNvbT4KKworICAgICAgICBB
WDogQWRkIGFiaWxpdHkgdG8gZmV0Y2ggb25seSB2aXNpYmxlIHRhYmxlIHJvd3MuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ0MzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgQWNjZXNzaWJp
bGl0eVRhYmxlOjp2aXNpYmxlUm93cyBtZXRob2QgdG8gc3VwcG9ydCBBWFZpc2libGVSb3dzIGF0
dHJpYnV0ZSBtYWMgcGxhdGZvcm0uCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvdGFibGUtdmlzaWJsZS1yb3dzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZTo6Y29sdW1uSGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGU6OnJvd0hlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojp2aXNpYmxlUm93cyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMTMtMTEtMTUgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2UuaCBpbmNsdWRlcyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDlhMmNiZi4u
OGEwYzg0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTExLTE1ICBTYW11ZWwgV2hpdGUg
IDxzYW11ZWxfd2hpdGVAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBBZGQgYWJpbGl0eSB0byBm
ZXRjaCBvbmx5IHZpc2libGUgdGFibGUgcm93cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyB0ZXN0IHRvIG1ha2Ugc3VyZSBBWFZpc2libGVS
b3dzIGJlaGF2ZXMgY29ycmVjdGx5LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvdGFibGUtdmlzaWJsZS1yb3dzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtdmlzaWJsZS1yb3dzLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTExLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIExheW91dCBUZXN0IGZhc3QvZG9tL0dlb2xvY2F0aW9uL25vdGltZXItYWZ0ZXIt
dW5sb2FkLmh0bWwgaXMgZmxha3kgYW5kIGNyYXNoeSBvbiBNYWMgV0syCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjIxYTI2My4uM2MyNjFhOCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEzLTExLTE1ICBTYW11ZWwgV2hpdGUgIDxzYW11ZWxfd2hpdGVAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBBZGQgYWJpbGl0eSB0byBmZXRjaCBvbmx5IHZpc2libGUgdGFi
bGUgcm93cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGluZyBtZXRob2QgdG8gZmV0Y2ggYXJyYXkgb2YgQWNjZXNzaWJpbGl0eVVJRWxlbWVudHMg
dG8gaGVscCB3aXRoIHRlc3QgYnJldml0eSBhbmQgdGVzdCBicmVha2FnZS4gU3BlY2lmaWNhbGx5
LCB3ZQorICAgICAgICBoYXZlIGEgZ29vZCBkZWFsIG9mIGNodXJuIGFueSB0aW1lIHdlIGFkZCBv
ciB1cGRhdGUgYW4gZWxlbWVudCBhdHRyaWJ1dGUuIFRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBu
dW1iZXIgb2YgdGVzdHMKKyAgICAgICAgdGhhdCByZWx5IG9uIGEgc2ltcGxlIGVsZW1lbnQgZGVz
Y3JpcHRpb24gdGV4dCBkdW1wIHRvIHZlcmlmeSBhIHNpbmdsZSBhdHRyaWJ1dGUgaXMgbm9uIHRy
aXZpYWwuIFNvIGFueSB0aW1lIHlvdQorICAgICAgICBjaGFuZ2UgYWRkIGFuIGF0dHJpYnV0ZSwg
eW91IGhhdmUgdG8gdXBkYXRlIGFsbCB0aGUgdGVzdHMgdGhhdCBhcmUgbm93IGltcGxpY2l0bHkg
dmVyaWZ5aW5nIHRoaXMgbmV3IGF0dHJpYnV0ZS4gQnV0CisgICAgICAgIGFzIHRoZSB0ZXN0IGd1
aWRlbGluZXMgc3RhdGUsIG91ciB0ZXN0cyBzaG91bGQgYmUgbW9yZSBmb2N1c2VkIGFuZCBzcGVj
aWZpYyBhYm91dCB3aGF0IHRoZXkgdGVzdC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAodWlFbGVtZW50QXJyYXlBdHRyaWJ1
dGVWYWx1ZUNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEFycmF5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50
QXJyYXlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0
cmlidXRlVmFsdWUpOgorCiAyMDEzLTExLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIGJ1aWxkLndlYmtpdC5vcmcvZGFzaGJvYXJkIHNob3VsZCBw
cm92aWRlIGEgd2F5IHRvIGZvY3VzIG9uIGEgc3Vic2V0IG9mIGJvdHMK
</data>
<flag name="commit-queue"
          id="240189"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217207</attachid>
            <date>2013-11-18 10:26:28 -0800</date>
            <delta_ts>2013-11-18 14:41:24 -0800</delta_ts>
            <desc>Updated patch for review.</desc>
            <filename>table-visible-rows.patch</filename>
            <type>text/plain</type>
            <size>21497</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXZpc2libGUtcm93cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNzAxOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBBWFZpc2libGVSb3dzIHJl
dHVybnMgdmlzaWJsZSByb3dzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgcm93cyBpcyA1CitQQVNTIHZpc2libGVSb3dzIGlzIDMKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXZpc2libGUt
cm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZjg1OGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90
YWJsZS12aXNpYmxlLXJvd3MuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub2Zmc2NyZWVuIHsKKyAgICAgICAgcG9z
aXRpb246cmVsYXRpdmU7CisgICAgICAgIHRvcDo5OTk5cHg7CisgICAgfQorPC9zdHlsZT4KKzx0
aXRsZT5UYWJsZSBWaXNpYmxlIFJvd3M8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYg
aWQ9InRhYmxlIiByb2xlPSJncmlkIj4KKzxkaXYgY2xhc3M9Im9uc2NyZWVuIiByb2xlPSJyb3ci
PjxzcGFuIHJvbGU9ImdyaWRjZWxsIj5BPC9zcGFuPjwvZGl2PgorPGRpdiBjbGFzcz0ib25zY3Jl
ZW4iIHJvbGU9InJvdyI+PHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkI8L3NwYW4+PC9kaXY+Cis8ZGl2
IGNsYXNzPSJvbnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+Qzwvc3Bh
bj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJn
cmlkY2VsbCI+RDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93
Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RTwvc3Bhbj48L2Rpdj4KKzwvZGl2PgorCis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgQVhWaXNpYmxlUm93cyByZXR1cm5zIHZp
c2libGUgcm93cyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAgICAgIAorICAgICAgICAv
LyBBbGwgcm93cy4KKyAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS51aUVsZW1lbnRBcnJheUF0dHJp
YnV0ZVZhbHVlKCJBWFJvd3MiKS5sZW5ndGg7CisgICAgICAgIHNob3VsZEJlKCJyb3dzIiwgIjUi
KTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2libGUgcm93cy4KKyAgICAgICAgdmFyIHZpc2li
bGVSb3dzID0gdGFibGUudWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlUm93
cyIpLmxlbmd0aDsKKyAgICAgICAgc2hvdWxkQmUoInZpc2libGVSb3dzIiwgIjMiKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFJlbW92ZSBzdXBlcmZsdW91cyB0ZXh0IGZyb20gZXhwZWN0ZWQgcmVz
dWx0cy4KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYmxlIikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IDg2ODBiMDguLmFmM2Q4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQyMSw3ICs0MjEsMjIgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nlc3Np
YmlsaXR5VGFibGU6OnJvd3MoKQogICAgIAogICAgIHJldHVybiBtX3Jvd3M7CiB9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgaGVhZGVycykKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCisgICAgc2l6ZV90
IGNvbHVtbkNvdW50ID0gbV9jb2x1bW5zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvbHVtbkNvdW50OyArK2kpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVh
ZGVyID0gdG9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4obV9jb2x1bW5zW2ldLmdldCgpKS0+aGVh
ZGVyT2JqZWN0KCk7CisgICAgICAgIGlmIChoZWFkZXIpCisgICAgICAgICAgICBoZWFkZXJzLmFw
cGVuZChoZWFkZXIpOworICAgIH0KK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvd0hl
YWRlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBoZWFkZXJzKQogewogICAgIGlmICgh
bV9yZW5kZXJlcikKQEAgLTQyOSwzMSArNDQ0LDI5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojpyb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKICAgICAK
ICAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCi0gICAgdW5zaWduZWQgcm93
Q291bnQgPSBtX3Jvd3Muc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCByb3dD
b3VudDsgKytrKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IHRvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93KG1fcm93c1trXS5nZXQoKSktPmhlYWRlck9iamVjdCgpOwotICAg
ICAgICBpZiAoIWhlYWRlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBoZWFkZXJz
LmFwcGVuZChoZWFkZXIpOworICAgIHNpemVfdCByb3dDb3VudCA9IG1fcm93cy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb3dDb3VudDsgKytpKSB7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGhlYWRlciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlUm93KG1fcm93c1tp
XS5nZXQoKSktPmhlYWRlck9iamVjdCgpOworICAgICAgICBpZiAoaGVhZGVyKQorICAgICAgICAg
ICAgaGVhZGVycy5hcHBlbmQoaGVhZGVyKTsKICAgICB9CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eVRhYmxlOjpjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVy
cykKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjp2aXNpYmxlUm93cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIHJvd3MpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAotICAgIHVu
c2lnbmVkIGNvbENvdW50ID0gbV9jb2x1bW5zLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsg
PSAwOyBrIDwgY29sQ291bnQ7ICsraykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBo
ZWFkZXIgPSB0b0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbihtX2NvbHVtbnNba10uZ2V0KCkpLT5o
ZWFkZXJPYmplY3QoKTsKLSAgICAgICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaGVhZGVycy5hcHBlbmQoaGVhZGVyKTsKKyAgICBzaXplX3Qgcm93Q291bnQg
PSBtX3Jvd3Muc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm93Q291bnQ7ICsr
aSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBtX3Jvd3NbaV0uZ2V0KCk7
CisgICAgICAgIGlmIChyb3cgJiYgIXJvdy0+aXNPZmZTY3JlZW4oKSkKKyAgICAgICAgICAgIHJv
d3MuYXBwZW5kKHJvdyk7CiAgICAgfQogfQotICAgIAorCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjZWxscykKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAppbmRleCAwMzlmMDRkLi5kZDM1NmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmgKQEAgLTY5LDcgKzY5LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29sdW1uSGVh
ZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIHJvd0hlYWRlcnMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0KKyAgICB2b2lkIHZpc2libGVSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOworICAgIAogICAgIC8vIGFuIG9iamVjdCB0aGF0
IGNvbnRhaW5zLCBhcyBjaGlsZHJlbiwgYWxsIHRoZSBvYmplY3RzIHRoYXQgYWN0IGFzIGhlYWRl
cnMKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJDb250YWluZXIoKTsKIApAQCAtOTgs
NyArOTksNyBAQCBwcml2YXRlOgogfTsKIAogQUNDRVNTSUJJTElUWV9PQkpFQ1RfVFlQRV9DQVNU
UyhBY2Nlc3NpYmlsaXR5VGFibGUsIGlzVGFibGUoKSkKLSAgICAKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZSAKIAogI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlUYWJsZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCBj
OGVlYzQyLi5iMDNjM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIH07
IAogCiBBQ0NFU1NJQklMSVRZX09CSkVDVF9UWVBFX0NBU1RTKEFjY2Vzc2liaWxpdHlUYWJsZVJv
dywgaXNUYWJsZVJvdygpKQotICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRp
ZiAvLyBBY2Nlc3NpYmlsaXR5VGFibGVSb3dfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQppbmRleCA1ZjYxZGNhLi4xODk5NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMjM1MywxMSArMjM1MywxNSBAQCBzdGF0aWMgTlNTdHJp
bmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgfQog
ICAgIAogICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkgewotICAgICAg
ICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIHJv
d3MKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXSB8fAotICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkgeworICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NB
dHRyaWJ1dGVdKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodG9BY2Nlc3Np
YmlsaXR5VGFibGUobV9vYmplY3QpLT5yb3dzKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0
dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciB2aXNpYmxlUm93czsKKyAgICAgICAgICAgIHRvQWNjZXNzaWJpbGl0
eVRhYmxlKG1fb2JqZWN0KS0+dmlzaWJsZVJvd3ModmlzaWJsZVJvd3MpOworICAgICAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZVJvd3MpOwogICAgICAgICB9CisgICAgICAg
IAogICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12
aXNpYmxlIGNvbHVtbnMKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXSB8fAogICAgICAgICAgICAgW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVDb2x1bW5zQXR0
cmlidXRlXSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcAppbmRleCA2OTgxZjNmLi42NmJkMTAwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNDYyLDYgKzQ2MiwyNCBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU1Zh
bHVlUmVmIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIAorICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGUoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAKKyAgICBWZWN0b3I8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7CisgICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCkt
PnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlLmdldCgpLCBlbGVtZW50cyk7
CisgICAgCisgICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICBh
dXRvIHZhbHVlRWxlbWVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTVmFsdWVSZWZbXT4oZWxlbWVu
dENvdW50KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQor
ICAgICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpT
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCBlbGVtZW50c1tpXSk7CisgICAgCisgICAg
cmV0dXJuIEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIGVsZW1lbnRDb3VudCwgdmFsdWVFbGVt
ZW50cy5nZXQoKSwgZXhjZXB0aW9uKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgdWlFbGVtZW50
QXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZTsKQEAgLTExNjEsNiArMTE3OSwx
MCBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUgogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGF0aERlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAK
KyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1l
bnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmLCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4mKSBjb25zdCB7IH0KKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKFdJTikKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBv
dGhlckVsZW1lbnQpCiB7CkBAIC0xMzg2LDYgKzE0MDgsNyBAQCBKU0NsYXNzUmVmIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MoKQogICAgICAgICB7ICJ0aXRsZVVJRWxlbWVudCIs
IHRpdGxlVUlFbGVtZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2VsZWN0ZWRU
ZXh0UmFuZ2UiLCBzZXRTZWxlY3RlZFRleHRSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInN0cmluZ0F0dHJpYnV0ZVZhbHVlIiwgc3RyaW5nQXR0cmlidXRlVmFsdWVDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgICAgICB7ICJ1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlIiwgdWlFbGVt
ZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlIiwgdWlFbGVtZW50QXR0cmlidXRlVmFsdWVDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJudW1iZXJBdHRyaWJ1dGVWYWx1ZSIsIG51bWJlckF0dHJpYnV0ZVZh
bHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYm9vbEF0dHJpYnV0ZVZhbHVlIiwgYm9v
bEF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCAzNTMzZTA2Li4xMGU0MmZkIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0xMDYsNiAr
MTA2LDcgQEAgcHVibGljOgogICAgIC8vIEF0dHJpYnV0ZXMgLSBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBpbXBsZW1lbnRhdGlvbnMKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIHZvaWQgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiYgZWxlbWVudHMpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgdWlFbGVtZW50
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsgICAgCiAgICAgYm9v
bCBib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKICAgICBib29sIGlz
QXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4
IDY2OTViNTcuLjA5ZDE1NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC00MTYsNiArNDE2LDE1IEBAIEpTU3Ry
aW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVm
IGF0dHJpYnV0ZSwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50cykgY29u
c3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5IGNsYXNzXV0pCisgICAgICAgIGNvbnZlcnROU0FycmF5VG9WZWN0b3IodmFsdWUsIGVsZW1l
bnRzKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CisKIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggNWY4OGI0Mi4uNDY4ZTFkMSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC04MCw2ICs4MCw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KCkgeyB9CiB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNob3dNZW51KCkgeyB9CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXNzKCkgeyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsgcmV0dXJuIDA7IH0KK0pT
VmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgY29uc3QgeyByZXR1cm4gMDsgfQogZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSB7
IHJldHVybiAwOyB9CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZikgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmgKaW5kZXggZjFkMzJmNi4uMTY0MWU2MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXR0cmlidXRlcyAtIHBsYXRm
b3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGRv
dWJsZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIEpT
VmFsdWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVt
ZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsKICAgICBib29s
IGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGJvb2wgaXNB
dHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKQEAgLTI1NCw2ICsyNTUs
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5r
cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyAgICAKKyAgICB2
b2lkIGdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmLCBWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCmluZGV4IGY0NWE4YzIuLmM0NWM4ZGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbApAQCAt
NTYsNiArNTYsNyBAQCBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CiAKICAgICBE
T01TdHJpbmcgc3RyaW5nQXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0dHIpOwogICAgIGRvdWJs
ZSBudW1iZXJBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CisgICAgb2JqZWN0IHVpRWxl
bWVudEFycmF5QXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0dHIpOwogICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0dHIpOyAgCiAg
ICAgYm9vbGVhbiBib29sQXR0cmlidXRlVmFsdWUoRE9NU3RyaW5nIGF0dHIpOwogICAgIGJvb2xl
YW4gaXNBdHRyaWJ1dGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGF0dHIpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA4MjAyNTJhLi5hNWJiMDYyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNzMxLDYgKzcz
MSwxMiBAQCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiAwOwogfQogCitKU1ZhbHVlUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggZjExZDExYi4uNmNlZDM2
MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0yMjYs
NiArMjI2LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5r
cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lCiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNX
aXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50cykgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07Cisg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIGNv
bnZlcnROU0FycmF5VG9WZWN0b3IodmFsdWUsIGVsZW1lbnRzKTsKKyAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4o
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVjdG9yKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtNDQyLDYgKzQ1MSwyMiBAQCBkb3Vi
bGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKQogICAgIHJldHVybiAwOwogfQogCitKU1ZhbHVlUmVmIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKSBjb25zdAoreworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5k
bGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHQobWFpbkZyYW1lKTsKKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+ID4gZWxlbWVudHM7CisgICAgZ2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUo
YXR0cmlidXRlLCBlbGVtZW50cyk7CisgICAgCisgICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGVs
ZW1lbnRzLnNpemUoKTsKKyAgICBKU1ZhbHVlUmVmIHZhbHVlRWxlbWVudHNbZWxlbWVudENvdW50
XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKQorICAgICAg
ICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGVsZW1lbnRzW2ldLT53
cmFwcGVyQ2xhc3MoKSwgZWxlbWVudHNbaV0uZ2V0KCkpOworICAgIAorICAgIHJldHVybiBKU09i
amVjdE1ha2VBcnJheShjb250ZXh0LCBlbGVtZW50Q291bnQsIHZhbHVlRWxlbWVudHMsIDApOwor
fQorCiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29u
c3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OWEyY2JmLi42Yjdm
MDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMTEtMTggIFNhbXVlbCBXaGl0ZSAgPHNh
bXVlbF93aGl0ZUBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFkZCBhYmlsaXR5IHRvIGZldGNo
IG9ubHkgdmlzaWJsZSB0YWJsZSByb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRlc3QgdG8gbWFrZSBzdXJlIEFYVmlzaWJsZVJvd3Mg
YmVoYXZlcyBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRtbDogQWRkZWQuCisK
IDIwMTMtMTEtMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTGF5b3V0IFRlc3QgZmFzdC9kb20vR2VvbG9jYXRpb24vbm90aW1lci1hZnRlci11bmxv
YWQuaHRtbCBpcyBmbGFreSBhbmQgY3Jhc2h5IG9uIE1hYyBXSzIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMjcy
NDdiLi4zMTY1N2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMTEtMTggIFNh
bXVlbCBXaGl0ZSAgPHNhbXVlbF93aGl0ZUBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFkZCBh
YmlsaXR5IHRvIGZldGNoIG9ubHkgdmlzaWJsZSB0YWJsZSByb3dzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NDMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6dmlzaWJsZVJvd3MgbWV0aG9kIHRvIHN1cHBvcnQgQVhWaXNpYmxlUm93cyBhdHRyaWJ1dGUg
bWFjIHBsYXRmb3JtLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLXZpc2libGUtcm93cy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6
OmNvbHVtbkhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpy
b3dIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dmlzaWJs
ZVJvd3MpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOl0pOgorCiAyMDEzLTExLTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmggaW5j
bHVkZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIyMWEyNjMuLmJlNTk3NDQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAor
MjAxMy0xMS0xOCAgU2FtdWVsIFdoaXRlICA8c2FtdWVsX3doaXRlQGFwcGxlLmNvbT4KKworICAg
ICAgICBBWDogQWRkIGFiaWxpdHkgdG8gZmV0Y2ggb25seSB2aXNpYmxlIHRhYmxlIHJvd3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ0MzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgbWV0
aG9kIHRvIGZldGNoIGFycmF5IG9mIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRzIHRvIGhlbHAgd2l0
aCB0ZXN0IGJyZXZpdHkgYW5kIHRlc3QgYnJlYWthZ2UuIFNwZWNpZmljYWxseSwgd2UKKyAgICAg
ICAgaGF2ZSBhIGdvb2QgZGVhbCBvZiBjaHVybiBhbnkgdGltZSB3ZSBhZGQgb3IgdXBkYXRlIGFu
IGVsZW1lbnQgYXR0cmlidXRlLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgbnVtYmVyIG9mIHRl
c3RzCisgICAgICAgIHRoYXQgcmVseSBvbiBhIHNpbXBsZSBlbGVtZW50IGRlc2NyaXB0aW9uIHRl
eHQgZHVtcCB0byB2ZXJpZnkgYSBzaW5nbGUgYXR0cmlidXRlIGlzIG5vbiB0cml2aWFsLiBTbyBh
bnkgdGltZSB5b3UKKyAgICAgICAgY2hhbmdlIGFkZCBhbiBhdHRyaWJ1dGUsIHlvdSBoYXZlIHRv
IHVwZGF0ZSBhbGwgdGhlIHRlc3RzIHRoYXQgYXJlIG5vdyBpbXBsaWNpdGx5IHZlcmlmeWluZyB0
aGlzIG5ldyBhdHRyaWJ1dGUuIEJ1dAorICAgICAgICBhcyB0aGUgdGVzdCBndWlkZWxpbmVzIHN0
YXRlLCBvdXIgdGVzdHMgc2hvdWxkIGJlIG1vcmUgZm9jdXNlZCBhbmQgc3BlY2lmaWMgYWJvdXQg
d2hhdCB0aGV5IHRlc3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWVDYWxs
YmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xh
c3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmli
dXRlVmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJ
RWxlbWVudHNXaXRoQXR0cmlidXRlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSk6CisKIDIwMTMtMTEtMTUgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgYnVpbGQud2Via2l0
Lm9yZy9kYXNoYm9hcmQgc2hvdWxkIHByb3ZpZGUgYSB3YXkgdG8gZm9jdXMgb24gYSBzdWJzZXQg
b2YgYm90cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217236</attachid>
            <date>2013-11-18 14:41:08 -0800</date>
            <delta_ts>2013-11-18 16:30:25 -0800</delta_ts>
            <desc>Update patch for review.</desc>
            <filename>table-visible-rows.patch</filename>
            <type>text/plain</type>
            <size>21387</size>
            <attacher name="Samuel White">samuel_white</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXZpc2libGUtcm93cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNzAxOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBBWFZpc2libGVSb3dzIHJl
dHVybnMgdmlzaWJsZSByb3dzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgcm93cyBpcyA1CitQQVNTIHZpc2libGVSb3dzIGlzIDMKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS12aXNpYmxlLXJvd3MuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXZpc2libGUt
cm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZjg1OGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90
YWJsZS12aXNpYmxlLXJvd3MuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub2Zmc2NyZWVuIHsKKyAgICAgICAgcG9z
aXRpb246cmVsYXRpdmU7CisgICAgICAgIHRvcDo5OTk5cHg7CisgICAgfQorPC9zdHlsZT4KKzx0
aXRsZT5UYWJsZSBWaXNpYmxlIFJvd3M8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYg
aWQ9InRhYmxlIiByb2xlPSJncmlkIj4KKzxkaXYgY2xhc3M9Im9uc2NyZWVuIiByb2xlPSJyb3ci
PjxzcGFuIHJvbGU9ImdyaWRjZWxsIj5BPC9zcGFuPjwvZGl2PgorPGRpdiBjbGFzcz0ib25zY3Jl
ZW4iIHJvbGU9InJvdyI+PHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkI8L3NwYW4+PC9kaXY+Cis8ZGl2
IGNsYXNzPSJvbnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+Qzwvc3Bh
bj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93Ij48c3BhbiByb2xlPSJn
cmlkY2VsbCI+RDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9Im9mZnNjcmVlbiIgcm9sZT0icm93
Ij48c3BhbiByb2xlPSJncmlkY2VsbCI+RTwvc3Bhbj48L2Rpdj4KKzwvZGl2PgorCis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgQVhWaXNpYmxlUm93cyByZXR1cm5zIHZp
c2libGUgcm93cyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAgICAgIAorICAgICAgICAv
LyBBbGwgcm93cy4KKyAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS51aUVsZW1lbnRBcnJheUF0dHJp
YnV0ZVZhbHVlKCJBWFJvd3MiKS5sZW5ndGg7CisgICAgICAgIHNob3VsZEJlKCJyb3dzIiwgIjUi
KTsKKyAgICAgICAgCisgICAgICAgIC8vIFZpc2libGUgcm93cy4KKyAgICAgICAgdmFyIHZpc2li
bGVSb3dzID0gdGFibGUudWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSgiQVhWaXNpYmxlUm93
cyIpLmxlbmd0aDsKKyAgICAgICAgc2hvdWxkQmUoInZpc2libGVSb3dzIiwgIjMiKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIEhpZGUgc3VwZXJmbHVvdXMgdGV4dC4KKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRhYmxlIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICB9Cis8
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDk5ZGQ5YWUuLmIzZDNj
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKQEAgLTQyMSw3ICs0MjEsMjEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvd3MoKQogICAg
IAogICAgIHJldHVybiBtX3Jvd3M7CiB9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1
bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVycykKK3sKKyAgICBp
ZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1cGRhdGVDaGlsZHJl
bklmTmVjZXNzYXJ5KCk7CiAgICAgCisgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gbV9jb2x1bW5z
LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbHVtbkNvdW50OyArK2kpIHsK
KyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9IHRvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uKG1fY29sdW1uc1tpXS5nZXQoKSktPmhlYWRlck9iamVjdCgpKQorICAgICAg
ICAgICAgaGVhZGVycy5hcHBlbmQoaGVhZGVyKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzaWJp
bGl0eVRhYmxlOjpyb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgaGVhZGVy
cykKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCkBAIC00MjksMzEgKzQ0MywyOCBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6cm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGhlYWRlcnMpCiAgICAgCiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAot
ICAgIHVuc2lnbmVkIHJvd0NvdW50ID0gbV9yb3dzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGsgPSAwOyBrIDwgcm93Q291bnQ7ICsraykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBoZWFkZXIgPSB0b0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhtX3Jvd3Nba10uZ2V0KCkpLT5oZWFk
ZXJPYmplY3QoKTsKLSAgICAgICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgaGVhZGVycy5hcHBlbmQoaGVhZGVyKTsKKyAgICBzaXplX3Qgcm93Q291bnQgPSBt
X3Jvd3Muc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm93Q291bnQ7ICsraSkg
eworICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyID0gdG9BY2Nlc3NpYmls
aXR5VGFibGVSb3cobV9yb3dzW2ldLmdldCgpKS0+aGVhZGVyT2JqZWN0KCkpCisgICAgICAgICAg
ICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOwogICAgIH0KIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5
VGFibGU6OmNvbHVtbkhlYWRlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBoZWFkZXJz
KQordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnZpc2libGVSb3dzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgcm93cykKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCi0gICAgdW5z
aWduZWQgY29sQ291bnQgPSBtX2NvbHVtbnMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgayA9
IDA7IGsgPCBjb2xDb3VudDsgKytrKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhl
YWRlciA9IHRvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKG1fY29sdW1uc1trXS5nZXQoKSktPmhl
YWRlck9iamVjdCgpOwotICAgICAgICBpZiAoIWhlYWRlcikKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBoZWFkZXJzLmFwcGVuZChoZWFkZXIpOworICAgIHNpemVfdCByb3dDb3VudCA9
IG1fcm93cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb3dDb3VudDsgKytp
KSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvdyA9IG1fcm93c1tpXS5nZXQoKTsK
KyAgICAgICAgaWYgKHJvdyAmJiAhcm93LT5pc09mZlNjcmVlbigpKQorICAgICAgICAgICAgcm93
cy5hcHBlbmQocm93KTsKICAgICB9CiB9Ci0gICAgCisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
OjpjZWxscyhBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGNlbGxzKQogewogICAgIGlmICghbV9yZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IDAzOWYwNGQuLmRkMzU2Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaApAQCAtNjksNyArNjksOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb2x1bW5IZWFk
ZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZvaWQgcm93SGVhZGVycyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLQorICAgIHZvaWQgdmlzaWJsZVJvd3MoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgCiAgICAgLy8gYW4gb2JqZWN0IHRoYXQg
Y29udGFpbnMsIGFzIGNoaWxkcmVuLCBhbGwgdGhlIG9iamVjdHMgdGhhdCBhY3QgYXMgaGVhZGVy
cwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlckNvbnRhaW5lcigpOwogCkBAIC05OCw3
ICs5OSw3IEBAIHByaXZhdGU6CiB9OwogCiBBQ0NFU1NJQklMSVRZX09CSkVDVF9UWVBFX0NBU1RT
KEFjY2Vzc2liaWxpdHlUYWJsZSwgaXNUYWJsZSgpKQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlIAogCiAjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRhYmxlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCmluZGV4IGM4
ZWVjNDIuLmIwM2MzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogfTsg
CiAKIEFDQ0VTU0lCSUxJVFlfT0JKRUNUX1RZUEVfQ0FTVFMoQWNjZXNzaWJpbGl0eVRhYmxlUm93
LCBpc1RhYmxlUm93KCkpCi0gICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKIAogI2VuZGlm
IC8vIEFjY2Vzc2liaWxpdHlUYWJsZVJvd19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCmluZGV4IDVmNjFkY2EuLjE4OTk0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCkBAIC0yMzUzLDExICsyMzUzLDE1IEBAIHN0YXRpYyBOU1N0cmlu
Zyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICB9CiAg
ICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKSB7Ci0gICAgICAg
IC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgcm93
cwotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVJvd3NBdHRyaWJ1dGVdIHx8Ci0gICAgICAgICAgICBbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdKSB7CisgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0
dHJpYnV0ZV0pCiAgICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0b0FjY2Vzc2li
aWxpdHlUYWJsZShtX29iamVjdCktPnJvd3MoKSk7CisgICAgICAgIAorICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0
cmlidXRlXSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIHZpc2libGVSb3dzOworICAgICAgICAgICAgdG9BY2Nlc3NpYmlsaXR5
VGFibGUobV9vYmplY3QpLT52aXNpYmxlUm93cyh2aXNpYmxlUm93cyk7CisgICAgICAgICAgICBy
ZXR1cm4gY29udmVydFRvTlNBcnJheSh2aXNpYmxlUm93cyk7CiAgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZp
c2libGUgY29sdW1ucwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdIHx8CiAgICAgICAgICAgICBbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNvbHVtbnNBdHRy
aWJ1dGVdKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCmluZGV4IDY5ODFmM2YuLjY2YmQxMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC00NjIsNiArNDYyLDI0IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHN0cmluZ0F0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIEpTVmFs
dWVSZWYgdWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgCisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIAorICAgIFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBlbGVtZW50czsKKyAgICB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+
dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUuZ2V0KCksIGVsZW1lbnRzKTsK
KyAgICAKKyAgICBzaXplX3QgZWxlbWVudENvdW50ID0gZWxlbWVudHMuc2l6ZSgpOworICAgIGF1
dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihlbGVtZW50
Q291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyArK2kpCisg
ICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGVsZW1lbnRzW2ldKTsKKyAgICAKKyAgICBy
ZXR1cm4gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgZWxlbWVudENvdW50LCB2YWx1ZUVsZW1l
bnRzLmdldCgpLCBleGNlcHRpb24pOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiB1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlOwpAQCAtMTE2MSw2ICsxMTc5LDEw
IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVt
ZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAor
I2lmICFQTEFURk9STShNQUMpCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVu
dEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYpIGNvbnN0IHsgfQorI2VuZGlmCisKICNpZiAhUExBVEZPUk0oV0lOKQogYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90
aGVyRWxlbWVudCkKIHsKQEAgLTEzODYsNiArMTQwOCw3IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcygpCiAgICAgICAgIHsgInRpdGxlVUlFbGVtZW50Iiwg
dGl0bGVVSUVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTZWxlY3RlZFRl
eHRSYW5nZSIsIHNldFNlbGVjdGVkVGV4dFJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic3RyaW5nQXR0cmlidXRlVmFsdWUiLCBzdHJpbmdBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCisgICAgICAgIHsgInVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUiLCB1aUVsZW1l
bnRBcnJheUF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidWlFbGVt
ZW50QXR0cmlidXRlVmFsdWUiLCB1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgIm51bWJlckF0dHJpYnV0ZVZhbHVlIiwgbnVtYmVyQXR0cmlidXRlVmFs
dWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJib29sQXR0cmlidXRlVmFsdWUiLCBib29s
QXR0cmlidXRlVmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IDM1MzNlMDYuLjEwZTQyZmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTEwNiw2ICsx
MDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXR0cmlidXRlcyAtIHBsYXRmb3JtLWluZGVwZW5kZW50
IGltcGxlbWVudGF0aW9ucwogICAgIEpTU3RyaW5nUmVmIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpT
U3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgZG91YmxlIG51bWJlckF0dHJpYnV0ZVZhbHVlKEpT
U3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgdm9pZCB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
JiBlbGVtZW50cykgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB1aUVsZW1lbnRB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0OyAgICAKICAgICBib29s
IGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGJvb2wgaXNB
dHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXgg
NjY5NWI1Ny4uMDlkMTU2NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTQxNiw2ICs0MTYsMTUgQEAgSlNTdHJp
bmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlLCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRzKSBjb25z
dAoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0
cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJy
YXkgY2xhc3NdXSkKKyAgICAgICAgY29udmVydE5TQXJyYXlUb1ZlY3Rvcih2YWx1ZSwgZWxlbWVu
dHMpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCA1Zjg4YjQyLi40NjhlMWQxIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTgwLDYgKzgwLDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQoKSB7IH0KIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2hvd01lbnUoKSB7IH0KIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJlc3MoKSB7IH0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZikgeyByZXR1cm4gMDsgfQorSlNW
YWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKSBjb25zdCB7IHJldHVybiAwOyB9CiBkb3VibGUgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYpIHsg
cmV0dXJuIDA7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAppbmRleCBmMWQzMmY2Li4xNjQxZTYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aApAQCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZv
cm0taW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgZG91
YmxlIG51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisgICAgSlNW
YWx1ZVJlZiB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1l
bnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgIGJvb2wg
Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CiAgICAgYm9vbCBpc0F0
dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwpAQCAtMjU0LDYgKzI1NSw4
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBnZXREb2N1bWVudExpbmtz
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOworICAgIAorICAgIHZv
aWQgZ2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYsIFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKaW5kZXggZjQ1YThjMi4uYzQ1YzhkYyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCkBAIC01
Niw2ICs1Niw3IEBAIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKIAogICAgIERP
TVN0cmluZyBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgZG91Ymxl
IG51bWJlckF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKKyAgICBvYmplY3QgdWlFbGVt
ZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCB1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7ICAKICAg
ICBib29sZWFuIGJvb2xBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0cik7CiAgICAgYm9vbGVh
biBpc0F0dHJpYnV0ZVN1cHBvcnRlZChET01TdHJpbmcgYXR0cik7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDgyMDI1MmEuLmE1YmIwNjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC03MzEsNiArNzMx
LDEyIEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1
ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0pTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBudWxscHRyOworfQorCiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBmMTFkMTFiLi42NGYwZjYy
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTIyNiw2
ICsyMjYsMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtz
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWUKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dp
dGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRzKSBjb25zdAoreworICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgY29u
dmVydE5TQXJyYXlUb1ZlY3Rvcih2YWx1ZSwgZWxlbWVudHMpOworICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCkBAIC00NDIsNiArNDUxLDIyIEBAIGRvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpIGNvbnN0Cit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRs
ZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgp
KTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0
Q29udGV4dChtYWluRnJhbWUpOworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gPiBlbGVtZW50czsKKyAgICBnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShh
dHRyaWJ1dGUsIGVsZW1lbnRzKTsKKyAgICAKKyAgICBzaXplX3QgZWxlbWVudENvdW50ID0gZWxl
bWVudHMuc2l6ZSgpOworICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZWxlbWVudENvdW50OyArK2kpCisgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1h
a2UoY29udGV4dCwgZWxlbWVudHNbaV0tPndyYXBwZXJDbGFzcygpLCBlbGVtZW50c1tpXS5nZXQo
KSk7CisgICAgCisgICAgcmV0dXJuIEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIGVsZW1lbnRD
b3VudCwgdmFsdWVFbGVtZW50cy5nZXQoKSwgMCk7Cit9CisKIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDVmM2ZkM2EuLjYwODVkODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMy0xMS0xOCAgU2FtdWVsIFdoaXRlICA8c2FtdWVsX3doaXRlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBWDogQWRkIGFiaWxpdHkgdG8gZmV0Y2ggb25seSB2aXNpYmxlIHRhYmxlIHJvd3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ0MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcg
dGVzdCB0byBtYWtlIHN1cmUgQVhWaXNpYmxlUm93cyBiZWhhdmVzIGNvcnJlY3RseS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXZpc2libGUtcm93cy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXZpc2libGUtcm93cy5odG1sOiBBZGRlZC4KKwogMjAxMy0xMS0xOCAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVu
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGM1NjZkNTEuLmJmZjliNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMyBAQAorMjAxMy0xMS0xOCAgU2FtdWVsIFdoaXRlICA8c2FtdWVsX3doaXRlQGFwcGxlLmNv
bT4KKworICAgICAgICBBWDogQWRkIGFiaWxpdHkgdG8gZmV0Y2ggb25seSB2aXNpYmxlIHRhYmxl
IHJvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjQ0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp2aXNpYmxlUm93cyBtZXRob2QgdG8gc3VwcG9ydCBB
WFZpc2libGVSb3dzIGF0dHJpYnV0ZSBtYWMgcGxhdGZvcm0uCisKKyAgICAgICAgVGVzdDogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtdmlzaWJsZS1yb3dzLmh0bWwKKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1uSGVhZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvd0hlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlOjp2aXNpYmxlUm93cyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMTMtMTEtMTggIHBl
YXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0gV2Vi
S2l0IHZlcnNpb24gaW4gdXNlciBhZ2VudCBzdHJpbmcgaXMgaW5jb3JyZWN0LgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQxNWQxMGYuLjBiZmU2
YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMyBAQAorMjAxMy0xMS0xOCAgU2FtdWVsIFdoaXRlICA8c2FtdWVsX3doaXRlQGFw
cGxlLmNvbT4KKworICAgICAgICBBWDogQWRkIGFiaWxpdHkgdG8gZmV0Y2ggb25seSB2aXNpYmxl
IHRhYmxlIHJvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpbmcgbWV0aG9kIHRvIGZldGNoIGFycmF5IG9mIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnRzIHRvIGhlbHAgd2l0aCB0ZXN0IGJyZXZpdHkgYW5kIHRlc3QgYnJlYWthZ2UuIFNwZWNpZmlj
YWxseSwgd2UKKyAgICAgICAgaGF2ZSBhIGdvb2QgZGVhbCBvZiBjaHVybiBhbnkgdGltZSB3ZSBh
ZGQgb3IgdXBkYXRlIGFuIGVsZW1lbnQgYXR0cmlidXRlLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0
aGUgbnVtYmVyIG9mIHRlc3RzCisgICAgICAgIHRoYXQgcmVseSBvbiBhIHNpbXBsZSBlbGVtZW50
IGRlc2NyaXB0aW9uIHRleHQgZHVtcCB0byB2ZXJpZnkgYSBzaW5nbGUgYXR0cmlidXRlIGlzIG5v
biB0cml2aWFsLiBTbyBhbnkgdGltZSB5b3UKKyAgICAgICAgY2hhbmdlIGFkZCBhbiBhdHRyaWJ1
dGUsIHlvdSBoYXZlIHRvIHVwZGF0ZSBhbGwgdGhlIHRlc3RzIHRoYXQgYXJlIG5vdyBpbXBsaWNp
dGx5IHZlcmlmeWluZyB0aGlzIG5ldyBhdHRyaWJ1dGUuIEJ1dAorICAgICAgICBhcyB0aGUgdGVz
dCBndWlkZWxpbmVzIHN0YXRlLCBvdXIgdGVzdHMgc2hvdWxkIGJlIG1vcmUgZm9jdXNlZCBhbmQg
c3BlY2lmaWMgYWJvdXQgd2hhdCB0aGV5IHRlc3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKHVpRWxlbWVudEFycmF5QXR0
cmlidXRlVmFsdWVDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEFycmF5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRl
VmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSk6CisKIDIw
MTMtMTEtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVt
b3ZlIF9saW5lc190b19pZ25vcmVfaW5fc3RkZXJyLCB3aGljaCB3YXMgb25seSB1c2VkIGluIENo
cm9taXVtIHBvcnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>