<?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>77514</bug_id>
          
          <creation_ts>2012-01-31 23:24:18 -0800</creation_ts>
          <short_desc>ShadowRoot&apos;s nodeType should be DOCUMENT_FRAGMENT_NODE.</short_desc>
          <delta_ts>2012-02-14 03:32:37 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77511</dependson>
    
    <dependson>78591</dependson>
          <blocked>63601</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>enrica</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>morrita</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546830</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 23:24:18 -0800</bug_when>
    <thetext>Current implementation is:
 shadowRoot.nodeType returns &apos;SHADOW_ROOT_NODE&apos; and nodeName returns &apos;#shadow-root&apos;.

The latest spec says:
 The nodeType attribute of a ShadowRoot instance must return DOCUMENT_FRAGMENT_NODE. Accordingly, the nodeName attribute of a ShadowRoot instance must return &quot;#document-fragment&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547648</commentid>
    <comment_count>1</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-01 22:09:52 -0800</bug_when>
    <thetext>I filed the bug for spec: https://www.w3.org/Bugs/Public/show_bug.cgi?id=15852

I think shadowRoot&apos;s nodeName should be &apos;#shadow-root&apos; unless there is a strong reason for ShadowRoot to have &apos;#document-fragment&apos; as nodeName.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548422</commentid>
    <comment_count>2</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-02 21:22:20 -0800</bug_when>
    <thetext>I&apos;ver renamed title of bug, focusing on only ShadowRoot.nodeType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548436</commentid>
    <comment_count>3</comment_count>
      <attachid>125257</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-02 21:37:48 -0800</bug_when>
    <thetext>Created attachment 125257
get rid of NodeType.SHADOW_ROOT_NODE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548442</commentid>
    <comment_count>4</comment_count>
      <attachid>125257</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-02 21:47:41 -0800</bug_when>
    <thetext>Comment on attachment 125257
get rid of NodeType.SHADOW_ROOT_NODE

Let&apos;s land this once cr-linux gets gtreen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548444</commentid>
    <comment_count>5</comment_count>
      <attachid>125257</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-02 21:59:55 -0800</bug_when>
    <thetext>Comment on attachment 125257
get rid of NodeType.SHADOW_ROOT_NODE

Attachment 125257 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11421127</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548456</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-02 22:28:51 -0800</bug_when>
    <thetext>It seems we need to update JSNodeCustom too. Let me fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548459</commentid>
    <comment_count>7</comment_count>
      <attachid>125257</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 22:32:40 -0800</bug_when>
    <thetext>Comment on attachment 125257
get rid of NodeType.SHADOW_ROOT_NODE

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

New failing tests:
editing/deleting/delete-ligature-001.html
editing/pasteboard/copy-in-password-field.html
editing/deleting/delete-all-text-in-text-field-assertion.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548460</commentid>
    <comment_count>8</comment_count>
      <attachid>125257</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-02 22:33:01 -0800</bug_when>
    <thetext>Comment on attachment 125257
get rid of NodeType.SHADOW_ROOT_NODE

Attachment 125257 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11418185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548463</commentid>
    <comment_count>9</comment_count>
      <attachid>125257</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-02 22:36:59 -0800</bug_when>
    <thetext>Comment on attachment 125257
get rid of NodeType.SHADOW_ROOT_NODE

Attachment 125257 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11421140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548471</commentid>
    <comment_count>10</comment_count>
      <attachid>125264</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-02 22:45:39 -0800</bug_when>
    <thetext>Created attachment 125264
fix JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548473</commentid>
    <comment_count>11</comment_count>
      <attachid>125264</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-02 22:48:42 -0800</bug_when>
    <thetext>Comment on attachment 125264
fix JSC.

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

&gt; Source/WebCore/bindings/js/JSNodeCustom.cpp:-259
&gt; -        case Node::SHADOW_ROOT_NODE:

I don&apos;t fully understand what we should do here.
I need help from IDL/binding experts.

&gt; Source/WebCore/bindings/v8/custom/V8NodeCustom.cpp:169
&gt;      default: break; // XPATH_NAMESPACE_NODE

The same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548518</commentid>
    <comment_count>12</comment_count>
      <attachid>125276</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 00:40:01 -0800</bug_when>
    <thetext>Created attachment 125276
Add ASSERT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548521</commentid>
    <comment_count>13</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 00:42:42 -0800</bug_when>
    <thetext>I&apos;ve decided to add ASSERT there after a discussion with haraken, morrita.
See the comment for the reason.

Let me watch the result of ews. If all bots get green, I&apos;ll land this patch.

(In reply to comment #11)
&gt; (From update of attachment 125264 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125264&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSNodeCustom.cpp:-259
&gt; &gt; -        case Node::SHADOW_ROOT_NODE:
&gt; 
&gt; I don&apos;t fully understand what we should do here.
&gt; I need help from IDL/binding experts.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8NodeCustom.cpp:169
&gt; &gt;      default: break; // XPATH_NAMESPACE_NODE
&gt; 
&gt; The same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548524</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 00:44:53 -0800</bug_when>
    <thetext>It seems I wrongly cleared the r+ flag on the previous patch. So let me set r? in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548549</commentid>
    <comment_count>15</comment_count>
      <attachid>125282</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 01:02:07 -0800</bug_when>
    <thetext>Created attachment 125282
Fix mac build hopefully</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548594</commentid>
    <comment_count>16</comment_count>
      <attachid>125282</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 02:28:33 -0800</bug_when>
    <thetext>Comment on attachment 125282
Fix mac build hopefully

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

New failing tests:
editing/deleting/delete-ligature-001.html
editing/pasteboard/copy-in-password-field.html
editing/deleting/delete-all-text-in-text-field-assertion.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548621</commentid>
    <comment_count>17</comment_count>
      <attachid>125304</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 03:50:43 -0800</bug_when>
    <thetext>Created attachment 125304
rebase some layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548622</commentid>
    <comment_count>18</comment_count>
      <attachid>125304</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 03:59:21 -0800</bug_when>
    <thetext>Comment on attachment 125304
rebase some layout tests

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

&gt; LayoutTests/ChangeLog:12
&gt; +        * fast/dom/shadow/nodetype-expected.txt:

I rebased the following 3 layout tests.

10        * editing/deleting/delete-ligature-001-expected.txt:
11        * editing/pasteboard/copy-in-password-field-expected.txt:
12        * fast/dom/shadow/nodetype-expected.txt:

I am not sure that rebasing is correct way to fix.
Its difficult to judge for me, but I&apos;d like to avoid inserting, 

&apos;node-&gt;nodeType() == DOCUMENT_FRAGMENT_NODE &amp;&amp; node-&gt;isShadowRoot()&apos;

to every places where &apos;node-&gt;nodeType() == DOCUMENT_FRAGMENT_NODE&apos; appears in WebKit&apos;s codebase.
I expect its be time to rebase.
I am adding rniwa and ggaren as reviewers since I expect they know much better about this rebasing make sense or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548625</commentid>
    <comment_count>19</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 04:01:10 -0800</bug_when>
    <thetext>[Wrong in the previous post]
&gt; &apos;node-&gt;nodeType() == DOCUMENT_FRAGMENT_NODE &amp;&amp; node-&gt;isShadowRoot()&apos;

[Correct]
&gt; &apos;node-&gt;nodeType() == DOCUMENT_FRAGMENT_NODE &amp;&amp; !node-&gt;isShadowRoot()&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548633</commentid>
    <comment_count>20</comment_count>
      <attachid>125307</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-03 04:39:11 -0800</bug_when>
    <thetext>Created attachment 125307
cleanup. remove unnecessary (hopefully) isShadowRoot() check logic as long as regressions does not happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548788</commentid>
    <comment_count>21</comment_count>
      <attachid>125307</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-03 09:29:09 -0800</bug_when>
    <thetext>Comment on attachment 125307
cleanup. remove unnecessary (hopefully) isShadowRoot() check logic as long as regressions does not happen.

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

Ok. But why is the mac EWS sad? Can you fix before landing?

&gt; Source/WebCore/bindings/js/JSNodeCustom.cpp:259
&gt; +            // Once we have such APIs, we should call toV8(static_cast&lt;ShadowRoot*&gt;..).

not sure why you&apos;re mentioning V8 in JSC bindings. Typo or mystery? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548825</commentid>
    <comment_count>22</comment_count>
      <attachid>125307</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-03 10:29:39 -0800</bug_when>
    <thetext>Comment on attachment 125307
cleanup. remove unnecessary (hopefully) isShadowRoot() check logic as long as regressions does not happen.

You need to update http://trac.webkit.org/browser/trunk/Source/WebCore/editing/FrameSelection.cpp#L428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548828</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-03 10:32:35 -0800</bug_when>
    <thetext>In general, you have to examine every place that compares the node type to Node::DOCUMENT_FRAGMENT_NODE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549729</commentid>
    <comment_count>24</comment_count>
      <attachid>125570</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-05 22:08:38 -0800</bug_when>
    <thetext>Created attachment 125570
regression has gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549735</commentid>
    <comment_count>25</comment_count>
      <attachid>125570</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-05 22:17:50 -0800</bug_when>
    <thetext>Comment on attachment 125570
regression has gone.

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

&gt; Source/WebCore/editing/FrameSelection.cpp:428
&gt; +static inline bool isHighestAncestorDocumentFragment(Node* node) 

I would have named this function nodeIsDetachedFromDocument or negated the condition inside and called it nodeIsInDocument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549741</commentid>
    <comment_count>26</comment_count>
      <attachid>125575</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-05 22:26:40 -0800</bug_when>
    <thetext>Created attachment 125575
ready for review. let me watch whether mac-build error is reproducible or not</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549742</commentid>
    <comment_count>27</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-05 22:28:39 -0800</bug_when>
    <thetext>Thank you for the reviews.

(In reply to comment #21)
&gt; (From update of attachment 125307 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125307&amp;action=review
&gt; 
&gt; Ok. But why is the mac EWS sad? Can you fix before landing?
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSNodeCustom.cpp:259
&gt; &gt; +            // Once we have such APIs, we should call toV8(static_cast&lt;ShadowRoot*&gt;..).
&gt; 
&gt; not sure why you&apos;re mentioning V8 in JSC bindings. Typo or mystery? :)

Done. It seems I forgot to update the comment after coping it from V8&apos;s.

(In reply to comment #22)
&gt; (From update of attachment 125307 [details])
&gt; You need to update http://trac.webkit.org/browser/trunk/Source/WebCore/editing/FrameSelection.cpp#L428

You are my hero. All regression of LayoutTest has gone. Thank you!

(In reply to comment #25)
&gt; (From update of attachment 125570 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125570&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/FrameSelection.cpp:428
&gt; &gt; +static inline bool isHighestAncestorDocumentFragment(Node* node) 
&gt; 
&gt; I would have named this function nodeIsDetachedFromDocument or negated the condition inside and called it nodeIsInDocument.

Sounds good name. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550525</commentid>
    <comment_count>28</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-06 18:45:46 -0800</bug_when>
    <thetext>Ready for review. Could you take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550551</commentid>
    <comment_count>29</comment_count>
      <attachid>125575</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-06 19:44:20 -0800</bug_when>
    <thetext>Comment on attachment 125575
ready for review. let me watch whether mac-build error is reproducible or not

How about line 1000 in Range.cpp:
    if (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) {

line 1054:
            lastChild = (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) ? newNode-&gt;lastChild() : newNode;

Or collectTargetNodes(Node* node, NodeVector&amp; nodes), or line 294:
    bool isFragment = newChild-&gt;nodeType() == DOCUMENT_FRAGMENT_NODE;
in ContainerNode.cpp?

There are so many other places where we compare nodeType to DOCUMENT_FRAGMENT_NODE. Why is it okay for us to start including shadow root in all of those cases? I&apos;d like to see some explanation on why that&apos;s the case, if appropriate, for each occurrence of such comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550572</commentid>
    <comment_count>30</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-06 20:18:24 -0800</bug_when>
    <thetext>Let me explain my approach of this change. (I don&apos;t intend to insist my approach is correct one. Let discuss what is best one.)

1. Treat ShadowRoot and DocumentFragment in the same fashion as long as layout tests do not break.
2. Insert isShadowRoot() check where a layout test is broken unless it. I guess we don&apos;t have to add such isShadowRoot() check in most places, but I don&apos;t want to rebase any layout tests in this patch. That should be done in follow-up patches.

In general, I chose A over B as long as layout test do not break.
A. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE
B. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE &amp;&amp; !node-&gt;isShadowRoot()&apos;

My approach is totally assuming existing layout tests will catch a regression, hopefully.
If there is no difference in layout test&apos;s result whether we have A or B at some place, we should add a layout test for that to detect the different behavior. But adding layout tests is beyond this patch and should be done in other patches.

Yours is that I tried at first. I tried to replace all B with A at first. But I thought most of them are unnecessary and I got to feel I should rely on existing layout tests for now.

So either is okay for me. Changing all B with A is an easy task and safest, but I am afraid that will leave unnecessary cluttering of code.

Any advices are welcome.






(In reply to comment #29)
&gt; (From update of attachment 125575 [details])
&gt; How about line 1000 in Range.cpp:
&gt;     if (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) {
&gt; 
&gt; line 1054:
&gt;             lastChild = (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) ? newNode-&gt;lastChild() : newNode;
&gt; 
&gt; Or collectTargetNodes(Node* node, NodeVector&amp; nodes), or line 294:
&gt;     bool isFragment = newChild-&gt;nodeType() == DOCUMENT_FRAGMENT_NODE;
&gt; in ContainerNode.cpp?
&gt; 
&gt; There are so many other places where we compare nodeType to DOCUMENT_FRAGMENT_NODE. Why is it okay for us to start including shadow root in all of those cases? I&apos;d like to see some explanation on why that&apos;s the case, if appropriate, for each occurrence of such comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550579</commentid>
    <comment_count>31</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-06 20:30:56 -0800</bug_when>
    <thetext>&lt;correction&gt; A and B should be swapped in the my explanation.

(In reply to comment #30)
&gt; Let me explain my approach of this change. (I don&apos;t intend to insist my approach is correct one. Let discuss what is best one.)
&gt; 
&gt; 1. Treat ShadowRoot and DocumentFragment in the same fashion as long as layout tests do not break.
&gt; 2. Insert isShadowRoot() check where a layout test is broken unless it. I guess we don&apos;t have to add such isShadowRoot() check in most places, but I don&apos;t want to rebase any layout tests in this patch. That should be done in follow-up patches.
&gt; 
&gt; In general, I chose A over B as long as layout test do not break.
&gt; A. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE
&gt; B. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE &amp;&amp; !node-&gt;isShadowRoot()&apos;
&gt; 
&gt; My approach is totally assuming existing layout tests will catch a regression, hopefully.
&gt; If there is no difference in layout test&apos;s result whether we have A or B at some place, we should add a layout test for that to detect the different behavior. But adding layout tests is beyond this patch and should be done in other patches.
&gt; 
&gt; Yours is that I tried at first. I tried to replace all B with A at first. But I thought most of them are unnecessary and I got to feel I should rely on existing layout tests for now.
&gt; 
&gt; So either is okay for me. Changing all B with A is an easy task and safest, but I am afraid that will leave unnecessary cluttering of code.
&gt; 
&gt; Any advices are welcome.
&gt; 
&gt; 
&gt; 
&gt; 
&gt; 
&gt; 
&gt; (In reply to comment #29)
&gt; &gt; (From update of attachment 125575 [details] [details])
&gt; &gt; How about line 1000 in Range.cpp:
&gt; &gt;     if (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) {
&gt; &gt; 
&gt; &gt; line 1054:
&gt; &gt;             lastChild = (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) ? newNode-&gt;lastChild() : newNode;
&gt; &gt; 
&gt; &gt; Or collectTargetNodes(Node* node, NodeVector&amp; nodes), or line 294:
&gt; &gt;     bool isFragment = newChild-&gt;nodeType() == DOCUMENT_FRAGMENT_NODE;
&gt; &gt; in ContainerNode.cpp?
&gt; &gt; 
&gt; &gt; There are so many other places where we compare nodeType to DOCUMENT_FRAGMENT_NODE. Why is it okay for us to start including shadow root in all of those cases? I&apos;d like to see some explanation on why that&apos;s the case, if appropriate, for each occurrence of such comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550584</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-06 20:39:57 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Let me explain my approach of this change. (I don&apos;t intend to insist my approach is correct one. Let discuss what is best one.)
&gt; 
&gt; 1. Treat ShadowRoot and DocumentFragment in the same fashion as long as layout tests do not break.

Unfortunately, having passed layout test isn&apos;t a good indication of the change being correct especially in editing/DOM code. I can make hundreds of incorrect changes without breaking existing layout tests.

&gt; 2. Insert isShadowRoot() check where a layout test is broken unless it. I guess we don&apos;t have to add such isShadowRoot() check in most places, but I don&apos;t want to rebase any layout tests in this patch. That should be done in follow-up patches.
&gt; 
&gt; In general, I chose A over B as long as layout test do not break.
&gt; A. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE
&gt; B. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE &amp;&amp; !node-&gt;isShadowRoot()&apos;
&gt; 
&gt; My approach is totally assuming existing layout tests will catch a regression, hopefully.

I don&apos;t think we can make this assumption. We need to examine every and each occurrence of DOCUMENT_TYPE_NODE and carefully decide whether we need to do A or B.

&gt; If there is no difference in layout test&apos;s result whether we have A or B at some place, we should add a layout test for that to detect the different behavior. But adding layout tests is beyond this patch and should be done in other patches.

I tend to agree with you. But we should do our best to prevent regressions by inspecting every and each occurrence of DOCUMENT_TYPE_NODE in codebase like we did for parentNode when we switched text form controls to new shadow dom model. I&apos;m with the answer that all such conditions are tested by existing layout tests but when they&apos;re not, we need to make educated decisions. For example, the code in FrameSelection I asked you to modify may have introduced a crash if it wasn&apos;t properly updated.

I&apos;m more than happy to help you on such code inspection since I&apos;ve helped other contributors creating similar patches in the past. However, I don&apos;t think we should land the patch as is without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550587</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-06 20:47:26 -0800</bug_when>
    <thetext>Luckily, this process won&apos;t be as bad as parentNode one since there are only 49 occurrences of DOCUMENT_FRAGMENT_NODE in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550591</commentid>
    <comment_count>34</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-06 20:50:38 -0800</bug_when>
    <thetext>Thank you for the comment.

I tend to agree with you. I am thinking that we should have most safest way to prevent any regressions.

To avoid having a lot of responsibility in one patch, I&apos;d like to choose replacing all A with B in this patch.
Then, in follow-up patches, we should try to remove unnecessary isShadowRootCheck one-by-one.

Let me replace all A with B in the next patch. Thank you.


(In reply to comment #32)
&gt; (In reply to comment #30)
&gt; &gt; Let me explain my approach of this change. (I don&apos;t intend to insist my approach is correct one. Let discuss what is best one.)
&gt; &gt; 
&gt; &gt; 1. Treat ShadowRoot and DocumentFragment in the same fashion as long as layout tests do not break.
&gt; 
&gt; Unfortunately, having passed layout test isn&apos;t a good indication of the change being correct especially in editing/DOM code. I can make hundreds of incorrect changes without breaking existing layout tests.
&gt; 
&gt; &gt; 2. Insert isShadowRoot() check where a layout test is broken unless it. I guess we don&apos;t have to add such isShadowRoot() check in most places, but I don&apos;t want to rebase any layout tests in this patch. That should be done in follow-up patches.
&gt; &gt; 
&gt; &gt; In general, I chose A over B as long as layout test do not break.
&gt; &gt; A. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE
&gt; &gt; B. &apos;node-&gt;nodeType() == DOCUMENT_TYPE_NODE &amp;&amp; !node-&gt;isShadowRoot()&apos;
&gt; &gt; 
&gt; &gt; My approach is totally assuming existing layout tests will catch a regression, hopefully.
&gt; 
&gt; I don&apos;t think we can make this assumption. We need to examine every and each occurrence of DOCUMENT_TYPE_NODE and carefully decide whether we need to do A or B.
&gt; 
&gt; &gt; If there is no difference in layout test&apos;s result whether we have A or B at some place, we should add a layout test for that to detect the different behavior. But adding layout tests is beyond this patch and should be done in other patches.
&gt; 
&gt; I tend to agree with you. But we should do our best to prevent regressions by inspecting every and each occurrence of DOCUMENT_TYPE_NODE in codebase like we did for parentNode when we switched text form controls to new shadow dom model. I&apos;m with the answer that all such conditions are tested by existing layout tests but when they&apos;re not, we need to make educated decisions. For example, the code in FrameSelection I asked you to modify may have introduced a crash if it wasn&apos;t properly updated.
&gt; 
&gt; I&apos;m more than happy to help you on such code inspection since I&apos;ve helped other contributors creating similar patches in the past. However, I don&apos;t think we should land the patch as is without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550593</commentid>
    <comment_count>35</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-06 20:54:45 -0800</bug_when>
    <thetext>This is great, guys.  One thing to consider is to replace these checks with their intent-based equivalents (or create these equivalents).

For example, that check Niwa-san pointed is an optimization which is really asking whether the node is part of a subtree that may never have a selection. In other words, instead of having the plain comparisons, add member functions that also indicate intent or _why_ the test is performed.

The benefit here is both code readability for future engineers and the fact that the &quot;whys&quot; will also fall along the lines of whether to include the check for the shadow root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550594</commentid>
    <comment_count>36</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-06 20:58:12 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; For example, that check Niwa-san pointed is an optimization which is really asking whether the node is part of a subtree that may never have a selection. In other words, instead of having the plain comparisons, add member functions that also indicate intent or _why_ the test is performed.
&gt;
&gt; The benefit here is both code readability for future engineers and the fact that the &quot;whys&quot; will also fall along the lines of whether to include the check for the shadow root.

Yup, that&apos;ll be an excellent way to approach patches like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550722</commentid>
    <comment_count>37</comment_count>
      <attachid>125787</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-07 01:47:49 -0800</bug_when>
    <thetext>Created attachment 125787
no change in behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550725</commentid>
    <comment_count>38</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-07 01:53:12 -0800</bug_when>
    <thetext>I&apos;ve updated the patch so that it does not cause any change in behavior where Node.DOCUMENT_FRAGMENT_NODE is used, considering also the context around the point. I expect I covered every places.

(In reply to comment #36)
&gt; (In reply to comment #35)
&gt; &gt; For example, that check Niwa-san pointed is an optimization which is really asking whether the node is part of a subtree that may never have a selection. In other words, instead of having the plain comparisons, add member functions that also indicate intent or _why_ the test is performed.
&gt; &gt;
&gt; &gt; The benefit here is both code readability for future engineers and the fact that the &quot;whys&quot; will also fall along the lines of whether to include the check for the shadow root.
&gt; 
&gt; Yup, that&apos;ll be an excellent way to approach patches like this.

That&apos;s good. But it might be difficult for me to think a good name of member_function for each points.
I think &apos;node-&gt;nodeType() == Node.DOCUMENT_FRAGMENT_NODE &amp;&amp; !node-&gt;isShadowRoot()&apos; is very intuitive and is not so bad for future engineers in most cases. I expect that such a long condition reminds us of &apos;Do we need this isShadowRoot() check? What should we do if it is ShadowRoot?&apos; in the future.

The one good news is that we don&apos;t have so many places where we must use &apos;isShadowRoot()&apos; check as I thought at first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551545</commentid>
    <comment_count>39</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-07 16:38:28 -0800</bug_when>
    <thetext>Completely ignorant question of mine: Why do we have to test nodeType() everywhere in the first place? That looks like a JavaScript-ism to me. Why not simply use a function isDocumentFragment() similar to isElementNode() and isShadowRoot()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551617</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-07 17:49:14 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; Why not simply use a function isDocumentFragment() similar to isElementNode() and isShadowRoot()?

We should. However it’s a separate question whether to optimize that function rather than using a virtual function. That’s something we do for isElementNode, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551621</commentid>
    <comment_count>41</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-07 17:50:34 -0800</bug_when>
    <thetext>However I don’t think that having a name isDocumentFragment would have any effect on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551640</commentid>
    <comment_count>42</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-07 18:06:48 -0800</bug_when>
    <thetext>It seemed that I missed your comment. My bad.
I think we can do, assuming that there is no big penalty of performance. But I&apos;d like to confirm whether using virtual function here is encouraged or not. If it is okay, I am willing to introduce and use isDocumentFragment() in a follow-up patch.

(In reply to comment #39)
&gt; Completely ignorant question of mine: Why do we have to test nodeType() everywhere in the first place? That looks like a JavaScript-ism to me. Why not simply use a function isDocumentFragment() similar to isElementNode() and isShadowRoot()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552539</commentid>
    <comment_count>43</comment_count>
      <attachid>125787</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-08 15:24:45 -0800</bug_when>
    <thetext>Comment on attachment 125787
no change in behavior

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

&gt; Source/WebCore/dom/ContainerNode.cpp:72
&gt; +    if (node-&gt;nodeType() != Node::DOCUMENT_FRAGMENT_NODE || node-&gt;isShadowRoot()) {

Can we introduce Node::isDetachedDocumentFragment() and replace all these conditions by that first? Then, this patch will be a 5-liner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552541</commentid>
    <comment_count>44</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-08 15:26:32 -0800</bug_when>
    <thetext>I feel bad to keep pushing your patch back but we&apos;ve had a lot of crashes and security vulnerabilities when we switched text form controls to use new shadow DOM model, and I want to make sure we don&apos;t repeat the same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552725</commentid>
    <comment_count>45</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-08 18:19:01 -0800</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #43)
&gt; (From update of attachment 125787 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125787&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNode.cpp:72
&gt; &gt; +    if (node-&gt;nodeType() != Node::DOCUMENT_FRAGMENT_NODE || node-&gt;isShadowRoot()) {
&gt; 
&gt; Can we introduce Node::isDetachedDocumentFragment() and replace all these conditions by that first? Then, this patch will be a 5-liner.

I am afraid it&apos;s not good name since ShadowRoot can be also *detached* from Document:
    var shadowHost = document.createElement(&apos;div&apos;);
    var shadowRoot = new WebKitShadowRoot(shadowHost);
In this case, unless shadowHost is attached to Document, shadowRoot is also detached from Document.
I am willing to replace all these conditions once we have a good name.

(In reply to comment #44)
&gt; I feel bad to keep pushing your patch back but we&apos;ve had a lot of crashes and security vulnerabilities when we switched text form controls to use new shadow DOM model, and I want to make sure we don&apos;t repeat the same here.

No problem. You don&apos;t have to feel bad since that&apos;s a signal of good reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552730</commentid>
    <comment_count>46</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-08 18:22:47 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; Thank you for the review.
&gt; 
&gt; (In reply to comment #43)
&gt; &gt; (From update of attachment 125787 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125787&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/ContainerNode.cpp:72
&gt; &gt; &gt; +    if (node-&gt;nodeType() != Node::DOCUMENT_FRAGMENT_NODE || node-&gt;isShadowRoot()) {
&gt; &gt; 
&gt; &gt; Can we introduce Node::isDetachedDocumentFragment() and replace all these conditions by that first? Then, this patch will be a 5-liner.
&gt; 
&gt; I am afraid it&apos;s not good name since ShadowRoot can be also *detached* from Document:
&gt;     var shadowHost = document.createElement(&apos;div&apos;);
&gt;     var shadowRoot = new WebKitShadowRoot(shadowHost);
&gt; In this case, unless shadowHost is attached to Document, shadowRoot is also detached from Document.
&gt; I am willing to replace all these conditions once we have a good name.

That&apos;s a good point. In that case, our change to FrameSelection is incorrect. It breaks the optimization for the case where the detached fragment was a shadow root. So resolving this patch is even tricker than I initially thought.

In fact, in the case of the change in FrameSelection, isDetachedDocumentFragment is exactly what it&apos;s asking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552739</commentid>
    <comment_count>47</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-08 18:44:16 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #45)
&gt; &gt; Thank you for the review.
&gt; &gt; 
&gt; &gt; (In reply to comment #43)
&gt; &gt; &gt; (From update of attachment 125787 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125787&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/dom/ContainerNode.cpp:72
&gt; &gt; &gt; &gt; +    if (node-&gt;nodeType() != Node::DOCUMENT_FRAGMENT_NODE || node-&gt;isShadowRoot()) {
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we introduce Node::isDetachedDocumentFragment() and replace all these conditions by that first? Then, this patch will be a 5-liner.
&gt; &gt; 
&gt; &gt; I am afraid it&apos;s not good name since ShadowRoot can be also *detached* from Document:
&gt; &gt;     var shadowHost = document.createElement(&apos;div&apos;);
&gt; &gt;     var shadowRoot = new WebKitShadowRoot(shadowHost);
&gt; &gt; In this case, unless shadowHost is attached to Document, shadowRoot is also detached from Document.
&gt; &gt; I am willing to replace all these conditions once we have a good name.
&gt; 
&gt; That&apos;s a good point. In that case, our change to FrameSelection is incorrect. It breaks the optimization for the case where the detached fragment was a shadow root. So resolving this patch is even tricker than I initially thought.
&gt; 
&gt; In fact, in the case of the change in FrameSelection, isDetachedDocumentFragment is exactly what it&apos;s asking.

I see. But that should be fixed in another patch, right? It is not good to include any bug fix in this patch.
Our naming of &apos;nodeIsDetachedFromDocument(Node* node)&apos; in FrameSelection.cpp is not correct, but it is not the change in behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554913</commentid>
    <comment_count>48</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-12 17:58:50 -0800</bug_when>
    <thetext>Hi reviewers, could you take a look?
I think this patch is not harmful in theory. No change in behavior. No blocking issue.

Follow-up patches could fix some minor points which were found in the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554941</commentid>
    <comment_count>49</comment_count>
      <attachid>125787</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-12 18:49:51 -0800</bug_when>
    <thetext>Comment on attachment 125787
no change in behavior

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1143
&gt; +        if (!node-&gt;isShadowRoot())
&gt; +            break;
&gt; +        nodeName = node-&gt;nodeName();
&gt; +        localName = node-&gt;localName();

Where did this code come from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554966</commentid>
    <comment_count>50</comment_count>
      <attachid>125787</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-12 20:13:27 -0800</bug_when>
    <thetext>Comment on attachment 125787
no change in behavior

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

&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1143
&gt;&gt; +        localName = node-&gt;localName();
&gt; 
&gt; Where did this code come from?

Take a look at default case of this switch/case statements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554970</commentid>
    <comment_count>51</comment_count>
      <attachid>125787</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-12 20:25:41 -0800</bug_when>
    <thetext>Comment on attachment 125787
no change in behavior

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

&gt;&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1143
&gt;&gt;&gt; +        localName = node-&gt;localName();
&gt;&gt; 
&gt;&gt; Where did this code come from?
&gt; 
&gt; Take a look at default case of this switch/case statements.

I think it&apos;s better to move this case below Node::ELEMENT_NODE and let it fall through when the node is a shadow root rather than duplicating code here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554979</commentid>
    <comment_count>52</comment_count>
      <attachid>125787</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-12 20:42:32 -0800</bug_when>
    <thetext>Comment on attachment 125787
no change in behavior

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

&gt;&gt;&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1143
&gt;&gt;&gt;&gt; +        localName = node-&gt;localName();
&gt;&gt;&gt; 
&gt;&gt;&gt; Where did this code come from?
&gt;&gt; 
&gt;&gt; Take a look at default case of this switch/case statements.
&gt; 
&gt; I think it&apos;s better to move this case below Node::ELEMENT_NODE and let it fall through when the node is a shadow root rather than duplicating code here.

Moving this case below Node::ELEMENT_NODE causes unnecessary isShadowRoot() calls for Node::DOCUMENT_NODE and NODE::ELEMENT_NODE, doesn&apos;t that?

case Node::DOCUMENT_NODE:
case Node::ELEMENT_NODE:
case NODE::DOCUMENT_FRAGMENT_NODE:
    if (!node-&gt;isShadowRoot())
        break;
    // Fall through
default:
    nodename = node-&gt;nodeName();
    localName = node-&gt;localName();
    break;


I guess you meant this?

case NODE::DOCUMENT_FRAGMENT_NODE:
    if (!node-&gt;isShadowRoot())
        break;
    // Fall through
case Node::DOCUMENT_NODE:
case Node::ELEMENT_NODE:
default:
    nodename = node-&gt;nodeName();
    localName = node-&gt;localName();
    break;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555033</commentid>
    <comment_count>53</comment_count>
      <attachid>126721</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-12 23:10:20 -0800</bug_when>
    <thetext>Created attachment 126721
fall through</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555047</commentid>
    <comment_count>54</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-12 23:27:33 -0800</bug_when>
    <thetext>After I get r+, I&apos;ll rebase and check all code path again for ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555467</commentid>
    <comment_count>55</comment_count>
      <attachid>126721</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-13 12:34:51 -0800</bug_when>
    <thetext>Comment on attachment 126721
fall through

Looks okay to me. Maybe Dimitri should take another look as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555470</commentid>
    <comment_count>56</comment_count>
      <attachid>126721</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-13 12:38:31 -0800</bug_when>
    <thetext>Comment on attachment 126721
fall through

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555874</commentid>
    <comment_count>57</comment_count>
      <attachid>126721</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 19:15:36 -0800</bug_when>
    <thetext>Comment on attachment 126721
fall through

Clearing flags on attachment: 126721

Committed r107661: &lt;http://trac.webkit.org/changeset/107661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555875</commentid>
    <comment_count>58</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 19:15:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556087</commentid>
    <comment_count>59</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-14 01:18:00 -0800</bug_when>
    <thetext>This is crashing the Lion bots. see eg. http://build.webkit.org/results/Lion%20Intel%20Debug%20(Tests)/r107672%20(3536)/editing/inserting/5607069-2-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556091</commentid>
    <comment_count>60</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-14 01:23:47 -0800</bug_when>
    <thetext>(In reply to comment #59)
&gt; This is crashing the Lion bots. see eg. http://build.webkit.org/results/Lion%20Intel%20Debug%20(Tests)/r107672%20(3536)/editing/inserting/5607069-2-crash-log.txt

and Qt too - http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Debug/r107661%20%2821103%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556093</commentid>
    <comment_count>61</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-14 01:25:06 -0800</bug_when>
    <thetext>Thank you for letting me know it. Let me roll out.

(In reply to comment #60)
&gt; (In reply to comment #59)
&gt; &gt; This is crashing the Lion bots. see eg. http://build.webkit.org/results/Lion%20Intel%20Debug%20(Tests)/r107672%20(3536)/editing/inserting/5607069-2-crash-log.txt
&gt; 
&gt; and Qt too - http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Debug/r107661%20%2821103%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556125</commentid>
    <comment_count>62</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-14 02:02:22 -0800</bug_when>
    <thetext>r107661 was rolled out in http://trac.webkit.org/changeset/107691.

I am sure that the root cause is ASSERT in JSNodeCustom.

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

&gt; Source/WebCore/bindings/js/JSNodeCustom.cpp:257
&gt; +            // In case of ShadowRoot, a cached ShadowRoot binding is always used and this


FYI. morrita-san, our assumption was apparently wrong.
Let me update the patch so that it does not include this assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556161</commentid>
    <comment_count>63</comment_count>
      <attachid>126945</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-14 02:47:57 -0800</bug_when>
    <thetext>Created attachment 126945
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556169</commentid>
    <comment_count>64</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-14 02:54:36 -0800</bug_when>
    <thetext>I&apos;ve updated the patch, removing ASSERT which caused the crashes.
I&apos;ve tested it on Mac debug build, and confirmed that crash has gone. Let me land the patch using land-safely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556182</commentid>
    <comment_count>65</comment_count>
      <attachid>126945</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 03:32:29 -0800</bug_when>
    <thetext>Comment on attachment 126945
Patch for landing

Clearing flags on attachment: 126945

Committed r107700: &lt;http://trac.webkit.org/changeset/107700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556183</commentid>
    <comment_count>66</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 03:32:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125257</attachid>
            <date>2012-02-02 21:37:48 -0800</date>
            <delta_ts>2012-02-02 22:45:32 -0800</delta_ts>
            <desc>get rid of NodeType.SHADOW_ROOT_NODE</desc>
            <filename>bug-77514-20120203143746.patch</filename>
            <type>text/plain</type>
            <size>21942</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2OGY5MWRkNzUzZmU2
MjJhYTVhNjcyOGE1MmIzMTk4MzRiMmVjZS4uOTU0YWNkM2NmNTM0OTRjYTQwZDI5ZjNjMjJiY2Jk
YTU0ZDg2OGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEyLTAyLTAyICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhTbG93KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcG9ydE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZCk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNEZWZhdWx0TmFtZXNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Omxvb2t1cFByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kVGV4dENv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0VGV4dENvbnRlbnQpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Omxlbmd0aE9mQ29udGVudHNJbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnBy
b2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpp
bnNlcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpjaGVja05vZGVCQSk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZTo6c2VsZWN0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c2VsZWN0Tm9k
ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKToK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3Qu
aDoKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6dG9TaGFkb3dSb290
KToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cCk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OmlzUm9vdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6
cHVzaFJvb3ROb2RlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmg6
CisgICAgICAgIChXZWJDb3JlOjppc0luSFRNTE5hbWVzcGFjZSk6CisgICAgICAgICogeG1sL1hQ
YXRoVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6aXNWYWxpZENvbnRleHROb2Rl
KToKKworMjAxMi0wMi0wMiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgTWFrZSBTaGFkb3dSb290IGludGVyZmFjZSBpbmhlcml0IERvY3VtZW50RnJhZ21lbnQg
aW50ZXJmYWNlIGluIElETC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3NTExCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNmIyZjYzZDM4
Mzk1OGFmYWJmMGZlOTUxODA4MjgyNzZmMjI2ZWJhNi4uMDYxNDE0M2FlMTMyMThmY2UwMWVhMmVi
NTI4OWRiNGE4MjBmM2YzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wMi0wMiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9O
T0RFLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2Rl
VHlwZS5TSEFET1dfUk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgorCisgICAgICAgICog
c3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VT
ZXJpYWxpemVySW1wbDo6YnVpbGRDb250ZW50Rm9yTm9kZSk6CisKIDIwMTItMDItMDIgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IEFkZGluZyB0aGUgZW1iZWRkaW5nIGNvZGUgZm9yIE1lZGlhU3RyZWFt
Q2VudGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVD
dXN0b20uY3BwCmluZGV4IDRhZDEzZDRhZjdjZmQ1MjQ2ZjgwZjY4MWFjZmM0OTk2ZjkwNGM1ZDcu
LmYxY2Q0NDc5MGVhYmE5YjFiNDhlNTk4YmZlOTBmZTRjYTgwMmNjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCkBAIC0xNjYs
NyArMTY2LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5vZGUqIGltcGwsIGJv
b2wgZm9yY2VOZXdPYmplY3QpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3Vt
ZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGNhc2UgTm9kZTo6Tk9U
QVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24qPihp
bXBsKSwgZm9yY2VOZXdPYmplY3QpOwotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERTog
Ly8gVGhlcmUncyBubyBJREwgY2xhc3MgZm9yIFNoYWRvd1Jvb3QsIGZhbGwtdGhyb3VnaCB0byBk
ZWZhdWx0IGFuZCB1c2UgTm9kZSBpbnN0ZWFkLgogICAgIGRlZmF1bHQ6IGJyZWFrOyAvLyBYUEFU
SF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KICAgICByZXR1cm4gVjhOb2RlOjp3cmFwKGltcGwsIGZv
cmNlTmV3T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMxMDFlMDRlMTIxOTc4
YWI3YjBiODZmZjkzODBjY2QzNjc4MWRjMWMuLmE4MzgyNDlkN2JkMzU0ZTU2Yjc4NmI1NjIyOGYy
MzI3NWYyYTkzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODc3LDYgKzg3NywxMSBA
QCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9k
ZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAg
ICAgIHJldHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGljX2Nhc3Q8QXR0cio+KGltcG9y
dGVkTm9kZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOiB7CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAg
ICAgICAgICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3QgYmUgZXhwbGljaXRseSBpbXBv
cnRhYmxlLgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdp
dGggdGhlaXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBvbGRGcmFnbWVudCA9
IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRlZE5vZGUpOwogICAgICAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBjcmVhdGVEb2N1bWVudEZyYWdt
ZW50KCk7CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTksOSArOTA0LDYgQEAgUGFzc1JlZlB0
cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVl
cCwgRXhjZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBET0NVTUVO
VF9UWVBFX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNI
QURPV19ST09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hvdWxkIG5vdCBi
ZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVpdGhlciB0aGV5IGFyZSBpbXBv
cnRlZCBhbG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3JlYXRlZCBpbXBsaWNpdGx5Lgog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTI4
MzgsNyArMjg0MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUg
dHlwZSkgY29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBURVhUX05PREU6
CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05P
REU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBj
YXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5MDgsOSArMjkwOSw2IEBAIGJv
b2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hp
bGQpCiAgICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICBudW1F
bGVtZW50cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTSEFE
T1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0gZWxzZSB7CkBAIC0yOTI0LDcgKzI5MjIsNiBAQCBib29sIERvY3VtZW50OjpjYW5SZXBsYWNl
Q2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogICAgICAgICBjYXNlIE5PVEFU
SU9OX05PREU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAgICAgICBjYXNlIFhQQVRIX05B
TUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgICAgICBjYXNl
IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3MzgwMDBm
ZWNkMzE0YWUwZGNiZWY3YTJhOWNkODExZjU4MjUzNTNmLi42MjM4ZTU2NTE0NDUxOGU5ZWFhMmRj
NjQzODVjMzY3N2Q4MjQ4OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODUzLDcgKzE4NTMsNiBA
QCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAg
ICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJB
R01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAg
ICBjb25zdCBBdHRyKiBhdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0cio+KHRoaXMpOwpAQCAt
MTg4Nyw3ICsxODg2LDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9taWNT
dHJpbmcgJm5hbWVzcGFjZVVSSSkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RFOgog
ICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1F
TlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAgICAg
ICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRoaXMp
OwpAQCAtMTk0Niw3ICsxOTQ0LDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSShj
b25zdCBTdHJpbmcgJnByZWZpeCkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RFOgog
ICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAgICAg
ICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRoaXMp
OwpAQCAtMjAxMiw3ICsyMDA5LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kVGV4dENvbnRlbnQoY29u
c3QgTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgYm9vbCYKICAgICBjYXNl
IE5vZGU6OkVOVElUWV9OT0RFOgogICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RF
OgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6
OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIGlzTnVsbFN0cmluZyA9IGZhbHNlOwogICAgICAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5ub2RlVHlwZSgp
ID09IE5vZGU6OkNPTU1FTlRfTk9ERSB8fCBjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREUpCkBAIC0yMDUwLDggKzIwNDYsNyBAQCB2b2lkIE5vZGU6
OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAgICAgIGNhc2UgRU5USVRZX05PREU6CiAg
ICAgICAgIGNhc2UgRU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBjYXNlIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERTogeworICAgICAg
ICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKICAgICAgICAgICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRhaW5lciA9IHRvQ29udGFpbmVyTm9kZSh0aGlzKTsKICNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQogICAgICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlv
bih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDMxMWJkNDExN2NmZjllNzQwYWY2MGJmZmNiNzk2YmYw
MGMzODkwNjAuLmVhNjYwNjRiMTQ1ZmM3ZmM0NTFlMjU5OWY1NTA5NGVhMWFhMDUwN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHB1YmxpYzoKICAgICAgICAgRE9DVU1FTlRfRlJB
R01FTlRfTk9ERSA9IDExLAogICAgICAgICBOT1RBVElPTl9OT0RFID0gMTIsCiAgICAgICAgIFhQ
QVRIX05BTUVTUEFDRV9OT0RFID0gMTMsCi0gICAgICAgIFNIQURPV19ST09UX05PREUgPSAxNAog
ICAgIH07CiAgICAgZW51bSBEb2N1bWVudFBvc2l0aW9uIHsKICAgICAgICAgRE9DVU1FTlRfUE9T
SVRJT05fRVFVSVZBTEVOVCA9IDB4MDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA5YjU2OWIzZTAx
MDk2NDQ3NTdhNTBiM2Q4N2Q5YjcxODUxYWY3YjUzLi43YTYxZDcyMmVhNDE5ZDViYzJlODMwN2Zj
OWUxODkwM2EwOWY4ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY3Nyw3ICs2NzcsNiBAQCBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpO
T1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
Y2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGRO
b2RlQ291bnQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NDAsNyAr
ODM5LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9m
ZnNldHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWYKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2Ug
Tm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9O
T0RFOgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGF0IHNvbWUgbm9kZXMg
bmV2ZXIgYXBwZWFyIGhlcmU/CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRVhUUkFDVF9DT05URU5U
UyB8fCBhY3Rpb24gPT0gQ0xPTkVfQ09OVEVOVFMpIHsKICAgICAgICAgICAgIGlmIChmcmFnbWVu
dCkKQEAgLTEwMjgsOSArMTAyNiwxMyBAQCB2b2lkIFJhbmdlOjppbnNlcnROb2RlKFBhc3NSZWZQ
dHI8Tm9kZT4gcHJwTmV3Tm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgY2FzZSBOb2RlOjpF
TlRJVFlfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAg
ICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICBp
ZiAobmV3Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNl
cHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyMTcsOCArMTIx
OSw3IEBAIE5vZGUqIFJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BB
Q0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiB7CisgICAgICAg
IGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlmICghb2Zm
c2V0KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgTm9kZSogY2hpbGRC
ZWZvcmUgPSBuLT5jaGlsZE5vZGUob2Zmc2V0IC0gMSk7CkBAIC0xMjQzLDcgKzEyNDQsNiBAQCB2
b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
ICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVO
VElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNh
c2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRp
b246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CkBAIC0xMjY1LDcgKzEyNjUsNiBAQCB2b2lk
IFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0g
ICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAgY2FzZSBOb2Rl
OjpDT01NRU5UX05PREU6CkBAIC0xMzk3LDcgKzEzOTYsNiBAQCB2b2lkIFJhbmdlOjpzZWxlY3RO
b2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgY2FzZSBO
b2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6
OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6
Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAg
ICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNDIyLDcgKzE0MjAsNiBAQCB2
b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5U
SVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlv
bjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE0NjMsNyArMTQ2MCw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiBy
ZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VT
U0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6
CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAg
ICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICBj
YXNlIE5vZGU6OkVOVElUWV9OT0RFOgpAQCAtMTQ5NywyMyArMTQ5MywyNyBAQCB2b2lkIFJhbmdl
OjpzdXJyb3VuZENvbnRlbnRzKFBhc3NSZWZQdHI8Tm9kZT4gcGFzc05ld1BhcmVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgLy8gSU5WQUxJRF9OT0RFX1RZUEVfRVJSOiBSYWlzZWQgaWYgbm9k
ZSBpcyBhbiBBdHRyLCBFbnRpdHksIERvY3VtZW50VHlwZSwgTm90YXRpb24sCiAgICAgLy8gRG9j
dW1lbnQsIG9yIERvY3VtZW50RnJhZ21lbnQgbm9kZS4KICAgICBzd2l0Y2ggKG5ld1BhcmVudC0+
bm9kZVR5cGUoKSkgewotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgotICAgICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6Ci0g
ICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJ
T05fTk9ERToKLSAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9U
WVBFX0VSUjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9T
RUNUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAgICBj
YXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJF
TkNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RF
OgotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFU
SF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgor
ICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERTogeworICAgICAgICBpZiAobmV3
UGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBlYyA9
IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkRP
Q1VNRU5UX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAgY2Fz
ZSBOb2RlOjpFTlRJVFlfTk9ERToKKyAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CisgICAg
ICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgorICAgIGNhc2UgTm9k
ZTo6Q09NTUVOVF9OT0RFOgorICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgorICAgIGNhc2Ug
Tm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19J
TlNUUlVDVElPTl9OT0RFOgorICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgorICAgIGNhc2UgTm9k
ZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIC8v
IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIGFuIGFuY2VzdG9yIGNvbnRh
aW5lciBvZiBlaXRoZXIgYm91bmRhcnktcG9pbnQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAppbmRleCA5YmE2OGJkMzU4MTEzY2RiMWJmMDA4OWI0Njc3MjIwNjliZTc2NmJkLi5mMDcwNmMz
NDYxNmUxZmE2ZDdiMWE0ZDRjZWFmMmFmOTQ3N2YzOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCkBAIC03NywxMSArNzcsNiBAQCBTdHJpbmcgU2hhZG93Um9vdDo6bm9kZU5hbWUoKSBj
b25zdAogICAgIHJldHVybiAiI3NoYWRvdy1yb290IjsKIH0KIAotTm9kZTo6Tm9kZVR5cGUgU2hh
ZG93Um9vdDo6bm9kZVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBTSEFET1dfUk9PVF9OT0RF
OwotfQotCiBQYXNzUmVmUHRyPE5vZGU+IFNoYWRvd1Jvb3Q6OmNsb25lTm9kZShib29sKQogewog
ICAgIC8vIFNoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBiZSBhcmJpdHJhcmlseSBjbG9uZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBkMGIxODk0NzIxNDZiYzc5MjA4YTU5YThiMWFlMWYyMTY2
ZmY3MjVjLi4zNTkwN2QyZDdkMzA3MjI4NGI3ZDQyMDYxYWM2YmEwZjYzZWFjZTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKQEAgLTY4LDcgKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IH5TaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxk
VHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogCkBAIC05Niw3ICs5NSw3IEBAIGlubGluZSBi
b29sIFNoYWRvd1Jvb3Q6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogCiBp
bmxpbmUgU2hhZG93Um9vdCogdG9TaGFkb3dSb290KE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJU
KCFub2RlIHx8IG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERSk7Cisg
ICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U2hhZG93Um9vdCo+KG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDUyMjZiMjE0YzI1ODExNzYwOTM1YzU2Njk2
NGU3NjMwZjAyZjlkMTguLmZmMjZlYTQyNDQxM2E5MDBkYWY2MWQ5YmRkMTViMGQ0NmNmZjU3NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC00
NDUsOCArNDQ1LDYgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXAo
U3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2QKICAgICBjYXNlIE5vZGU6OkVO
VElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CiAgICAg
Y2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19S
T09UX05PREU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3Rh
Y2suY3BwCmluZGV4IDk4ODg1NzQzZTc3Njg2NTY2ZjkyOTdmNjU0NjMxMzA4ZGEzNDRhN2UuLjlj
YzNhMDMxNjZlNTExYWIyNTg2NzJmNDNjYjcwMDgxNWM3NzQwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC01Myw3ICs1Myw2IEBA
IGlubGluZSBib29sIGlzTnVtYmVyZWRIZWFkZXJFbGVtZW50KENvbnRhaW5lck5vZGUqIG5vZGUp
CiBpbmxpbmUgYm9vbCBpc1Jvb3ROb2RlKENvbnRhaW5lck5vZGUqIG5vZGUpCiB7CiAgICAgcmV0
dXJuIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQotICAg
ICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREUKICAgICAg
ICAgfHwgbm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKTsKIH0KIApAQCAtMzEwLDcgKzMwOSw3IEBA
IHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxGb3JlaWduQ29udGVudFNjb3BlTWFya2Vy
KCkKICAgICAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaFJvb3ROb2RlKFBhc3NSZWZQdHI8
Q29udGFpbmVyTm9kZT4gcm9vdE5vZGUpCiB7Ci0gICAgQVNTRVJUKHJvb3ROb2RlLT5ub2RlVHlw
ZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgfHwgcm9vdE5vZGUtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERSk7CisgICAgQVNTRVJUKHJvb3ROb2RlLT5ub2Rl
VHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpOwogICAgIHB1c2hSb290Tm9k
ZUNvbW1vbihyb290Tm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbGVtZW50U3RhY2suaAppbmRleCBmNjA0ZjgyYzc4Mzc5OTc1ZDZmZmIzMWI4ZGJiZGYxNjI3
ZWFmOTg4Li41Njk3ZTgwYzg3ODZjZGE0ZDAzMmI5ZWQwNjkyM2U5MjEwYTJlODUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCkBAIC0xODAsOCAr
MTgwLDcgQEAgaW5saW5lIGJvb2wgaXNJbkhUTUxOYW1lc3BhY2UoTm9kZSogbm9kZSkKICAgICAv
LyBBIERvY3VtZW50RnJhZ21lbnQgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBkb2N1bWVudCBlbGVt
ZW50IHdoZW4gcGFyc2luZwogICAgIC8vIGZyYWdtZW50cyBhbmQgc2hvdWxkIGJlIGNvbnNpZGVy
ZWQgaW4gdGhlIEhUTUwgbmFtZXNwYWNlLgogICAgIHJldHVybiBub2RlLT5uYW1lc3BhY2VVUkko
KSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJCi0gICAgICAgIHx8IG5vZGUtPm5vZGVU
eXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQotICAgICAgICB8fCBub2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREU7IC8vIEZJWE1FOiBEb2VzIHRoaXMg
YWxzbyBhcHBseSB0byBTaGFkb3dSb290PworICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09
IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYWxzbyBh
cHBseSB0byBTaGFkb3dSb290PwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKaW5kZXgg
NGM0NWZjYmNhMWE4N2ZhZmYyYmI1NjJhZjVmZWQ3NzFlNWZjNDhhYi4uN2E4ZmYzM2NmNjczMjVm
YjFlYjQ0ZTI4NTI4ZmY3N2ZkNmUyZjNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKQEAg
LTg1LDcgKzg1LDYgQEAgYm9vbCBpc1ZhbGlkQ29udGV4dE5vZGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVG
RVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAg
Y2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIHJldHVybiAhKG5vZGUt
PnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzQXR0cmlidXRlTm9kZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplcklt
cGwuY3BwCmluZGV4IGRhMGUzMjU1NWVjN2NiODQzOGFiODAyM2E5OGJiNjJjZWVlYjUzYjUuLmVl
NmJhNjhhYzRmOTU5OTFlYjYwMTBhYjUwZDIyYjkwNmI3NGFiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcApAQCAtNDE4
LDcgKzQxOCw2IEBAIHZvaWQgV2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpidWlsZENvbnRlbnRGb3JO
b2RlKE5vZGUqIG5vZGUsCiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICBjYXNl
IE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgLy8gU2hvdWxk
IG5vdCBleGlzdC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGJlNzM1NzMwM2JmMzUxYThiZGFhMDMyNzA1YjYzYmJjNjM4ZGQzYzAuLmZmZDc4
NjUzYmJkOWQ2YmI3ZTFlZTgwNjNmNjFhMDE3ZjE3Yjk3MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0wMi0wMiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgTWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9OT0RF
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVHlw
ZS5TSEFET1dfUk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvbm9kZXR5cGUuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAu
anM6CisgICAgICAgIChNYXJrdXAuX2dldCk6CisKIDIwMTItMDItMDIgIFJheW1vbmQgVG95ICA8
cnRveUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hlY2sgcGFyYW1ldGVycyB0byBiaXF1YWQg
ZmlsdGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBl
Y3RlZC50eHQKaW5kZXggY2I1MDU1MmZkMmE1NTg0ZmQ0N2EzYTJkZmE0NDc5Zjk0ZmM4YTgxYi4u
MjFlY2NkNTVlOWY2YzY5YjM3NWEyY2MzYjgwZDgyYTAwMmU0YzQyNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEs
OSBAQAogCiBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5v
ZGVUeXBlLgogUEFTUyBrZXlnZW4ubm9kZVR5cGUgaXMgTm9kZS5FTEVNRU5UX05PREUKLVBBU1Mg
c2hhZG93Lm5vZGVUeXBlIGlzIDE0CitQQVNTIHNoYWRvdy5ub2RlVHlwZSBpcyBOb2RlLkRPQ1VN
RU5UX0ZSQUdNRU5UX05PREUKIFBBU1Mgc2hhZG93Q2hpbGQgaXMgbm9uLW51bGwuCi1QQVNTIHNo
YWRvd0NoaWxkLm5vZGVUeXBlICE9IDE0IGlzIHRydWUKK1BBU1Mgc2hhZG93Q2hpbGQubm9kZVR5
cGUgIT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbm9kZXR5cGUuaHRtbAppbmRleCBlYTFiYTFhZjU2MGNjMDkyZjAzYWM0NzgzZmUxZjg0
MjZhNDEzMGY4Li4wMTE5MjU4YWQ1MjA1ZGI0NTk1NzZhYjE0MzFhOTY3Mzc0MWQ1NDM3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbApAQCAtMTYsOSArMTYsOSBA
QCBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVUeXBl
LgogICAgICAgICB2YXIgc2hhZG93ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qoa2V5Z2VuKTsKICAg
ICAgICAgdmFyIHNoYWRvd0NoaWxkID0gc2hhZG93LmZpcnN0Q2hpbGQ7CiAgICAgICAgIHNob3Vs
ZEJlKCdrZXlnZW4ubm9kZVR5cGUnLCAnTm9kZS5FTEVNRU5UX05PREUnKTsKLSAgICAgICAgc2hv
dWxkQmUoJ3NoYWRvdy5ub2RlVHlwZScsICcxNCcpOworICAgICAgICBzaG91bGRCZSgnc2hhZG93
Lm5vZGVUeXBlJywgJ05vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERScpOwogICAgICAgICBzaG91
bGRCZU5vbk51bGwoJ3NoYWRvd0NoaWxkJyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgnc2hhZG93
Q2hpbGQubm9kZVR5cGUgIT0gMTQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdzaGFkb3dDaGls
ZC5ub2RlVHlwZSAhPSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUnKTsKICAgICB9CiA8L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1
cC5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwppbmRleCA4Y2I2
OGVjODdlN2Q5Zjk2MmY0NDc0ZjViMTgxZDFkOGY2N2E4MjczLi5jNGQwNjljMTVkNzJmNTUyODEx
MzgzM2U4MTZjMDBhYzI5Mzc0YjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFy
a3VwLmpzCkBAIC0yMTUsOCArMjE1LDkgQEAgTWFya3VwLl9nZXQgPSBmdW5jdGlvbihub2RlLCBk
ZXB0aCkKICAgICAgICAgICAgICAgICBzdHIgKz0gTWFya3VwLl9pbmRlbnQoZGVwdGggKyAxKSAr
ICd0aGlzLnZhbHVlPSInICsgbm9kZS52YWx1ZSArICciJzsKIAogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIDE0OiAvLyBTZWUgU0hBRE9XX1JPT1RfTk9ERSBvbiBOb2RlOjpOb2RlVHlwZQotICAg
ICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOworICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFH
TUVOVF9OT0RFOgorICAgICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PSAiI3NoYWRvdy1yb290IikK
KyAgICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOwogICAgIH0KIAogICAgIGZvciAodmFy
IGkgPSAwLCBsZW4gPSBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125264</attachid>
            <date>2012-02-02 22:45:39 -0800</date>
            <delta_ts>2012-02-03 00:39:55 -0800</delta_ts>
            <desc>fix JSC.</desc>
            <filename>bug-77514-20120203154537.patch</filename>
            <type>text/plain</type>
            <size>22857</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2OGY5MWRkNzUzZmU2
MjJhYTVhNjcyOGE1MmIzMTk4MzRiMmVjZS4uOWYwM2UyYTAxODk5ZWNlNWVjMGVmN2UwMmI3OGFi
MTFlZDBhMjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDEyLTAyLTAyICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpj
aGlsZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5SZXBsYWNl
Q2hpbGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzRGVmYXVsdE5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVm
aXgpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnNldFRleHRDb250ZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9S
YW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6Y2hlY2tOb2RlV09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tO
b2RlQkEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6c3Vycm91bmRDb250ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvU2hhZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1
bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
U3RhcnRNYXJrdXApOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjppc1Jvb3ROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OnB1c2hSb290Tm9kZSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkhUTUxOYW1l
c3BhY2UpOgorICAgICAgICAqIHhtbC9YUGF0aFV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFBhdGg6OmlzVmFsaWRDb250ZXh0Tm9kZSk6CisKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdCBpbnRlcmZhY2Ug
aW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IGludGVyZmFjZSBpbiBJREwuCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxMQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDZiMmY2M2QzODM5NThhZmFiZjBmZTk1MTgwODI4Mjc2ZjIyNmViYTYu
LjA2MTQxNDNhZTEzMjE4ZmNlMDFlYTJlYjUyODlkYjRhODIwZjNmMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSBy
ZXR1cm4gRE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9ERSB0eXBlIGlzIGZp
bmFsbHkgZ29uZS4KKworICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5v
ZGUpOgorCiAyMDEyLTAyLTAyICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVk
ZGluZyBjb2RlIGZvciBNZWRpYVN0cmVhbUNlbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggNjFjMTVkNmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5
OTUyOGU5OTgwNC4uN2NkZDVmY2U3ZjY4NjIwNDM3YzNhMGYzNDk0MmZjNjRhZjM2NjVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0yNTYsOSAr
MjU2LDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVXcmFwcGVySW5saW5l
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmoKICAgICAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBnbG9iYWxPYmplY3QsIERvY3VtZW50RnJhZ21lbnQsIG5vZGUpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKLSAgICAg
ICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBO
b2RlLCBub2RlKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkVOVElU
WV9SRUZFUkVOQ0VfTk9ERToKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQ
RVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBFbnRpdHlSZWZlcmVuY2UsIG5vZGUpOwogICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
ZGVDdXN0b20uY3BwCmluZGV4IDRhZDEzZDRhZjdjZmQ1MjQ2ZjgwZjY4MWFjZmM0OTk2ZjkwNGM1
ZDcuLmYxY2Q0NDc5MGVhYmE5YjFiNDhlNTk4YmZlOTBmZTRjYTgwMmNjYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCkBAIC0x
NjYsNyArMTY2LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5vZGUqIGltcGws
IGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERv
Y3VtZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGNhc2UgTm9kZTo6
Tk9UQVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24q
PihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9E
RTogLy8gVGhlcmUncyBubyBJREwgY2xhc3MgZm9yIFNoYWRvd1Jvb3QsIGZhbGwtdGhyb3VnaCB0
byBkZWZhdWx0IGFuZCB1c2UgTm9kZSBpbnN0ZWFkLgogICAgIGRlZmF1bHQ6IGJyZWFrOyAvLyBY
UEFUSF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KICAgICByZXR1cm4gVjhOb2RlOjp3cmFwKGltcGws
IGZvcmNlTmV3T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMxMDFlMDRlMTIx
OTc4YWI3YjBiODZmZjkzODBjY2QzNjc4MWRjMWMuLmE4MzgyNDlkN2JkMzU0ZTU2Yjc4NmI1NjIy
OGYyMzI3NWYyYTkzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODc3LDYgKzg3Nywx
MSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVk
Tm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAg
ICAgICAgIHJldHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGljX2Nhc3Q8QXR0cio+KGlt
cG9ydGVkTm9kZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOiB7CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7Cisg
ICAgICAgICAgICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3QgYmUgZXhwbGljaXRseSBp
bXBvcnRhYmxlLgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25n
IHdpdGggdGhlaXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBvbGRGcmFnbWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRlZE5vZGUpOwogICAgICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBjcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTksOSArOTA0LDYgQEAgUGFzc1Jl
ZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wg
ZGVlcCwgRXhjZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBET0NV
TUVOVF9UWVBFX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNl
IFNIQURPV19ST09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hvdWxkIG5v
dCBiZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVpdGhlciB0aGV5IGFyZSBp
bXBvcnRlZCBhbG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3JlYXRlZCBpbXBsaWNpdGx5
LgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAg
LTI4MzgsNyArMjg0MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5
cGUgdHlwZSkgY29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBURVhUX05P
REU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19ST09U
X05PREU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAg
ICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5MDgsOSArMjkwOSw2IEBA
IGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xk
Q2hpbGQpCiAgICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICBu
dW1FbGVtZW50cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBT
SEFET1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CkBAIC0yOTI0LDcgKzI5MjIsNiBAQCBib29sIERvY3VtZW50OjpjYW5SZXBs
YWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogICAgICAgICBjYXNlIE5P
VEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAgICAgICBjYXNlIFhQQVRI
X05BTUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgICAgICBj
YXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3Mzgw
MDBmZWNkMzE0YWUwZGNiZWY3YTJhOWNkODExZjU4MjUzNTNmLi42MjM4ZTU2NTE0NDUxOGU5ZWFh
MmRjNjQzODVjMzY3N2Q4MjQ4OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODUzLDcgKzE4NTMs
NiBAQCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToK
ICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRf
RlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAg
ICAgICBjb25zdCBBdHRyKiBhdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0cio+KHRoaXMpOwpA
QCAtMTg4Nyw3ICsxODg2LDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9t
aWNTdHJpbmcgJm5hbWVzcGFjZVVSSSkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RF
OgogICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgICAgIGNhc2UgRE9D
VU1FTlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAg
ICAgICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRo
aXMpOwpAQCAtMTk0Niw3ICsxOTQ0LDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVVS
SShjb25zdCBTdHJpbmcgJnByZWZpeCkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RF
OgogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAg
ICAgICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRo
aXMpOwpAQCAtMjAxMiw3ICsyMDA5LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kVGV4dENvbnRlbnQo
Y29uc3QgTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgYm9vbCYKICAgICBj
YXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9O
T0RFOgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBjYXNlIE5v
ZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIGlzTnVsbFN0cmluZyA9IGZhbHNlOwogICAg
ICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5ub2RlVHlw
ZSgpID09IE5vZGU6OkNPTU1FTlRfTk9ERSB8fCBjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQ
Uk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpCkBAIC0yMDUwLDggKzIwNDYsNyBAQCB2b2lkIE5v
ZGU6OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAgICAgIGNhc2UgRU5USVRZX05PREU6
CiAgICAgICAgIGNhc2UgRU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBjYXNlIERPQ1VN
RU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERTogeworICAg
ICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKICAgICAgICAgICAgIENvbnRhaW5l
ck5vZGUqIGNvbnRhaW5lciA9IHRvQ29udGFpbmVyTm9kZSh0aGlzKTsKICNpZiBFTkFCTEUoTVVU
QVRJT05fT0JTRVJWRVJTKQogICAgICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRh
dGlvbih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDMxMWJkNDExN2NmZjllNzQwYWY2MGJmZmNiNzk2
YmYwMGMzODkwNjAuLmVhNjYwNjRiMTQ1ZmM3ZmM0NTFlMjU5OWY1NTA5NGVhMWFhMDUwN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHB1YmxpYzoKICAgICAgICAgRE9DVU1FTlRf
RlJBR01FTlRfTk9ERSA9IDExLAogICAgICAgICBOT1RBVElPTl9OT0RFID0gMTIsCiAgICAgICAg
IFhQQVRIX05BTUVTUEFDRV9OT0RFID0gMTMsCi0gICAgICAgIFNIQURPV19ST09UX05PREUgPSAx
NAogICAgIH07CiAgICAgZW51bSBEb2N1bWVudFBvc2l0aW9uIHsKICAgICAgICAgRE9DVU1FTlRf
UE9TSVRJT05fRVFVSVZBTEVOVCA9IDB4MDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA5YjU2OWIz
ZTAxMDk2NDQ3NTdhNTBiM2Q4N2Q5YjcxODUxYWY3YjUzLi43YTYxZDcyMmVhNDE5ZDViYzJlODMw
N2ZjOWUxODkwM2EwOWY4ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY3Nyw3ICs2NzcsNiBA
QCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2Rl
OjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0g
ICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICByZXR1cm4gbm9kZS0+Y2hp
bGROb2RlQ291bnQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NDAs
NyArODM5LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vl
bk9mZnNldHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWYKICAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNh
c2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9P
VF9OT0RFOgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGF0IHNvbWUgbm9k
ZXMgbmV2ZXIgYXBwZWFyIGhlcmU/CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRVhUUkFDVF9DT05U
RU5UUyB8fCBhY3Rpb24gPT0gQ0xPTkVfQ09OVEVOVFMpIHsKICAgICAgICAgICAgIGlmIChmcmFn
bWVudCkKQEAgLTEwMjgsOSArMTAyNiwxMyBAQCB2b2lkIFJhbmdlOjppbnNlcnROb2RlKFBhc3NS
ZWZQdHI8Tm9kZT4gcHJwTmV3Tm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgY2FzZSBOb2Rl
OjpFTlRJVFlfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAg
ICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAg
ICBpZiAobmV3Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGVjID0gUmFuZ2VF
eGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyMTcsOCAr
MTIxOSw3IEBAIE5vZGUqIFJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZz
ZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5U
X05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5v
ZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1F
U1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiB7CisgICAg
ICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlmICgh
b2Zmc2V0KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgTm9kZSogY2hp
bGRCZWZvcmUgPSBuLT5jaGlsZE5vZGUob2Zmc2V0IC0gMSk7CkBAIC0xMjQzLDcgKzEyNDQsNiBA
QCB2b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAg
IGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNl
cHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CkBAIC0xMjY1LDcgKzEyNjUsNiBAQCB2
b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
ICAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpE
T0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6
Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAgY2FzZSBO
b2RlOjpDT01NRU5UX05PREU6CkBAIC0xMzk3LDcgKzEzOTYsNiBAQCB2b2lkIFJhbmdlOjpzZWxl
Y3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgY2Fz
ZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNlIE5v
ZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05P
REU6Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToK
ICAgICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNDIyLDcgKzE0MjAsNiBA
QCB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6
RU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAg
Y2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgZWMgPSBSYW5nZUV4Y2Vw
dGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE0NjMsNyArMTQ2MCw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyhOb2Rl
KiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6UFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05P
REU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAg
ICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAg
ICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgpAQCAtMTQ5NywyMyArMTQ5MywyNyBAQCB2b2lkIFJh
bmdlOjpzdXJyb3VuZENvbnRlbnRzKFBhc3NSZWZQdHI8Tm9kZT4gcGFzc05ld1BhcmVudCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gSU5WQUxJRF9OT0RFX1RZUEVfRVJSOiBSYWlzZWQgaWYg
bm9kZSBpcyBhbiBBdHRyLCBFbnRpdHksIERvY3VtZW50VHlwZSwgTm90YXRpb24sCiAgICAgLy8g
RG9jdW1lbnQsIG9yIERvY3VtZW50RnJhZ21lbnQgbm9kZS4KICAgICBzd2l0Y2ggKG5ld1BhcmVu
dC0+bm9kZVR5cGUoKSkgewotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgotICAg
ICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6
Ci0gICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9U
QVRJT05fTk9ERToKLSAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9E
RV9UWVBFX0VSUjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOb2RlOjpDREFU
QV9TRUNUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAg
ICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVG
RVJFTkNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9O
T0RFOgotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpY
UEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RF
OgorICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERTogeworICAgICAgICBpZiAo
bmV3UGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBl
YyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6
OkRPQ1VNRU5UX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKKyAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Cisg
ICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgorICAgIGNhc2Ug
Tm9kZTo6Q09NTUVOVF9OT0RFOgorICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgorICAgIGNh
c2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lO
R19JTlNUUlVDVElPTl9OT0RFOgorICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgorICAgIGNhc2Ug
Tm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IC8vIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIGFuIGFuY2VzdG9yIGNv
bnRhaW5lciBvZiBlaXRoZXIgYm91bmRhcnktcG9pbnQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcAppbmRleCA5YmE2OGJkMzU4MTEzY2RiMWJmMDA4OWI0Njc3MjIwNjliZTc2NmJkLi5mMDcw
NmMzNDYxNmUxZmE2ZDdiMWE0ZDRjZWFmMmFmOTQ3N2YzOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCkBAIC03NywxMSArNzcsNiBAQCBTdHJpbmcgU2hhZG93Um9vdDo6bm9kZU5hbWUo
KSBjb25zdAogICAgIHJldHVybiAiI3NoYWRvdy1yb290IjsKIH0KIAotTm9kZTo6Tm9kZVR5cGUg
U2hhZG93Um9vdDo6bm9kZVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBTSEFET1dfUk9PVF9O
T0RFOwotfQotCiBQYXNzUmVmUHRyPE5vZGU+IFNoYWRvd1Jvb3Q6OmNsb25lTm9kZShib29sKQog
ewogICAgIC8vIFNoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBiZSBhcmJpdHJhcmlseSBjbG9uZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBkMGIxODk0NzIxNDZiYzc5MjA4YTU5YThiMWFlMWYy
MTY2ZmY3MjVjLi4zNTkwN2QyZDdkMzA3MjI4NGI3ZDQyMDYxYWM2YmEwZjYzZWFjZTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTY4LDcgKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIH5TaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNo
aWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogCkBAIC05Niw3ICs5NSw3IEBAIGlubGlu
ZSBib29sIFNoYWRvd1Jvb3Q6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQog
CiBpbmxpbmUgU2hhZG93Um9vdCogdG9TaGFkb3dSb290KE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNT
RVJUKCFub2RlIHx8IG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERSk7
CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8U2hhZG93Um9vdCo+KG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDUyMjZiMjE0YzI1ODExNzYwOTM1YzU2
Njk2NGU3NjMwZjAyZjlkMTguLmZmMjZlYTQyNDQxM2E5MDBkYWY2MWQ5YmRkMTViMGQ0NmNmZjU3
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBA
IC00NDUsOCArNDQ1LDYgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJr
dXAoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2QKICAgICBjYXNlIE5vZGU6
OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CiAg
ICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURP
V19ST09UX05PREU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RWxlbWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suY3BwCmluZGV4IDk4ODg1NzQzZTc3Njg2NTY2ZjkyOTdmNjU0NjMxMzA4ZGEzNDRhN2Uu
LjljYzNhMDMxNjZlNTExYWIyNTg2NzJmNDNjYjcwMDgxNWM3NzQwMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC01Myw3ICs1Myw2
IEBAIGlubGluZSBib29sIGlzTnVtYmVyZWRIZWFkZXJFbGVtZW50KENvbnRhaW5lck5vZGUqIG5v
ZGUpCiBpbmxpbmUgYm9vbCBpc1Jvb3ROb2RlKENvbnRhaW5lck5vZGUqIG5vZGUpCiB7CiAgICAg
cmV0dXJuIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQot
ICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREUKICAg
ICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKTsKIH0KIApAQCAtMzEwLDcgKzMwOSw3
IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxGb3JlaWduQ29udGVudFNjb3BlTWFy
a2VyKCkKICAgICAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaFJvb3ROb2RlKFBhc3NSZWZQ
dHI8Q29udGFpbmVyTm9kZT4gcm9vdE5vZGUpCiB7Ci0gICAgQVNTRVJUKHJvb3ROb2RlLT5ub2Rl
VHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgfHwgcm9vdE5vZGUtPm5vZGVU
eXBlKCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERSk7CisgICAgQVNTRVJUKHJvb3ROb2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpOwogICAgIHB1c2hSb290
Tm9kZUNvbW1vbihyb290Tm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxFbGVtZW50U3RhY2suaAppbmRleCBmNjA0ZjgyYzc4Mzc5OTc1ZDZmZmIzMWI4ZGJiZGYx
NjI3ZWFmOTg4Li41Njk3ZTgwYzg3ODZjZGE0ZDAzMmI5ZWQwNjkyM2U5MjEwYTJlODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCkBAIC0xODAs
OCArMTgwLDcgQEAgaW5saW5lIGJvb2wgaXNJbkhUTUxOYW1lc3BhY2UoTm9kZSogbm9kZSkKICAg
ICAvLyBBIERvY3VtZW50RnJhZ21lbnQgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBkb2N1bWVudCBl
bGVtZW50IHdoZW4gcGFyc2luZwogICAgIC8vIGZyYWdtZW50cyBhbmQgc2hvdWxkIGJlIGNvbnNp
ZGVyZWQgaW4gdGhlIEhUTUwgbmFtZXNwYWNlLgogICAgIHJldHVybiBub2RlLT5uYW1lc3BhY2VV
UkkoKSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJCi0gICAgICAgIHx8IG5vZGUtPm5v
ZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQotICAgICAgICB8fCBub2Rl
LT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREU7IC8vIEZJWE1FOiBEb2VzIHRo
aXMgYWxzbyBhcHBseSB0byBTaGFkb3dSb290PworICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgp
ID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYWxz
byBhcHBseSB0byBTaGFkb3dSb290PwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKaW5k
ZXggNGM0NWZjYmNhMWE4N2ZhZmYyYmI1NjJhZjVmZWQ3NzFlNWZjNDhhYi4uN2E4ZmYzM2NmNjcz
MjVmYjFlYjQ0ZTI4NTI4ZmY3N2ZkNmUyZjNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAK
QEAgLTg1LDcgKzg1LDYgQEAgYm9vbCBpc1ZhbGlkQ29udGV4dE5vZGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlf
UkVGRVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAg
ICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIHJldHVybiAhKG5v
ZGUtPnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzQXR0cmlidXRlTm9kZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxp
emVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXpl
ckltcGwuY3BwCmluZGV4IGRhMGUzMjU1NWVjN2NiODQzOGFiODAyM2E5OGJiNjJjZWVlYjUzYjUu
LmVlNmJhNjhhYzRmOTU5OTFlYjYwMTBhYjUwZDIyYjkwNmI3NGFiMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcApAQCAt
NDE4LDcgKzQxOCw2IEBAIHZvaWQgV2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpidWlsZENvbnRlbnRG
b3JOb2RlKE5vZGUqIG5vZGUsCiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICBj
YXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgLy8gU2hv
dWxkIG5vdCBleGlzdC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGJlNzM1NzMwM2JmMzUxYThiZGFhMDMyNzA1YjYzYmJjNjM4ZGQzYzAuLmZm
ZDc4NjUzYmJkOWQ2YmI3ZTFlZTgwNjNmNjFhMDE3ZjE3Yjk3MzIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMi0wMi0wMiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9O
T0RFLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2Rl
VHlwZS5TSEFET1dfUk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgorCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvbm9kZXR5cGUuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMvZHVtcC1hcy1tYXJr
dXAuanM6CisgICAgICAgIChNYXJrdXAuX2dldCk6CisKIDIwMTItMDItMDIgIFJheW1vbmQgVG95
ICA8cnRveUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hlY2sgcGFyYW1ldGVycyB0byBiaXF1
YWQgZmlsdGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0
eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1l
eHBlY3RlZC50eHQKaW5kZXggY2I1MDU1MmZkMmE1NTg0ZmQ0N2EzYTJkZmE0NDc5Zjk0ZmM4YTgx
Yi4uMjFlY2NkNTVlOWY2YzY5YjM3NWEyY2MzYjgwZDgyYTAwMmU0YzQyNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0xLDkg
KzEsOSBAQAogCiBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdz
IG5vZGVUeXBlLgogUEFTUyBrZXlnZW4ubm9kZVR5cGUgaXMgTm9kZS5FTEVNRU5UX05PREUKLVBB
U1Mgc2hhZG93Lm5vZGVUeXBlIGlzIDE0CitQQVNTIHNoYWRvdy5ub2RlVHlwZSBpcyBOb2RlLkRP
Q1VNRU5UX0ZSQUdNRU5UX05PREUKIFBBU1Mgc2hhZG93Q2hpbGQgaXMgbm9uLW51bGwuCi1QQVNT
IHNoYWRvd0NoaWxkLm5vZGVUeXBlICE9IDE0IGlzIHRydWUKK1BBU1Mgc2hhZG93Q2hpbGQubm9k
ZVR5cGUgIT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGlzIHRydWUKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvbm9kZXR5cGUuaHRtbAppbmRleCBlYTFiYTFhZjU2MGNjMDkyZjAzYWM0NzgzZmUx
Zjg0MjZhNDEzMGY4Li4wMTE5MjU4YWQ1MjA1ZGI0NTk1NzZhYjE0MzFhOTY3Mzc0MWQ1NDM3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbApAQCAtMTYsOSArMTYs
OSBAQCBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVU
eXBlLgogICAgICAgICB2YXIgc2hhZG93ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qoa2V5Z2VuKTsK
ICAgICAgICAgdmFyIHNoYWRvd0NoaWxkID0gc2hhZG93LmZpcnN0Q2hpbGQ7CiAgICAgICAgIHNo
b3VsZEJlKCdrZXlnZW4ubm9kZVR5cGUnLCAnTm9kZS5FTEVNRU5UX05PREUnKTsKLSAgICAgICAg
c2hvdWxkQmUoJ3NoYWRvdy5ub2RlVHlwZScsICcxNCcpOworICAgICAgICBzaG91bGRCZSgnc2hh
ZG93Lm5vZGVUeXBlJywgJ05vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERScpOwogICAgICAgICBz
aG91bGRCZU5vbk51bGwoJ3NoYWRvd0NoaWxkJyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgnc2hh
ZG93Q2hpbGQubm9kZVR5cGUgIT0gMTQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdzaGFkb3dD
aGlsZC5ub2RlVHlwZSAhPSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUnKTsKICAgICB9CiA8
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1h
cmt1cC5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwppbmRleCA4
Y2I2OGVjODdlN2Q5Zjk2MmY0NDc0ZjViMTgxZDFkOGY2N2E4MjczLi5jNGQwNjljMTVkNzJmNTUy
ODExMzgzM2U4MTZjMDBhYzI5Mzc0YjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvZHVtcC1hcy1tYXJrdXAuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMt
bWFya3VwLmpzCkBAIC0yMTUsOCArMjE1LDkgQEAgTWFya3VwLl9nZXQgPSBmdW5jdGlvbihub2Rl
LCBkZXB0aCkKICAgICAgICAgICAgICAgICBzdHIgKz0gTWFya3VwLl9pbmRlbnQoZGVwdGggKyAx
KSArICd0aGlzLnZhbHVlPSInICsgbm9kZS52YWx1ZSArICciJzsKIAogICAgICAgICBicmVhazsK
LSAgICBjYXNlIDE0OiAvLyBTZWUgU0hBRE9XX1JPT1RfTk9ERSBvbiBOb2RlOjpOb2RlVHlwZQot
ICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOworICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOgorICAgICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PSAiI3NoYWRvdy1yb290
IikKKyAgICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOwogICAgIH0KIAogICAgIGZvciAo
dmFyIGkgPSAwLCBsZW4gPSBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125276</attachid>
            <date>2012-02-03 00:40:01 -0800</date>
            <delta_ts>2012-02-03 01:02:00 -0800</delta_ts>
            <desc>Add ASSERT</desc>
            <filename>bug-77514-20120203174000.patch</filename>
            <type>text/plain</type>
            <size>23652</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2OGY5MWRkNzUzZmU2
MjJhYTVhNjcyOGE1MmIzMTk4MzRiMmVjZS4uOWYwM2UyYTAxODk5ZWNlNWVjMGVmN2UwMmI3OGFi
MTFlZDBhMjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDEyLTAyLTAyICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpj
aGlsZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5SZXBsYWNl
Q2hpbGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzRGVmYXVsdE5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVm
aXgpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnNldFRleHRDb250ZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9S
YW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6Y2hlY2tOb2RlV09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tO
b2RlQkEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6c3Vycm91bmRDb250ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvU2hhZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1
bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
U3RhcnRNYXJrdXApOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjppc1Jvb3ROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OnB1c2hSb290Tm9kZSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkhUTUxOYW1l
c3BhY2UpOgorICAgICAgICAqIHhtbC9YUGF0aFV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFBhdGg6OmlzVmFsaWRDb250ZXh0Tm9kZSk6CisKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdCBpbnRlcmZhY2Ug
aW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IGludGVyZmFjZSBpbiBJREwuCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxMQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDZiMmY2M2QzODM5NThhZmFiZjBmZTk1MTgwODI4Mjc2ZjIyNmViYTYu
LjA2MTQxNDNhZTEzMjE4ZmNlMDFlYTJlYjUyODlkYjRhODIwZjNmMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSBy
ZXR1cm4gRE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9ERSB0eXBlIGlzIGZp
bmFsbHkgZ29uZS4KKworICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5v
ZGUpOgorCiAyMDEyLTAyLTAyICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVk
ZGluZyBjb2RlIGZvciBNZWRpYVN0cmVhbUNlbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggNjFjMTVkNmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5
OTUyOGU5OTgwNC4uZjRmYWQyYWY2YTFiOGJjNzM4YWYyOWZiMGRiNTJmNDNhYmMzNzZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0yNTQsMTEg
KzI1NCwxMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxp
bmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iagogICAgICAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIE5vdGF0aW9uLCBub2RlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREU6CisgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNo
YWRvd1Jvb3QgYmluZGluZyBpcyBhbHdheXMgdXNlZCBhbmQgdGhpcworICAgICAgICAgICAgLy8g
Y29kZSBwYXRoIG5ldmVyIGJlIHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAgICAg
Ly8gT25jZSB3ZSBoYXZlIHN1Y2ggQVBJcywgd2Ugc2hvdWxkIGNhbGwgdG9WOChzdGF0aWNfY2Fz
dDxTaGFkb3dSb290Kj4uLikuCisgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9v
dCgpKTsKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBEb2N1bWVudEZyYWdtZW50LCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVy
ID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTm9kZSwgbm9kZSk7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05P
REU6CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgRW50aXR5UmVmZXJlbmNlLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApp
bmRleCA0YWQxM2Q0YWY3Y2ZkNTI0NmY4MGY2ODFhY2ZjNDk5NmY5MDRjNWQ3Li42YTk4ZmVjNDgx
NWY1ODAyZjI5YjA1MmMyZjlkOThiMDRkMzViYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtMTYzLDEwICsxNjMsMTMg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5vZGUqIGltcGwsIGJvb2wgZm9yY2VO
ZXdPYmplY3QpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSo+KGltcGwpLCBmb3JjZU5ld09iamVj
dCk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICAvLyBJ
biBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNoYWRvd1Jvb3QgaXMgYWx3YXlzIHVzZWQg
YW5kIHRoaXMKKyAgICAgICAgLy8gY29kZSBwYXRoIG5ldmVyIGJlIHVzZWQgaW4gY3VycmVudCBB
UEkgc2V0LgorICAgICAgICAvLyBPbmNlIHdlIGhhdmUgc3VjaCBBUElzLCB3ZSBzaG91bGQgY2Fs
bCB0b1Y4KHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPi4uKS4KKyAgICAgICAgQVNTRVJUKCFpbXBs
LT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3Vt
ZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGNhc2UgTm9kZTo6Tk9U
QVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24qPihp
bXBsKSwgZm9yY2VOZXdPYmplY3QpOwotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERTog
Ly8gVGhlcmUncyBubyBJREwgY2xhc3MgZm9yIFNoYWRvd1Jvb3QsIGZhbGwtdGhyb3VnaCB0byBk
ZWZhdWx0IGFuZCB1c2UgTm9kZSBpbnN0ZWFkLgogICAgIGRlZmF1bHQ6IGJyZWFrOyAvLyBYUEFU
SF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KICAgICByZXR1cm4gVjhOb2RlOjp3cmFwKGltcGwsIGZv
cmNlTmV3T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMxMDFlMDRlMTIxOTc4
YWI3YjBiODZmZjkzODBjY2QzNjc4MWRjMWMuLmE4MzgyNDlkN2JkMzU0ZTU2Yjc4NmI1NjIyOGYy
MzI3NWYyYTkzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODc3LDYgKzg3NywxMSBA
QCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9k
ZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAg
ICAgIHJldHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGljX2Nhc3Q8QXR0cio+KGltcG9y
dGVkTm9kZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOiB7CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAg
ICAgICAgICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3QgYmUgZXhwbGljaXRseSBpbXBv
cnRhYmxlLgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdp
dGggdGhlaXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBvbGRGcmFnbWVudCA9
IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRlZE5vZGUpOwogICAgICAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBjcmVhdGVEb2N1bWVudEZyYWdt
ZW50KCk7CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTksOSArOTA0LDYgQEAgUGFzc1JlZlB0
cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVl
cCwgRXhjZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBET0NVTUVO
VF9UWVBFX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNI
QURPV19ST09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hvdWxkIG5vdCBi
ZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVpdGhlciB0aGV5IGFyZSBpbXBv
cnRlZCBhbG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3JlYXRlZCBpbXBsaWNpdGx5Lgog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTI4
MzgsNyArMjg0MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUg
dHlwZSkgY29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBURVhUX05PREU6
CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05P
REU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBj
YXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5MDgsOSArMjkwOSw2IEBAIGJv
b2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hp
bGQpCiAgICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICBudW1F
bGVtZW50cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTSEFE
T1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0gZWxzZSB7CkBAIC0yOTI0LDcgKzI5MjIsNiBAQCBib29sIERvY3VtZW50OjpjYW5SZXBsYWNl
Q2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogICAgICAgICBjYXNlIE5PVEFU
SU9OX05PREU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAgICAgICBjYXNlIFhQQVRIX05B
TUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgICAgICBjYXNl
IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3MzgwMDBm
ZWNkMzE0YWUwZGNiZWY3YTJhOWNkODExZjU4MjUzNTNmLi42MjM4ZTU2NTE0NDUxOGU5ZWFhMmRj
NjQzODVjMzY3N2Q4MjQ4OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODUzLDcgKzE4NTMsNiBA
QCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAg
ICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJB
R01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAg
ICBjb25zdCBBdHRyKiBhdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0cio+KHRoaXMpOwpAQCAt
MTg4Nyw3ICsxODg2LDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9taWNT
dHJpbmcgJm5hbWVzcGFjZVVSSSkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RFOgog
ICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1F
TlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAgICAg
ICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRoaXMp
OwpAQCAtMTk0Niw3ICsxOTQ0LDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSShj
b25zdCBTdHJpbmcgJnByZWZpeCkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RFOgog
ICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAgICAg
ICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRoaXMp
OwpAQCAtMjAxMiw3ICsyMDA5LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kVGV4dENvbnRlbnQoY29u
c3QgTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgYm9vbCYKICAgICBjYXNl
IE5vZGU6OkVOVElUWV9OT0RFOgogICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RF
OgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6
OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIGlzTnVsbFN0cmluZyA9IGZhbHNlOwogICAgICAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5ub2RlVHlwZSgp
ID09IE5vZGU6OkNPTU1FTlRfTk9ERSB8fCBjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREUpCkBAIC0yMDUwLDggKzIwNDYsNyBAQCB2b2lkIE5vZGU6
OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAgICAgIGNhc2UgRU5USVRZX05PREU6CiAg
ICAgICAgIGNhc2UgRU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBjYXNlIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERTogeworICAgICAg
ICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKICAgICAgICAgICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRhaW5lciA9IHRvQ29udGFpbmVyTm9kZSh0aGlzKTsKICNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQogICAgICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlv
bih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDMxMWJkNDExN2NmZjllNzQwYWY2MGJmZmNiNzk2YmYw
MGMzODkwNjAuLmVhNjYwNjRiMTQ1ZmM3ZmM0NTFlMjU5OWY1NTA5NGVhMWFhMDUwN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHB1YmxpYzoKICAgICAgICAgRE9DVU1FTlRfRlJB
R01FTlRfTk9ERSA9IDExLAogICAgICAgICBOT1RBVElPTl9OT0RFID0gMTIsCiAgICAgICAgIFhQ
QVRIX05BTUVTUEFDRV9OT0RFID0gMTMsCi0gICAgICAgIFNIQURPV19ST09UX05PREUgPSAxNAog
ICAgIH07CiAgICAgZW51bSBEb2N1bWVudFBvc2l0aW9uIHsKICAgICAgICAgRE9DVU1FTlRfUE9T
SVRJT05fRVFVSVZBTEVOVCA9IDB4MDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA5YjU2OWIzZTAx
MDk2NDQ3NTdhNTBiM2Q4N2Q5YjcxODUxYWY3YjUzLi43YTYxZDcyMmVhNDE5ZDViYzJlODMwN2Zj
OWUxODkwM2EwOWY4ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY3Nyw3ICs2NzcsNiBAQCBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpO
T1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
Y2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGRO
b2RlQ291bnQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NDAsNyAr
ODM5LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9m
ZnNldHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWYKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2Ug
Tm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9O
T0RFOgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGF0IHNvbWUgbm9kZXMg
bmV2ZXIgYXBwZWFyIGhlcmU/CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRVhUUkFDVF9DT05URU5U
UyB8fCBhY3Rpb24gPT0gQ0xPTkVfQ09OVEVOVFMpIHsKICAgICAgICAgICAgIGlmIChmcmFnbWVu
dCkKQEAgLTEwMjgsOSArMTAyNiwxMyBAQCB2b2lkIFJhbmdlOjppbnNlcnROb2RlKFBhc3NSZWZQ
dHI8Tm9kZT4gcHJwTmV3Tm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgY2FzZSBOb2RlOjpF
TlRJVFlfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAg
ICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICBp
ZiAobmV3Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNl
cHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyMTcsOCArMTIx
OSw3IEBAIE5vZGUqIFJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BB
Q0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiB7CisgICAgICAg
IGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlmICghb2Zm
c2V0KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgTm9kZSogY2hpbGRC
ZWZvcmUgPSBuLT5jaGlsZE5vZGUob2Zmc2V0IC0gMSk7CkBAIC0xMjQzLDcgKzEyNDQsNiBAQCB2
b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
ICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVO
VElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNh
c2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRp
b246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CkBAIC0xMjY1LDcgKzEyNjUsNiBAQCB2b2lk
IFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0g
ICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAgY2FzZSBOb2Rl
OjpDT01NRU5UX05PREU6CkBAIC0xMzk3LDcgKzEzOTYsNiBAQCB2b2lkIFJhbmdlOjpzZWxlY3RO
b2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgY2FzZSBO
b2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6
OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6
Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAg
ICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNDIyLDcgKzE0MjAsNiBAQCB2
b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5U
SVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlv
bjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE0NjMsNyArMTQ2MCw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiBy
ZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VT
U0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6
CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAg
ICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICBj
YXNlIE5vZGU6OkVOVElUWV9OT0RFOgpAQCAtMTQ5NywyMyArMTQ5MywyNyBAQCB2b2lkIFJhbmdl
OjpzdXJyb3VuZENvbnRlbnRzKFBhc3NSZWZQdHI8Tm9kZT4gcGFzc05ld1BhcmVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgLy8gSU5WQUxJRF9OT0RFX1RZUEVfRVJSOiBSYWlzZWQgaWYgbm9k
ZSBpcyBhbiBBdHRyLCBFbnRpdHksIERvY3VtZW50VHlwZSwgTm90YXRpb24sCiAgICAgLy8gRG9j
dW1lbnQsIG9yIERvY3VtZW50RnJhZ21lbnQgbm9kZS4KICAgICBzd2l0Y2ggKG5ld1BhcmVudC0+
bm9kZVR5cGUoKSkgewotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgotICAgICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6Ci0g
ICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJ
T05fTk9ERToKLSAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9U
WVBFX0VSUjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9T
RUNUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAgICBj
YXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJF
TkNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RF
OgotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFU
SF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgor
ICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERTogeworICAgICAgICBpZiAobmV3
UGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBlYyA9
IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkRP
Q1VNRU5UX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAgY2Fz
ZSBOb2RlOjpFTlRJVFlfTk9ERToKKyAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CisgICAg
ICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgorICAgIGNhc2UgTm9k
ZTo6Q09NTUVOVF9OT0RFOgorICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgorICAgIGNhc2Ug
Tm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19J
TlNUUlVDVElPTl9OT0RFOgorICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgorICAgIGNhc2UgTm9k
ZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIC8v
IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIGFuIGFuY2VzdG9yIGNvbnRh
aW5lciBvZiBlaXRoZXIgYm91bmRhcnktcG9pbnQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAppbmRleCA5YmE2OGJkMzU4MTEzY2RiMWJmMDA4OWI0Njc3MjIwNjliZTc2NmJkLi5mMDcwNmMz
NDYxNmUxZmE2ZDdiMWE0ZDRjZWFmMmFmOTQ3N2YzOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCkBAIC03NywxMSArNzcsNiBAQCBTdHJpbmcgU2hhZG93Um9vdDo6bm9kZU5hbWUoKSBj
b25zdAogICAgIHJldHVybiAiI3NoYWRvdy1yb290IjsKIH0KIAotTm9kZTo6Tm9kZVR5cGUgU2hh
ZG93Um9vdDo6bm9kZVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBTSEFET1dfUk9PVF9OT0RF
OwotfQotCiBQYXNzUmVmUHRyPE5vZGU+IFNoYWRvd1Jvb3Q6OmNsb25lTm9kZShib29sKQogewog
ICAgIC8vIFNoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBiZSBhcmJpdHJhcmlseSBjbG9uZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBkMGIxODk0NzIxNDZiYzc5MjA4YTU5YThiMWFlMWYyMTY2
ZmY3MjVjLi4zNTkwN2QyZDdkMzA3MjI4NGI3ZDQyMDYxYWM2YmEwZjYzZWFjZTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKQEAgLTY4LDcgKzY4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IH5TaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxk
VHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogCkBAIC05Niw3ICs5NSw3IEBAIGlubGluZSBi
b29sIFNoYWRvd1Jvb3Q6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogCiBp
bmxpbmUgU2hhZG93Um9vdCogdG9TaGFkb3dSb290KE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJU
KCFub2RlIHx8IG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERSk7Cisg
ICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U2hhZG93Um9vdCo+KG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDUyMjZiMjE0YzI1ODExNzYwOTM1YzU2Njk2
NGU3NjMwZjAyZjlkMTguLmZmMjZlYTQyNDQxM2E5MDBkYWY2MWQ5YmRkMTViMGQ0NmNmZjU3NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC00
NDUsOCArNDQ1LDYgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXAo
U3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2QKICAgICBjYXNlIE5vZGU6OkVO
VElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CiAgICAg
Y2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19S
T09UX05PREU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3Rh
Y2suY3BwCmluZGV4IDk4ODg1NzQzZTc3Njg2NTY2ZjkyOTdmNjU0NjMxMzA4ZGEzNDRhN2UuLjlj
YzNhMDMxNjZlNTExYWIyNTg2NzJmNDNjYjcwMDgxNWM3NzQwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC01Myw3ICs1Myw2IEBA
IGlubGluZSBib29sIGlzTnVtYmVyZWRIZWFkZXJFbGVtZW50KENvbnRhaW5lck5vZGUqIG5vZGUp
CiBpbmxpbmUgYm9vbCBpc1Jvb3ROb2RlKENvbnRhaW5lck5vZGUqIG5vZGUpCiB7CiAgICAgcmV0
dXJuIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQotICAg
ICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREUKICAgICAg
ICAgfHwgbm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKTsKIH0KIApAQCAtMzEwLDcgKzMwOSw3IEBA
IHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxGb3JlaWduQ29udGVudFNjb3BlTWFya2Vy
KCkKICAgICAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaFJvb3ROb2RlKFBhc3NSZWZQdHI8
Q29udGFpbmVyTm9kZT4gcm9vdE5vZGUpCiB7Ci0gICAgQVNTRVJUKHJvb3ROb2RlLT5ub2RlVHlw
ZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgfHwgcm9vdE5vZGUtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERSk7CisgICAgQVNTRVJUKHJvb3ROb2RlLT5ub2Rl
VHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpOwogICAgIHB1c2hSb290Tm9k
ZUNvbW1vbihyb290Tm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbGVtZW50U3RhY2suaAppbmRleCBmNjA0ZjgyYzc4Mzc5OTc1ZDZmZmIzMWI4ZGJiZGYxNjI3
ZWFmOTg4Li41Njk3ZTgwYzg3ODZjZGE0ZDAzMmI5ZWQwNjkyM2U5MjEwYTJlODUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCkBAIC0xODAsOCAr
MTgwLDcgQEAgaW5saW5lIGJvb2wgaXNJbkhUTUxOYW1lc3BhY2UoTm9kZSogbm9kZSkKICAgICAv
LyBBIERvY3VtZW50RnJhZ21lbnQgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBkb2N1bWVudCBlbGVt
ZW50IHdoZW4gcGFyc2luZwogICAgIC8vIGZyYWdtZW50cyBhbmQgc2hvdWxkIGJlIGNvbnNpZGVy
ZWQgaW4gdGhlIEhUTUwgbmFtZXNwYWNlLgogICAgIHJldHVybiBub2RlLT5uYW1lc3BhY2VVUkko
KSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJCi0gICAgICAgIHx8IG5vZGUtPm5vZGVU
eXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQotICAgICAgICB8fCBub2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREU7IC8vIEZJWE1FOiBEb2VzIHRoaXMg
YWxzbyBhcHBseSB0byBTaGFkb3dSb290PworICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09
IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYWxzbyBh
cHBseSB0byBTaGFkb3dSb290PwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKaW5kZXgg
NGM0NWZjYmNhMWE4N2ZhZmYyYmI1NjJhZjVmZWQ3NzFlNWZjNDhhYi4uN2E4ZmYzM2NmNjczMjVm
YjFlYjQ0ZTI4NTI4ZmY3N2ZkNmUyZjNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKQEAg
LTg1LDcgKzg1LDYgQEAgYm9vbCBpc1ZhbGlkQ29udGV4dE5vZGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVG
RVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAg
Y2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIHJldHVybiAhKG5vZGUt
PnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzQXR0cmlidXRlTm9kZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplcklt
cGwuY3BwCmluZGV4IGRhMGUzMjU1NWVjN2NiODQzOGFiODAyM2E5OGJiNjJjZWVlYjUzYjUuLmVl
NmJhNjhhYzRmOTU5OTFlYjYwMTBhYjUwZDIyYjkwNmI3NGFiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcApAQCAtNDE4
LDcgKzQxOCw2IEBAIHZvaWQgV2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpidWlsZENvbnRlbnRGb3JO
b2RlKE5vZGUqIG5vZGUsCiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICBjYXNl
IE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgLy8gU2hvdWxk
IG5vdCBleGlzdC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGJlNzM1NzMwM2JmMzUxYThiZGFhMDMyNzA1YjYzYmJjNjM4ZGQzYzAuLmZmZDc4
NjUzYmJkOWQ2YmI3ZTFlZTgwNjNmNjFhMDE3ZjE3Yjk3MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0wMi0wMiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgTWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9OT0RF
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVHlw
ZS5TSEFET1dfUk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvbm9kZXR5cGUuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAu
anM6CisgICAgICAgIChNYXJrdXAuX2dldCk6CisKIDIwMTItMDItMDIgIFJheW1vbmQgVG95ICA8
cnRveUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hlY2sgcGFyYW1ldGVycyB0byBiaXF1YWQg
ZmlsdGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBl
Y3RlZC50eHQKaW5kZXggY2I1MDU1MmZkMmE1NTg0ZmQ0N2EzYTJkZmE0NDc5Zjk0ZmM4YTgxYi4u
MjFlY2NkNTVlOWY2YzY5YjM3NWEyY2MzYjgwZDgyYTAwMmU0YzQyNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEs
OSBAQAogCiBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5v
ZGVUeXBlLgogUEFTUyBrZXlnZW4ubm9kZVR5cGUgaXMgTm9kZS5FTEVNRU5UX05PREUKLVBBU1Mg
c2hhZG93Lm5vZGVUeXBlIGlzIDE0CitQQVNTIHNoYWRvdy5ub2RlVHlwZSBpcyBOb2RlLkRPQ1VN
RU5UX0ZSQUdNRU5UX05PREUKIFBBU1Mgc2hhZG93Q2hpbGQgaXMgbm9uLW51bGwuCi1QQVNTIHNo
YWRvd0NoaWxkLm5vZGVUeXBlICE9IDE0IGlzIHRydWUKK1BBU1Mgc2hhZG93Q2hpbGQubm9kZVR5
cGUgIT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbm9kZXR5cGUuaHRtbAppbmRleCBlYTFiYTFhZjU2MGNjMDkyZjAzYWM0NzgzZmUxZjg0
MjZhNDEzMGY4Li4wMTE5MjU4YWQ1MjA1ZGI0NTk1NzZhYjE0MzFhOTY3Mzc0MWQ1NDM3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbApAQCAtMTYsOSArMTYsOSBA
QCBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVUeXBl
LgogICAgICAgICB2YXIgc2hhZG93ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qoa2V5Z2VuKTsKICAg
ICAgICAgdmFyIHNoYWRvd0NoaWxkID0gc2hhZG93LmZpcnN0Q2hpbGQ7CiAgICAgICAgIHNob3Vs
ZEJlKCdrZXlnZW4ubm9kZVR5cGUnLCAnTm9kZS5FTEVNRU5UX05PREUnKTsKLSAgICAgICAgc2hv
dWxkQmUoJ3NoYWRvdy5ub2RlVHlwZScsICcxNCcpOworICAgICAgICBzaG91bGRCZSgnc2hhZG93
Lm5vZGVUeXBlJywgJ05vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERScpOwogICAgICAgICBzaG91
bGRCZU5vbk51bGwoJ3NoYWRvd0NoaWxkJyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgnc2hhZG93
Q2hpbGQubm9kZVR5cGUgIT0gMTQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdzaGFkb3dDaGls
ZC5ub2RlVHlwZSAhPSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUnKTsKICAgICB9CiA8L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1
cC5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwppbmRleCA4Y2I2
OGVjODdlN2Q5Zjk2MmY0NDc0ZjViMTgxZDFkOGY2N2E4MjczLi5jNGQwNjljMTVkNzJmNTUyODEx
MzgzM2U4MTZjMDBhYzI5Mzc0YjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFy
a3VwLmpzCkBAIC0yMTUsOCArMjE1LDkgQEAgTWFya3VwLl9nZXQgPSBmdW5jdGlvbihub2RlLCBk
ZXB0aCkKICAgICAgICAgICAgICAgICBzdHIgKz0gTWFya3VwLl9pbmRlbnQoZGVwdGggKyAxKSAr
ICd0aGlzLnZhbHVlPSInICsgbm9kZS52YWx1ZSArICciJzsKIAogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIDE0OiAvLyBTZWUgU0hBRE9XX1JPT1RfTk9ERSBvbiBOb2RlOjpOb2RlVHlwZQotICAg
ICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOworICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFH
TUVOVF9OT0RFOgorICAgICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PSAiI3NoYWRvdy1yb290IikK
KyAgICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOwogICAgIH0KIAogICAgIGZvciAodmFy
IGkgPSAwLCBsZW4gPSBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125282</attachid>
            <date>2012-02-03 01:02:07 -0800</date>
            <delta_ts>2012-02-03 03:50:36 -0800</delta_ts>
            <desc>Fix mac build hopefully</desc>
            <filename>bug-77514-20120203180205.patch</filename>
            <type>text/plain</type>
            <size>24934</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2OGY5MWRkNzUzZmU2
MjJhYTVhNjcyOGE1MmIzMTk4MzRiMmVjZS4uYjUyNGQwZDNkYzcyNjQwYjVjOTdiZjEwNTkxN2Q2
NWQxMGJlN2RhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGls
ZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5SZXBsYWNlQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmR1
bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRDb250ZW50KToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlV09m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlQkEpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNl
bGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c3Vycm91bmRDb250
ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hh
ZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXApOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE5hbWVzOjppc1Jvb3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
U3RhY2s6OnB1c2hSb290Tm9kZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRT
dGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkhUTUxOYW1lc3BhY2UpOgorICAgICAgICAq
IHhtbC9YUGF0aFV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmlzVmFsaWRDb250
ZXh0Tm9kZSk6CisKIDIwMTItMDItMDIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdCBpbnRlcmZhY2UgaW5oZXJpdCBEb2N1bWVudEZy
YWdtZW50IGludGVyZmFjZSBpbiBJREwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZi
MmY2M2QzODM5NThhZmFiZjBmZTk1MTgwODI4Mjc2ZjIyNmViYTYuLjA2MTQxNDNhZTEzMjE4ZmNl
MDFlYTJlYjUyODlkYjRhODIwZjNmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSByZXR1cm4gRE9DVU1FTlRfRlJB
R01FTlRfTk9ERS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9ERSB0eXBlIGlzIGZpbmFsbHkgZ29uZS4KKworICAg
ICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5vZGUpOgorCiAyMDEyLTAyLTAy
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRp
YVN0cmVhbUNlbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKaW5kZXggNjFjMTVkNmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5OTUyOGU5OTgwNC4uZjRmYWQy
YWY2YTFiOGJjNzM4YWYyOWZiMGRiNTJmNDNhYmMzNzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0yNTQsMTEgKzI1NCwxMiBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iagogICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsIE5vdGF0aW9uLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgICAg
ICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNoYWRvd1Jvb3QgYmluZGluZyBp
cyBhbHdheXMgdXNlZCBhbmQgdGhpcworICAgICAgICAgICAgLy8gY29kZSBwYXRoIG5ldmVyIGJl
IHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHN1
Y2ggQVBJcywgd2Ugc2hvdWxkIGNhbGwgdG9WOChzdGF0aWNfY2FzdDxTaGFkb3dSb290Kj4uLiku
CisgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICAgICAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBEb2N1bWVu
dEZyYWdtZW50LCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6
OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTm9kZSwgbm9kZSk7Ci0gICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgICAgICB3
cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRW50aXR5UmVm
ZXJlbmNlLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTS5tbQppbmRleCA4Y2NiN2UyODZkZDQ2MDk1Y2Q4MDU1MWZkMTM0OWM3YjM1ZTM3NjVjLi43
ODA2MzRhY2JiNWIzMWI1ZGFmYTc1MWZkNTcyMDg4NjJkZjI0OGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTS5tbQpAQCAtMzI3LDggKzMyNyw2IEBAIENsYXNzIGtpdENsYXNzKFdlYkNv
cmU6Ok5vZGUqIGltcGwpCiAgICAgICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9i
amVjdGl2ZSBDIHdyYXBwZXIKICAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1CiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok5vZGU6OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICByZXR1
cm4gW0RPTU5vZGUgY2xhc3NdOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2ZkNTI0NmY4MGY2ODFhY2ZjNDk5NmY5
MDRjNWQ3Li42YTk4ZmVjNDgxNWY1ODAyZjI5YjA1MmMyZjlkOThiMDRkMzViYmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApA
QCAtMTYzLDEwICsxNjMsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5vZGUq
IGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBF
X05PREU6CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSo+KGlt
cGwpLCBmb3JjZU5ld09iamVjdCk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgorICAgICAgICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNoYWRvd1Jv
b3QgaXMgYWx3YXlzIHVzZWQgYW5kIHRoaXMKKyAgICAgICAgLy8gY29kZSBwYXRoIG5ldmVyIGJl
IHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAvLyBPbmNlIHdlIGhhdmUgc3VjaCBB
UElzLCB3ZSBzaG91bGQgY2FsbCB0b1Y4KHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPi4uKS4KKyAg
ICAgICAgQVNTRVJUKCFpbXBsLT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgICAgIHJldHVybiB0b1Y4
KHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwog
ICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8Tm90YXRpb24qPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwotICAgIGNhc2UgTm9kZTo6
U0hBRE9XX1JPT1RfTk9ERTogLy8gVGhlcmUncyBubyBJREwgY2xhc3MgZm9yIFNoYWRvd1Jvb3Qs
IGZhbGwtdGhyb3VnaCB0byBkZWZhdWx0IGFuZCB1c2UgTm9kZSBpbnN0ZWFkLgogICAgIGRlZmF1
bHQ6IGJyZWFrOyAvLyBYUEFUSF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KICAgICByZXR1cm4gVjhO
b2RlOjp3cmFwKGltcGwsIGZvcmNlTmV3T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDMxMDFlMDRlMTIxOTc4YWI3YjBiODZmZjkzODBjY2QzNjc4MWRjMWMuLmE4MzgyNDlkN2Jk
MzU0ZTU2Yjc4NmI1NjIyOGYyMzI3NWYyYTkzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtODc3LDYgKzg3NywxMSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2Rl
KE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRU
UklCVVRFX05PREU6CiAgICAgICAgIHJldHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGlj
X2Nhc3Q8QXR0cio+KGltcG9ydGVkTm9kZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hh
ZG93Um9vdCgpKSB7CisgICAgICAgICAgICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3Qg
YmUgZXhwbGljaXRseSBpbXBvcnRhYmxlLgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJl
IGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0
bHkuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdt
ZW50KiBvbGRGcmFnbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRl
ZE5vZGUpOwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBj
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTksOSAr
OTA0LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBv
cnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6
CiAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0Vf
Tk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qg
bm9kZXMgc2hvdWxkIG5vdCBiZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVp
dGhlciB0aGV5IGFyZSBpbXBvcnRlZCBhbG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3Jl
YXRlZCBpbXBsaWNpdGx5LgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKQEAgLTI4MzgsNyArMjg0MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlw
ZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAg
ICAgY2FzZSBURVhUX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBj
YXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENP
TU1FTlRfTk9ERToKICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5
MDgsOSArMjkwOSw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdD
aGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAgICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAg
ICAgICAgICAgICAgICBudW1FbGVtZW50cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0yOTI0LDcgKzI5MjIsNiBAQCBib29sIERv
Y3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQog
ICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAg
ICAgICBjYXNlIFhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09U
X05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9O
T0RFOgogICAgICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCA3MzgwMDBmZWNkMzE0YWUwZGNiZWY3YTJhOWNkODExZjU4MjUzNTNmLi4xNWM4
MTBkOWZkOTk3YjUyNmNhZmJmOWJhZTE1ZTM1YWYwNGIzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC0yMzQsNyArMjM0LDEwIEBAIHZvaWQgTm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOiB7Ci0gICAgICAgICAgICAgICAgKytmcmFnbWVudE5vZGVzOworICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICAgICAg
KytzaGFkb3dSb290Tm9kZXM7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICArK2ZyYWdtZW50Tm9kZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6IHsKQEAgLTI0NSwxMCArMjQ4LDYg
QEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgICAgICAgICAgKyt4cGF0aE5T
Tm9kZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKLSAgICAgICAgICAgICAgICArK3NoYWRvd1Jvb3RO
b2RlczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTg1Myw3ICsxODUyLDYgQEAgYm9vbCBOb2RlOjppc0RlZmF1bHROYW1lc3Bh
Y2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUklNYXliZUVtcHR5KSBjb25zdAogICAg
ICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RF
OgogICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hB
RE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBB
VFRSSUJVVEVfTk9ERTogewogICAgICAgICAgICAgY29uc3QgQXR0ciogYXR0ciA9IHN0YXRpY19j
YXN0PGNvbnN0IEF0dHIqPih0aGlzKTsKQEAgLTE4ODcsNyArMTg4NSw2IEBAIFN0cmluZyBOb2Rl
Ojpsb29rdXBQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nICZuYW1lc3BhY2VVUkkpIGNvbnN0CiAg
ICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2FzZSBT
SEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBj
YXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTE5NDYsNyArMTk0Myw2IEBAIFN0cmlu
ZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAg
ICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05P
REU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBT
SEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBj
YXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTIwMTIsNyArMjAwOCw2IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJS
c1RvTmV3bGluZXMsIGJvb2wmCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICBjYXNl
IE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBp
c051bGxTdHJpbmcgPSBmYWxzZTsKICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgICAgIGlmIChjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREUgfHwgY2hp
bGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQpAQCAt
MjA1MCw4ICsyMDQ1LDcgQEAgdm9pZCBOb2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcm
IHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgog
ICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIEVOVElUWV9SRUZFUkVOQ0Vf
Tk9ERToKLSAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNl
IFNIQURPV19ST09UX05PREU6IHsKKyAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OiB7CiAgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0b0NvbnRhaW5lck5v
ZGUodGhpcyk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgICAgIENo
aWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMTFi
ZDQxMTdjZmY5ZTc0MGFmNjBiZmZjYjc5NmJmMDBjMzg5MDYwLi5lYTY2MDY0YjE0NWZjN2ZjNDUx
ZTI1OTlmNTUwOTRlYTFhYTA1MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBw
dWJsaWM6CiAgICAgICAgIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgPSAxMSwKICAgICAgICAgTk9U
QVRJT05fTk9ERSA9IDEyLAogICAgICAgICBYUEFUSF9OQU1FU1BBQ0VfTk9ERSA9IDEzLAotICAg
ICAgICBTSEFET1dfUk9PVF9OT0RFID0gMTQKICAgICB9OwogICAgIGVudW0gRG9jdW1lbnRQb3Np
dGlvbiB7CiAgICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX0VRVUlWQUxFTlQgPSAweDAwLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKaW5kZXggOWI1NjliM2UwMTA5NjQ0NzU3YTUwYjNkODdkOWI3MTg1MWFmN2I1
My4uN2E2MWQ3MjJlYTQxOWQ1YmMyZTgzMDdmYzllMTg5MDNhMDlmOGRlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsZW5ndGhP
ZkNvbnRlbnRzSW5Ob2RlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6
OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToK
ICAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtODQwLDcgKzgzOSw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gUmFu
Z2U6OnByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNz
UmVmCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgot
ICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBhc3NlcnQgdGhhdCBzb21lIG5vZGVzIG5ldmVyIGFwcGVhciBoZXJlPwogICAgICAgICBp
ZiAoYWN0aW9uID09IEVYVFJBQ1RfQ09OVEVOVFMgfHwgYWN0aW9uID09IENMT05FX0NPTlRFTlRT
KSB7CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCkBAIC0xMDI4LDkgKzEwMjYsMTMgQEAgdm9p
ZCBSYW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld05vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAgICAgY2FzZSBOb2RlOjpO
T1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKLSAgICBjYXNlIE5v
ZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFM
SURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTm9kZTo6RE9DVU1F
TlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgaWYgKG5ld05vZGUtPmlzU2hhZG93Um9vdCgpKSB7
CisgICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMjE3LDggKzEyMTksNyBAQCBOb2RlKiBSYW5nZTo6Y2hlY2tOb2Rl
V09mZnNldChOb2RlKiBuLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVMRU1F
TlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAg
ICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6
U0hBRE9XX1JPT1RfTk9ERTogeworICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9O
T0RFOiB7CiAgICAgICAgICAgICBpZiAoIW9mZnNldCkKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIE5vZGUqIGNoaWxkQmVmb3JlID0gbi0+Y2hpbGROb2RlKG9mZnNldCAt
IDEpOwpAQCAtMTI0Myw3ICsxMjQ0LDYgQEAgdm9pZCBSYW5nZTo6Y2hlY2tOb2RlQkEoTm9kZSog
biwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRf
Tk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBOb2Rl
OjpOT1RBVElPTl9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAg
ICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RF
OgpAQCAtMTI2NSw3ICsxMjY1LDYgQEAgdm9pZCBSYW5nZTo6Y2hlY2tOb2RlQkEoTm9kZSogbiwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09U
X05PREU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNU
SU9OX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgpAQCAtMTM5Nyw3ICsx
Mzk2LDYgQEAgdm9pZCBSYW5nZTo6c2VsZWN0Tm9kZShOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9O
T0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6CiAgICAgICAgICAgICBjYXNl
IE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAgICAgY2FzZSBOb2RlOjpTSEFE
T1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9O
T0RFOgpAQCAtMTQyMiw3ICsxNDIwLDYgQEAgdm9pZCBSYW5nZTo6c2VsZWN0Tm9kZShOb2RlKiBy
ZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9O
T0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAg
ICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDYzLDcgKzE0NjAsNiBAQCB2b2lkIFJhbmdl
OjpzZWxlY3ROb2RlQ29udGVudHMoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAgICAg
ICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpYUEFU
SF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9E
RToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1F
TlRfVFlQRV9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKQEAgLTE0
OTcsMjMgKzE0OTMsMjcgQEAgdm9pZCBSYW5nZTo6c3Vycm91bmRDb250ZW50cyhQYXNzUmVmUHRy
PE5vZGU+IHBhc3NOZXdQYXJlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIElOVkFMSURf
Tk9ERV9UWVBFX0VSUjogUmFpc2VkIGlmIG5vZGUgaXMgYW4gQXR0ciwgRW50aXR5LCBEb2N1bWVu
dFR5cGUsIE5vdGF0aW9uLAogICAgIC8vIERvY3VtZW50LCBvciBEb2N1bWVudEZyYWdtZW50IG5v
ZGUuCiAgICAgc3dpdGNoIChuZXdQYXJlbnQtPm5vZGVUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBO
b2RlOjpBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RF
OgotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgICAgICBlYyA9IFJh
bmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICBjYXNlIE5v
ZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6Ci0gICAg
ICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6
OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpURVhUX05P
REU6Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIGNh
c2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREU6IHsKKyAgICAgICAgaWYgKG5ld1BhcmVudC0+aXNTaGFkb3dSb290KCkpCiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RF
X1RZUEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgTm9kZTo6QVRUUklC
VVRFX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgorICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CisgICAgY2Fz
ZSBOb2RlOjpOT1RBVElPTl9OT0RFOgorICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZB
TElEX05PREVfVFlQRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE5vZGU6OkNEQVRB
X1NFQ1RJT05fTk9ERToKKyAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKKyAgICBjYXNlIE5v
ZGU6OkVMRU1FTlRfTk9ERToKKyAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToK
KyAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKKyAgICBjYXNlIE5v
ZGU6OlRFWFRfTk9ERToKKyAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgorICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICAvLyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6
IFJhaXNlZCBpZiBhbiBhbmNlc3RvciBjb250YWluZXIgb2YgZWl0aGVyIGJvdW5kYXJ5LXBvaW50
IG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggOWJhNjhiZDM1ODExM2NkYjFiZjAw
ODliNDY3NzIyMDY5YmU3NjZiZC4uZjA3MDZjMzQ2MTZlMWZhNmQ3YjFhNGQ0Y2VhZjJhZjk0Nzdm
MzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNzcsMTEgKzc3LDYgQEAgU3Ry
aW5nIFNoYWRvd1Jvb3Q6Om5vZGVOYW1lKCkgY29uc3QKICAgICByZXR1cm4gIiNzaGFkb3ctcm9v
dCI7CiB9CiAKLU5vZGU6Ok5vZGVUeXBlIFNoYWRvd1Jvb3Q6Om5vZGVUeXBlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gU0hBRE9XX1JPT1RfTk9ERTsKLX0KLQogUGFzc1JlZlB0cjxOb2RlPiBTaGFk
b3dSb290OjpjbG9uZU5vZGUoYm9vbCkKIHsKICAgICAvLyBTaGFkb3dSb290IHNob3VsZCBub3Qg
YmUgYXJiaXRyYXJpbHkgY2xvbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggZDBiMTg5
NDcyMTQ2YmM3OTIwOGE1OWE4YjFhZTFmMjE2NmZmNzI1Yy4uMzU5MDdkMmQ3ZDMwNzIyODRiN2Q0
MjA2MWFjNmJhMGY2M2VhY2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC02OCw3ICs2
OCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB+U2hhZG93Um9vdCgpOwogCiAgICAgdmlydHVh
bCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsK
IApAQCAtOTYsNyArOTUsNyBAQCBpbmxpbmUgYm9vbCBTaGFkb3dSb290OjpuZWVkc1JlYXR0YWNo
SG9zdENoaWxkcmVuQW5kU2hhZG93KCkKIAogaW5saW5lIFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9v
dChOb2RlKiBub2RlKQogewotICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5ub2RlVHlwZSgpID09
IE5vZGU6OlNIQURPV19ST09UX05PREUpOworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1No
YWRvd1Jvb3QoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPihub2RlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCA1MjI2YjIxNGMyNTgxMTc2MDkzNWM1NjY5NjRlNzYzMGYwMmY5ZDE4Li5mZjI2ZWE0MjQ0MTNh
OTAwZGFmNjFkOWJkZDE1YjBkNDZjZmY1NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDQ1LDggKzQ0NSw2IEBAIHZvaWQgTWFya3VwQWNj
dW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3Qg
Tm9kZSogbm9kCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgY2Fz
ZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05P
REU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCA5ODg4NTc0M2U3NzY4NjU2
NmY5Mjk3ZjY1NDYzMTMwOGRhMzQ0YTdlLi45Y2MzYTAzMTY2ZTUxMWFiMjU4NjcyZjQzY2I3MDA4
MTVjNzc0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNiBAQCBpbmxpbmUgYm9vbCBpc051bWJlcmVkSGVhZGVy
RWxlbWVudChDb250YWluZXJOb2RlKiBub2RlKQogaW5saW5lIGJvb2wgaXNSb290Tm9kZShDb250
YWluZXJOb2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFCiAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRh
Zyk7CiB9CiAKQEAgLTMxMCw3ICszMDksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVu
dGlsRm9yZWlnbkNvbnRlbnRTY29wZU1hcmtlcigpCiAgICAgCiB2b2lkIEhUTUxFbGVtZW50U3Rh
Y2s6OnB1c2hSb290Tm9kZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3ROb2RlKQogewot
ICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFIHx8IHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREUp
OworICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFKTsKICAgICBwdXNoUm9vdE5vZGVDb21tb24ocm9vdE5vZGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKaW5kZXggZjYwNGY4
MmM3ODM3OTk3NWQ2ZmZiMzFiOGRiYmRmMTYyN2VhZjk4OC4uNTY5N2U4MGM4Nzg2Y2RhNGQwMzJi
OWVkMDY5MjNlOTIxMGEyZTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbGVtZW50U3RhY2suaApAQCAtMTgwLDggKzE4MCw3IEBAIGlubGluZSBib29sIGlzSW5IVE1M
TmFtZXNwYWNlKE5vZGUqIG5vZGUpCiAgICAgLy8gQSBEb2N1bWVudEZyYWdtZW50IHRha2VzIHRo
ZSBwbGFjZSBvZiB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aGVuIHBhcnNpbmcKICAgICAvLyBmcmFn
bWVudHMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGluIHRoZSBIVE1MIG5hbWVzcGFjZS4KICAg
ICByZXR1cm4gbm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFj
ZVVSSQotICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9P
VF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9vdD8KKyAg
ICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9vdD8KIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFV0aWwuY3BwCmluZGV4IDRjNDVmY2JjYTFhODdmYWZmMmJiNTYyYWY1ZmVk
NzcxZTVmYzQ4YWIuLjdhOGZmMzNjZjY3MzI1ZmIxZWI0NGUyODUyOGZmNzdmZDZlMmYzZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCkBAIC04NSw3ICs4NSw2IEBAIGJvb2wgaXNWYWxpZENv
bnRleHROb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAg
ICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAgICAgICBjYXNlIE5v
ZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6
CiAgICAgICAgICAgICByZXR1cm4gIShub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFyZW50
Tm9kZSgpLT5pc0F0dHJpYnV0ZU5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAppbmRleCBkYTBlMzI1NTVlYzdjYjg0
MzhhYjgwMjNhOThiYjYyY2VlZWI1M2I1Li5lZTZiYTY4YWM0Zjk1OTkxZWI2MDEwYWI1MGQyMmI5
MDZiNzRhYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
U2VyaWFsaXplckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBh
Z2VTZXJpYWxpemVySW1wbC5jcHAKQEAgLTQxOCw3ICs0MTgsNiBAQCB2b2lkIFdlYlBhZ2VTZXJp
YWxpemVySW1wbDo6YnVpbGRDb250ZW50Rm9yTm9kZShOb2RlKiBub2RlLAogICAgIGNhc2UgTm9k
ZTo6QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgIGNh
c2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19S
T09UX05PREU6CiAgICAgICAgIC8vIFNob3VsZCBub3QgZXhpc3QuCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZTczNTczMDNiZjM1MWE4YmRh
YTAzMjcwNWI2M2JiYzYzOGRkM2MwLi5mZmQ3ODY1M2JiZDlkNmJiN2UxZWU4MDYzZjYxYTAxN2Yx
N2I5NzMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSBy
ZXR1cm4gRE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9ERSB0eXBlIGlzIGZp
bmFsbHkgZ29uZS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWw6CisgICAgICAg
ICogcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzOgorICAgICAgICAoTWFya3VwLl9nZXQpOgor
CiAyMDEyLTAyLTAyICBSYXltb25kIFRveSAgPHJ0b3lAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENoZWNrIHBhcmFtZXRlcnMgdG8gYmlxdWFkIGZpbHRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0CmluZGV4IGNiNTA1NTJmZDJhNTU4
NGZkNDdhM2EyZGZhNDQ3OWY5NGZjOGE4MWIuLjIxZWNjZDU1ZTlmNmM2OWIzNzVhMmNjM2I4MGQ4
MmEwMDJlNGM0MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2Rl
dHlwZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0
eXBlLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDkgQEAKIAogVGhpcyB0ZXN0cyB0aGUgc2hhZG93
IGhvc3QncyBhbmQgc2hhZG93IHJvb3QncyBub2RlVHlwZS4KIFBBU1Mga2V5Z2VuLm5vZGVUeXBl
IGlzIE5vZGUuRUxFTUVOVF9OT0RFCi1QQVNTIHNoYWRvdy5ub2RlVHlwZSBpcyAxNAorUEFTUyBz
aGFkb3cubm9kZVR5cGUgaXMgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFCiBQQVNTIHNoYWRv
d0NoaWxkIGlzIG5vbi1udWxsLgotUEFTUyBzaGFkb3dDaGlsZC5ub2RlVHlwZSAhPSAxNCBpcyB0
cnVlCitQQVNTIHNoYWRvd0NoaWxkLm5vZGVUeXBlICE9IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRf
Tk9ERSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwKaW5kZXggZWEx
YmExYWY1NjBjYzA5MmYwM2FjNDc4M2ZlMWY4NDI2YTQxMzBmOC4uMDExOTI1OGFkNTIwNWRiNDU5
NTc2YWIxNDMxYTk2NzM3NDFkNTQzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L25vZGV0eXBlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25v
ZGV0eXBlLmh0bWwKQEAgLTE2LDkgKzE2LDkgQEAgVGhpcyB0ZXN0cyB0aGUgc2hhZG93IGhvc3Qn
cyBhbmQgc2hhZG93IHJvb3QncyBub2RlVHlwZS4KICAgICAgICAgdmFyIHNoYWRvdyA9IGludGVy
bmFscy5zaGFkb3dSb290KGtleWdlbik7CiAgICAgICAgIHZhciBzaGFkb3dDaGlsZCA9IHNoYWRv
dy5maXJzdENoaWxkOwogICAgICAgICBzaG91bGRCZSgna2V5Z2VuLm5vZGVUeXBlJywgJ05vZGUu
RUxFTUVOVF9OT0RFJyk7Ci0gICAgICAgIHNob3VsZEJlKCdzaGFkb3cubm9kZVR5cGUnLCAnMTQn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ3NoYWRvdy5ub2RlVHlwZScsICdOb2RlLkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREUnKTsKICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdzaGFkb3dDaGlsZCcpOwot
ICAgICAgICBzaG91bGRCZVRydWUoJ3NoYWRvd0NoaWxkLm5vZGVUeXBlICE9IDE0Jyk7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgnc2hhZG93Q2hpbGQubm9kZVR5cGUgIT0gTm9kZS5ET0NVTUVOVF9G
UkFHTUVOVF9OT0RFJyk7CiAgICAgfQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanMKaW5kZXggOGNiNjhlYzg3ZTdkOWY5NjJmNDQ3NGY1YjE4MWQxZDhm
NjdhODI3My4uYzRkMDY5YzE1ZDcyZjU1MjgxMTM4MzNlODE2YzAwYWMyOTM3NGI2NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCisrKyBiL0xheW91
dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwpAQCAtMjE1LDggKzIxNSw5IEBAIE1h
cmt1cC5fZ2V0ID0gZnVuY3Rpb24obm9kZSwgZGVwdGgpCiAgICAgICAgICAgICAgICAgc3RyICs9
IE1hcmt1cC5faW5kZW50KGRlcHRoICsgMSkgKyAndGhpcy52YWx1ZT0iJyArIG5vZGUudmFsdWUg
KyAnIic7CiAKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxNDogLy8gU2VlIFNIQURPV19ST09U
X05PREUgb24gTm9kZTo6Tm9kZVR5cGUKLSAgICAgICAgc3RyICs9ICI8c2hhZG93OnJvb3Q+IjsK
KyAgICBjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgaWYgKG5vZGUu
bm9kZU5hbWUgPT0gIiNzaGFkb3ctcm9vdCIpCisgICAgICAgICAgc3RyICs9ICI8c2hhZG93OnJv
b3Q+IjsKICAgICB9CiAKICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbm9kZS5jaGlsZE5vZGVz
Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125304</attachid>
            <date>2012-02-03 03:50:43 -0800</date>
            <delta_ts>2012-02-03 04:39:04 -0800</delta_ts>
            <desc>rebase some layout tests</desc>
            <filename>bug-77514-20120203205042.patch</filename>
            <type>text/plain</type>
            <size>30902</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2OGY5MWRkNzUzZmU2
MjJhYTVhNjcyOGE1MmIzMTk4MzRiMmVjZS4uYjUyNGQwZDNkYzcyNjQwYjVjOTdiZjEwNTkxN2Q2
NWQxMGJlN2RhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGls
ZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5SZXBsYWNlQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmR1
bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRDb250ZW50KToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlV09m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlQkEpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNl
bGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c3Vycm91bmRDb250
ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hh
ZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXApOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE5hbWVzOjppc1Jvb3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
U3RhY2s6OnB1c2hSb290Tm9kZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRT
dGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkhUTUxOYW1lc3BhY2UpOgorICAgICAgICAq
IHhtbC9YUGF0aFV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmlzVmFsaWRDb250
ZXh0Tm9kZSk6CisKIDIwMTItMDItMDIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdCBpbnRlcmZhY2UgaW5oZXJpdCBEb2N1bWVudEZy
YWdtZW50IGludGVyZmFjZSBpbiBJREwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZi
MmY2M2QzODM5NThhZmFiZjBmZTk1MTgwODI4Mjc2ZjIyNmViYTYuLjA2MTQxNDNhZTEzMjE4ZmNl
MDFlYTJlYjUyODlkYjRhODIwZjNmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSByZXR1cm4gRE9DVU1FTlRfRlJB
R01FTlRfTk9ERS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9ERSB0eXBlIGlzIGZpbmFsbHkgZ29uZS4KKworICAg
ICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5vZGUpOgorCiAyMDEyLTAyLTAy
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRp
YVN0cmVhbUNlbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKaW5kZXggNjFjMTVkNmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5OTUyOGU5OTgwNC4uZjRmYWQy
YWY2YTFiOGJjNzM4YWYyOWZiMGRiNTJmNDNhYmMzNzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0yNTQsMTEgKzI1NCwxMiBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iagogICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsIE5vdGF0aW9uLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgICAg
ICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNoYWRvd1Jvb3QgYmluZGluZyBp
cyBhbHdheXMgdXNlZCBhbmQgdGhpcworICAgICAgICAgICAgLy8gY29kZSBwYXRoIG5ldmVyIGJl
IHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHN1
Y2ggQVBJcywgd2Ugc2hvdWxkIGNhbGwgdG9WOChzdGF0aWNfY2FzdDxTaGFkb3dSb290Kj4uLiku
CisgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICAgICAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBEb2N1bWVu
dEZyYWdtZW50LCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6
OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTm9kZSwgbm9kZSk7Ci0gICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgICAgICB3
cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRW50aXR5UmVm
ZXJlbmNlLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTS5tbQppbmRleCA4Y2NiN2UyODZkZDQ2MDk1Y2Q4MDU1MWZkMTM0OWM3YjM1ZTM3NjVjLi43
ODA2MzRhY2JiNWIzMWI1ZGFmYTc1MWZkNTcyMDg4NjJkZjI0OGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTS5tbQpAQCAtMzI3LDggKzMyNyw2IEBAIENsYXNzIGtpdENsYXNzKFdlYkNv
cmU6Ok5vZGUqIGltcGwpCiAgICAgICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9i
amVjdGl2ZSBDIHdyYXBwZXIKICAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1CiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok5vZGU6OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICByZXR1
cm4gW0RPTU5vZGUgY2xhc3NdOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2ZkNTI0NmY4MGY2ODFhY2ZjNDk5NmY5
MDRjNWQ3Li42YTk4ZmVjNDgxNWY1ODAyZjI5YjA1MmMyZjlkOThiMDRkMzViYmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApA
QCAtMTYzLDEwICsxNjMsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5vZGUq
IGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBF
X05PREU6CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSo+KGlt
cGwpLCBmb3JjZU5ld09iamVjdCk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgorICAgICAgICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNoYWRvd1Jv
b3QgaXMgYWx3YXlzIHVzZWQgYW5kIHRoaXMKKyAgICAgICAgLy8gY29kZSBwYXRoIG5ldmVyIGJl
IHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAvLyBPbmNlIHdlIGhhdmUgc3VjaCBB
UElzLCB3ZSBzaG91bGQgY2FsbCB0b1Y4KHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPi4uKS4KKyAg
ICAgICAgQVNTRVJUKCFpbXBsLT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgICAgIHJldHVybiB0b1Y4
KHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwog
ICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8Tm90YXRpb24qPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwotICAgIGNhc2UgTm9kZTo6
U0hBRE9XX1JPT1RfTk9ERTogLy8gVGhlcmUncyBubyBJREwgY2xhc3MgZm9yIFNoYWRvd1Jvb3Qs
IGZhbGwtdGhyb3VnaCB0byBkZWZhdWx0IGFuZCB1c2UgTm9kZSBpbnN0ZWFkLgogICAgIGRlZmF1
bHQ6IGJyZWFrOyAvLyBYUEFUSF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KICAgICByZXR1cm4gVjhO
b2RlOjp3cmFwKGltcGwsIGZvcmNlTmV3T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDMxMDFlMDRlMTIxOTc4YWI3YjBiODZmZjkzODBjY2QzNjc4MWRjMWMuLmE4MzgyNDlkN2Jk
MzU0ZTU2Yjc4NmI1NjIyOGYyMzI3NWYyYTkzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtODc3LDYgKzg3NywxMSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2Rl
KE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRU
UklCVVRFX05PREU6CiAgICAgICAgIHJldHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGlj
X2Nhc3Q8QXR0cio+KGltcG9ydGVkTm9kZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hh
ZG93Um9vdCgpKSB7CisgICAgICAgICAgICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3Qg
YmUgZXhwbGljaXRseSBpbXBvcnRhYmxlLgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJl
IGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0
bHkuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdt
ZW50KiBvbGRGcmFnbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRl
ZE5vZGUpOwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBj
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTksOSAr
OTA0LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBv
cnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6
CiAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0Vf
Tk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qg
bm9kZXMgc2hvdWxkIG5vdCBiZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVp
dGhlciB0aGV5IGFyZSBpbXBvcnRlZCBhbG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3Jl
YXRlZCBpbXBsaWNpdGx5LgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKQEAgLTI4MzgsNyArMjg0MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlw
ZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAg
ICAgY2FzZSBURVhUX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBj
YXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENP
TU1FTlRfTk9ERToKICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5
MDgsOSArMjkwOSw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdD
aGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAgICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAg
ICAgICAgICAgICAgICBudW1FbGVtZW50cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0yOTI0LDcgKzI5MjIsNiBAQCBib29sIERv
Y3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQog
ICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAg
ICAgICBjYXNlIFhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09U
X05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9O
T0RFOgogICAgICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCA3MzgwMDBmZWNkMzE0YWUwZGNiZWY3YTJhOWNkODExZjU4MjUzNTNmLi4xNWM4
MTBkOWZkOTk3YjUyNmNhZmJmOWJhZTE1ZTM1YWYwNGIzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC0yMzQsNyArMjM0LDEwIEBAIHZvaWQgTm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOiB7Ci0gICAgICAgICAgICAgICAgKytmcmFnbWVudE5vZGVzOworICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICAgICAg
KytzaGFkb3dSb290Tm9kZXM7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICArK2ZyYWdtZW50Tm9kZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6IHsKQEAgLTI0NSwxMCArMjQ4LDYg
QEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgICAgICAgICAgKyt4cGF0aE5T
Tm9kZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKLSAgICAgICAgICAgICAgICArK3NoYWRvd1Jvb3RO
b2RlczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTg1Myw3ICsxODUyLDYgQEAgYm9vbCBOb2RlOjppc0RlZmF1bHROYW1lc3Bh
Y2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUklNYXliZUVtcHR5KSBjb25zdAogICAg
ICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RF
OgogICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hB
RE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBB
VFRSSUJVVEVfTk9ERTogewogICAgICAgICAgICAgY29uc3QgQXR0ciogYXR0ciA9IHN0YXRpY19j
YXN0PGNvbnN0IEF0dHIqPih0aGlzKTsKQEAgLTE4ODcsNyArMTg4NSw2IEBAIFN0cmluZyBOb2Rl
Ojpsb29rdXBQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nICZuYW1lc3BhY2VVUkkpIGNvbnN0CiAg
ICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2FzZSBT
SEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBj
YXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTE5NDYsNyArMTk0Myw2IEBAIFN0cmlu
ZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAg
ICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05P
REU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBT
SEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBj
YXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTIwMTIsNyArMjAwOCw2IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJS
c1RvTmV3bGluZXMsIGJvb2wmCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICBjYXNl
IE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBp
c051bGxTdHJpbmcgPSBmYWxzZTsKICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgICAgIGlmIChjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREUgfHwgY2hp
bGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQpAQCAt
MjA1MCw4ICsyMDQ1LDcgQEAgdm9pZCBOb2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcm
IHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgog
ICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIEVOVElUWV9SRUZFUkVOQ0Vf
Tk9ERToKLSAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNl
IFNIQURPV19ST09UX05PREU6IHsKKyAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OiB7CiAgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0b0NvbnRhaW5lck5v
ZGUodGhpcyk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgICAgIENo
aWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMTFi
ZDQxMTdjZmY5ZTc0MGFmNjBiZmZjYjc5NmJmMDBjMzg5MDYwLi5lYTY2MDY0YjE0NWZjN2ZjNDUx
ZTI1OTlmNTUwOTRlYTFhYTA1MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBw
dWJsaWM6CiAgICAgICAgIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgPSAxMSwKICAgICAgICAgTk9U
QVRJT05fTk9ERSA9IDEyLAogICAgICAgICBYUEFUSF9OQU1FU1BBQ0VfTk9ERSA9IDEzLAotICAg
ICAgICBTSEFET1dfUk9PVF9OT0RFID0gMTQKICAgICB9OwogICAgIGVudW0gRG9jdW1lbnRQb3Np
dGlvbiB7CiAgICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX0VRVUlWQUxFTlQgPSAweDAwLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKaW5kZXggOWI1NjliM2UwMTA5NjQ0NzU3YTUwYjNkODdkOWI3MTg1MWFmN2I1
My4uZGIzNzU5N2MyMjJkNzEwZDUxMmViNzRmZWU4YjFiNzNhNWQ1NzkyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsZW5ndGhP
ZkNvbnRlbnRzSW5Ob2RlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6
OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToK
ICAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtODQwLDcgKzgzOSw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gUmFu
Z2U6OnByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNz
UmVmCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgot
ICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBhc3NlcnQgdGhhdCBzb21lIG5vZGVzIG5ldmVyIGFwcGVhciBoZXJlPwogICAgICAgICBp
ZiAoYWN0aW9uID09IEVYVFJBQ1RfQ09OVEVOVFMgfHwgYWN0aW9uID09IENMT05FX0NPTlRFTlRT
KSB7CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCkBAIC05OTcsNyArOTk1LDcgQEAgdm9pZCBS
YW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld05vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogCiAgICAgTm9kZTo6Tm9kZVR5cGUgbmV3Tm9kZVR5cGUgPSBuZXdOb2RlLT5ub2Rl
VHlwZSgpOwogICAgIGludCBudW1OZXdDaGlsZHJlbjsKLSAgICBpZiAobmV3Tm9kZVR5cGUgPT0g
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgeworICAgIGlmIChuZXdOb2RlVHlwZSA9PSBO
b2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFICYmICFuZXdOb2RlLT5pc1NoYWRvd1Jvb3QoKSkg
ewogICAgICAgICAvLyBjaGVjayBlYWNoIGNoaWxkIG5vZGUsIG5vdCB0aGUgRG9jdW1lbnRGcmFn
bWVudCBpdHNlbGYKICAgICAgICAgbnVtTmV3Q2hpbGRyZW4gPSAwOwogICAgICAgICBmb3IgKE5v
ZGUqIGMgPSBuZXdOb2RlLT5maXJzdENoaWxkKCk7IGM7IGMgPSBjLT5uZXh0U2libGluZygpKSB7
CkBAIC0xMDI4LDkgKzEwMjYsMTMgQEAgdm9pZCBSYW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVmUHRy
PE5vZGU+IHBycE5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGNhc2UgTm9kZTo6RU5U
SVRZX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAg
IGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgaWYg
KG5ld05vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0
aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDUxLDcgKzEwNTMs
NyBAQCB2b2lkIFJhbmdlOjppbnNlcnROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gcHJwTmV3Tm9kZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRyPE5vZGU+IGxh
c3RDaGlsZDsKICAgICAgICAgaWYgKGNvbGxhcHNlZCkKLSAgICAgICAgICAgIGxhc3RDaGlsZCA9
IChuZXdOb2RlVHlwZSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSA/IG5ld05vZGUt
Pmxhc3RDaGlsZCgpIDogbmV3Tm9kZTsKKyAgICAgICAgICAgIGxhc3RDaGlsZCA9IChuZXdOb2Rl
VHlwZSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFICYmICFuZXdOb2RlLT5pc1NoYWRv
d1Jvb3QoKSkgPyBuZXdOb2RlLT5sYXN0Q2hpbGQoKSA6IG5ld05vZGU7CiAKICAgICAgICAgaW50
IHN0YXJ0T2Zmc2V0ID0gbV9zdGFydC5vZmZzZXQoKTsKICAgICAgICAgbV9zdGFydC5jb250YWlu
ZXIoKS0+aW5zZXJ0QmVmb3JlKG5ld05vZGUucmVsZWFzZSgpLCBtX3N0YXJ0LmNvbnRhaW5lcigp
LT5jaGlsZE5vZGUoc3RhcnRPZmZzZXQpLCBlYyk7CkBAIC0xMjE3LDggKzEyMTksNyBAQCBOb2Rl
KiBSYW5nZTo6Y2hlY2tOb2RlV09mZnNldChOb2RlKiBuLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAg
ICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVG
RVJFTkNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0g
ICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERTogeworICAgICAgICBjYXNlIE5vZGU6
OlhQQVRIX05BTUVTUEFDRV9OT0RFOiB7CiAgICAgICAgICAgICBpZiAoIW9mZnNldCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIE5vZGUqIGNoaWxkQmVmb3JlID0gbi0+
Y2hpbGROb2RlKG9mZnNldCAtIDEpOwpAQCAtMTI0Myw3ICsxMjQ0LDYgQEAgdm9pZCBSYW5nZTo6
Y2hlY2tOb2RlQkEoTm9kZSogbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGNh
c2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToK
ICAgICAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNI
QURPV19ST09UX05PREU6CiAgICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElE
X05PREVfVFlQRV9FUlI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgTm9kZTo6
Q0RBVEFfU0VDVElPTl9OT0RFOgpAQCAtMTI2NSw3ICsxMjY1LDYgQEAgdm9pZCBSYW5nZTo6Y2hl
Y2tOb2RlQkEoTm9kZSogbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGNhc2Ug
Tm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToK
ICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNl
IE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9O
T0RFOgpAQCAtMTM5Nyw3ICsxMzk2LDYgQEAgdm9pZCBSYW5nZTo6c2VsZWN0Tm9kZShOb2RlKiBy
ZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VT
U0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6
CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAg
ICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICBj
YXNlIE5vZGU6OkVOVElUWV9OT0RFOgpAQCAtMTQyMiw3ICsxNDIwLDYgQEAgdm9pZCBSYW5nZTo6
c2VsZWN0Tm9kZShOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgog
ICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hB
RE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURf
Tk9ERV9UWVBFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDYzLDcgKzE0
NjAsNiBAQCB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlQ29udGVudHMoTm9kZSogcmVmTm9kZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJV
Q1RJT05fTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAg
ICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAgIGNhc2UgTm9k
ZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpF
TlRJVFlfTk9ERToKQEAgLTE0OTcsMjMgKzE0OTMsMjcgQEAgdm9pZCBSYW5nZTo6c3Vycm91bmRD
b250ZW50cyhQYXNzUmVmUHRyPE5vZGU+IHBhc3NOZXdQYXJlbnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgIC8vIElOVkFMSURfTk9ERV9UWVBFX0VSUjogUmFpc2VkIGlmIG5vZGUgaXMgYW4gQXR0
ciwgRW50aXR5LCBEb2N1bWVudFR5cGUsIE5vdGF0aW9uLAogICAgIC8vIERvY3VtZW50LCBvciBE
b2N1bWVudEZyYWdtZW50IG5vZGUuCiAgICAgc3dpdGNoIChuZXdQYXJlbnQtPm5vZGVUeXBlKCkp
IHsKLSAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNl
IE5vZGU6OkVOVElUWV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0g
ICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RF
OgotICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpF
TEVNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgot
ICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAg
Y2FzZSBOb2RlOjpURVhUX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNF
X05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKKyAgICBjYXNlIE5v
ZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKKyAgICAgICAgaWYgKG5ld1BhcmVudC0+aXNT
aGFkb3dSb290KCkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWMgPSBSYW5nZUV4Y2Vw
dGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CisgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RF
OgorICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RU5U
SVRZX05PREU6CisgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgorICAgICAgICBlYyA9IFJh
bmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICBjYXNlIE5vZGU6OkNPTU1FTlRf
Tk9ERToKKyAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKKyAgICBjYXNlIE5vZGU6OkVOVElU
WV9SRUZFUkVOQ0VfTk9ERToKKyAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERToKKyAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKKyAgICBjYXNlIE5vZGU6OlhQQVRIX05B
TUVTUEFDRV9OT0RFOgorICAgICAgICBicmVhazsKICAgICB9CiAKICAgICAvLyBOT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlI6IFJhaXNlZCBpZiBhbiBhbmNlc3RvciBjb250YWluZXIgb2YgZWl0
aGVyIGJvdW5kYXJ5LXBvaW50IG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggOWJh
NjhiZDM1ODExM2NkYjFiZjAwODliNDY3NzIyMDY5YmU3NjZiZC4uZjA3MDZjMzQ2MTZlMWZhNmQ3
YjFhNGQ0Y2VhZjJhZjk0NzdmMzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAt
NzcsMTEgKzc3LDYgQEAgU3RyaW5nIFNoYWRvd1Jvb3Q6Om5vZGVOYW1lKCkgY29uc3QKICAgICBy
ZXR1cm4gIiNzaGFkb3ctcm9vdCI7CiB9CiAKLU5vZGU6Ok5vZGVUeXBlIFNoYWRvd1Jvb3Q6Om5v
ZGVUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU0hBRE9XX1JPT1RfTk9ERTsKLX0KLQogUGFz
c1JlZlB0cjxOb2RlPiBTaGFkb3dSb290OjpjbG9uZU5vZGUoYm9vbCkKIHsKICAgICAvLyBTaGFk
b3dSb290IHNob3VsZCBub3QgYmUgYXJiaXRyYXJpbHkgY2xvbmVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKaW5kZXggZDBiMTg5NDcyMTQ2YmM3OTIwOGE1OWE4YjFhZTFmMjE2NmZmNzI1Yy4uMzU5
MDdkMmQ3ZDMwNzIyODRiN2Q0MjA2MWFjNmJhMGY2M2VhY2UxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCkBAIC02OCw3ICs2OCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB+U2hhZG93Um9v
dCgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+
IGNsb25lTm9kZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2Vk
KE5vZGVUeXBlKSBjb25zdDsKIApAQCAtOTYsNyArOTUsNyBAQCBpbmxpbmUgYm9vbCBTaGFkb3dS
b290OjpuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKIAogaW5saW5lIFNoYWRv
d1Jvb3QqIHRvU2hhZG93Um9vdChOb2RlKiBub2RlKQogewotICAgIEFTU0VSVCghbm9kZSB8fCBu
b2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREUpOworICAgIEFTU0VSVCgh
bm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNo
YWRvd1Jvb3QqPihub2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcAppbmRleCA1MjI2YjIxNGMyNTgxMTc2MDkzNWM1NjY5NjRlNzYzMGYwMmY5
ZDE4Li5mZjI2ZWE0MjQ0MTNhOTAwZGFmNjFkOWJkZDE1YjBkNDZjZmY1NzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDQ1LDggKzQ0NSw2
IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxk
ZXImIHJlc3VsdCwgY29uc3QgTm9kZSogbm9kCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJF
TkNFX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6
WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRl
eCA5ODg4NTc0M2U3NzY4NjU2NmY5Mjk3ZjY1NDYzMTMwOGRhMzQ0YTdlLi45Y2MzYTAzMTY2ZTUx
MWFiMjU4NjcyZjQzY2I3MDA4MTVjNzc0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNiBAQCBpbmxpbmUgYm9v
bCBpc051bWJlcmVkSGVhZGVyRWxlbWVudChDb250YWluZXJOb2RlKiBub2RlKQogaW5saW5lIGJv
b2wgaXNSb290Tm9kZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9k
ZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFCiAgICAgICAgIHx8IG5vZGUt
Pmhhc1RhZ05hbWUoaHRtbFRhZyk7CiB9CiAKQEAgLTMxMCw3ICszMDksNyBAQCB2b2lkIEhUTUxF
bGVtZW50U3RhY2s6OnBvcFVudGlsRm9yZWlnbkNvbnRlbnRTY29wZU1hcmtlcigpCiAgICAgCiB2
b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hSb290Tm9kZShQYXNzUmVmUHRyPENvbnRhaW5lck5v
ZGU+IHJvb3ROb2RlKQogewotICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFIHx8IHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6
OlNIQURPV19ST09UX05PREUpOworICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBO
b2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKTsKICAgICBwdXNoUm9vdE5vZGVDb21tb24ocm9v
dE5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RWxlbWVudFN0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0
YWNrLmgKaW5kZXggZjYwNGY4MmM3ODM3OTk3NWQ2ZmZiMzFiOGRiYmRmMTYyN2VhZjk4OC4uNTY5
N2U4MGM4Nzg2Y2RhNGQwMzJiOWVkMDY5MjNlOTIxMGEyZTg1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaApAQCAtMTgwLDggKzE4MCw3IEBAIGlu
bGluZSBib29sIGlzSW5IVE1MTmFtZXNwYWNlKE5vZGUqIG5vZGUpCiAgICAgLy8gQSBEb2N1bWVu
dEZyYWdtZW50IHRha2VzIHRoZSBwbGFjZSBvZiB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aGVuIHBh
cnNpbmcKICAgICAvLyBmcmFnbWVudHMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGluIHRoZSBI
VE1MIG5hbWVzcGFjZS4KICAgICByZXR1cm4gbm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gSFRNTE5h
bWVzOjp4aHRtbE5hbWVzcGFjZVVSSQotICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5v
ZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9
PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkg
dG8gU2hhZG93Um9vdD8KKyAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hh
ZG93Um9vdD8KIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGls
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCmluZGV4IDRjNDVmY2JjYTFh
ODdmYWZmMmJiNTYyYWY1ZmVkNzcxZTVmYzQ4YWIuLjdhOGZmMzNjZjY3MzI1ZmIxZWI0NGUyODUy
OGZmNzdmZDZlMmYzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCkBAIC04NSw3ICs4NSw2
IEBAIGJvb2wgaXNWYWxpZENvbnRleHROb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgTm9k
ZTo6RU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RF
OgogICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6
U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2Fz
ZSBOb2RlOjpURVhUX05PREU6CiAgICAgICAgICAgICByZXR1cm4gIShub2RlLT5wYXJlbnROb2Rl
KCkgJiYgbm9kZS0+cGFyZW50Tm9kZSgpLT5pc0F0dHJpYnV0ZU5vZGUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAppbmRl
eCBkYTBlMzI1NTVlYzdjYjg0MzhhYjgwMjNhOThiYjYyY2VlZWI1M2I1Li5lZTZiYTY4YWM0Zjk1
OTkxZWI2MDEwYWI1MGQyMmI5MDZiNzRhYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKQEAgLTQxOCw3ICs0MTgsNiBA
QCB2b2lkIFdlYlBhZ2VTZXJpYWxpemVySW1wbDo6YnVpbGRDb250ZW50Rm9yTm9kZShOb2RlKiBu
b2RlLAogICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBj
YXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIC8vIFNob3VsZCBub3QgZXhpc3Qu
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
ZTczNTczMDNiZjM1MWE4YmRhYTAzMjcwNWI2M2JiYzYzOGRkM2MwLi5jMjAwN2IwYjkzMGYzYmJm
Mzc2NzE4NGJjYzNiZTMxMDQ5NDBmYjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDIt
MDMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgU2hh
ZG93Um9vdC5ub2RlVHlwZSByZXR1cm4gRE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm9kZVR5cGUuU0hBRE9XX1JP
T1RfTk9ERSB0eXBlIGlzIGZpbmFsbHkgZ29uZS4KKworICAgICAgICAqIGVkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpZ2F0dXJlLTAwMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9w
YXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dvcmQtZmllbGQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L25vZGV0eXBlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2lu
L2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWFsbC10ZXh0LWluLXRleHQtZmllbGQtYXNzZXJ0aW9u
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiByZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanM6Cisg
ICAgICAgIChNYXJrdXAuX2dldCk6CisKIDIwMTItMDItMDIgIFJheW1vbmQgVG95ICA8cnRveUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hlY2sgcGFyYW1ldGVycyB0byBiaXF1YWQgZmlsdGVy
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1
cmUtMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRl
LWxpZ2F0dXJlLTAwMS1leHBlY3RlZC50eHQKaW5kZXggOWMxMGRmNGQzZWIyMDVhMjUxNmQ0NjY0
MzQxYzI4MDliNGUxMTQ2NC4uNmE2ZDdiNmZhMjI0ZTNkYzgwMTI0NzQyMTg4YzY1ZGFjYjEwNGYy
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1
cmUtMDAxLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0ZS1saWdhdHVyZS0wMDEtZXhwZWN0ZWQudHh0CkBAIC03LDcgKzcsNyBAQCBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4
dCA+IERJViA+ICNzaAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcg
REVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJ
ViA+ICNzaGFkb3ctcm9vdCB0byAyIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290Ci1FRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRv
IDEgb2YgI3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEg
b2YgI3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG8gMSBvZiAjdGV4dCA+IERJViA+ICNzaGFk
b3ctcm9vdCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIFRoaXMgdGVzdCB0
ZXN0cyB3aGV0aGVyIHRoZSBCYWNrU3BhY2Uga2V5IGRlbGV0ZXMgb25seSB0aGUgbGFzdCBjaGFy
YWN0ZXIgb2YgYSBsaWdhdHVyZSAi4Lin4LixIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9jb3B5LWluLXBhc3N3b3JkLWZpZWxkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWluLXBhc3N3b3JkLWZpZWxkLWV4cGVj
dGVkLnR4dAppbmRleCAyMzA1ZDFjMGEzODZkYWU3M2VlNjA5ZmJkNzRiMDEwZmNmZmVhNTcwLi4x
OTBhOGVjYTNjYjZiMjAxOTFkNWUwOWU0MmQ5MTI0YzY4MmYwNmNiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbi1wYXNzd29yZC1maWVsZC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dv
cmQtZmllbGQtZXhwZWN0ZWQudHh0CkBAIC00LDggKzQsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpbwogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6W25vdCBtb2RpZmllZF0gcmVwbGFj
aW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRv
IDE0IG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNl
cnRBY3Rpb25QYXN0ZWQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gI3No
YWRvdy1yb290IHRvIDAgb2YgRElWID4gI3NoYWRvdy1yb290IHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAxNCBvZiAjdGV4dCA+IERJViA+ICNzaGFkb3ctcm9vdCB0byAxNCBvZiAjdGV4dCA+IERJViA+
ICNzaGFkb3ctcm9vdCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG8gMTQg
b2YgI3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDE0IG9m
ICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRvIDE0IG9mICN0ZXh0ID4gRElWID4gI3NoYWRv
dy1yb290IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgY29weWluZyBpcyBkaXNhYmxlZCBmb3IgcGFzc3dvcmQgZmllbGRzIGJ5IGF0
dGVtcHRpbmcgdG8gY29weSBmcm9tIGEgcGFzc3dvcmQgZmllbGQgYW5kIHBhc3RlIGludG8gYSB0
ZXh0ZmllbGQuIElmIHRoZSB0ZXN0IHBhc3NlcywgeW91J2xsIHNlZSBhIG9mICdQQVNTJyBtZXNz
YWdlIGJlbG93LCBhbmQgdGhlIHRleHRmaWVsZCB3aWxsIHJlbWFpbiB1bm1vZGlmaWVkLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50eHQKaW5k
ZXggY2I1MDU1MmZkMmE1NTg0ZmQ0N2EzYTJkZmE0NDc5Zjk0ZmM4YTgxYi4uMjFlY2NkNTVlOWY2
YzY5YjM3NWEyY2MzYjgwZDgyYTAwMmU0YzQyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogCiBUaGlz
IHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVUeXBlLgogUEFT
UyBrZXlnZW4ubm9kZVR5cGUgaXMgTm9kZS5FTEVNRU5UX05PREUKLVBBU1Mgc2hhZG93Lm5vZGVU
eXBlIGlzIDE0CitQQVNTIHNoYWRvdy5ub2RlVHlwZSBpcyBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREUKIFBBU1Mgc2hhZG93Q2hpbGQgaXMgbm9uLW51bGwuCi1QQVNTIHNoYWRvd0NoaWxkLm5v
ZGVUeXBlICE9IDE0IGlzIHRydWUKK1BBU1Mgc2hhZG93Q2hpbGQubm9kZVR5cGUgIT0gTm9kZS5E
T0NVTUVOVF9GUkFHTUVOVF9OT0RFIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L25vZGV0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5
cGUuaHRtbAppbmRleCBlYTFiYTFhZjU2MGNjMDkyZjAzYWM0NzgzZmUxZjg0MjZhNDEzMGY4Li4w
MTE5MjU4YWQ1MjA1ZGI0NTk1NzZhYjE0MzFhOTY3Mzc0MWQ1NDM3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbApAQCAtMTYsOSArMTYsOSBAQCBUaGlzIHRlc3Rz
IHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVUeXBlLgogICAgICAgICB2
YXIgc2hhZG93ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qoa2V5Z2VuKTsKICAgICAgICAgdmFyIHNo
YWRvd0NoaWxkID0gc2hhZG93LmZpcnN0Q2hpbGQ7CiAgICAgICAgIHNob3VsZEJlKCdrZXlnZW4u
bm9kZVR5cGUnLCAnTm9kZS5FTEVNRU5UX05PREUnKTsKLSAgICAgICAgc2hvdWxkQmUoJ3NoYWRv
dy5ub2RlVHlwZScsICcxNCcpOworICAgICAgICBzaG91bGRCZSgnc2hhZG93Lm5vZGVUeXBlJywg
J05vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERScpOwogICAgICAgICBzaG91bGRCZU5vbk51bGwo
J3NoYWRvd0NoaWxkJyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgnc2hhZG93Q2hpbGQubm9kZVR5
cGUgIT0gMTQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdzaGFkb3dDaGlsZC5ub2RlVHlwZSAh
PSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUnKTsKICAgICB9CiA8L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL2RlbGV0
aW5nL2RlbGV0ZS1hbGwtdGV4dC1pbi10ZXh0LWZpZWxkLWFzc2VydGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9kZWxldGluZy9kZWxl
dGUtYWxsLXRleHQtaW4tdGV4dC1maWVsZC1hc3NlcnRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDYw
NWVlZGI2MTMzNmRmNTljNTA3ZTliNTA5N2Q2YmM0NGI2ZWNhZDMuLmI0YjU4Y2M3M2JkM2U2NWU4
MDIxODViY2VlNjFkMTAwY2UzNzcyZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1hbGwtdGV4dC1pbi10ZXh0LWZp
ZWxkLWFzc2VydGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWFsbC10ZXh0LWluLXRleHQtZmllbGQt
YXNzZXJ0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDYgQEAKIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG8gMSBvZiAjdGV4dCA+
IERJViA+ICNzaGFkb3ctcm9vdCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJ
ViA+ICNzaGFkb3ctcm9vdCB0byAxIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBF
RElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3Rl
eHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG8gMSBvZiAjdGV4dCA+IERJViA+ICNzaGFkb3ctcm9v
dAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiAjc2hhZG93LXJvb3QgdG8g
MCBvZiBESVYgPiAjc2hhZG93LXJvb3QgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4g
I3NoYWRvdy1yb290IHRvIDAgb2YgRElWID4gI3NoYWRvdy1yb290IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0Rp
ZENoYW5nZU5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1
bXAtYXMtbWFya3VwLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpz
CmluZGV4IDhjYjY4ZWM4N2U3ZDlmOTYyZjQ0NzRmNWIxODFkMWQ4ZjY3YTgyNzMuLmM0ZDA2OWMx
NWQ3MmY1NTI4MTEzODMzZTgxNmMwMGFjMjkzNzRiNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanMKQEAgLTIxNSw4ICsyMTUsOSBAQCBNYXJrdXAuX2dldCA9IGZ1bmN0
aW9uKG5vZGUsIGRlcHRoKQogICAgICAgICAgICAgICAgIHN0ciArPSBNYXJrdXAuX2luZGVudChk
ZXB0aCArIDEpICsgJ3RoaXMudmFsdWU9IicgKyBub2RlLnZhbHVlICsgJyInOwogCiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgMTQ6IC8vIFNlZSBTSEFET1dfUk9PVF9OT0RFIG9uIE5vZGU6Ok5v
ZGVUeXBlCi0gICAgICAgIHN0ciArPSAiPHNoYWRvdzpyb290PiI7CisgICAgY2FzZSBOb2RlLkRP
Q1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09ICIjc2hh
ZG93LXJvb3QiKQorICAgICAgICAgIHN0ciArPSAiPHNoYWRvdzpyb290PiI7CiAgICAgfQogCiAg
ICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBsZW47
IGkrKykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125307</attachid>
            <date>2012-02-03 04:39:11 -0800</date>
            <delta_ts>2012-02-05 22:08:31 -0800</delta_ts>
            <desc>cleanup. remove unnecessary (hopefully) isShadowRoot() check logic as long as regressions does not happen.</desc>
            <filename>bug-77514-20120203213909.patch</filename>
            <type>text/plain</type>
            <size>28290</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2OGY5MWRkNzUzZmU2
MjJhYTVhNjcyOGE1MmIzMTk4MzRiMmVjZS4uYjUyNGQwZDNkYzcyNjQwYjVjOTdiZjEwNTkxN2Q2
NWQxMGJlN2RhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGls
ZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5SZXBsYWNlQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmR1
bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRDb250ZW50KToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlV09m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlQkEpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNl
bGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c3Vycm91bmRDb250
ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hh
ZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXApOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE5hbWVzOjppc1Jvb3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
U3RhY2s6OnB1c2hSb290Tm9kZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRT
dGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkhUTUxOYW1lc3BhY2UpOgorICAgICAgICAq
IHhtbC9YUGF0aFV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmlzVmFsaWRDb250
ZXh0Tm9kZSk6CisKIDIwMTItMDItMDIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdCBpbnRlcmZhY2UgaW5oZXJpdCBEb2N1bWVudEZy
YWdtZW50IGludGVyZmFjZSBpbiBJREwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZi
MmY2M2QzODM5NThhZmFiZjBmZTk1MTgwODI4Mjc2ZjIyNmViYTYuLjA2MTQxNDNhZTEzMjE4ZmNl
MDFlYTJlYjUyODlkYjRhODIwZjNmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDItMDIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSByZXR1cm4gRE9DVU1FTlRfRlJB
R01FTlRfTk9ERS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9ERSB0eXBlIGlzIGZpbmFsbHkgZ29uZS4KKworICAg
ICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5vZGUpOgorCiAyMDEyLTAyLTAy
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIGVtYmVkZGluZyBjb2RlIGZvciBNZWRp
YVN0cmVhbUNlbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKaW5kZXggNjFjMTVkNmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5OTUyOGU5OTgwNC4uZjRmYWQy
YWY2YTFiOGJjNzM4YWYyOWZiMGRiNTJmNDNhYmMzNzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0yNTQsMTEgKzI1NCwxMiBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iagogICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsIE5vdGF0aW9uLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgICAg
ICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNoYWRvd1Jvb3QgYmluZGluZyBp
cyBhbHdheXMgdXNlZCBhbmQgdGhpcworICAgICAgICAgICAgLy8gY29kZSBwYXRoIG5ldmVyIGJl
IHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHN1
Y2ggQVBJcywgd2Ugc2hvdWxkIGNhbGwgdG9WOChzdGF0aWNfY2FzdDxTaGFkb3dSb290Kj4uLiku
CisgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICAgICAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBEb2N1bWVu
dEZyYWdtZW50LCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6
OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTm9kZSwgbm9kZSk7Ci0gICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgICAgICB3
cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRW50aXR5UmVm
ZXJlbmNlLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTS5tbQppbmRleCA4Y2NiN2UyODZkZDQ2MDk1Y2Q4MDU1MWZkMTM0OWM3YjM1ZTM3NjVjLi43
ODA2MzRhY2JiNWIzMWI1ZGFmYTc1MWZkNTcyMDg4NjJkZjI0OGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTS5tbQpAQCAtMzI3LDggKzMyNyw2IEBAIENsYXNzIGtpdENsYXNzKFdlYkNv
cmU6Ok5vZGUqIGltcGwpCiAgICAgICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9i
amVjdGl2ZSBDIHdyYXBwZXIKICAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1CiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok5vZGU6OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICByZXR1
cm4gW0RPTU5vZGUgY2xhc3NdOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2ZkNTI0NmY4MGY2ODFhY2ZjNDk5NmY5
MDRjNWQ3Li42YTk4ZmVjNDgxNWY1ODAyZjI5YjA1MmMyZjlkOThiMDRkMzViYmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApA
QCAtMTYzLDEwICsxNjMsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5vZGUq
IGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBF
X05PREU6CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSo+KGlt
cGwpLCBmb3JjZU5ld09iamVjdCk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgorICAgICAgICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVkIFNoYWRvd1Jv
b3QgaXMgYWx3YXlzIHVzZWQgYW5kIHRoaXMKKyAgICAgICAgLy8gY29kZSBwYXRoIG5ldmVyIGJl
IHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAvLyBPbmNlIHdlIGhhdmUgc3VjaCBB
UElzLCB3ZSBzaG91bGQgY2FsbCB0b1Y4KHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPi4uKS4KKyAg
ICAgICAgQVNTRVJUKCFpbXBsLT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgICAgIHJldHVybiB0b1Y4
KHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwog
ICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8Tm90YXRpb24qPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwotICAgIGNhc2UgTm9kZTo6
U0hBRE9XX1JPT1RfTk9ERTogLy8gVGhlcmUncyBubyBJREwgY2xhc3MgZm9yIFNoYWRvd1Jvb3Qs
IGZhbGwtdGhyb3VnaCB0byBkZWZhdWx0IGFuZCB1c2UgTm9kZSBpbnN0ZWFkLgogICAgIGRlZmF1
bHQ6IGJyZWFrOyAvLyBYUEFUSF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KICAgICByZXR1cm4gVjhO
b2RlOjp3cmFwKGltcGwsIGZvcmNlTmV3T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDMxMDFlMDRlMTIxOTc4YWI3YjBiODZmZjkzODBjY2QzNjc4MWRjMWMuLmE4MzgyNDlkN2Jk
MzU0ZTU2Yjc4NmI1NjIyOGYyMzI3NWYyYTkzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtODc3LDYgKzg3NywxMSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2Rl
KE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRU
UklCVVRFX05PREU6CiAgICAgICAgIHJldHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGlj
X2Nhc3Q8QXR0cio+KGltcG9ydGVkTm9kZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hh
ZG93Um9vdCgpKSB7CisgICAgICAgICAgICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3Qg
YmUgZXhwbGljaXRseSBpbXBvcnRhYmxlLgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJl
IGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0
bHkuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdt
ZW50KiBvbGRGcmFnbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRl
ZE5vZGUpOwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBj
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTksOSAr
OTA0LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBv
cnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6
CiAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0Vf
Tk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qg
bm9kZXMgc2hvdWxkIG5vdCBiZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVp
dGhlciB0aGV5IGFyZSBpbXBvcnRlZCBhbG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3Jl
YXRlZCBpbXBsaWNpdGx5LgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKQEAgLTI4MzgsNyArMjg0MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlw
ZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAg
ICAgY2FzZSBURVhUX05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBj
YXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENP
TU1FTlRfTk9ERToKICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5
MDgsOSArMjkwOSw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdD
aGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAgICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAg
ICAgICAgICAgICAgICBudW1FbGVtZW50cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0yOTI0LDcgKzI5MjIsNiBAQCBib29sIERv
Y3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQog
ICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAg
ICAgICBjYXNlIFhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09U
X05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9O
T0RFOgogICAgICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCA3MzgwMDBmZWNkMzE0YWUwZGNiZWY3YTJhOWNkODExZjU4MjUzNTNmLi4xNWM4
MTBkOWZkOTk3YjUyNmNhZmJmOWJhZTE1ZTM1YWYwNGIzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC0yMzQsNyArMjM0LDEwIEBAIHZvaWQgTm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFOiB7Ci0gICAgICAgICAgICAgICAgKytmcmFnbWVudE5vZGVzOworICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICAgICAg
KytzaGFkb3dSb290Tm9kZXM7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICArK2ZyYWdtZW50Tm9kZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6IHsKQEAgLTI0NSwxMCArMjQ4LDYg
QEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgICAgICAgICAgKyt4cGF0aE5T
Tm9kZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKLSAgICAgICAgICAgICAgICArK3NoYWRvd1Jvb3RO
b2RlczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTg1Myw3ICsxODUyLDYgQEAgYm9vbCBOb2RlOjppc0RlZmF1bHROYW1lc3Bh
Y2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUklNYXliZUVtcHR5KSBjb25zdAogICAg
ICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RF
OgogICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hB
RE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBB
VFRSSUJVVEVfTk9ERTogewogICAgICAgICAgICAgY29uc3QgQXR0ciogYXR0ciA9IHN0YXRpY19j
YXN0PGNvbnN0IEF0dHIqPih0aGlzKTsKQEAgLTE4ODcsNyArMTg4NSw2IEBAIFN0cmluZyBOb2Rl
Ojpsb29rdXBQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nICZuYW1lc3BhY2VVUkkpIGNvbnN0CiAg
ICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2FzZSBT
SEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBj
YXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTE5NDYsNyArMTk0Myw2IEBAIFN0cmlu
ZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAg
ICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05P
REU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBT
SEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBj
YXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTIwMTIsNyArMjAwOCw2IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJS
c1RvTmV3bGluZXMsIGJvb2wmCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICBjYXNl
IE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBp
c051bGxTdHJpbmcgPSBmYWxzZTsKICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgICAgIGlmIChjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREUgfHwgY2hp
bGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQpAQCAt
MjA1MCw4ICsyMDQ1LDcgQEAgdm9pZCBOb2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcm
IHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgog
ICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIEVOVElUWV9SRUZFUkVOQ0Vf
Tk9ERToKLSAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNl
IFNIQURPV19ST09UX05PREU6IHsKKyAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OiB7CiAgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0b0NvbnRhaW5lck5v
ZGUodGhpcyk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgICAgIENo
aWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMTFi
ZDQxMTdjZmY5ZTc0MGFmNjBiZmZjYjc5NmJmMDBjMzg5MDYwLi5lYTY2MDY0YjE0NWZjN2ZjNDUx
ZTI1OTlmNTUwOTRlYTFhYTA1MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBw
dWJsaWM6CiAgICAgICAgIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgPSAxMSwKICAgICAgICAgTk9U
QVRJT05fTk9ERSA9IDEyLAogICAgICAgICBYUEFUSF9OQU1FU1BBQ0VfTk9ERSA9IDEzLAotICAg
ICAgICBTSEFET1dfUk9PVF9OT0RFID0gMTQKICAgICB9OwogICAgIGVudW0gRG9jdW1lbnRQb3Np
dGlvbiB7CiAgICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX0VRVUlWQUxFTlQgPSAweDAwLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKaW5kZXggOWI1NjliM2UwMTA5NjQ0NzU3YTUwYjNkODdkOWI3MTg1MWFmN2I1
My4uZGJlN2ZjY2NkZTM5MDZiZTI3OTE1YjI2NTNmMGNlMjg0Mzk1OTdmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsZW5ndGhP
ZkNvbnRlbnRzSW5Ob2RlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6
OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToK
ICAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkTm9kZUNvdW50KCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtODQwLDcgKzgzOSw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gUmFu
Z2U6OnByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNz
UmVmCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgot
ICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBhc3NlcnQgdGhhdCBzb21lIG5vZGVzIG5ldmVyIGFwcGVhciBoZXJlPwogICAgICAgICBp
ZiAoYWN0aW9uID09IEVYVFJBQ1RfQ09OVEVOVFMgfHwgYWN0aW9uID09IENMT05FX0NPTlRFTlRT
KSB7CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCkBAIC0xMDI4LDcgKzEwMjYsNiBAQCB2b2lk
IFJhbmdlOjppbnNlcnROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gcHJwTmV3Tm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5P
VEFUSU9OX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgotICAgIGNhc2UgTm9k
ZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJ
RF9OT0RFX1RZUEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTEyMTcs
OCArMTIxNCw3IEBAIE5vZGUqIFJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBv
ZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBjYXNl
IE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9O
QU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiB7Cisg
ICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlm
ICghb2Zmc2V0KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgTm9kZSog
Y2hpbGRCZWZvcmUgPSBuLT5jaGlsZE5vZGUob2Zmc2V0IC0gMSk7CkBAIC0xMjQzLDcgKzEyMzks
NiBAQCB2b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5v
ZGU6OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAg
ICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGVjID0gUmFuZ2VF
eGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CkBAIC0xMjY1LDcgKzEyNjAsNiBA
QCB2b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKICAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05P
REU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAgY2Fz
ZSBOb2RlOjpDT01NRU5UX05PREU6CkBAIC0xMzk3LDcgKzEzOTEsNiBAQCB2b2lkIFJhbmdlOjpz
ZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAg
Y2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNl
IE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNF
X05PREU6Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9E
RToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNDIyLDcgKzE0MTUs
NiBAQCB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9k
ZTo6RU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAg
ICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgZWMgPSBSYW5nZUV4
Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTE0NjMsNyArMTQ1NSw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyhO
b2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhU
X05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAg
ICAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAg
ICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgpAQCAtMTUxMiw3ICsxNTAzLDYgQEAgdm9pZCBS
YW5nZTo6c3Vycm91bmRDb250ZW50cyhQYXNzUmVmUHRyPE5vZGU+IHBhc3NOZXdQYXJlbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6CiAgICAgICAgIGNhc2UgTm9k
ZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1Rf
Tk9ERToKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCmluZGV4IDliYTY4YmQzNTgxMTNjZGIxYmYwMDg5YjQ2NzcyMjA2OWJlNzY2YmQuLmYwNzA2
YzM0NjE2ZTFmYTZkN2IxYTRkNGNlYWYyYWY5NDc3ZjM5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKQEAgLTc3LDExICs3Nyw2IEBAIFN0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuICIjc2hhZG93LXJvb3QiOwogfQogCi1Ob2RlOjpOb2RlVHlwZSBT
aGFkb3dSb290Ojpub2RlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNIQURPV19ST09UX05P
REU7Ci19Ci0KIFBhc3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wpCiB7
CiAgICAgLy8gU2hhZG93Um9vdCBzaG91bGQgbm90IGJlIGFyYml0cmFyaWx5IGNsb25lZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IGQwYjE4OTQ3MjE0NmJjNzkyMDhhNTlhOGIxYWUxZjIx
NjZmZjcyNWMuLjM1OTA3ZDJkN2QzMDcyMjg0YjdkNDIwNjFhYzZiYTBmNjNlYWNlMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjgsNyArNjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgflNoYWRvd1Jvb3QoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CiAKQEAgLTk2LDcgKzk1LDcgQEAgaW5saW5l
IGJvb2wgU2hhZG93Um9vdDo6bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiAK
IGlubGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkKIHsKLSAgICBBU1NF
UlQoIW5vZGUgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFKTsK
KyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTaGFkb3dSb290Kj4obm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggNTIyNmIyMTRjMjU4MTE3NjA5MzVjNTY2
OTY0ZTc2MzBmMDJmOWQxOC4uMWFhMjdjNWYzNGFmZmFiYzIwYmM4NzNkZjg5MGZhM2ZhMDk5NzE0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAg
LTQ0NSw3ICs0NDUsNiBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1
cChTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IE5vZGUqIG5vZAogICAgIGNhc2UgTm9kZTo6
RU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAg
ICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9X
X1JPT1RfTk9ERToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVt
ZW50U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFj
ay5jcHAKaW5kZXggOTg4ODU3NDNlNzc2ODY1NjZmOTI5N2Y2NTQ2MzEzMDhkYTM0NGE3ZS4uOWNj
M2EwMzE2NmU1MTFhYjI1ODY3MmY0M2NiNzAwODE1Yzc3NDAyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTUzLDcgKzUzLDYgQEAg
aW5saW5lIGJvb2wgaXNOdW1iZXJlZEhlYWRlckVsZW1lbnQoQ29udGFpbmVyTm9kZSogbm9kZSkK
IGlubGluZSBib29sIGlzUm9vdE5vZGUoQ29udGFpbmVyTm9kZSogbm9kZSkKIHsKICAgICByZXR1
cm4gbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFCi0gICAg
ICAgIHx8IG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERQogICAgICAg
ICB8fCBub2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpOwogfQogCkBAIC0zMTAsNyArMzA5LDcgQEAg
dm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BVbnRpbEZvcmVpZ25Db250ZW50U2NvcGVNYXJrZXIo
KQogICAgIAogdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwdXNoUm9vdE5vZGUoUGFzc1JlZlB0cjxD
b250YWluZXJOb2RlPiByb290Tm9kZSkKIHsKLSAgICBBU1NFUlQocm9vdE5vZGUtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSB8fCByb290Tm9kZS0+bm9kZVR5cGUo
KSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFKTsKKyAgICBBU1NFUlQocm9vdE5vZGUtPm5vZGVU
eXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7CiAgICAgcHVzaFJvb3ROb2Rl
Q29tbW9uKHJvb3ROb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TEVsZW1lbnRTdGFjay5oCmluZGV4IGY2MDRmODJjNzgzNzk5NzVkNmZmYjMxYjhkYmJkZjE2Mjdl
YWY5ODguLjU2OTdlODBjODc4NmNkYTRkMDMyYjllZDA2OTIzZTkyMTBhMmU4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKQEAgLTE4MCw4ICsx
ODAsNyBAQCBpbmxpbmUgYm9vbCBpc0luSFRNTE5hbWVzcGFjZShOb2RlKiBub2RlKQogICAgIC8v
IEEgRG9jdW1lbnRGcmFnbWVudCB0YWtlcyB0aGUgcGxhY2Ugb2YgdGhlIGRvY3VtZW50IGVsZW1l
bnQgd2hlbiBwYXJzaW5nCiAgICAgLy8gZnJhZ21lbnRzIGFuZCBzaG91bGQgYmUgY29uc2lkZXJl
ZCBpbiB0aGUgSFRNTCBuYW1lc3BhY2UuCiAgICAgcmV0dXJuIG5vZGUtPm5hbWVzcGFjZVVSSSgp
ID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFCi0gICAgICAgIHx8IG5vZGUtPm5v
ZGVUeXBlKCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERTsgLy8gRklYTUU6IERvZXMgdGhpcyBh
bHNvIGFwcGx5IHRvIFNoYWRvd1Jvb3Q/CisgICAgICAgIHx8IG5vZGUtPm5vZGVUeXBlKCkgPT0g
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERTsgLy8gRklYTUU6IERvZXMgdGhpcyBhbHNvIGFw
cGx5IHRvIFNoYWRvd1Jvb3Q/CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcAppbmRleCA0
YzQ1ZmNiY2ExYTg3ZmFmZjJiYjU2MmFmNWZlZDc3MWU1ZmM0OGFiLi43YThmZjMzY2Y2NzMyNWZi
MWViNDRlMjg1MjhmZjc3ZmQ2ZTJmM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcApAQCAt
ODUsNyArODUsNiBAQCBib29sIGlzVmFsaWRDb250ZXh0Tm9kZShOb2RlKiBub2RlKQogICAgICAg
ICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZF
UkVOQ0VfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgotICAgICAgICBj
YXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuICEobm9kZS0+
cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNBdHRyaWJ1dGVOb2RlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKaW5kZXggZGEwZTMyNTU1ZWM3Y2I4NDM4YWI4MDIzYTk4YmI2MmNlZWViNTNiNS4uZWU2
YmE2OGFjNGY5NTk5MWViNjAxMGFiNTBkMjJiOTA2Yjc0YWIwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCkBAIC00MTgs
NyArNDE4LDYgQEAgdm9pZCBXZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5v
ZGUoTm9kZSogbm9kZSwKICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05P
REU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAvLyBTaG91bGQg
bm90IGV4aXN0LgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmU3MzU3MzAzYmYzNTFhOGJkYWEwMzI3MDViNjNiYmM2MzhkZDNjMC4uYzIwMDdi
MGI5MzBmM2JiZjM3NjcxODRiY2MzYmUzMTA0OTQwZmIxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTAyLTAzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBl
LlNIQURPV19ST09UX05PREUgdHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBlZGl0
aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWluLXBhc3N3b3JkLWZpZWxkLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtLXdpbi9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1hbGwtdGV4dC1pbi10ZXh0LWZpZWxk
LWFzc2VydGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcmVzb3VyY2VzL2R1bXAtYXMtbWFy
a3VwLmpzOgorICAgICAgICAoTWFya3VwLl9nZXQpOgorCiAyMDEyLTAyLTAyICBSYXltb25kIFRv
eSAgPHJ0b3lAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENoZWNrIHBhcmFtZXRlcnMgdG8gYmlx
dWFkIGZpbHRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLWxpZ2F0dXJlLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0
aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEtZXhwZWN0ZWQudHh0CmluZGV4IDljMTBkZjRkM2ViMjA1
YTI1MTZkNDY2NDM0MWMyODA5YjRlMTE0NjQuLjZhNmQ3YjZmYTIyNGUzZGM4MDEyNDc0MjE4OGM2
NWRhY2IxMDRmMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLWxpZ2F0dXJlLTAwMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9k
ZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAxLWV4cGVjdGVkLnR4dApAQCAtNyw3ICs3LDcgQEAg
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDEgb2YgI3RleHQgPiBESVYgPiAjc2gKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDEgb2Yg
I3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG8gMiBvZiAjdGV4dCA+IERJViA+ICNzaGFkb3ct
cm9vdAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+ICNzaGFk
b3ctcm9vdCB0byAxIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRvIDEgb2YgI3RleHQgPiBE
SVYgPiAjc2hhZG93LXJvb3QgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBU
aGlzIHRlc3QgdGVzdHMgd2hldGhlciB0aGUgQmFja1NwYWNlIGtleSBkZWxldGVzIG9ubHkgdGhl
IGxhc3QgY2hhcmFjdGVyIG9mIGEgbGlnYXR1cmUgIuC4p+C4sSIuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbi1wYXNzd29yZC1maWVsZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbi1wYXNzd29yZC1m
aWVsZC1leHBlY3RlZC50eHQKaW5kZXggMjMwNWQxYzBhMzg2ZGFlNzNlZTYwOWZiZDc0YjAxMGZj
ZmZlYTU3MC4uMTkwYThlY2EzY2I2YjIwMTkxZDVlMDllNDJkOTEyNGM2ODJmMDZjYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dvcmQtZmll
bGQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LWluLXBhc3N3b3JkLWZpZWxkLWV4cGVjdGVkLnR4dApAQCAtNCw4ICs0LDcgQEAgRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW8KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0Oltub3QgbW9kaWZp
ZWRdIHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+ICNzaGFk
b3ctcm9vdCB0byAxNCBvZiAjdGV4dCA+IERJViA+ICNzaGFkb3ctcm9vdCBnaXZlbkFjdGlvbjpX
ZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
IERJViA+ICNzaGFkb3ctcm9vdCB0byAwIG9mIERJViA+ICNzaGFkb3ctcm9vdCB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gMTQgb2YgI3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG8gMTQgb2YgI3Rl
eHQgPiBESVYgPiAjc2hhZG93LXJvb3QgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25z
dHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1y
b290IHRvIDE0IG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxNCBvZiAjdGV4dCA+IERJViA+ICNzaGFkb3ctcm9vdCB0byAxNCBvZiAjdGV4dCA+IERJ
ViA+ICNzaGFkb3ctcm9vdCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBz
dGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIFRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IGNvcHlpbmcgaXMgZGlzYWJsZWQgZm9yIHBhc3N3b3JkIGZp
ZWxkcyBieSBhdHRlbXB0aW5nIHRvIGNvcHkgZnJvbSBhIHBhc3N3b3JkIGZpZWxkIGFuZCBwYXN0
ZSBpbnRvIGEgdGV4dGZpZWxkLiBJZiB0aGUgdGVzdCBwYXNzZXMsIHlvdSdsbCBzZWUgYSBvZiAn
UEFTUycgbWVzc2FnZSBiZWxvdywgYW5kIHRoZSB0ZXh0ZmllbGQgd2lsbCByZW1haW4gdW5tb2Rp
ZmllZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0
ZWQudHh0CmluZGV4IGNiNTA1NTJmZDJhNTU4NGZkNDdhM2EyZGZhNDQ3OWY5NGZjOGE4MWIuLjIx
ZWNjZDU1ZTlmNmM2OWIzNzVhMmNjM2I4MGQ4MmEwMDJlNGM0MjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDkg
QEAKIAogVGhpcyB0ZXN0cyB0aGUgc2hhZG93IGhvc3QncyBhbmQgc2hhZG93IHJvb3QncyBub2Rl
VHlwZS4KIFBBU1Mga2V5Z2VuLm5vZGVUeXBlIGlzIE5vZGUuRUxFTUVOVF9OT0RFCi1QQVNTIHNo
YWRvdy5ub2RlVHlwZSBpcyAxNAorUEFTUyBzaGFkb3cubm9kZVR5cGUgaXMgTm9kZS5ET0NVTUVO
VF9GUkFHTUVOVF9OT0RFCiBQQVNTIHNoYWRvd0NoaWxkIGlzIG5vbi1udWxsLgotUEFTUyBzaGFk
b3dDaGlsZC5ub2RlVHlwZSAhPSAxNCBpcyB0cnVlCitQQVNTIHNoYWRvd0NoaWxkLm5vZGVUeXBl
ICE9IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L25vZGV0eXBlLmh0bWwKaW5kZXggZWExYmExYWY1NjBjYzA5MmYwM2FjNDc4M2ZlMWY4NDI2
YTQxMzBmOC4uMDExOTI1OGFkNTIwNWRiNDU5NTc2YWIxNDMxYTk2NzM3NDFkNTQzNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwKQEAgLTE2LDkgKzE2LDkgQEAg
VGhpcyB0ZXN0cyB0aGUgc2hhZG93IGhvc3QncyBhbmQgc2hhZG93IHJvb3QncyBub2RlVHlwZS4K
ICAgICAgICAgdmFyIHNoYWRvdyA9IGludGVybmFscy5zaGFkb3dSb290KGtleWdlbik7CiAgICAg
ICAgIHZhciBzaGFkb3dDaGlsZCA9IHNoYWRvdy5maXJzdENoaWxkOwogICAgICAgICBzaG91bGRC
ZSgna2V5Z2VuLm5vZGVUeXBlJywgJ05vZGUuRUxFTUVOVF9OT0RFJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdzaGFkb3cubm9kZVR5cGUnLCAnMTQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ3NoYWRvdy5u
b2RlVHlwZScsICdOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUnKTsKICAgICAgICAgc2hvdWxk
QmVOb25OdWxsKCdzaGFkb3dDaGlsZCcpOwotICAgICAgICBzaG91bGRCZVRydWUoJ3NoYWRvd0No
aWxkLm5vZGVUeXBlICE9IDE0Jyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnc2hhZG93Q2hpbGQu
bm9kZVR5cGUgIT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJyk7CiAgICAgfQogPC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRp
dGluZy9kZWxldGluZy9kZWxldGUtYWxsLXRleHQtaW4tdGV4dC1maWVsZC1hc3NlcnRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvZGVs
ZXRpbmcvZGVsZXRlLWFsbC10ZXh0LWluLXRleHQtZmllbGQtYXNzZXJ0aW9uLWV4cGVjdGVkLnR4
dAppbmRleCA2MDVlZWRiNjEzMzZkZjU5YzUwN2U5YjUwOTdkNmJjNDRiNmVjYWQzLi5iNGI1OGNj
NzNiZDNlNjVlODAyMTg1YmNlZTYxZDEwMGNlMzc3MmVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9kZWxldGluZy9kZWxldGUtYWxsLXRleHQt
aW4tdGV4dC1maWVsZC1hc3NlcnRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1hbGwtdGV4dC1pbi10
ZXh0LWZpZWxkLWFzc2VydGlvbi1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRvIDEg
b2YgI3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
I3RleHQgPiBESVYgPiAjc2hhZG93LXJvb3QgdG8gMSBvZiAjdGV4dCA+IERJViA+ICNzaGFkb3ct
cm9vdCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQogRURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mICN0ZXh0ID4gRElWID4gI3NoYWRvdy1yb290IHRvIDEgb2YgI3RleHQgPiBESVYgPiAj
c2hhZG93LXJvb3QKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gI3NoYWRv
dy1yb290IHRvIDAgb2YgRElWID4gI3NoYWRvdy1yb290IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAw
IG9mIERJViA+ICNzaGFkb3ctcm9vdCB0byAwIG9mIERJViA+ICNzaGFkb3ctcm9vdCBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jl
c291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFz
LW1hcmt1cC5qcwppbmRleCA4Y2I2OGVjODdlN2Q5Zjk2MmY0NDc0ZjViMTgxZDFkOGY2N2E4Mjcz
Li5jNGQwNjljMTVkNzJmNTUyODExMzgzM2U4MTZjMDBhYzI5Mzc0YjY2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMKKysrIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCkBAIC0yMTUsOCArMjE1LDkgQEAgTWFya3VwLl9n
ZXQgPSBmdW5jdGlvbihub2RlLCBkZXB0aCkKICAgICAgICAgICAgICAgICBzdHIgKz0gTWFya3Vw
Ll9pbmRlbnQoZGVwdGggKyAxKSArICd0aGlzLnZhbHVlPSInICsgbm9kZS52YWx1ZSArICciJzsK
IAogICAgICAgICBicmVhazsKLSAgICBjYXNlIDE0OiAvLyBTZWUgU0hBRE9XX1JPT1RfTk9ERSBv
biBOb2RlOjpOb2RlVHlwZQotICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOworICAgIGNh
c2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICBpZiAobm9kZS5ub2RlTmFt
ZSA9PSAiI3NoYWRvdy1yb290IikKKyAgICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOwog
ICAgIH0KIAogICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBub2RlLmNoaWxkTm9kZXMubGVuZ3Ro
OyBpIDwgbGVuOyBpKyspIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125570</attachid>
            <date>2012-02-05 22:08:38 -0800</date>
            <delta_ts>2012-02-05 22:26:33 -0800</delta_ts>
            <desc>regression has gone.</desc>
            <filename>bug-77514-20120206150837.patch</filename>
            <type>text/plain</type>
            <size>24663</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ2MzllMmYxNzU1Mzc1
YzU3M2NkMmJhZGU4YjA4MDBjMjg2ZGUzNi4uNDY1MTRjYWU3ZTY1MTBlM2RlNzJlNTgyYzAyNWUz
MTc4NmI1MzE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAyLTA1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGls
ZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5SZXBsYWNlQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmR1
bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRDb250ZW50KToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlV09m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlQkEpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNl
bGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c3Vycm91bmRDb250
ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hh
ZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc0hpZ2hlc3RBbmNlc3RvckRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFdpbGxCZVJl
cGxhY2VkKToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cCk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTmFtZXM6OmlzUm9vdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRT
dGFjazo6cHVzaFJvb3ROb2RlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0
YWNrLmg6CisgICAgICAgIChXZWJDb3JlOjppc0luSFRNTE5hbWVzcGFjZSk6CisgICAgICAgICog
eG1sL1hQYXRoVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6aXNWYWxpZENvbnRl
eHROb2RlKToKKwogMjAxMi0wMi0wMyAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgU3BlY3VsYXRpdmUgdW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFF0LVdp
bmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGE0Y2VkNGFmYThjNTlkZGNjNzJl
NDYyMzE1Mjg0M2RkOTRlNmZkNC4uNzc3NDVlNDM0ODdkMWYyMWZlMGM1NGRiMWEwMjhlNGIzYjA4
ZDk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0w
Mi0wNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBT
aGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9OT0RFLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlVHlwZS5TSEFET1df
Uk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgorCisgICAgICAgICogc3JjL1dlYlBhZ2VT
ZXJpYWxpemVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VTZXJpYWxpemVySW1w
bDo6YnVpbGRDb250ZW50Rm9yTm9kZSk6CisKIDIwMTItMDItMDMgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVc2UgdGhlIGN1cnJlbnQg
Y2xpcCB3aGVuIG1hcmtpbmcgcGFpbnRzIGFzIG9wYXF1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggNjFjMTVkNmI5NGY4MjhlMWRiYjE1ZGZhMjZj
YWI5OTUyOGU5OTgwNC4uZjRmYWQyYWY2YTFiOGJjNzM4YWYyOWZiMGRiNTJmNDNhYmMzNzZmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0yNTQs
MTEgKzI1NCwxMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iagogICAgICAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIE5vdGF0aW9uLCBub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREU6CisgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jvb3QsIGEgY2FjaGVk
IFNoYWRvd1Jvb3QgYmluZGluZyBpcyBhbHdheXMgdXNlZCBhbmQgdGhpcworICAgICAgICAgICAg
Ly8gY29kZSBwYXRoIG5ldmVyIGJlIHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAg
ICAgLy8gT25jZSB3ZSBoYXZlIHN1Y2ggQVBJcywgd2Ugc2hvdWxkIGNhbGwgdG9WOChzdGF0aWNf
Y2FzdDxTaGFkb3dSb290Kj4uLikuCisgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93
Um9vdCgpKTsKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBEb2N1bWVudEZyYWdtZW50LCBub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTm9kZSwgbm9kZSk7
Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNF
X05PREU6CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgRW50aXR5UmVmZXJlbmNlLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA4Y2NiN2UyODZkZDQ2MDk1Y2Q4MDU1
MWZkMTM0OWM3YjM1ZTM3NjVjLi43ODA2MzRhY2JiNWIzMWI1ZGFmYTc1MWZkNTcyMDg4NjJkZjI0
OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzI3LDggKzMyNyw2IEBA
IENsYXNzIGtpdENsYXNzKFdlYkNvcmU6Ok5vZGUqIGltcGwpCiAgICAgICAgICAgICAvLyBGSVhN
RTogQ3JlYXRlIGFuIFhQYXRoIG9iamVjdGl2ZSBDIHdyYXBwZXIKICAgICAgICAgICAgIC8vIFNl
ZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1CiAgICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgICAgICBjYXNlIFdlYkNvcmU6Ok5vZGU6OlNIQURPV19ST09UX05P
REU6Ci0gICAgICAgICAgICByZXR1cm4gW0RPTU5vZGUgY2xhc3NdOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2Zk
NTI0NmY4MGY2ODFhY2ZjNDk5NmY5MDRjNWQ3Li42YTk4ZmVjNDgxNWY1ODAyZjI5YjA1MmMyZjlk
OThiMDRkMzViYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtMTYzLDEwICsxNjMsMTMgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhTbG93KE5vZGUqIGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19j
YXN0PERvY3VtZW50VHlwZSo+KGltcGwpLCBmb3JjZU5ld09iamVjdCk7CiAgICAgY2FzZSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICAvLyBJbiBjYXNlIG9mIFNoYWRvd1Jv
b3QsIGEgY2FjaGVkIFNoYWRvd1Jvb3QgaXMgYWx3YXlzIHVzZWQgYW5kIHRoaXMKKyAgICAgICAg
Ly8gY29kZSBwYXRoIG5ldmVyIGJlIHVzZWQgaW4gY3VycmVudCBBUEkgc2V0LgorICAgICAgICAv
LyBPbmNlIHdlIGhhdmUgc3VjaCBBUElzLCB3ZSBzaG91bGQgY2FsbCB0b1Y4KHN0YXRpY19jYXN0
PFNoYWRvd1Jvb3QqPi4uKS4KKyAgICAgICAgQVNTRVJUKCFpbXBsLT5pc1NoYWRvd1Jvb3QoKSk7
CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBs
KSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24qPihpbXBsKSwgZm9yY2VOZXdPYmpl
Y3QpOwotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERTogLy8gVGhlcmUncyBubyBJREwg
Y2xhc3MgZm9yIFNoYWRvd1Jvb3QsIGZhbGwtdGhyb3VnaCB0byBkZWZhdWx0IGFuZCB1c2UgTm9k
ZSBpbnN0ZWFkLgogICAgIGRlZmF1bHQ6IGJyZWFrOyAvLyBYUEFUSF9OQU1FU1BBQ0VfTk9ERQog
ICAgIH0KICAgICByZXR1cm4gVjhOb2RlOjp3cmFwKGltcGwsIGZvcmNlTmV3T2JqZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZlZjRiYzc3MDk2YzI3YmQxZDRhZjgxYWIzYTZhYmJi
ZGZlNDExYTguLmJmNDFhYjA1OGIyOTNlZjQ3ZjU3MTJjNmQxYmJkNDk0MjgwMzE0NGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODc3LDYgKzg3NywxMSBAQCBQYXNzUmVmUHRyPE5vZGU+
IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNl
cHRpb25DbwogICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAgICAgIHJldHVybiBBdHRyOjpj
cmVhdGUoMCwgdGhpcywgc3RhdGljX2Nhc3Q8QXR0cio+KGltcG9ydGVkTm9kZSktPmF0dHIoKS0+
Y2xvbmUoKSk7CiAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CisgICAgICAgIGlm
IChpbXBvcnRlZE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICAvLyBTaGFkb3dS
b290IG5vZGVzIHNob3VsZCBub3QgYmUgZXhwbGljaXRseSBpbXBvcnRhYmxlLgorICAgICAgICAg
ICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIgaG9zdCBub2Rl
LCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBvbGRGcmFnbWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50RnJhZ21lbnQqPihpbXBvcnRlZE5vZGUpOwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gbmV3RnJhZ21lbnQgPSBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgIGlm
IChkZWVwKSB7CkBAIC04OTksOSArOTA0LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6
aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28KICAg
ICBjYXNlIERPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAg
Y2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05PREU6Ci0g
ICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hvdWxkIG5vdCBiZSBleHBsaWNpdGx5IGltcG9y
dGFibGUuCi0gICAgICAgIC8vIEVpdGhlciB0aGV5IGFyZSBpbXBvcnRlZCBhbG9uZyB3aXRoIHRo
ZWlyIGhvc3Qgbm9kZSwgb3IgY3JlYXRlZCBpbXBsaWNpdGx5LgogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTI4NDgsNyArMjg1MCw2IEBAIGJv
b2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKICAgICBj
YXNlIE5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBURVhUX05PREU6CiAgICAgY2FzZSBYUEFUSF9O
QU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBjYXNlIFBST0NFU1NJTkdfSU5T
VFJVQ1RJT05fTk9ERToKQEAgLTI5MTgsOSArMjkxOSw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJl
cGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAgICAgICAgICAgICBj
YXNlIEVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICBudW1FbGVtZW50cysrOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgotICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0yOTM0
LDcgKzI5MzIsNiBAQCBib29sIERvY3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hp
bGQsIE5vZGUqIG9sZENoaWxkKQogICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAg
IGNhc2UgVEVYVF9OT0RFOgogICAgICAgICBjYXNlIFhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAg
ICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJV
Q1RJT05fTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3MzgwMDBmZWNkMzE0YWUwZGNiZWY3YTJh
OWNkODExZjU4MjUzNTNmLi4xNWM4MTBkOWZkOTk3YjUyNmNhZmJmOWJhZTE1ZTM1YWYwNGIzODc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMzQsNyArMjM0LDEwIEBAIHZvaWQgTm9kZTo6ZHVtcFN0
YXRpc3RpY3MoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7Ci0gICAgICAgICAgICAgICAgKytm
cmFnbWVudE5vZGVzOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkK
KyAgICAgICAgICAgICAgICAgICAgKytzaGFkb3dSb290Tm9kZXM7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICArK2ZyYWdtZW50Tm9kZXM7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6
IHsKQEAgLTI0NSwxMCArMjQ4LDYgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAgICAg
ICAgICAgICAgICAgKyt4cGF0aE5TTm9kZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKLSAgICAgICAg
ICAgICAgICArK3NoYWRvd1Jvb3ROb2RlczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTg1Myw3ICsxODUyLDYgQEAgYm9vbCBO
b2RlOjppc0RlZmF1bHROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUklN
YXliZUVtcHR5KSBjb25zdAogICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNh
c2UgRE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05P
REU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERTogewogICAgICAgICAgICAgY29uc3Qg
QXR0ciogYXR0ciA9IHN0YXRpY19jYXN0PGNvbnN0IEF0dHIqPih0aGlzKTsKQEAgLTE4ODcsNyAr
MTg4NSw2IEBAIFN0cmluZyBOb2RlOjpsb29rdXBQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nICZu
YW1lc3BhY2VVUkkpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAg
Y2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVf
Tk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBj
b25zdCBBdHRyICphdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTE5
NDYsNyArMTk0Myw2IEBAIFN0cmluZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3Ry
aW5nICZwcmVmaXgpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAg
Y2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRf
Tk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBj
b25zdCBBdHRyICphdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0aGlzKTsKQEAgLTIw
MTIsNyArMjAwOCw2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IE5vZGUq
IG5vZGUsIGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMsIGJvb2wmCiAgICAgY2FzZSBOb2RlOjpF
TlRJVFlfTk9ERToKICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBj
YXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1df
Uk9PVF9OT0RFOgogICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKICAgICAgICAgZm9yIChO
b2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpDT01NRU5UX05PREUgfHwgY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19J
TlNUUlVDVElPTl9OT0RFKQpAQCAtMjA1MCw4ICsyMDQ1LDcgQEAgdm9pZCBOb2RlOjpzZXRUZXh0
Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBj
YXNlIEFUVFJJQlVURV9OT0RFOgogICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgogICAgICAgICBj
YXNlIEVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKKyAgICAgICAgY2FzZSBE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CiAgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250
YWluZXIgPSB0b0NvbnRhaW5lck5vZGUodGhpcyk7CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VS
VkVSUykKICAgICAgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24odGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCAzMTFiZDQxMTdjZmY5ZTc0MGFmNjBiZmZjYjc5NmJmMDBjMzg5MDYw
Li5lYTY2MDY0YjE0NWZjN2ZjNDUxZTI1OTlmNTUwOTRlYTFhYTA1MDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTEyMiw3ICsxMjIsNiBAQCBwdWJsaWM6CiAgICAgICAgIERPQ1VNRU5UX0ZSQUdNRU5UX05P
REUgPSAxMSwKICAgICAgICAgTk9UQVRJT05fTk9ERSA9IDEyLAogICAgICAgICBYUEFUSF9OQU1F
U1BBQ0VfTk9ERSA9IDEzLAotICAgICAgICBTSEFET1dfUk9PVF9OT0RFID0gMTQKICAgICB9Owog
ICAgIGVudW0gRG9jdW1lbnRQb3NpdGlvbiB7CiAgICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX0VR
VUlWQUxFTlQgPSAweDAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggOWI1NjliM2UwMTA5NjQ0NzU3
YTUwYjNkODdkOWI3MTg1MWFmN2I1My4uZGJlN2ZjY2NkZTM5MDZiZTI3OTE1YjI2NTNmMGNlMjg0
Mzk1OTdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC02NzcsNyArNjc3LDYgQEAgc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05f
Tk9ERToKICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9k
ZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkTm9kZUNvdW50
KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODQwLDcgKzgzOSw2IEBA
IFBhc3NSZWZQdHI8Tm9kZT4gUmFuZ2U6OnByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKEFj
dGlvblR5cGUgYWN0aW9uLCBQYXNzUmVmCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OlhQ
QVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAg
ICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhc3NlcnQgdGhhdCBzb21lIG5vZGVzIG5ldmVyIGFw
cGVhciBoZXJlPwogICAgICAgICBpZiAoYWN0aW9uID09IEVYVFJBQ1RfQ09OVEVOVFMgfHwgYWN0
aW9uID09IENMT05FX0NPTlRFTlRTKSB7CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCkBAIC0x
MDI4LDcgKzEwMjYsNiBAQCB2b2lkIFJhbmdlOjppbnNlcnROb2RlKFBhc3NSZWZQdHI8Tm9kZT4g
cHJwTmV3Tm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9E
RToKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgZWMgPSBS
YW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgZGVmYXVsdDoKQEAgLTEyMTcsOCArMTIxNCw3IEBAIE5vZGUqIFJhbmdlOjpjaGVja05vZGVX
T2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAg
ICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RUxFTUVO
VF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAg
ICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpT
SEFET1dfUk9PVF9OT0RFOiB7CisgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05P
REU6IHsKICAgICAgICAgICAgIGlmICghb2Zmc2V0KQogICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgICAgTm9kZSogY2hpbGRCZWZvcmUgPSBuLT5jaGlsZE5vZGUob2Zmc2V0IC0g
MSk7CkBAIC0xMjQzLDcgKzEyMzksNiBAQCB2b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBu
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9O
T0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAg
ICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6
CkBAIC0xMjY1LDcgKzEyNjAsNiBAQCB2b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9E
RToKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1Rf
Tk9ERToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJ
T05fTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CkBAIC0xMzk3LDcgKzEz
OTEsNiBAQCB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05P
REU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2Ug
Tm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURP
V19ST09UX05PREU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5v
ZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05P
REU6CkBAIC0xNDIyLDcgKzE0MTUsNiBAQCB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJl
Zk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6
Tk9UQVRJT05fTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAg
ICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NjMsNyArMTQ1NSw2IEBAIHZvaWQgUmFuZ2U6
OnNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAg
ICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlhQQVRI
X05BTUVTUEFDRV9OT0RFOgotICAgICAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RF
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9UWVBFX05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgpAQCAtMTUx
Miw3ICsxNTAzLDYgQEAgdm9pZCBSYW5nZTo6c3Vycm91bmRDb250ZW50cyhQYXNzUmVmUHRyPE5v
ZGU+IHBhc3NOZXdQYXJlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBjYXNlIE5vZGU6
OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIGNh
c2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDliYTY4YmQzNTgxMTNjZGIxYmYwMDg5YjQ2
NzcyMjA2OWJlNzY2YmQuLmYwNzA2YzM0NjE2ZTFmYTZkN2IxYTRkNGNlYWYyYWY5NDc3ZjM5Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTc3LDExICs3Nyw2IEBAIFN0cmluZyBT
aGFkb3dSb290Ojpub2RlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICIjc2hhZG93LXJvb3QiOwog
fQogCi1Ob2RlOjpOb2RlVHlwZSBTaGFkb3dSb290Ojpub2RlVHlwZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFNIQURPV19ST09UX05PREU7Ci19Ci0KIFBhc3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9v
dDo6Y2xvbmVOb2RlKGJvb2wpCiB7CiAgICAgLy8gU2hhZG93Um9vdCBzaG91bGQgbm90IGJlIGFy
Yml0cmFyaWx5IGNsb25lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IGQwYjE4OTQ3MjE0
NmJjNzkyMDhhNTlhOGIxYWUxZjIxNjZmZjcyNWMuLjM1OTA3ZDJkN2QzMDcyMjg0YjdkNDIwNjFh
YzZiYTBmNjNlYWNlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjgsNyArNjgsNiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgflNoYWRvd1Jvb3QoKTsKIAogICAgIHZpcnR1YWwgU3Ry
aW5nIG5vZGVOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CiAKQEAg
LTk2LDcgKzk1LDcgQEAgaW5saW5lIGJvb2wgU2hhZG93Um9vdDo6bmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpCiAKIGlubGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoTm9k
ZSogbm9kZSkKIHsKLSAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpTSEFET1dfUk9PVF9OT0RFKTsKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dS
b290KCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFkb3dSb290Kj4obm9kZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggNTM5Y2M1YmQw
NzdhZjgxMjY5MDk4YTEyOTNmODliNTNiNTUyYTdlMS4uZWU5MTE2ZDlhMzg5NzdiNzMyMjZhZjAw
ODBkZTA5NDY2MzhjZGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKQEAgLTQyNSwxMCArNDI1LDE3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uQWZ0
ZXJBZG9wdGluZ1RleHRSZXBsYWNlbWVudChQb3NpdGlvbiYgcG9zaXRpb24sIENoYXJhCiAgICAg
ICAgIHBvc2l0aW9uLm1vdmVUb09mZnNldChwb3NpdGlvbk9mZnNldCAtIG9sZExlbmd0aCArIG5l
d0xlbmd0aCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0hpZ2hlc3RBbmNlc3RvckRvY3Vt
ZW50RnJhZ21lbnQoTm9kZSogbm9kZSkgCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUq
IGhpZ2hlc3QgPSBoaWdoZXN0QW5jZXN0b3Iobm9kZSk7CisgICAgcmV0dXJuIGhpZ2hlc3QtPm5v
ZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSAmJiAhaGlnaGVzdC0+aXNT
aGFkb3dSb290KCk7Cit9CisKIHZvaWQgRnJhbWVTZWxlY3Rpb246OnRleHRXaWxsQmVSZXBsYWNl
ZChDaGFyYWN0ZXJEYXRhKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIG9sZExlbmd0
aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQogewogICAgIC8vIFRoZSBmcmFnbWVudCBjaGVjayBpcyBh
IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzMwMDYyLgotICAgIGlmIChpc05vbmUoKSB8fCAhbm9kZSB8fCBoaWdoZXN0QW5jZXN0
b3Iobm9kZSktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkKKyAg
ICBpZiAoaXNOb25lKCkgfHwgIW5vZGUgfHwgaXNIaWdoZXN0QW5jZXN0b3JEb2N1bWVudEZyYWdt
ZW50KG5vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBQb3NpdGlvbiBiYXNlID0gbV9zZWxl
Y3Rpb24uYmFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBB
Y2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9y
LmNwcAppbmRleCA1MjI2YjIxNGMyNTgxMTc2MDkzNWM1NjY5NjRlNzYzMGYwMmY5ZDE4Li4xYWEy
N2M1ZjM0YWZmYWJjMjBiYzg3M2RmODkwZmEzZmEwOTk3MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDQ1LDcgKzQ0NSw2IEBAIHZvaWQg
TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxkZXImIHJlc3Vs
dCwgY29uc3QgTm9kZSogbm9kCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6
CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFN
RVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCA5ODg4NTc0M2U3
NzY4NjU2NmY5Mjk3ZjY1NDYzMTMwOGRhMzQ0YTdlLi45Y2MzYTAzMTY2ZTUxMWFiMjU4NjcyZjQz
Y2I3MDA4MTVjNzc0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RWxlbWVudFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNiBAQCBpbmxpbmUgYm9vbCBpc051bWJlcmVk
SGVhZGVyRWxlbWVudChDb250YWluZXJOb2RlKiBub2RlKQogaW5saW5lIGJvb2wgaXNSb290Tm9k
ZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5ub2RlVHlwZSgpID09
IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUo
KSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFCiAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUo
aHRtbFRhZyk7CiB9CiAKQEAgLTMxMCw3ICszMDksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6
OnBvcFVudGlsRm9yZWlnbkNvbnRlbnRTY29wZU1hcmtlcigpCiAgICAgCiB2b2lkIEhUTUxFbGVt
ZW50U3RhY2s6OnB1c2hSb290Tm9kZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3ROb2Rl
KQogewotICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9G
UkFHTUVOVF9OT0RFIHx8IHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09U
X05PREUpOworICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVO
VF9GUkFHTUVOVF9OT0RFKTsKICAgICBwdXNoUm9vdE5vZGVDb21tb24ocm9vdE5vZGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKaW5kZXgg
ZjYwNGY4MmM3ODM3OTk3NWQ2ZmZiMzFiOGRiYmRmMTYyN2VhZjk4OC4uNTY5N2U4MGM4Nzg2Y2Rh
NGQwMzJiOWVkMDY5MjNlOTIxMGEyZTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxFbGVtZW50U3RhY2suaApAQCAtMTgwLDggKzE4MCw3IEBAIGlubGluZSBib29sIGlz
SW5IVE1MTmFtZXNwYWNlKE5vZGUqIG5vZGUpCiAgICAgLy8gQSBEb2N1bWVudEZyYWdtZW50IHRh
a2VzIHRoZSBwbGFjZSBvZiB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aGVuIHBhcnNpbmcKICAgICAv
LyBmcmFnbWVudHMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGluIHRoZSBIVE1MIG5hbWVzcGFj
ZS4KICAgICByZXR1cm4gbm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gSFRNTE5hbWVzOjp4aHRtbE5h
bWVzcGFjZVVSSQotICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFE
T1dfUk9PVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9v
dD8KKyAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9vdD8KIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCmluZGV4IDRjNDVmY2JjYTFhODdmYWZmMmJiNTYy
YWY1ZmVkNzcxZTVmYzQ4YWIuLjdhOGZmMzNjZjY3MzI1ZmIxZWI0NGUyODUyOGZmNzdmZDZlMmYz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCkBAIC04NSw3ICs4NSw2IEBAIGJvb2wgaXNW
YWxpZENvbnRleHROb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAgICAgICBj
YXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1Rf
Tk9ERToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBOb2RlOjpURVhU
X05PREU6CiAgICAgICAgICAgICByZXR1cm4gIShub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+
cGFyZW50Tm9kZSgpLT5pc0F0dHJpYnV0ZU5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAppbmRleCBkYTBlMzI1NTVl
YzdjYjg0MzhhYjgwMjNhOThiYjYyY2VlZWI1M2I1Li5lZTZiYTY4YWM0Zjk1OTkxZWI2MDEwYWI1
MGQyMmI5MDZiNzRhYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKQEAgLTQxOCw3ICs0MTgsNiBAQCB2b2lkIFdlYlBh
Z2VTZXJpYWxpemVySW1wbDo6YnVpbGRDb250ZW50Rm9yTm9kZShOb2RlKiBub2RlLAogICAgIGNh
c2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgog
ICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNI
QURPV19ST09UX05PREU6CiAgICAgICAgIC8vIFNob3VsZCBub3QgZXhpc3QuCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YTc0ZTc2MWYxYzM1
YTZmNmIzZDAzYWQ4NzFjYzg1ZjdmMjM0NGJmLi5hODQ3NjdlNWNmNTU4OGQ3MGM4MjcwNDAyYmFl
NzcwMzdhNDdmMmE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDItMDUgIEhheWF0byBJ
dG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2Rl
VHlwZSByZXR1cm4gRE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9ERSB0eXBl
IGlzIGZpbmFsbHkgZ29uZS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWw6Cisg
ICAgICAgICogcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzOgorICAgICAgICAoTWFya3VwLl9n
ZXQpOgorCiAyMDEyLTAyLTAzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA2NjU0LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50eHQKaW5kZXgg
Y2I1MDU1MmZkMmE1NTg0ZmQ0N2EzYTJkZmE0NDc5Zjk0ZmM4YTgxYi4uMjFlY2NkNTVlOWY2YzY5
YjM3NWEyY2MzYjgwZDgyYTAwMmU0YzQyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogCiBUaGlzIHRl
c3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVUeXBlLgogUEFTUyBr
ZXlnZW4ubm9kZVR5cGUgaXMgTm9kZS5FTEVNRU5UX05PREUKLVBBU1Mgc2hhZG93Lm5vZGVUeXBl
IGlzIDE0CitQQVNTIHNoYWRvdy5ub2RlVHlwZSBpcyBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05P
REUKIFBBU1Mgc2hhZG93Q2hpbGQgaXMgbm9uLW51bGwuCi1QQVNTIHNoYWRvd0NoaWxkLm5vZGVU
eXBlICE9IDE0IGlzIHRydWUKK1BBU1Mgc2hhZG93Q2hpbGQubm9kZVR5cGUgIT0gTm9kZS5ET0NV
TUVOVF9GUkFHTUVOVF9OT0RFIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L25vZGV0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUu
aHRtbAppbmRleCBlYTFiYTFhZjU2MGNjMDkyZjAzYWM0NzgzZmUxZjg0MjZhNDEzMGY4Li4wMTE5
MjU4YWQ1MjA1ZGI0NTk1NzZhYjE0MzFhOTY3Mzc0MWQ1NDM3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbApAQCAtMTYsOSArMTYsOSBAQCBUaGlzIHRlc3RzIHRo
ZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVUeXBlLgogICAgICAgICB2YXIg
c2hhZG93ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qoa2V5Z2VuKTsKICAgICAgICAgdmFyIHNoYWRv
d0NoaWxkID0gc2hhZG93LmZpcnN0Q2hpbGQ7CiAgICAgICAgIHNob3VsZEJlKCdrZXlnZW4ubm9k
ZVR5cGUnLCAnTm9kZS5FTEVNRU5UX05PREUnKTsKLSAgICAgICAgc2hvdWxkQmUoJ3NoYWRvdy5u
b2RlVHlwZScsICcxNCcpOworICAgICAgICBzaG91bGRCZSgnc2hhZG93Lm5vZGVUeXBlJywgJ05v
ZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERScpOwogICAgICAgICBzaG91bGRCZU5vbk51bGwoJ3No
YWRvd0NoaWxkJyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgnc2hhZG93Q2hpbGQubm9kZVR5cGUg
IT0gMTQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdzaGFkb3dDaGlsZC5ub2RlVHlwZSAhPSBO
b2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUnKTsKICAgICB9CiA8L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyBiL0xheW91dFRl
c3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwppbmRleCA4Y2I2OGVjODdlN2Q5Zjk2MmY0
NDc0ZjViMTgxZDFkOGY2N2E4MjczLi5jNGQwNjljMTVkNzJmNTUyODExMzgzM2U4MTZjMDBhYzI5
Mzc0YjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAu
anMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCkBAIC0yMTUs
OCArMjE1LDkgQEAgTWFya3VwLl9nZXQgPSBmdW5jdGlvbihub2RlLCBkZXB0aCkKICAgICAgICAg
ICAgICAgICBzdHIgKz0gTWFya3VwLl9pbmRlbnQoZGVwdGggKyAxKSArICd0aGlzLnZhbHVlPSIn
ICsgbm9kZS52YWx1ZSArICciJzsKIAogICAgICAgICBicmVhazsKLSAgICBjYXNlIDE0OiAvLyBT
ZWUgU0hBRE9XX1JPT1RfTk9ERSBvbiBOb2RlOjpOb2RlVHlwZQotICAgICAgICBzdHIgKz0gIjxz
aGFkb3c6cm9vdD4iOworICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAg
ICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PSAiI3NoYWRvdy1yb290IikKKyAgICAgICAgICBzdHIg
Kz0gIjxzaGFkb3c6cm9vdD4iOwogICAgIH0KIAogICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBu
b2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125575</attachid>
            <date>2012-02-05 22:26:40 -0800</date>
            <delta_ts>2012-02-07 01:47:36 -0800</delta_ts>
            <desc>ready for review. let me watch whether mac-build error is reproducible or not</desc>
            <filename>bug-77514-20120206152638.patch</filename>
            <type>text/plain</type>
            <size>24644</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ2MzllMmYxNzU1Mzc1
YzU3M2NkMmJhZGU4YjA4MDBjMjg2ZGUzNi4uY2JkZWMwMTY0YmFkMzM5ZjZlNDRmNmQ0ZDFiNmY5
M2FkZjM4OGExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAyLTA1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGls
ZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5SZXBsYWNlQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmR1
bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVsdE5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRDb250ZW50KToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlV09m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlQkEpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNl
bGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c3Vycm91bmRDb250
ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hh
ZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpub2RlSXNEZXRhY2hlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0V2lsbEJlUmVwbGFjZWQp
OgorICAgICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxO
YW1lczo6aXNSb290Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpw
dXNoUm9vdE5vZGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzSW5IVE1MTmFtZXNwYWNlKToKKyAgICAgICAgKiB4bWwvWFBh
dGhVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjppc1ZhbGlkQ29udGV4dE5vZGUp
OgorCiAyMDEyLTAyLTAzICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBTcGVjdWxhdGl2ZSB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXQtV2luZG93cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwYTRjZWQ0YWZhOGM1OWRkY2M3MmU0NjIzMTUy
ODQzZGQ5NGU2ZmQ0Li43Nzc0NWU0MzQ4N2QxZjIxZmUwYzU0ZGIxYTAyOGU0YjNiMDhkOTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTA1ICBI
YXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jv
b3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05P
REUgdHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBzcmMvV2ViUGFnZVNlcmlhbGl6
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpidWls
ZENvbnRlbnRGb3JOb2RlKToKKwogMjAxMi0wMi0wMyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVzZSB0aGUgY3VycmVudCBjbGlwIHdo
ZW4gbWFya2luZyBwYWludHMgYXMgb3BhcXVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmNwcAppbmRleCA2MWMxNWQ2Yjk0ZjgyOGUxZGJiMTVkZmEyNmNhYjk5NTI4
ZTk5ODA0Li40MTQzMzc1OGY4Y2M0MGVlOTM5NWEzYTg5NmQ4MGQ5MjBkYmE1Y2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTI1NCwxMSArMjU0
LDEyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY3JlYXRlV3JhcHBlcklubGluZShF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqCiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JF
QVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTm90YXRpb24sIG5vZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9E
RToKKyAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgU2hhZG93Um9vdCwgYSBjYWNoZWQgU2hhZG93
Um9vdCBiaW5kaW5nIGlzIGFsd2F5cyB1c2VkIGFuZCB0aGlzCisgICAgICAgICAgICAvLyBjb2Rl
IHBhdGggbmV2ZXIgYmUgdXNlZCBpbiBjdXJyZW50IEFQSSBzZXQuCisgICAgICAgICAgICAvLyBP
bmNlIHdlIGhhdmUgc3VjaCBBUElzLCB3ZSBzaG91bGQgY2FsbCBDUkVBVEVfRE9NX1dSQVBQRVIg
dXNpbmcgU2hhZG93Um9vdC4KKyAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290
KCkpOwogICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsIERvY3VtZW50RnJhZ21lbnQsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBOb2RlLCBub2RlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9E
RToKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFs
T2JqZWN0LCBFbnRpdHlSZWZlcmVuY2UsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IDhjY2I3ZTI4NmRkNDYwOTVjZDgwNTUxZmQx
MzQ5YzdiMzVlMzc2NWMuLjc4MDYzNGFjYmI1YjMxYjVkYWZhNzUxZmQ1NzIwODg2MmRmMjQ4ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0zMjcsOCArMzI3LDYgQEAgQ2xh
c3Mga2l0Q2xhc3MoV2ViQ29yZTo6Tm9kZSogaW1wbCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBD
cmVhdGUgYW4gWFBhdGggb2JqZWN0aXZlIEMgd3JhcHBlcgogICAgICAgICAgICAgLy8gU2VlIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTUKICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6Tm9kZTo6U0hBRE9XX1JPT1RfTk9ERToK
LSAgICAgICAgICAgIHJldHVybiBbRE9NTm9kZSBjbGFzc107CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IDRhZDEzZDRhZjdjZmQ1MjQ2
ZjgwZjY4MWFjZmM0OTk2ZjkwNGM1ZDcuLjZhOThmZWM0ODE1ZjU4MDJmMjliMDUyYzJmOWQ5OGIw
NGQzNWJiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5vZGVDdXN0b20uY3BwCkBAIC0xNjMsMTAgKzE2MywxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOFNsb3coTm9kZSogaW1wbCwgYm9vbCBmb3JjZU5ld09iamVjdCkKICAgICBjYXNlIE5v
ZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
RG9jdW1lbnRUeXBlKj4oaW1wbCksIGZvcmNlTmV3T2JqZWN0KTsKICAgICBjYXNlIE5vZGU6OkRP
Q1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgIC8vIEluIGNhc2Ugb2YgU2hhZG93Um9vdCwg
YSBjYWNoZWQgU2hhZG93Um9vdCBpcyBhbHdheXMgdXNlZCBhbmQgdGhpcworICAgICAgICAvLyBj
b2RlIHBhdGggbmV2ZXIgYmUgdXNlZCBpbiBjdXJyZW50IEFQSSBzZXQuCisgICAgICAgIC8vIE9u
Y2Ugd2UgaGF2ZSBzdWNoIEFQSXMsIHdlIHNob3VsZCBjYWxsIHRvVjgoc3RhdGljX2Nhc3Q8U2hh
ZG93Um9vdCo+Li4pLgorICAgICAgICBBU1NFUlQoIWltcGwtPmlzU2hhZG93Um9vdCgpKTsKICAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGltcGwpLCBm
b3JjZU5ld09iamVjdCk7CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgICAgICBy
ZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxOb3RhdGlvbio+KGltcGwpLCBmb3JjZU5ld09iamVjdCk7
Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiAvLyBUaGVyZSdzIG5vIElETCBjbGFz
cyBmb3IgU2hhZG93Um9vdCwgZmFsbC10aHJvdWdoIHRvIGRlZmF1bHQgYW5kIHVzZSBOb2RlIGlu
c3RlYWQuCiAgICAgZGVmYXVsdDogYnJlYWs7IC8vIFhQQVRIX05BTUVTUEFDRV9OT0RFCiAgICAg
fQogICAgIHJldHVybiBWOE5vZGU6OndyYXAoaW1wbCwgZm9yY2VOZXdPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggNmVmNGJjNzcwOTZjMjdiZDFkNGFmODFhYjNhNmFiYmJkZmU0
MTFhOC4uYmY0MWFiMDU4YjI5M2VmNDdmNTcxMmM2ZDFiYmQ0OTQyODAzMTQ0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC04NzcsNiArODc3LDExIEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9j
dW1lbnQ6OmltcG9ydE5vZGUoTm9kZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlv
bkNvCiAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKICAgICAgICAgcmV0dXJuIEF0dHI6OmNyZWF0
ZSgwLCB0aGlzLCBzdGF0aWNfY2FzdDxBdHRyKj4oaW1wb3J0ZWROb2RlKS0+YXR0cigpLT5jbG9u
ZSgpKTsKICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKKyAgICAgICAgaWYgKGlt
cG9ydGVkTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIC8vIFNoYWRvd1Jvb3Qg
bm9kZXMgc2hvdWxkIG5vdCBiZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCisgICAgICAgICAgICAv
LyBFaXRoZXIgdGhleSBhcmUgaW1wb3J0ZWQgYWxvbmcgd2l0aCB0aGVpciBob3N0IG5vZGUsIG9y
IGNyZWF0ZWQgaW1wbGljaXRseS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIERvY3VtZW50RnJhZ21lbnQqIG9sZEZyYWdtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRG
cmFnbWVudCo+KGltcG9ydGVkTm9kZSk7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBuZXdGcmFnbWVudCA9IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgaWYgKGRl
ZXApIHsKQEAgLTg5OSw5ICs5MDQsNiBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBv
cnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNh
c2UgRE9DVU1FTlRfTk9ERToKICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICBjYXNl
IFhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKLSAgICAg
ICAgLy8gU2hhZG93Um9vdCBub2RlcyBzaG91bGQgbm90IGJlIGV4cGxpY2l0bHkgaW1wb3J0YWJs
ZS4KLSAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIg
aG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtMjg0OCw3ICsyODUwLDYgQEAgYm9vbCBE
b2N1bWVudDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAogICAgIGNhc2Ug
Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIFRFWFRfTk9ERToKICAgICBjYXNlIFhQQVRIX05BTUVT
UEFDRV9OT0RFOgotICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVD
VElPTl9OT0RFOgpAQCAtMjkxOCw5ICsyOTE5LDYgQEAgYm9vbCBEb2N1bWVudDo6Y2FuUmVwbGFj
ZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCkKICAgICAgICAgICAgIGNhc2Ug
RUxFTUVOVF9OT0RFOgogICAgICAgICAgICAgICAgIG51bUVsZW1lbnRzKys7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTI5MzQsNyAr
MjkzMiw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwg
Tm9kZSogb2xkQ2hpbGQpCiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2Fz
ZSBURVhUX05PREU6CiAgICAgICAgIGNhc2UgWFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAg
IGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgY2FzZSBDT01NRU5UX05PREU6CiAgICAgICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVDVElP
Tl9OT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDczODAwMGZlY2QzMTRhZTBkY2JlZjdhMmE5Y2Q4
MTFmNTgyNTM1M2YuLjE1YzgxMGQ5ZmQ5OTdiNTI2Y2FmYmY5YmFlMTVlMzVhZjA0YjM4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTIzNCw3ICsyMzQsMTAgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlz
dGljcygpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKLSAgICAgICAgICAgICAgICArK2ZyYWdt
ZW50Tm9kZXM7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAg
ICAgICAgICAgICAgICAgICArK3NoYWRvd1Jvb3ROb2RlczsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICsrZnJhZ21lbnROb2RlczsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERTogewpA
QCAtMjQ1LDEwICsyNDgsNiBAQCB2b2lkIE5vZGU6OmR1bXBTdGF0aXN0aWNzKCkKICAgICAgICAg
ICAgICAgICArK3hwYXRoTlNOb2RlczsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERTogewotICAgICAgICAgICAg
ICAgICsrc2hhZG93Um9vdE5vZGVzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xODUzLDcgKzE4NTIsNiBAQCBib29sIE5vZGU6
OmlzRGVmYXVsdE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSU1heWJl
RW1wdHkpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBE
T0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToK
LSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRy
KiBhdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0cio+KHRoaXMpOwpAQCAtMTg4Nyw3ICsxODg1
LDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcgJm5hbWVz
cGFjZVVSSSkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RFOgogICAgICAgICBjYXNl
IERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RF
OgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAgICAgICAgICAgIGNvbnN0
IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRoaXMpOwpAQCAtMTk0Niw3
ICsxOTQzLDYgQEAgU3RyaW5nIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcg
JnByZWZpeCkgY29uc3QKICAgICAgICAgY2FzZSBOT1RBVElPTl9OT0RFOgogICAgICAgICBjYXNl
IERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsKICAgICAgICAgICAgIGNvbnN0
IEF0dHIgKmF0dHIgPSBzdGF0aWNfY2FzdDxjb25zdCBBdHRyICo+KHRoaXMpOwpAQCAtMjAxMiw3
ICsyMDA4LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kVGV4dENvbnRlbnQoY29uc3QgTm9kZSogbm9k
ZSwgYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgYm9vbCYKICAgICBjYXNlIE5vZGU6OkVOVElU
WV9OT0RFOgogICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19ST09U
X05PREU6CiAgICAgICAgIGlzTnVsbFN0cmluZyA9IGZhbHNlOwogICAgICAgICBmb3IgKE5vZGUq
IGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5ub2RlVHlwZSgpID09IE5vZGU6OkNP
TU1FTlRfTk9ERSB8fCBjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREUpCkBAIC0yMDUwLDggKzIwNDUsNyBAQCB2b2lkIE5vZGU6OnNldFRleHRDb250
ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2Ug
QVRUUklCVVRFX05PREU6CiAgICAgICAgIGNhc2UgRU5USVRZX05PREU6CiAgICAgICAgIGNhc2Ug
RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05P
REU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERTogeworICAgICAgICBjYXNlIERPQ1VN
RU5UX0ZSQUdNRU5UX05PREU6IHsKICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIGNvbnRhaW5l
ciA9IHRvQ29udGFpbmVyTm9kZSh0aGlzKTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJT
KQogICAgICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbih0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCmluZGV4IDMxMWJkNDExN2NmZjllNzQwYWY2MGJmZmNiNzk2YmYwMGMzODkwNjAuLmVh
NjYwNjRiMTQ1ZmM3ZmM0NTFlMjU5OWY1NTA5NGVhMWFhMDUwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAt
MTIyLDcgKzEyMiw2IEBAIHB1YmxpYzoKICAgICAgICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSA9
IDExLAogICAgICAgICBOT1RBVElPTl9OT0RFID0gMTIsCiAgICAgICAgIFhQQVRIX05BTUVTUEFD
RV9OT0RFID0gMTMsCi0gICAgICAgIFNIQURPV19ST09UX05PREUgPSAxNAogICAgIH07CiAgICAg
ZW51bSBEb2N1bWVudFBvc2l0aW9uIHsKICAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fRVFVSVZB
TEVOVCA9IDB4MDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA5YjU2OWIzZTAxMDk2NDQ3NTdhNTBi
M2Q4N2Q5YjcxODUxYWY3YjUzLi5kYmU3ZmNjY2RlMzkwNmJlMjc5MTViMjY1M2YwY2UyODQzOTU5
N2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY3Nyw3ICs2NzcsNiBAQCBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5v
ZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RF
OgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpT
SEFET1dfUk9PVF9OT0RFOgogICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NDAsNyArODM5LDYgQEAgUGFz
c1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9u
VHlwZSBhY3Rpb24sIFBhc3NSZWYKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05P
REU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhf
TkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAg
ICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGF0IHNvbWUgbm9kZXMgbmV2ZXIgYXBwZWFy
IGhlcmU/CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRVhUUkFDVF9DT05URU5UUyB8fCBhY3Rpb24g
PT0gQ0xPTkVfQ09OVEVOVFMpIHsKICAgICAgICAgICAgIGlmIChmcmFnbWVudCkKQEAgLTEwMjgs
NyArMTAyNiw2IEBAIHZvaWQgUmFuZ2U6Omluc2VydE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBO
ZXdOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgog
ICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBlYyA9IFJhbmdl
RXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgpAQCAtMTIxNyw4ICsxMjE0LDcgQEAgTm9kZSogUmFuZ2U6OmNoZWNrTm9kZVdPZmZz
ZXQoTm9kZSogbiwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAg
IGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBj
YXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNIQURP
V19ST09UX05PREU6IHsKKyAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERTog
ewogICAgICAgICAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICBOb2RlKiBjaGlsZEJlZm9yZSA9IG4tPmNoaWxkTm9kZShvZmZzZXQgLSAxKTsK
QEAgLTEyNDMsNyArMTIzOSw2IEBAIHZvaWQgUmFuZ2U6OmNoZWNrTm9kZUJBKE5vZGUqIG4sIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6
CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9U
QVRJT05fTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAg
ICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKQEAg
LTEyNjUsNyArMTI2MCw2IEBAIHZvaWQgUmFuZ2U6OmNoZWNrTm9kZUJBKE5vZGUqIG4sIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgog
ICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RE9D
VU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RF
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9O
T0RFOgogICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKQEAgLTEzOTcsNyArMTM5MSw2
IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGUoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToK
ICAgICAgICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2Rl
OjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JP
T1RfTk9ERToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToK
QEAgLTE0MjIsNyArMTQxNSw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGUoTm9kZSogcmVmTm9k
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToK
ICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpOT1RB
VElPTl9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAg
ICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ2Myw3ICsxNDU1LDYgQEAgdm9pZCBSYW5nZTo6c2Vs
ZWN0Tm9kZUNvbnRlbnRzKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAg
ICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFN
RVNQQUNFX05PREU6Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZ
UEVfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNTEyLDcg
KzE1MDMsNiBAQCB2b2lkIFJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKFBhc3NSZWZQdHI8Tm9kZT4g
cGFzc05ld1BhcmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgTm9kZTo6UFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToK
ICAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggOWJhNjhiZDM1ODExM2NkYjFiZjAwODliNDY3NzIy
MDY5YmU3NjZiZC4uZjA3MDZjMzQ2MTZlMWZhNmQ3YjFhNGQ0Y2VhZjJhZjk0NzdmMzliNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNzcsMTEgKzc3LDYgQEAgU3RyaW5nIFNoYWRv
d1Jvb3Q6Om5vZGVOYW1lKCkgY29uc3QKICAgICByZXR1cm4gIiNzaGFkb3ctcm9vdCI7CiB9CiAK
LU5vZGU6Ok5vZGVUeXBlIFNoYWRvd1Jvb3Q6Om5vZGVUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gU0hBRE9XX1JPT1RfTk9ERTsKLX0KLQogUGFzc1JlZlB0cjxOb2RlPiBTaGFkb3dSb290Ojpj
bG9uZU5vZGUoYm9vbCkKIHsKICAgICAvLyBTaGFkb3dSb290IHNob3VsZCBub3QgYmUgYXJiaXRy
YXJpbHkgY2xvbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggZDBiMTg5NDcyMTQ2YmM3
OTIwOGE1OWE4YjFhZTFmMjE2NmZmNzI1Yy4uMzU5MDdkMmQ3ZDMwNzIyODRiN2Q0MjA2MWFjNmJh
MGY2M2VhY2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC02OCw3ICs2OCw2IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB+U2hhZG93Um9vdCgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcg
bm9kZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApOwogICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKIApAQCAtOTYs
NyArOTUsNyBAQCBpbmxpbmUgYm9vbCBTaGFkb3dSb290OjpuZWVkc1JlYXR0YWNoSG9zdENoaWxk
cmVuQW5kU2hhZG93KCkKIAogaW5saW5lIFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChOb2RlKiBu
b2RlKQogewotICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNI
QURPV19ST09UX05PREUpOworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3Qo
KSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPihub2RlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA1MzljYzViZDA3N2Fm
ODEyNjkwOThhMTI5M2Y4OWI1M2I1NTJhN2UxLi5kYjU4N2U3NzVmZGE5YjhmNzY3ZWRkMjIyMTc5
N2ZkMjUxMTUzZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cApAQCAtNDI1LDEwICs0MjUsMTcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUG9zaXRpb25BZnRlckFk
b3B0aW5nVGV4dFJlcGxhY2VtZW50KFBvc2l0aW9uJiBwb3NpdGlvbiwgQ2hhcmEKICAgICAgICAg
cG9zaXRpb24ubW92ZVRvT2Zmc2V0KHBvc2l0aW9uT2Zmc2V0IC0gb2xkTGVuZ3RoICsgbmV3TGVu
Z3RoKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIG5vZGVJc0RldGFjaGVkRnJvbURvY3VtZW50
KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGhpZ2hlc3QgPSBo
aWdoZXN0QW5jZXN0b3Iobm9kZSk7CisgICAgcmV0dXJuIGhpZ2hlc3QtPm5vZGVUeXBlKCkgPT0g
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSAmJiAhaGlnaGVzdC0+aXNTaGFkb3dSb290KCk7
Cit9CisKIHZvaWQgRnJhbWVTZWxlY3Rpb246OnRleHRXaWxsQmVSZXBsYWNlZChDaGFyYWN0ZXJE
YXRhKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQg
bmV3TGVuZ3RoKQogewogICAgIC8vIFRoZSBmcmFnbWVudCBjaGVjayBpcyBhIHBlcmZvcm1hbmNl
IG9wdGltaXphdGlvbi4gU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMwMDYy
LgotICAgIGlmIChpc05vbmUoKSB8fCAhbm9kZSB8fCBoaWdoZXN0QW5jZXN0b3Iobm9kZSktPm5v
ZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkKKyAgICBpZiAoaXNOb25l
KCkgfHwgIW5vZGUgfHwgbm9kZUlzRGV0YWNoZWRGcm9tRG9jdW1lbnQobm9kZSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFBvc2l0aW9uIGJhc2UgPSBtX3NlbGVjdGlvbi5iYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDUyMjZiMjE0
YzI1ODExNzYwOTM1YzU2Njk2NGU3NjMwZjAyZjlkMTguLjFhYTI3YzVmMzRhZmZhYmMyMGJjODcz
ZGY4OTBmYTNmYTA5OTcxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwCkBAIC00NDUsNyArNDQ1LDYgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kU3RhcnRNYXJrdXAoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2QK
ICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICBjYXNlIE5vZGU6Ok5P
VEFUSU9OX05PREU6CiAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBj
YXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxFbGVtZW50U3RhY2suY3BwCmluZGV4IDk4ODg1NzQzZTc3Njg2NTY2ZjkyOTdmNjU0NjMx
MzA4ZGEzNDRhN2UuLjljYzNhMDMxNjZlNTExYWIyNTg2NzJmNDNjYjcwMDgxNWM3NzQwMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBA
IC01Myw3ICs1Myw2IEBAIGlubGluZSBib29sIGlzTnVtYmVyZWRIZWFkZXJFbGVtZW50KENvbnRh
aW5lck5vZGUqIG5vZGUpCiBpbmxpbmUgYm9vbCBpc1Jvb3ROb2RlKENvbnRhaW5lck5vZGUqIG5v
ZGUpCiB7CiAgICAgcmV0dXJuIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJB
R01FTlRfTk9ERQotICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19S
T09UX05PREUKICAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKTsKIH0KIApAQCAt
MzEwLDcgKzMwOSw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxGb3JlaWduQ29u
dGVudFNjb3BlTWFya2VyKCkKICAgICAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaFJvb3RO
b2RlKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gcm9vdE5vZGUpCiB7Ci0gICAgQVNTRVJUKHJv
b3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgfHwgcm9v
dE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6U0hBRE9XX1JPT1RfTk9ERSk7CisgICAgQVNTRVJU
KHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpOwog
ICAgIHB1c2hSb290Tm9kZUNvbW1vbihyb290Tm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaAppbmRleCBmNjA0ZjgyYzc4Mzc5OTc1ZDZm
ZmIzMWI4ZGJiZGYxNjI3ZWFmOTg4Li41Njk3ZTgwYzg3ODZjZGE0ZDAzMmI5ZWQwNjkyM2U5MjEw
YTJlODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFj
ay5oCkBAIC0xODAsOCArMTgwLDcgQEAgaW5saW5lIGJvb2wgaXNJbkhUTUxOYW1lc3BhY2UoTm9k
ZSogbm9kZSkKICAgICAvLyBBIERvY3VtZW50RnJhZ21lbnQgdGFrZXMgdGhlIHBsYWNlIG9mIHRo
ZSBkb2N1bWVudCBlbGVtZW50IHdoZW4gcGFyc2luZwogICAgIC8vIGZyYWdtZW50cyBhbmQgc2hv
dWxkIGJlIGNvbnNpZGVyZWQgaW4gdGhlIEhUTUwgbmFtZXNwYWNlLgogICAgIHJldHVybiBub2Rl
LT5uYW1lc3BhY2VVUkkoKSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJCi0gICAgICAg
IHx8IG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQotICAg
ICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREU7IC8vIEZJ
WE1FOiBEb2VzIHRoaXMgYWxzbyBhcHBseSB0byBTaGFkb3dSb290PworICAgICAgICB8fCBub2Rl
LT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU7IC8vIEZJWE1FOiBE
b2VzIHRoaXMgYWxzbyBhcHBseSB0byBTaGFkb3dSb290PwogfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
VXRpbC5jcHAKaW5kZXggNGM0NWZjYmNhMWE4N2ZhZmYyYmI1NjJhZjVmZWQ3NzFlNWZjNDhhYi4u
N2E4ZmYzM2NmNjczMjVmYjFlYjQ0ZTI4NTI4ZmY3N2ZkNmUyZjNlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoVXRpbC5jcHAKQEAgLTg1LDcgKzg1LDYgQEAgYm9vbCBpc1ZhbGlkQ29udGV4dE5vZGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBO
b2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05f
Tk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAg
IHJldHVybiAhKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzQXR0
cmlidXRlTm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBhZ2VTZXJpYWxpemVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
YWdlU2VyaWFsaXplckltcGwuY3BwCmluZGV4IGRhMGUzMjU1NWVjN2NiODQzOGFiODAyM2E5OGJi
NjJjZWVlYjUzYjUuLmVlNmJhNjhhYzRmOTU5OTFlYjYwMTBhYjUwZDIyYjkwNmI3NGFiMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcApAQCAtNDE4LDcgKzQxOCw2IEBAIHZvaWQgV2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpi
dWlsZENvbnRlbnRGb3JOb2RlKE5vZGUqIG5vZGUsCiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVf
Tk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAg
ICAgICAgLy8gU2hvdWxkIG5vdCBleGlzdC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRhNzRlNzYxZjFjMzVhNmY2YjNkMDNhZDg3MWNjODVm
N2YyMzQ0YmYuLmE4NDc2N2U1Y2Y1NTg4ZDcwYzgyNzA0MDJiYWU3NzAzN2E0N2YyYTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0wNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgTWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVO
VF9GUkFHTUVOVF9OT0RFLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzc1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOb2RlVHlwZS5TSEFET1dfUk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgor
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanM6CisgICAgICAgIChNYXJrdXAuX2dldCk6CisKIDIwMTItMDItMDMg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDY2NTQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dAppbmRleCBjYjUwNTUyZmQyYTU1ODRmZDQ3
YTNhMmRmYTQ0NzlmOTRmYzhhODFiLi4yMWVjY2Q1NWU5ZjZjNjliMzc1YTJjYzNiODBkODJhMDAy
ZTRjNDI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1l
eHBlY3RlZC50eHQKQEAgLTEsOSArMSw5IEBACiAKIFRoaXMgdGVzdHMgdGhlIHNoYWRvdyBob3N0
J3MgYW5kIHNoYWRvdyByb290J3Mgbm9kZVR5cGUuCiBQQVNTIGtleWdlbi5ub2RlVHlwZSBpcyBO
b2RlLkVMRU1FTlRfTk9ERQotUEFTUyBzaGFkb3cubm9kZVR5cGUgaXMgMTQKK1BBU1Mgc2hhZG93
Lm5vZGVUeXBlIGlzIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERQogUEFTUyBzaGFkb3dDaGls
ZCBpcyBub24tbnVsbC4KLVBBU1Mgc2hhZG93Q2hpbGQubm9kZVR5cGUgIT0gMTQgaXMgdHJ1ZQor
UEFTUyBzaGFkb3dDaGlsZC5ub2RlVHlwZSAhPSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUg
aXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS5odG1sCmluZGV4IGVhMWJhMWFm
NTYwY2MwOTJmMDNhYzQ3ODNmZTFmODQyNmE0MTMwZjguLjAxMTkyNThhZDUyMDVkYjQ1OTU3NmFi
MTQzMWE5NjczNzQxZDU0MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9ub2RldHlwZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlw
ZS5odG1sCkBAIC0xNiw5ICsxNiw5IEBAIFRoaXMgdGVzdHMgdGhlIHNoYWRvdyBob3N0J3MgYW5k
IHNoYWRvdyByb290J3Mgbm9kZVR5cGUuCiAgICAgICAgIHZhciBzaGFkb3cgPSBpbnRlcm5hbHMu
c2hhZG93Um9vdChrZXlnZW4pOwogICAgICAgICB2YXIgc2hhZG93Q2hpbGQgPSBzaGFkb3cuZmly
c3RDaGlsZDsKICAgICAgICAgc2hvdWxkQmUoJ2tleWdlbi5ub2RlVHlwZScsICdOb2RlLkVMRU1F
TlRfTk9ERScpOwotICAgICAgICBzaG91bGRCZSgnc2hhZG93Lm5vZGVUeXBlJywgJzE0Jyk7Cisg
ICAgICAgIHNob3VsZEJlKCdzaGFkb3cubm9kZVR5cGUnLCAnTm9kZS5ET0NVTUVOVF9GUkFHTUVO
VF9OT0RFJyk7CiAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgnc2hhZG93Q2hpbGQnKTsKLSAgICAg
ICAgc2hvdWxkQmVUcnVlKCdzaGFkb3dDaGlsZC5ub2RlVHlwZSAhPSAxNCcpOworICAgICAgICBz
aG91bGRCZVRydWUoJ3NoYWRvd0NoaWxkLm5vZGVUeXBlICE9IE5vZGUuRE9DVU1FTlRfRlJBR01F
TlRfTk9ERScpOwogICAgIH0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAt
YXMtbWFya3VwLmpzCmluZGV4IDhjYjY4ZWM4N2U3ZDlmOTYyZjQ0NzRmNWIxODFkMWQ4ZjY3YTgy
NzMuLmM0ZDA2OWMxNWQ3MmY1NTI4MTEzODMzZTgxNmMwMGFjMjkzNzRiNjYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcworKysgYi9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMKQEAgLTIxNSw4ICsyMTUsOSBAQCBNYXJrdXAu
X2dldCA9IGZ1bmN0aW9uKG5vZGUsIGRlcHRoKQogICAgICAgICAgICAgICAgIHN0ciArPSBNYXJr
dXAuX2luZGVudChkZXB0aCArIDEpICsgJ3RoaXMudmFsdWU9IicgKyBub2RlLnZhbHVlICsgJyIn
OwogCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMTQ6IC8vIFNlZSBTSEFET1dfUk9PVF9OT0RF
IG9uIE5vZGU6Ok5vZGVUeXBlCi0gICAgICAgIHN0ciArPSAiPHNoYWRvdzpyb290PiI7CisgICAg
Y2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgIGlmIChub2RlLm5vZGVO
YW1lID09ICIjc2hhZG93LXJvb3QiKQorICAgICAgICAgIHN0ciArPSAiPHNoYWRvdzpyb290PiI7
CiAgICAgfQogCiAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG5vZGUuY2hpbGROb2Rlcy5sZW5n
dGg7IGkgPCBsZW47IGkrKykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125787</attachid>
            <date>2012-02-07 01:47:49 -0800</date>
            <delta_ts>2012-02-12 23:10:11 -0800</delta_ts>
            <desc>no change in behavior</desc>
            <filename>bug-77514-20120207184747.patch</filename>
            <type>text/plain</type>
            <size>28013</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg1MTUxZWQyNDRkMDY3
M2JhZjI4Nzg0NDhkYWQ3ZmZiZTg5ZDA2Yi4uNTIwOGZmNjJmZDc1ZTM1YzU4NTE5MmQ5YWU5NGYy
OWYyZTdiMWVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAyLTA3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29sbGVjdFRhcmdldE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpjaGlsZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5S
ZXBsYWNlQ2hpbGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmR1bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVs
dE5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRD
b250ZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hl
Y2tOb2RlV09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlQkEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c3Vy
cm91bmRDb250ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAq
IGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvU2hhZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpub2RlSXNEZXRhY2hlZEZyb21Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0V2lsbEJl
UmVwbGFjZWQpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxOYW1lczo6aXNSb290Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dFN0YWNrOjpwdXNoUm9vdE5vZGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5IVE1MTmFtZXNwYWNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKiB4
bWwvWFBhdGhVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjppc1ZhbGlkQ29udGV4
dE5vZGUpOgorCiAyMDEyLTAyLTA2ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA2ODgzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBhMjlhNzUyYWRkNzNmNzdjZGExMDVmNjgyMzI4ZDhhMTFiNWM4
N2NiLi5jZWVlNmUwZWRmMmQ2OWNlMWQyYTBkYWJmMTM1MzIxNDYxMDk1ZWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTA3ICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5
cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUgdHlwZSBp
cyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBzcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpidWlsZENvbnRlbnRG
b3JOb2RlKToKKwogMjAxMi0wMi0wNiAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDYxYzE1ZDZiOTRmODI4ZTFkYmIx
NWRmYTI2Y2FiOTk1MjhlOTk4MDQuLjQxNDMzNzU4ZjhjYzQwZWU5Mzk1YTNhODk2ZDgwZDkyMGRi
YTVjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApA
QCAtMjU0LDExICsyNTQsMTIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVX
cmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmoKICAgICAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBOb3RhdGlv
biwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOgorICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBTaGFkb3dSb290LCBh
IGNhY2hlZCBTaGFkb3dSb290IGJpbmRpbmcgaXMgYWx3YXlzIHVzZWQgYW5kIHRoaXMKKyAgICAg
ICAgICAgIC8vIGNvZGUgcGF0aCBuZXZlciBiZSB1c2VkIGluIGN1cnJlbnQgQVBJIHNldC4KKyAg
ICAgICAgICAgIC8vIE9uY2Ugd2UgaGF2ZSBzdWNoIEFQSXMsIHdlIHNob3VsZCBjYWxsIENSRUFU
RV9ET01fV1JBUFBFUiB1c2luZyBTaGFkb3dSb290LgorICAgICAgICAgICAgQVNTRVJUKCFub2Rl
LT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRG9jdW1lbnRGcmFnbWVudCwgbm9kZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgotICAgICAg
ICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIE5v
ZGUsIG5vZGUpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZ
X1JFRkVSRU5DRV9OT0RFOgogICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsIEVudGl0eVJlZmVyZW5jZSwgbm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1t
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggOGNjYjdlMjg2ZGQ0
NjA5NWNkODA1NTFmZDEzNDljN2IzNWUzNzY1Yy4uNzgwNjM0YWNiYjViMzFiNWRhZmE3NTFmZDU3
MjA4ODYyZGYyNDhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTMyNyw4
ICszMjcsNiBAQCBDbGFzcyBraXRDbGFzcyhXZWJDb3JlOjpOb2RlKiBpbXBsKQogICAgICAgICAg
ICAgLy8gRklYTUU6IENyZWF0ZSBhbiBYUGF0aCBvYmplY3RpdmUgQyB3cmFwcGVyCiAgICAgICAg
ICAgICAvLyBTZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1NQog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpTSEFE
T1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgcmV0dXJuIFtET01Ob2RlIGNsYXNzXTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKaW5kZXggNGFk
MTNkNGFmN2NmZDUyNDZmODBmNjgxYWNmYzQ5OTZmOTA0YzVkNy4uNmE5OGZlYzQ4MTVmNTgwMmYy
OWIwNTJjMmY5ZDk4YjA0ZDM1YmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKQEAgLTE2MywxMCArMTYzLDEzIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0
KQogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxEb2N1bWVudFR5cGUqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwogICAg
IGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgLy8gSW4gY2FzZSBv
ZiBTaGFkb3dSb290LCBhIGNhY2hlZCBTaGFkb3dSb290IGlzIGFsd2F5cyB1c2VkIGFuZCB0aGlz
CisgICAgICAgIC8vIGNvZGUgcGF0aCBuZXZlciBiZSB1c2VkIGluIGN1cnJlbnQgQVBJIHNldC4K
KyAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHN1Y2ggQVBJcywgd2Ugc2hvdWxkIGNhbGwgdG9WOChz
dGF0aWNfY2FzdDxTaGFkb3dSb290Kj4uLikuCisgICAgICAgIEFTU0VSVCghaW1wbC0+aXNTaGFk
b3dSb290KCkpOwogICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEb2N1bWVudEZyYWdt
ZW50Kj4oaW1wbCksIGZvcmNlTmV3T2JqZWN0KTsKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05P
REU6CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE5vdGF0aW9uKj4oaW1wbCksIGZv
cmNlTmV3T2JqZWN0KTsKLSAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6IC8vIFRoZXJl
J3Mgbm8gSURMIGNsYXNzIGZvciBTaGFkb3dSb290LCBmYWxsLXRocm91Z2ggdG8gZGVmYXVsdCBh
bmQgdXNlIE5vZGUgaW5zdGVhZC4KICAgICBkZWZhdWx0OiBicmVhazsgLy8gWFBBVEhfTkFNRVNQ
QUNFX05PREUKICAgICB9CiAgICAgcmV0dXJuIFY4Tm9kZTo6d3JhcChpbXBsLCBmb3JjZU5ld09i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggOTA3NWY4YTNlNzFl
NzI3MWViY2MyMzk0YjZjZWY0YTc3ZTk1YTdjNS4uOTkzNDllY2YxYjMyM2ZmNmU0YzViMDNiZmJl
NmY3OWVhZTk4MDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNjks
NyArNjksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdE5vZGVzKE5vZGUqIG5vZGUsIE5v
ZGVWZWN0b3ImIG5vZGVzKQogCiBzdGF0aWMgdm9pZCBjb2xsZWN0VGFyZ2V0Tm9kZXMoTm9kZSog
bm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiB7Ci0gICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0g
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgeworICAgIGlmIChub2RlLT5ub2RlVHlwZSgp
ICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkp
IHsKICAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgLy8gdGhhdCBu
byBjYWxsZXJzIGNhbGwgd2l0aCByZWYgY291bnQgPT0gMCBhbmQgcGFyZW50ID0gMCAoYXMgb2Yg
dGhpcwogICAgIC8vIHdyaXRpbmcsIHRoZXJlIGFyZSBkZWZpbml0ZWx5IGNhbGxlcnMgd2hvIGNh
bGwgdGhhdCB3YXkpLgogCi0gICAgYm9vbCBpc0ZyYWdtZW50ID0gbmV3Q2hpbGQtPm5vZGVUeXBl
KCkgPT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERTsKKyAgICBib29sIGlzRnJhZ21lbnQgPSBuZXdD
aGlsZC0+bm9kZVR5cGUoKSA9PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFICYmICFuZXdDaGlsZC0+
aXNTaGFkb3dSb290KCk7CiAKICAgICAvLyBBZGQgdGhlIG5ldyBjaGlsZChyZW4pCiAgICAgUmVm
UHRyPE5vZGU+IGNoaWxkID0gaXNGcmFnbWVudCA/IG5ld0NoaWxkLT5maXJzdENoaWxkKCkgOiBu
ZXdDaGlsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDFiN2I2MTMzZDhmM2M2YThkZWIz
Y2NlNGFiYTI3M2EzOTY0MzQyNjkuLmQwM2JjOTU0OTBkZTM4NTBmMDQ5NDc0OWZjMGQ0YzgyNTQ5
NjAyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODczLDYgKzg3MywxMSBAQCBQYXNz
UmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9v
bCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAgICAgIHJl
dHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGljX2Nhc3Q8QXR0cio+KGltcG9ydGVkTm9k
ZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7
CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAg
ICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3QgYmUgZXhwbGljaXRseSBpbXBvcnRhYmxl
LgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdpdGggdGhl
aXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBvbGRGcmFnbWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRlZE5vZGUpOwogICAgICAgICBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTUsOSArOTAwLDYgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhj
ZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBET0NVTUVOVF9UWVBF
X05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19S
T09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hvdWxkIG5vdCBiZSBleHBs
aWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVpdGhlciB0aGV5IGFyZSBpbXBvcnRlZCBh
bG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3JlYXRlZCBpbXBsaWNpdGx5LgogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTI4NDQsNyAr
Mjg0Niw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkg
Y29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBURVhUX05PREU6CiAgICAg
Y2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBjYXNlIFBS
T0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5MTQsOSArMjkxNSw2IEBAIGJvb2wgRG9j
dW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAg
ICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICBudW1FbGVtZW50
cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTSEFET1dfUk9P
VF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CkBAIC0yOTMwLDcgKzI5MjgsNiBAQCBib29sIERvY3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQo
Tm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogICAgICAgICBjYXNlIE5PVEFUSU9OX05P
REU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAgICAgICBjYXNlIFhQQVRIX05BTUVTUEFD
RV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgICAgICBjYXNlIFBST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZmU2N2FiYjBiOTE0
MWFhMWYxYWMzZWMyODUzM2UxN2ViNWZlZDM5Li43MGU4NGI4NGU4Njg5Y2FhODYxZDVhMjY2ZGY0
YjQ5NmVjOGM5OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjcsNyArMjI3LDEwIEBAIHZvaWQg
Tm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7Ci0gICAgICAg
ICAgICAgICAgKytmcmFnbWVudE5vZGVzOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICAgICAgKytzaGFkb3dSb290Tm9kZXM7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICArK2ZyYWdtZW50Tm9kZXM7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIE5P
VEFUSU9OX05PREU6IHsKQEAgLTIzOCwxMCArMjQxLDYgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlz
dGljcygpCiAgICAgICAgICAgICAgICAgKyt4cGF0aE5TTm9kZXM7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6
IHsKLSAgICAgICAgICAgICAgICArK3NoYWRvd1Jvb3ROb2RlczsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTg0NCw3ICsxODQz
LDYgQEAgYm9vbCBOb2RlOjppc0RlZmF1bHROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUklNYXliZUVtcHR5KSBjb25zdAogICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6
CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERTogewogICAgICAg
ICAgICAgY29uc3QgQXR0ciogYXR0ciA9IHN0YXRpY19jYXN0PGNvbnN0IEF0dHIqPih0aGlzKTsK
QEAgLTE4NzgsNyArMTg3Niw2IEBAIFN0cmluZyBOb2RlOjpsb29rdXBQcmVmaXgoY29uc3QgQXRv
bWljU3RyaW5nICZuYW1lc3BhY2VVUkkpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9E
RToKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIERP
Q1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAg
ICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0
aGlzKTsKQEAgLTE5MzcsNyArMTkzNCw2IEBAIFN0cmluZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9E
RToKICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1F
TlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAg
ICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0
aGlzKTsKQEAgLTIwMDUsNyArMjAwMSw2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFRleHRDb250ZW50
KGNvbnN0IE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMsIGJvb2wmCiAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0Vf
Tk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgY2FzZSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKICAg
ICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREUgfHwgY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQpAQCAtMjA0Myw4ICsyMDM4LDcgQEAgdm9pZCBO
b2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgogICAgICAgICBjYXNlIEVOVElUWV9OT0RF
OgogICAgICAgICBjYXNlIEVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKKyAg
ICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CiAgICAgICAgICAgICBDb250YWlu
ZXJOb2RlKiBjb250YWluZXIgPSB0b0NvbnRhaW5lck5vZGUodGhpcyk7CiAjaWYgRU5BQkxFKE1V
VEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0
YXRpb24odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMTFiZDQxMTdjZmY5ZTc0MGFmNjBiZmZjYjc5
NmJmMDBjMzg5MDYwLi5lYTY2MDY0YjE0NWZjN2ZjNDUxZTI1OTlmNTUwOTRlYTFhYTA1MDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBwdWJsaWM6CiAgICAgICAgIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUgPSAxMSwKICAgICAgICAgTk9UQVRJT05fTk9ERSA9IDEyLAogICAgICAg
ICBYUEFUSF9OQU1FU1BBQ0VfTk9ERSA9IDEzLAotICAgICAgICBTSEFET1dfUk9PVF9OT0RFID0g
MTQKICAgICB9OwogICAgIGVudW0gRG9jdW1lbnRQb3NpdGlvbiB7CiAgICAgICAgIERPQ1VNRU5U
X1BPU0lUSU9OX0VRVUlWQUxFTlQgPSAweDAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggOWI1Njli
M2UwMTA5NjQ0NzU3YTUwYjNkODdkOWI3MTg1MWFmN2I1My4uNTI4NmE1MDlkYTM4YjdmNzhmNWU5
ZDMwY2QzNTkyYzUzODU2Y2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC02NzcsNyArNjc3LDYg
QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgot
ICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgcmV0dXJuIG5vZGUtPmNo
aWxkTm9kZUNvdW50KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODQw
LDcgKzgzOSw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gUmFuZ2U6OnByb2Nlc3NDb250ZW50c0JldHdl
ZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNzUmVmCiAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBj
YXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JP
T1RfTk9ERToKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhc3NlcnQgdGhhdCBzb21lIG5v
ZGVzIG5ldmVyIGFwcGVhciBoZXJlPwogICAgICAgICBpZiAoYWN0aW9uID09IEVYVFJBQ1RfQ09O
VEVOVFMgfHwgYWN0aW9uID09IENMT05FX0NPTlRFTlRTKSB7CiAgICAgICAgICAgICBpZiAoZnJh
Z21lbnQpCkBAIC05OTcsNyArOTk1LDcgQEAgdm9pZCBSYW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHBycE5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgTm9kZTo6Tm9k
ZVR5cGUgbmV3Tm9kZVR5cGUgPSBuZXdOb2RlLT5ub2RlVHlwZSgpOwogICAgIGludCBudW1OZXdD
aGlsZHJlbjsKLSAgICBpZiAobmV3Tm9kZVR5cGUgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERSkgeworICAgIGlmIChuZXdOb2RlVHlwZSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFICYmICFuZXdOb2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICAvLyBjaGVjayBlYWNo
IGNoaWxkIG5vZGUsIG5vdCB0aGUgRG9jdW1lbnRGcmFnbWVudCBpdHNlbGYKICAgICAgICAgbnVt
TmV3Q2hpbGRyZW4gPSAwOwogICAgICAgICBmb3IgKE5vZGUqIGMgPSBuZXdOb2RlLT5maXJzdENo
aWxkKCk7IGM7IGMgPSBjLT5uZXh0U2libGluZygpKSB7CkBAIC0xMDI4LDEwICsxMDI2LDEzIEBA
IHZvaWQgUmFuZ2U6Omluc2VydE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdOb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJ
TlZBTElEX05PREVfVFlQRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgorICAg
ICAgICBpZiAobmV3Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGVjID0gUmFu
Z2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTEyMTcsOCArMTIxOCw3IEBA
IE5vZGUqIFJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAg
ICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElU
WV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9E
RToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiB7CisgICAgICAgIGNhc2Ug
Tm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlmICghb2Zmc2V0KQog
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgTm9kZSogY2hpbGRCZWZvcmUg
PSBuLT5jaGlsZE5vZGUob2Zmc2V0IC0gMSk7CkBAIC0xMjQzLDcgKzEyNDMsNiBAQCB2b2lkIFJh
bmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAg
ICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9O
T0RFOgogICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9k
ZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklO
VkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBO
b2RlOjpDREFUQV9TRUNUSU9OX05PREU6CkBAIC0xMjY1LDcgKzEyNjQsNiBAQCB2b2lkIFJhbmdl
OjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAg
Y2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9O
T0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAg
IGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpDT01N
RU5UX05PREU6CkBAIC0xMzk3LDcgKzEzOTUsNiBAQCB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5v
ZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgY2FzZSBOb2RlOjpQ
Uk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlRFWFRf
Tk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
ICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAg
ICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNDIyLDcgKzE0MTksNiBAQCB2b2lkIFJh
bmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAgY2FzZSBOb2Rl
OjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5W
QUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NjMs
NyArMTQ1OSw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiByZWZOb2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19J
TlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6CiAgICAg
ICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAgICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICBjYXNlIE5v
ZGU6OkVOVElUWV9OT0RFOgpAQCAtMTUxMiw3ICsxNTA3LDYgQEAgdm9pZCBSYW5nZTo6c3Vycm91
bmRDb250ZW50cyhQYXNzUmVmUHRyPE5vZGU+IHBhc3NOZXdQYXJlbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAg
ICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFN
RVNQQUNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDli
YTY4YmQzNTgxMTNjZGIxYmYwMDg5YjQ2NzcyMjA2OWJlNzY2YmQuLmYwNzA2YzM0NjE2ZTFmYTZk
N2IxYTRkNGNlYWYyYWY5NDc3ZjM5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAg
LTc3LDExICs3Nyw2IEBAIFN0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuICIjc2hhZG93LXJvb3QiOwogfQogCi1Ob2RlOjpOb2RlVHlwZSBTaGFkb3dSb290Ojpu
b2RlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNIQURPV19ST09UX05PREU7Ci19Ci0KIFBh
c3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wpCiB7CiAgICAgLy8gU2hh
ZG93Um9vdCBzaG91bGQgbm90IGJlIGFyYml0cmFyaWx5IGNsb25lZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCmluZGV4IGQwYjE4OTQ3MjE0NmJjNzkyMDhhNTlhOGIxYWUxZjIxNjZmZjcyNWMuLjM1
OTA3ZDJkN2QzMDcyMjg0YjdkNDIwNjFhYzZiYTBmNjNlYWNlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaApAQCAtNjgsNyArNjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgflNoYWRvd1Jv
b3QoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2Rl
PiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dl
ZChOb2RlVHlwZSkgY29uc3Q7CiAKQEAgLTk2LDcgKzk1LDcgQEAgaW5saW5lIGJvb2wgU2hhZG93
Um9vdDo6bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiAKIGlubGluZSBTaGFk
b3dSb290KiB0b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlQoIW5vZGUgfHwg
bm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFKTsKKyAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
aGFkb3dSb290Kj4obm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKaW5kZXggZmM3Mjg2ZWJhNjE5ODUxYTg4NTI5YTMyMzhkZjdmZWM2NGQ2NmQ1OC4u
ZGUyZDY1ZDdlNzZmNmU3MmEzZGI4ZmEwNjBlNjllZDZlNjI5ZGU4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTQyNSwxMCArNDI1LDE3IEBAIHN0YXRp
YyB2b2lkIHVwZGF0ZVBvc2l0aW9uQWZ0ZXJBZG9wdGluZ1RleHRSZXBsYWNlbWVudChQb3NpdGlv
biYgcG9zaXRpb24sIENoYXJhCiAgICAgICAgIHBvc2l0aW9uLm1vdmVUb09mZnNldChwb3NpdGlv
bk9mZnNldCAtIG9sZExlbmd0aCArIG5ld0xlbmd0aCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9v
bCBub2RlSXNEZXRhY2hlZEZyb21Eb2N1bWVudChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChu
b2RlKTsKKyAgICBOb2RlKiBoaWdoZXN0ID0gaGlnaGVzdEFuY2VzdG9yKG5vZGUpOworICAgIHJl
dHVybiBoaWdoZXN0LT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUg
JiYgIWhpZ2hlc3QtPmlzU2hhZG93Um9vdCgpOworfQorCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp0
ZXh0V2lsbEJlUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkKIHsKICAgICAvLyBUaGUgZnJh
Z21lbnQgY2hlY2sgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIFNlZSBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8zMDA2Mi4KLSAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUg
fHwgaGlnaGVzdEFuY2VzdG9yKG5vZGUpLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREUpCisgICAgaWYgKGlzTm9uZSgpIHx8ICFub2RlIHx8IG5vZGVJc0RldGFjaGVk
RnJvbURvY3VtZW50KG5vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBQb3NpdGlvbiBiYXNl
ID0gbV9zZWxlY3Rpb24uYmFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcAppbmRleCAzMDZhODQ2NTU4ZTZiYzJhMTZkYTg2N2YyYTIwYzg3NmQ2MjJl
MzNkLi5hNmQ1M2U0YzEwNjdhMzg3YTdkMWNjOTIzMDk5NjJjYmE4MWE3MjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDQ0LDcgKzQ0NCw2
IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxk
ZXImIHJlc3VsdCwgY29uc3QgTm9kZSogbm9kCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJF
TkNFX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6
WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCA5
ODg4NTc0M2U3NzY4NjU2NmY5Mjk3ZjY1NDYzMTMwOGRhMzQ0YTdlLi45Y2MzYTAzMTY2ZTUxMWFi
MjU4NjcyZjQzY2I3MDA4MTVjNzc0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNiBAQCBpbmxpbmUgYm9vbCBp
c051bWJlcmVkSGVhZGVyRWxlbWVudChDb250YWluZXJOb2RlKiBub2RlKQogaW5saW5lIGJvb2wg
aXNSb290Tm9kZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5ub2Rl
VHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+
bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFCiAgICAgICAgIHx8IG5vZGUtPmhh
c1RhZ05hbWUoaHRtbFRhZyk7CiB9CiAKQEAgLTMxMCw3ICszMDksNyBAQCB2b2lkIEhUTUxFbGVt
ZW50U3RhY2s6OnBvcFVudGlsRm9yZWlnbkNvbnRlbnRTY29wZU1hcmtlcigpCiAgICAgCiB2b2lk
IEhUTUxFbGVtZW50U3RhY2s6OnB1c2hSb290Tm9kZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+
IHJvb3ROb2RlKQogewotICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFIHx8IHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNI
QURPV19ST09UX05PREUpOworICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKTsKICAgICBwdXNoUm9vdE5vZGVDb21tb24ocm9vdE5v
ZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNr
LmgKaW5kZXggZjYwNGY4MmM3ODM3OTk3NWQ2ZmZiMzFiOGRiYmRmMTYyN2VhZjk4OC4uNTY5N2U4
MGM4Nzg2Y2RhNGQwMzJiOWVkMDY5MjNlOTIxMGEyZTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaApAQCAtMTgwLDggKzE4MCw3IEBAIGlubGlu
ZSBib29sIGlzSW5IVE1MTmFtZXNwYWNlKE5vZGUqIG5vZGUpCiAgICAgLy8gQSBEb2N1bWVudEZy
YWdtZW50IHRha2VzIHRoZSBwbGFjZSBvZiB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aGVuIHBhcnNp
bmcKICAgICAvLyBmcmFnbWVudHMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGluIHRoZSBIVE1M
IG5hbWVzcGFjZS4KICAgICByZXR1cm4gbm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gSFRNTE5hbWVz
Ojp4aHRtbE5hbWVzcGFjZVVSSQotICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8g
U2hhZG93Um9vdD8KKyAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93
Um9vdD8KIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCA0OTBkMWM5MTY2YzUzNTg1NDgyMTA2NzViYmJkMmQ1NTUwMDhkNjU4Li4w
N2M5NDg3NTZiZjllZjAxMTUxYzEyM2VhYTA3YjE4YTI3Mzc0MzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTM4NCw3ICszODQsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiByb290KQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENo
aWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVG
b3JJZChub2RlSWQpOwotICAgIGlmICghbm9kZSB8fCAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2Rl
OjpFTEVNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RF
ICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkpCisg
ICAgaWYgKCFub2RlIHx8IChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkVMRU1FTlRfTk9ERSAm
JiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5
cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB8fCBub2RlLT5pc1NoYWRvd1Jv
b3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2NoaWxkcmVuUmVxdWVzdGVkLmNvbnRh
aW5zKG5vZGVJZCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMzcsNiArMTEzNywxMCBAQCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
Tm9kZShOb2RlKiBub2RlLCBpbgogICAgICAgICBsb2NhbE5hbWUgPSBub2RlLT5sb2NhbE5hbWUo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OgorICAgICAgICBpZiAoIW5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIG5vZGVOYW1lID0gbm9kZS0+bm9kZU5hbWUoKTsKKyAgICAgICAgbG9jYWxOYW1l
ID0gbm9kZS0+bG9jYWxOYW1lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6RE9D
VU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
VXRpbC5jcHAKaW5kZXggNGM0NWZjYmNhMWE4N2ZhZmYyYmI1NjJhZjVmZWQ3NzFlNWZjNDhhYi4u
N2E4ZmYzM2NmNjczMjVmYjFlYjQ0ZTI4NTI4ZmY3N2ZkNmUyZjNlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoVXRpbC5jcHAKQEAgLTg1LDcgKzg1LDYgQEAgYm9vbCBpc1ZhbGlkQ29udGV4dE5vZGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBO
b2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05f
Tk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAg
IHJldHVybiAhKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzQXR0
cmlidXRlTm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBhZ2VTZXJpYWxpemVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
YWdlU2VyaWFsaXplckltcGwuY3BwCmluZGV4IGNhMDU4MzQ4ODkwZmYxMzMwNjRlMWMwODk4MDcw
NjBmN2IwODkzZTUuLjA3MmE5OTA5YzU3OTQ2NmEwNGRiYTJjMGU3MWEwMDMyZjdkYmJiMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcApAQCAtNDE3LDcgKzQxNyw2IEBAIHZvaWQgV2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpi
dWlsZENvbnRlbnRGb3JOb2RlKE5vZGUqIG5vZGUsCiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVf
Tk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAg
ICAgICAgLy8gU2hvdWxkIG5vdCBleGlzdC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgzNGQ4YjA5ZmQyYTY1MzdkNmZkY2U4OWVlOTNiNGFk
OGRkZjM0YjAuLjM1NmI2M2U0OGI3MWI0ZGY3ZTYxZmFjNzBmMmM4YmM0OWI5ODIxYTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0wNyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgTWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVO
VF9GUkFHTUVOVF9OT0RFLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzc1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOb2RlVHlwZS5TSEFET1dfUk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgor
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanM6CisgICAgICAgIChNYXJrdXAuX2dldCk6CisKIDIwMTItMDItMDYg
IERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFBvcnQgc29t
ZSBpbmRleGVkZGIgbGF5b3V0IHRlc3RzIHRvIHdvcmtlcnMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dAppbmRleCBjYjUwNTUyZmQyYTU1
ODRmZDQ3YTNhMmRmYTQ0NzlmOTRmYzhhODFiLi4yMWVjY2Q1NWU5ZjZjNjliMzc1YTJjYzNiODBk
ODJhMDAyZTRjNDI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9k
ZXR5cGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2Rl
dHlwZS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw5IEBACiAKIFRoaXMgdGVzdHMgdGhlIHNoYWRv
dyBob3N0J3MgYW5kIHNoYWRvdyByb290J3Mgbm9kZVR5cGUuCiBQQVNTIGtleWdlbi5ub2RlVHlw
ZSBpcyBOb2RlLkVMRU1FTlRfTk9ERQotUEFTUyBzaGFkb3cubm9kZVR5cGUgaXMgMTQKK1BBU1Mg
c2hhZG93Lm5vZGVUeXBlIGlzIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERQogUEFTUyBzaGFk
b3dDaGlsZCBpcyBub24tbnVsbC4KLVBBU1Mgc2hhZG93Q2hpbGQubm9kZVR5cGUgIT0gMTQgaXMg
dHJ1ZQorUEFTUyBzaGFkb3dDaGlsZC5ub2RlVHlwZSAhPSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREUgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS5odG1sCmluZGV4IGVh
MWJhMWFmNTYwY2MwOTJmMDNhYzQ3ODNmZTFmODQyNmE0MTMwZjguLjAxMTkyNThhZDUyMDVkYjQ1
OTU3NmFiMTQzMWE5NjczNzQxZDU0MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9ub2RldHlwZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9u
b2RldHlwZS5odG1sCkBAIC0xNiw5ICsxNiw5IEBAIFRoaXMgdGVzdHMgdGhlIHNoYWRvdyBob3N0
J3MgYW5kIHNoYWRvdyByb290J3Mgbm9kZVR5cGUuCiAgICAgICAgIHZhciBzaGFkb3cgPSBpbnRl
cm5hbHMuc2hhZG93Um9vdChrZXlnZW4pOwogICAgICAgICB2YXIgc2hhZG93Q2hpbGQgPSBzaGFk
b3cuZmlyc3RDaGlsZDsKICAgICAgICAgc2hvdWxkQmUoJ2tleWdlbi5ub2RlVHlwZScsICdOb2Rl
LkVMRU1FTlRfTk9ERScpOwotICAgICAgICBzaG91bGRCZSgnc2hhZG93Lm5vZGVUeXBlJywgJzE0
Jyk7CisgICAgICAgIHNob3VsZEJlKCdzaGFkb3cubm9kZVR5cGUnLCAnTm9kZS5ET0NVTUVOVF9G
UkFHTUVOVF9OT0RFJyk7CiAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgnc2hhZG93Q2hpbGQnKTsK
LSAgICAgICAgc2hvdWxkQmVUcnVlKCdzaGFkb3dDaGlsZC5ub2RlVHlwZSAhPSAxNCcpOworICAg
ICAgICBzaG91bGRCZVRydWUoJ3NoYWRvd0NoaWxkLm5vZGVUeXBlICE9IE5vZGUuRE9DVU1FTlRf
RlJBR01FTlRfTk9ERScpOwogICAgIH0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L2R1bXAtYXMtbWFya3VwLmpzCmluZGV4IDhjYjY4ZWM4N2U3ZDlmOTYyZjQ0NzRmNWIxODFkMWQ4
ZjY3YTgyNzMuLmM0ZDA2OWMxNWQ3MmY1NTI4MTEzODMzZTgxNmMwMGFjMjkzNzRiNjYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcworKysgYi9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMKQEAgLTIxNSw4ICsyMTUsOSBAQCBN
YXJrdXAuX2dldCA9IGZ1bmN0aW9uKG5vZGUsIGRlcHRoKQogICAgICAgICAgICAgICAgIHN0ciAr
PSBNYXJrdXAuX2luZGVudChkZXB0aCArIDEpICsgJ3RoaXMudmFsdWU9IicgKyBub2RlLnZhbHVl
ICsgJyInOwogCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMTQ6IC8vIFNlZSBTSEFET1dfUk9P
VF9OT0RFIG9uIE5vZGU6Ok5vZGVUeXBlCi0gICAgICAgIHN0ciArPSAiPHNoYWRvdzpyb290PiI7
CisgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgIGlmIChub2Rl
Lm5vZGVOYW1lID09ICIjc2hhZG93LXJvb3QiKQorICAgICAgICAgIHN0ciArPSAiPHNoYWRvdzpy
b290PiI7CiAgICAgfQogCiAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG5vZGUuY2hpbGROb2Rl
cy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126721</attachid>
            <date>2012-02-12 23:10:20 -0800</date>
            <delta_ts>2012-02-14 02:47:47 -0800</delta_ts>
            <desc>fall through</desc>
            <filename>bug-77514-20120213161018.patch</filename>
            <type>text/plain</type>
            <size>27973</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg1MTUxZWQyNDRkMDY3
M2JhZjI4Nzg0NDhkYWQ3ZmZiZTg5ZDA2Yi4uNTIwOGZmNjJmZDc1ZTM1YzU4NTE5MmQ5YWU5NGYy
OWYyZTdiMWVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAyLTA3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUg
dHlwZSBpcyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcklubGluZSk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29sbGVjdFRhcmdldE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpjaGlsZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5S
ZXBsYWNlQ2hpbGQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmR1bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVmYXVs
dE5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRD
b250ZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZTo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hl
Y2tOb2RlV09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y2hlY2tOb2RlQkEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNlbGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c3Vy
cm91bmRDb250ZW50cyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAq
IGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvU2hhZG93Um9vdCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpub2RlSXNEZXRhY2hlZEZyb21Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0V2lsbEJl
UmVwbGFjZWQpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxOYW1lczo6aXNSb290Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dFN0YWNrOjpwdXNoUm9vdE5vZGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5IVE1MTmFtZXNwYWNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKiB4
bWwvWFBhdGhVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjppc1ZhbGlkQ29udGV4
dE5vZGUpOgorCiAyMDEyLTAyLTA2ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA2ODgzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBhMjlhNzUyYWRkNzNmNzdjZGExMDVmNjgyMzI4ZDhhMTFiNWM4
N2NiLi5jZWVlNmUwZWRmMmQ2OWNlMWQyYTBkYWJmMTM1MzIxNDYxMDk1ZWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTA3ICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5
cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUgdHlwZSBp
cyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBzcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6ZXJJbXBsOjpidWlsZENvbnRlbnRG
b3JOb2RlKToKKwogMjAxMi0wMi0wNiAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDYxYzE1ZDZiOTRmODI4ZTFkYmIx
NWRmYTI2Y2FiOTk1MjhlOTk4MDQuLjQxNDMzNzU4ZjhjYzQwZWU5Mzk1YTNhODk2ZDgwZDkyMGRi
YTVjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApA
QCAtMjU0LDExICsyNTQsMTIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVX
cmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmoKICAgICAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBOb3RhdGlv
biwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOgorICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBTaGFkb3dSb290LCBh
IGNhY2hlZCBTaGFkb3dSb290IGJpbmRpbmcgaXMgYWx3YXlzIHVzZWQgYW5kIHRoaXMKKyAgICAg
ICAgICAgIC8vIGNvZGUgcGF0aCBuZXZlciBiZSB1c2VkIGluIGN1cnJlbnQgQVBJIHNldC4KKyAg
ICAgICAgICAgIC8vIE9uY2Ugd2UgaGF2ZSBzdWNoIEFQSXMsIHdlIHNob3VsZCBjYWxsIENSRUFU
RV9ET01fV1JBUFBFUiB1c2luZyBTaGFkb3dSb290LgorICAgICAgICAgICAgQVNTRVJUKCFub2Rl
LT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgRG9jdW1lbnRGcmFnbWVudCwgbm9kZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgotICAgICAg
ICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIE5v
ZGUsIG5vZGUpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZ
X1JFRkVSRU5DRV9OT0RFOgogICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsIEVudGl0eVJlZmVyZW5jZSwgbm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1t
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggOGNjYjdlMjg2ZGQ0
NjA5NWNkODA1NTFmZDEzNDljN2IzNWUzNzY1Yy4uNzgwNjM0YWNiYjViMzFiNWRhZmE3NTFmZDU3
MjA4ODYyZGYyNDhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTMyNyw4
ICszMjcsNiBAQCBDbGFzcyBraXRDbGFzcyhXZWJDb3JlOjpOb2RlKiBpbXBsKQogICAgICAgICAg
ICAgLy8gRklYTUU6IENyZWF0ZSBhbiBYUGF0aCBvYmplY3RpdmUgQyB3cmFwcGVyCiAgICAgICAg
ICAgICAvLyBTZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1NQog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpTSEFE
T1dfUk9PVF9OT0RFOgotICAgICAgICAgICAgcmV0dXJuIFtET01Ob2RlIGNsYXNzXTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKaW5kZXggNGFk
MTNkNGFmN2NmZDUyNDZmODBmNjgxYWNmYzQ5OTZmOTA0YzVkNy4uNmE5OGZlYzQ4MTVmNTgwMmYy
OWIwNTJjMmY5ZDk4YjA0ZDM1YmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKQEAgLTE2MywxMCArMTYzLDEzIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0
KQogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxEb2N1bWVudFR5cGUqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwogICAg
IGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgLy8gSW4gY2FzZSBv
ZiBTaGFkb3dSb290LCBhIGNhY2hlZCBTaGFkb3dSb290IGlzIGFsd2F5cyB1c2VkIGFuZCB0aGlz
CisgICAgICAgIC8vIGNvZGUgcGF0aCBuZXZlciBiZSB1c2VkIGluIGN1cnJlbnQgQVBJIHNldC4K
KyAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHN1Y2ggQVBJcywgd2Ugc2hvdWxkIGNhbGwgdG9WOChz
dGF0aWNfY2FzdDxTaGFkb3dSb290Kj4uLikuCisgICAgICAgIEFTU0VSVCghaW1wbC0+aXNTaGFk
b3dSb290KCkpOwogICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEb2N1bWVudEZyYWdt
ZW50Kj4oaW1wbCksIGZvcmNlTmV3T2JqZWN0KTsKICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05P
REU6CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE5vdGF0aW9uKj4oaW1wbCksIGZv
cmNlTmV3T2JqZWN0KTsKLSAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6IC8vIFRoZXJl
J3Mgbm8gSURMIGNsYXNzIGZvciBTaGFkb3dSb290LCBmYWxsLXRocm91Z2ggdG8gZGVmYXVsdCBh
bmQgdXNlIE5vZGUgaW5zdGVhZC4KICAgICBkZWZhdWx0OiBicmVhazsgLy8gWFBBVEhfTkFNRVNQ
QUNFX05PREUKICAgICB9CiAgICAgcmV0dXJuIFY4Tm9kZTo6d3JhcChpbXBsLCBmb3JjZU5ld09i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggOTA3NWY4YTNlNzFl
NzI3MWViY2MyMzk0YjZjZWY0YTc3ZTk1YTdjNS4uOTkzNDllY2YxYjMyM2ZmNmU0YzViMDNiZmJl
NmY3OWVhZTk4MDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNjks
NyArNjksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdE5vZGVzKE5vZGUqIG5vZGUsIE5v
ZGVWZWN0b3ImIG5vZGVzKQogCiBzdGF0aWMgdm9pZCBjb2xsZWN0VGFyZ2V0Tm9kZXMoTm9kZSog
bm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiB7Ci0gICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0g
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgeworICAgIGlmIChub2RlLT5ub2RlVHlwZSgp
ICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkp
IHsKICAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgLy8gdGhhdCBu
byBjYWxsZXJzIGNhbGwgd2l0aCByZWYgY291bnQgPT0gMCBhbmQgcGFyZW50ID0gMCAoYXMgb2Yg
dGhpcwogICAgIC8vIHdyaXRpbmcsIHRoZXJlIGFyZSBkZWZpbml0ZWx5IGNhbGxlcnMgd2hvIGNh
bGwgdGhhdCB3YXkpLgogCi0gICAgYm9vbCBpc0ZyYWdtZW50ID0gbmV3Q2hpbGQtPm5vZGVUeXBl
KCkgPT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERTsKKyAgICBib29sIGlzRnJhZ21lbnQgPSBuZXdD
aGlsZC0+bm9kZVR5cGUoKSA9PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFICYmICFuZXdDaGlsZC0+
aXNTaGFkb3dSb290KCk7CiAKICAgICAvLyBBZGQgdGhlIG5ldyBjaGlsZChyZW4pCiAgICAgUmVm
UHRyPE5vZGU+IGNoaWxkID0gaXNGcmFnbWVudCA/IG5ld0NoaWxkLT5maXJzdENoaWxkKCkgOiBu
ZXdDaGlsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDFiN2I2MTMzZDhmM2M2YThkZWIz
Y2NlNGFiYTI3M2EzOTY0MzQyNjkuLmQwM2JjOTU0OTBkZTM4NTBmMDQ5NDc0OWZjMGQ0YzgyNTQ5
NjAyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODczLDYgKzg3MywxMSBAQCBQYXNz
UmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9v
bCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAgICAgIHJl
dHVybiBBdHRyOjpjcmVhdGUoMCwgdGhpcywgc3RhdGljX2Nhc3Q8QXR0cio+KGltcG9ydGVkTm9k
ZSktPmF0dHIoKS0+Y2xvbmUoKSk7CiAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7
CisgICAgICAgIGlmIChpbXBvcnRlZE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAg
ICAvLyBTaGFkb3dSb290IG5vZGVzIHNob3VsZCBub3QgYmUgZXhwbGljaXRseSBpbXBvcnRhYmxl
LgorICAgICAgICAgICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdpdGggdGhl
aXIgaG9zdCBub2RlLCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBvbGRGcmFnbWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBvcnRlZE5vZGUpOwogICAgICAgICBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
CiAgICAgICAgIGlmIChkZWVwKSB7CkBAIC04OTUsOSArOTAwLDYgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhj
ZXB0aW9uQ28KICAgICBjYXNlIERPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBET0NVTUVOVF9UWVBF
X05PREU6CiAgICAgY2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19S
T09UX05PREU6Ci0gICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hvdWxkIG5vdCBiZSBleHBs
aWNpdGx5IGltcG9ydGFibGUuCi0gICAgICAgIC8vIEVpdGhlciB0aGV5IGFyZSBpbXBvcnRlZCBh
bG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwgb3IgY3JlYXRlZCBpbXBsaWNpdGx5LgogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTI4NDQsNyAr
Mjg0Niw2IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkg
Y29uc3QKICAgICBjYXNlIE5PVEFUSU9OX05PREU6CiAgICAgY2FzZSBURVhUX05PREU6CiAgICAg
Y2FzZSBYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBjYXNlIFBS
T0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKQEAgLTI5MTQsOSArMjkxNSw2IEBAIGJvb2wgRG9j
dW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAg
ICAgICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICBudW1FbGVtZW50
cysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTSEFET1dfUk9P
VF9OT0RFOgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CkBAIC0yOTMwLDcgKzI5MjgsNiBAQCBib29sIERvY3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQo
Tm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogICAgICAgICBjYXNlIE5PVEFUSU9OX05P
REU6CiAgICAgICAgIGNhc2UgVEVYVF9OT0RFOgogICAgICAgICBjYXNlIFhQQVRIX05BTUVTUEFD
RV9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgICAgICBjYXNlIFBST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZmU2N2FiYjBiOTE0
MWFhMWYxYWMzZWMyODUzM2UxN2ViNWZlZDM5Li43MGU4NGI4NGU4Njg5Y2FhODYxZDVhMjY2ZGY0
YjQ5NmVjOGM5OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjcsNyArMjI3LDEwIEBAIHZvaWQg
Tm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7Ci0gICAgICAg
ICAgICAgICAgKytmcmFnbWVudE5vZGVzOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICAgICAgKytzaGFkb3dSb290Tm9kZXM7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICArK2ZyYWdtZW50Tm9kZXM7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIE5P
VEFUSU9OX05PREU6IHsKQEAgLTIzOCwxMCArMjQxLDYgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlz
dGljcygpCiAgICAgICAgICAgICAgICAgKyt4cGF0aE5TTm9kZXM7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6
IHsKLSAgICAgICAgICAgICAgICArK3NoYWRvd1Jvb3ROb2RlczsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTg0NCw3ICsxODQz
LDYgQEAgYm9vbCBOb2RlOjppc0RlZmF1bHROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUklNYXliZUVtcHR5KSBjb25zdAogICAgICAgICBjYXNlIE5PVEFUSU9OX05PREU6
CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERTogewogICAgICAg
ICAgICAgY29uc3QgQXR0ciogYXR0ciA9IHN0YXRpY19jYXN0PGNvbnN0IEF0dHIqPih0aGlzKTsK
QEAgLTE4NzgsNyArMTg3Niw2IEBAIFN0cmluZyBOb2RlOjpsb29rdXBQcmVmaXgoY29uc3QgQXRv
bWljU3RyaW5nICZuYW1lc3BhY2VVUkkpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9E
RToKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIERP
Q1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAg
ICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0
aGlzKTsKQEAgLTE5MzcsNyArMTkzNCw2IEBAIFN0cmluZyBOb2RlOjpsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nICZwcmVmaXgpIGNvbnN0CiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9E
RToKICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1F
TlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOgogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7CiAg
ICAgICAgICAgICBjb25zdCBBdHRyICphdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQXR0ciAqPih0
aGlzKTsKQEAgLTIwMDUsNyArMjAwMSw2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFRleHRDb250ZW50
KGNvbnN0IE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMsIGJvb2wmCiAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0Vf
Tk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgY2FzZSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKICAg
ICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREUgfHwgY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQpAQCAtMjA0Myw4ICsyMDM4LDcgQEAgdm9pZCBO
b2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgogICAgICAgICBjYXNlIEVOVElUWV9OT0RF
OgogICAgICAgICBjYXNlIEVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKKyAg
ICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CiAgICAgICAgICAgICBDb250YWlu
ZXJOb2RlKiBjb250YWluZXIgPSB0b0NvbnRhaW5lck5vZGUodGhpcyk7CiAjaWYgRU5BQkxFKE1V
VEFUSU9OX09CU0VSVkVSUykKICAgICAgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0
YXRpb24odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMTFiZDQxMTdjZmY5ZTc0MGFmNjBiZmZjYjc5
NmJmMDBjMzg5MDYwLi5lYTY2MDY0YjE0NWZjN2ZjNDUxZTI1OTlmNTUwOTRlYTFhYTA1MDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBwdWJsaWM6CiAgICAgICAgIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUgPSAxMSwKICAgICAgICAgTk9UQVRJT05fTk9ERSA9IDEyLAogICAgICAg
ICBYUEFUSF9OQU1FU1BBQ0VfTk9ERSA9IDEzLAotICAgICAgICBTSEFET1dfUk9PVF9OT0RFID0g
MTQKICAgICB9OwogICAgIGVudW0gRG9jdW1lbnRQb3NpdGlvbiB7CiAgICAgICAgIERPQ1VNRU5U
X1BPU0lUSU9OX0VRVUlWQUxFTlQgPSAweDAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggOWI1Njli
M2UwMTA5NjQ0NzU3YTUwYjNkODdkOWI3MTg1MWFmN2I1My4uNTI4NmE1MDlkYTM4YjdmNzhmNWU5
ZDMwY2QzNTkyYzUzODU2Y2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC02NzcsNyArNjc3LDYg
QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZkNvbnRlbnRzSW5Ob2RlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgot
ICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgcmV0dXJuIG5vZGUtPmNo
aWxkTm9kZUNvdW50KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODQw
LDcgKzgzOSw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gUmFuZ2U6OnByb2Nlc3NDb250ZW50c0JldHdl
ZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNzUmVmCiAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBj
YXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JP
T1RfTk9ERToKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhc3NlcnQgdGhhdCBzb21lIG5v
ZGVzIG5ldmVyIGFwcGVhciBoZXJlPwogICAgICAgICBpZiAoYWN0aW9uID09IEVYVFJBQ1RfQ09O
VEVOVFMgfHwgYWN0aW9uID09IENMT05FX0NPTlRFTlRTKSB7CiAgICAgICAgICAgICBpZiAoZnJh
Z21lbnQpCkBAIC05OTcsNyArOTk1LDcgQEAgdm9pZCBSYW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHBycE5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgTm9kZTo6Tm9k
ZVR5cGUgbmV3Tm9kZVR5cGUgPSBuZXdOb2RlLT5ub2RlVHlwZSgpOwogICAgIGludCBudW1OZXdD
aGlsZHJlbjsKLSAgICBpZiAobmV3Tm9kZVR5cGUgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERSkgeworICAgIGlmIChuZXdOb2RlVHlwZSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFICYmICFuZXdOb2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICAvLyBjaGVjayBlYWNo
IGNoaWxkIG5vZGUsIG5vdCB0aGUgRG9jdW1lbnRGcmFnbWVudCBpdHNlbGYKICAgICAgICAgbnVt
TmV3Q2hpbGRyZW4gPSAwOwogICAgICAgICBmb3IgKE5vZGUqIGMgPSBuZXdOb2RlLT5maXJzdENo
aWxkKCk7IGM7IGMgPSBjLT5uZXh0U2libGluZygpKSB7CkBAIC0xMDI4LDEwICsxMDI2LDEzIEBA
IHZvaWQgUmFuZ2U6Omluc2VydE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdOb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJ
TlZBTElEX05PREVfVFlQRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgorICAg
ICAgICBpZiAobmV3Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGVjID0gUmFu
Z2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTEyMTcsOCArMTIxOCw3IEBA
IE5vZGUqIFJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAg
ICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElU
WV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9E
RToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiB7CisgICAgICAgIGNhc2Ug
Tm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlmICghb2Zmc2V0KQog
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgTm9kZSogY2hpbGRCZWZvcmUg
PSBuLT5jaGlsZE5vZGUob2Zmc2V0IC0gMSk7CkBAIC0xMjQzLDcgKzEyNDMsNiBAQCB2b2lkIFJh
bmdlOjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAg
ICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9O
T0RFOgogICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9k
ZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGVjID0gUmFuZ2VFeGNlcHRpb246OklO
VkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBO
b2RlOjpDREFUQV9TRUNUSU9OX05PREU6CkBAIC0xMjY1LDcgKzEyNjQsNiBAQCB2b2lkIFJhbmdl
OjpjaGVja05vZGVCQShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAg
Y2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9O
T0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAg
IGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpDT01N
RU5UX05PREU6CkBAIC0xMzk3LDcgKzEzOTUsNiBAQCB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5v
ZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgY2FzZSBOb2RlOjpQ
Uk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNlIE5vZGU6OlRFWFRf
Tk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
ICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAg
ICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNDIyLDcgKzE0MTksNiBAQCB2b2lkIFJh
bmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAgY2FzZSBOb2Rl
OjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5W
QUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NjMs
NyArMTQ1OSw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiByZWZOb2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19J
TlNUUlVDVElPTl9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6CiAgICAg
ICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAgICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICBjYXNlIE5v
ZGU6OkVOVElUWV9OT0RFOgpAQCAtMTUxMiw3ICsxNTA3LDYgQEAgdm9pZCBSYW5nZTo6c3Vycm91
bmRDb250ZW50cyhQYXNzUmVmUHRyPE5vZGU+IHBhc3NOZXdQYXJlbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAg
ICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFN
RVNQQUNFX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDli
YTY4YmQzNTgxMTNjZGIxYmYwMDg5YjQ2NzcyMjA2OWJlNzY2YmQuLmYwNzA2YzM0NjE2ZTFmYTZk
N2IxYTRkNGNlYWYyYWY5NDc3ZjM5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAg
LTc3LDExICs3Nyw2IEBAIFN0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuICIjc2hhZG93LXJvb3QiOwogfQogCi1Ob2RlOjpOb2RlVHlwZSBTaGFkb3dSb290Ojpu
b2RlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNIQURPV19ST09UX05PREU7Ci19Ci0KIFBh
c3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wpCiB7CiAgICAgLy8gU2hh
ZG93Um9vdCBzaG91bGQgbm90IGJlIGFyYml0cmFyaWx5IGNsb25lZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCmluZGV4IGQwYjE4OTQ3MjE0NmJjNzkyMDhhNTlhOGIxYWUxZjIxNjZmZjcyNWMuLjM1
OTA3ZDJkN2QzMDcyMjg0YjdkNDIwNjFhYzZiYTBmNjNlYWNlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaApAQCAtNjgsNyArNjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgflNoYWRvd1Jv
b3QoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2Rl
PiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dl
ZChOb2RlVHlwZSkgY29uc3Q7CiAKQEAgLTk2LDcgKzk1LDcgQEAgaW5saW5lIGJvb2wgU2hhZG93
Um9vdDo6bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiAKIGlubGluZSBTaGFk
b3dSb290KiB0b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlQoIW5vZGUgfHwg
bm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFKTsKKyAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
aGFkb3dSb290Kj4obm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKaW5kZXggZmM3Mjg2ZWJhNjE5ODUxYTg4NTI5YTMyMzhkZjdmZWM2NGQ2NmQ1OC4u
ZGUyZDY1ZDdlNzZmNmU3MmEzZGI4ZmEwNjBlNjllZDZlNjI5ZGU4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTQyNSwxMCArNDI1LDE3IEBAIHN0YXRp
YyB2b2lkIHVwZGF0ZVBvc2l0aW9uQWZ0ZXJBZG9wdGluZ1RleHRSZXBsYWNlbWVudChQb3NpdGlv
biYgcG9zaXRpb24sIENoYXJhCiAgICAgICAgIHBvc2l0aW9uLm1vdmVUb09mZnNldChwb3NpdGlv
bk9mZnNldCAtIG9sZExlbmd0aCArIG5ld0xlbmd0aCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9v
bCBub2RlSXNEZXRhY2hlZEZyb21Eb2N1bWVudChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChu
b2RlKTsKKyAgICBOb2RlKiBoaWdoZXN0ID0gaGlnaGVzdEFuY2VzdG9yKG5vZGUpOworICAgIHJl
dHVybiBoaWdoZXN0LT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUg
JiYgIWhpZ2hlc3QtPmlzU2hhZG93Um9vdCgpOworfQorCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp0
ZXh0V2lsbEJlUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkKIHsKICAgICAvLyBUaGUgZnJh
Z21lbnQgY2hlY2sgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIFNlZSBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8zMDA2Mi4KLSAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUg
fHwgaGlnaGVzdEFuY2VzdG9yKG5vZGUpLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREUpCisgICAgaWYgKGlzTm9uZSgpIHx8ICFub2RlIHx8IG5vZGVJc0RldGFjaGVk
RnJvbURvY3VtZW50KG5vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBQb3NpdGlvbiBiYXNl
ID0gbV9zZWxlY3Rpb24uYmFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcAppbmRleCAzMDZhODQ2NTU4ZTZiYzJhMTZkYTg2N2YyYTIwYzg3NmQ2MjJl
MzNkLi5hNmQ1M2U0YzEwNjdhMzg3YTdkMWNjOTIzMDk5NjJjYmE4MWE3MjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDQ0LDcgKzQ0NCw2
IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxk
ZXImIHJlc3VsdCwgY29uc3QgTm9kZSogbm9kCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJF
TkNFX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6
WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCA5
ODg4NTc0M2U3NzY4NjU2NmY5Mjk3ZjY1NDYzMTMwOGRhMzQ0YTdlLi45Y2MzYTAzMTY2ZTUxMWFi
MjU4NjcyZjQzY2I3MDA4MTVjNzc0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNiBAQCBpbmxpbmUgYm9vbCBp
c051bWJlcmVkSGVhZGVyRWxlbWVudChDb250YWluZXJOb2RlKiBub2RlKQogaW5saW5lIGJvb2wg
aXNSb290Tm9kZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5ub2Rl
VHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+
bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFCiAgICAgICAgIHx8IG5vZGUtPmhh
c1RhZ05hbWUoaHRtbFRhZyk7CiB9CiAKQEAgLTMxMCw3ICszMDksNyBAQCB2b2lkIEhUTUxFbGVt
ZW50U3RhY2s6OnBvcFVudGlsRm9yZWlnbkNvbnRlbnRTY29wZU1hcmtlcigpCiAgICAgCiB2b2lk
IEhUTUxFbGVtZW50U3RhY2s6OnB1c2hSb290Tm9kZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+
IHJvb3ROb2RlKQogewotICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFIHx8IHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNI
QURPV19ST09UX05PREUpOworICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKTsKICAgICBwdXNoUm9vdE5vZGVDb21tb24ocm9vdE5v
ZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNr
LmgKaW5kZXggZjYwNGY4MmM3ODM3OTk3NWQ2ZmZiMzFiOGRiYmRmMTYyN2VhZjk4OC4uNTY5N2U4
MGM4Nzg2Y2RhNGQwMzJiOWVkMDY5MjNlOTIxMGEyZTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaApAQCAtMTgwLDggKzE4MCw3IEBAIGlubGlu
ZSBib29sIGlzSW5IVE1MTmFtZXNwYWNlKE5vZGUqIG5vZGUpCiAgICAgLy8gQSBEb2N1bWVudEZy
YWdtZW50IHRha2VzIHRoZSBwbGFjZSBvZiB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aGVuIHBhcnNp
bmcKICAgICAvLyBmcmFnbWVudHMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGluIHRoZSBIVE1M
IG5hbWVzcGFjZS4KICAgICByZXR1cm4gbm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gSFRNTE5hbWVz
Ojp4aHRtbE5hbWVzcGFjZVVSSQotICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8g
U2hhZG93Um9vdD8KKyAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93
Um9vdD8KIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCA0OTBkMWM5MTY2YzUzNTg1NDgyMTA2NzViYmJkMmQ1NTUwMDhkNjU4Li44
NjM3Mjg5ZTYxNDU0MDlkZGJlOGVjZDNmZTQ3YWI1MGVmYWIyM2I1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTM4NCw3ICszODQsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiByb290KQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENo
aWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVG
b3JJZChub2RlSWQpOwotICAgIGlmICghbm9kZSB8fCAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2Rl
OjpFTEVNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RF
ICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkpCisg
ICAgaWYgKCFub2RlIHx8IChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkVMRU1FTlRfTk9ERSAm
JiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5
cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB8fCBub2RlLT5pc1NoYWRvd1Jv
b3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2NoaWxkcmVuUmVxdWVzdGVkLmNvbnRh
aW5zKG5vZGVJZCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMzcsNyArMTEzNyw5IEBAIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JO
b2RlKE5vZGUqIG5vZGUsIGluCiAgICAgICAgIGxvY2FsTmFtZSA9IG5vZGUtPmxvY2FsTmFtZSgp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6
Ci0gICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIW5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZhbGwgdGhyb3VnaAogICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKICAgICBkZWZhdWx0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcAppbmRleCA0YzQ1ZmNiY2ExYTg3ZmFmZjJiYjU2MmFm
NWZlZDc3MWU1ZmM0OGFiLi43YThmZjMzY2Y2NzMyNWZiMWViNDRlMjg1MjhmZjc3ZmQ2ZTJmM2Uw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcApAQCAtODUsNyArODUsNiBAQCBib29sIGlzVmFs
aWRDb250ZXh0Tm9kZShOb2RlKiBub2RlKQogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RF
OgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICAgICAgY2Fz
ZSBOb2RlOjpOT1RBVElPTl9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05P
REU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgTm9kZTo6VEVYVF9O
T0RFOgogICAgICAgICAgICAgcmV0dXJuICEobm9kZS0+cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBh
cmVudE5vZGUoKS0+aXNBdHRyaWJ1dGVOb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHAKaW5kZXggY2EwNTgzNDg4OTBm
ZjEzMzA2NGUxYzA4OTgwNzA2MGY3YjA4OTNlNS4uMDcyYTk5MDljNTc5NDY2YTA0ZGJhMmMwZTcx
YTAwMzJmN2RiYmIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCkBAIC00MTcsNyArNDE3LDYgQEAgdm9pZCBXZWJQYWdl
U2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5vZGUoTm9kZSogbm9kZSwKICAgICBjYXNl
IE5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFE
T1dfUk9PVF9OT0RFOgogICAgICAgICAvLyBTaG91bGQgbm90IGV4aXN0LgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODM0ZDhiMDlmZDJhNjUz
N2Q2ZmRjZTg5ZWU5M2I0YWQ4ZGRmMzRiMC4uMzU2YjYzZTQ4YjcxYjRkZjdlNjFmYWM3MGYyYzhi
YzQ5Yjk4MjFhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTA3ICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5
cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGVUeXBlLlNIQURPV19ST09UX05PREUgdHlwZSBp
cyBmaW5hbGx5IGdvbmUuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS5odG1sOgorICAg
ICAgICAqIHJlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qczoKKyAgICAgICAgKE1hcmt1cC5fZ2V0
KToKKwogMjAxMi0wMi0wNiAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUG9ydCBzb21lIGluZGV4ZWRkYiBsYXlvdXQgdGVzdHMgdG8gd29ya2Vycy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGNiNTA1NTJmZDJhNTU4NGZkNDdhM2EyZGZhNDQ3OWY5NGZjOGE4MWIuLjIxZWNjZDU1ZTlm
NmM2OWIzNzVhMmNjM2I4MGQ4MmEwMDJlNGM0MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDkgQEAKIAogVGhp
cyB0ZXN0cyB0aGUgc2hhZG93IGhvc3QncyBhbmQgc2hhZG93IHJvb3QncyBub2RlVHlwZS4KIFBB
U1Mga2V5Z2VuLm5vZGVUeXBlIGlzIE5vZGUuRUxFTUVOVF9OT0RFCi1QQVNTIHNoYWRvdy5ub2Rl
VHlwZSBpcyAxNAorUEFTUyBzaGFkb3cubm9kZVR5cGUgaXMgTm9kZS5ET0NVTUVOVF9GUkFHTUVO
VF9OT0RFCiBQQVNTIHNoYWRvd0NoaWxkIGlzIG5vbi1udWxsLgotUEFTUyBzaGFkb3dDaGlsZC5u
b2RlVHlwZSAhPSAxNCBpcyB0cnVlCitQQVNTIHNoYWRvd0NoaWxkLm5vZGVUeXBlICE9IE5vZGUu
RE9DVU1FTlRfRlJBR01FTlRfTk9ERSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9ub2RldHlwZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0
eXBlLmh0bWwKaW5kZXggZWExYmExYWY1NjBjYzA5MmYwM2FjNDc4M2ZlMWY4NDI2YTQxMzBmOC4u
MDExOTI1OGFkNTIwNWRiNDU5NTc2YWIxNDMxYTk2NzM3NDFkNTQzNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwKQEAgLTE2LDkgKzE2LDkgQEAgVGhpcyB0ZXN0
cyB0aGUgc2hhZG93IGhvc3QncyBhbmQgc2hhZG93IHJvb3QncyBub2RlVHlwZS4KICAgICAgICAg
dmFyIHNoYWRvdyA9IGludGVybmFscy5zaGFkb3dSb290KGtleWdlbik7CiAgICAgICAgIHZhciBz
aGFkb3dDaGlsZCA9IHNoYWRvdy5maXJzdENoaWxkOwogICAgICAgICBzaG91bGRCZSgna2V5Z2Vu
Lm5vZGVUeXBlJywgJ05vZGUuRUxFTUVOVF9OT0RFJyk7Ci0gICAgICAgIHNob3VsZEJlKCdzaGFk
b3cubm9kZVR5cGUnLCAnMTQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ3NoYWRvdy5ub2RlVHlwZScs
ICdOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUnKTsKICAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCdzaGFkb3dDaGlsZCcpOwotICAgICAgICBzaG91bGRCZVRydWUoJ3NoYWRvd0NoaWxkLm5vZGVU
eXBlICE9IDE0Jyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnc2hhZG93Q2hpbGQubm9kZVR5cGUg
IT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJyk7CiAgICAgfQogPC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMgYi9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMKaW5kZXggOGNiNjhlYzg3ZTdkOWY5
NjJmNDQ3NGY1YjE4MWQxZDhmNjdhODI3My4uYzRkMDY5YzE1ZDcyZjU1MjgxMTM4MzNlODE2YzAw
YWMyOTM3NGI2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFy
a3VwLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwpAQCAt
MjE1LDggKzIxNSw5IEBAIE1hcmt1cC5fZ2V0ID0gZnVuY3Rpb24obm9kZSwgZGVwdGgpCiAgICAg
ICAgICAgICAgICAgc3RyICs9IE1hcmt1cC5faW5kZW50KGRlcHRoICsgMSkgKyAndGhpcy52YWx1
ZT0iJyArIG5vZGUudmFsdWUgKyAnIic7CiAKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxNDog
Ly8gU2VlIFNIQURPV19ST09UX05PREUgb24gTm9kZTo6Tm9kZVR5cGUKLSAgICAgICAgc3RyICs9
ICI8c2hhZG93OnJvb3Q+IjsKKyAgICBjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToK
KyAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT0gIiNzaGFkb3ctcm9vdCIpCisgICAgICAgICAg
c3RyICs9ICI8c2hhZG93OnJvb3Q+IjsKICAgICB9CiAKICAgICBmb3IgKHZhciBpID0gMCwgbGVu
ID0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126945</attachid>
            <date>2012-02-14 02:47:57 -0800</date>
            <delta_ts>2012-02-14 03:32:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77514-20120214194756.patch</filename>
            <type>text/plain</type>
            <size>27207</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWE1M2EwYmNmN2YyMGM2
NGMzMmRkNmI2MjNkNzQ5OWNkMDQwMTYyNC4uN2E4Yjk5MmEzZWFjOTNiNTRkM2Q0Yzk4MDQ2MGVj
ZDJhZmVmNzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAyLTA3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qu
bm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBOb2RlVHlwZS5TSEFET1dfUk9PVF9OT0RF
IHR5cGUgaXMgZmluYWxseSBnb25lLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyYXBwZXJJbmxpbmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoa2l0Q2xhc3MpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9WOFNsb3cpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbGxlY3RUYXJnZXROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW1wb3J0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Y2hpbGRUeXBlQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2Fu
UmVwbGFjZUNoaWxkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RlZmF1
bHROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwUHJlZml4KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgIChXZWJD
b3JlOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUZXh0
Q29udGVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vUmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3RoT2ZDb250ZW50c0luTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6Omluc2VydE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNo
ZWNrTm9kZVdPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNoZWNrTm9kZUJBKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpzZWxlY3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlOjpzZWxlY3ROb2RlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnN1
cnJvdW5kQ29udGVudHMpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJD
b3JlOjp0b1NoYWRvd1Jvb3QpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bm9kZUlzRGV0YWNoZWRGcm9tRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFdpbGxC
ZVJlcGxhY2VkKToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTmFtZXM6OmlzUm9vdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaFJvb3ROb2RlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmg6CisgICAgICAgIChXZWJDb3JlOjppc0luSFRNTE5hbWVzcGFjZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgICog
eG1sL1hQYXRoVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6aXNWYWxpZENvbnRl
eHROb2RlKToKKwogMjAxMi0wMi0xNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNzY2MS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYmQyOGFlYjNiYmQwNmUxZGFmNjliZmIxNjY3NDU0
ZWIxNDkwN2QxYy4uOTU3YmE1NWY5OWY1MDliZTA2NjczZjhhYzgxMjljZGFlZDYxOTliYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMi0wNyAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBTaGFkb3dSb290
Lm5vZGVUeXBlIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9OT0RFLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgTm9kZVR5cGUuU0hBRE9XX1JPT1RfTk9E
RSB0eXBlIGlzIGZpbmFsbHkgZ29uZS4KKworICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXpl
ckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxk
Q29udGVudEZvck5vZGUpOgorCiAyMDEyLTAyLTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA3
NjYxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXgg
NjFjMTVkNmI5NGY4MjhlMWRiYjE1ZGZhMjZjYWI5OTUyOGU5OTgwNC4uN2NkZDVmY2U3ZjY4NjIw
NDM3YzNhMGYzNDk0MmZjNjRhZjM2NjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uY3BwCkBAIC0yNTYsOSArMjU2LDYgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBjcmVhdGVXcmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmoKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAg
ICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIERv
Y3VtZW50RnJhZ21lbnQsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Tm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9N
X1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBOb2RlLCBub2RlKTsKLSAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICAgICAg
ICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBFbnRp
dHlSZWZlcmVuY2UsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NLm1tCmluZGV4IDhjY2I3ZTI4NmRkNDYwOTVjZDgwNTUxZmQxMzQ5YzdiMzVlMzc2
NWMuLjc4MDYzNGFjYmI1YjMxYjVkYWZhNzUxZmQ1NzIwODg2MmRmMjQ4ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0zMjcsOCArMzI3LDYgQEAgQ2xhc3Mga2l0Q2xhc3Mo
V2ViQ29yZTo6Tm9kZSogaW1wbCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYW4gWFBh
dGggb2JqZWN0aXZlIEMgd3JhcHBlcgogICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTUKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6Tm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKLSAgICAgICAgICAg
IHJldHVybiBbRE9NTm9kZSBjbGFzc107CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IGYwZTllZjFhMjJlODcxZmExNjhiNzQ4NWRiM2Vj
NjM4NzJjNmZiZWUuLjQ0OTAzMTU1OGJjYWU4NjViNzA5NTk5NjVkYmJhN2QzY2U0ODYwY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20u
Y3BwCkBAIC0xNjYsNyArMTY2LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5v
ZGUqIGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRp
Y19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGNh
c2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
Tm90YXRpb24qPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwotICAgIGNhc2UgTm9kZTo6U0hBRE9X
X1JPT1RfTk9ERTogLy8gVGhlcmUncyBubyBJREwgY2xhc3MgZm9yIFNoYWRvd1Jvb3QsIGZhbGwt
dGhyb3VnaCB0byBkZWZhdWx0IGFuZCB1c2UgTm9kZSBpbnN0ZWFkLgogICAgIGRlZmF1bHQ6IGJy
ZWFrOyAvLyBYUEFUSF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KICAgICByZXR1cm4gVjhOb2RlOjp3
cmFwKGltcGwsIGZvcmNlTmV3T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCBkYmQyYjcyNTk2MDcwNGU5MzhlMDUwYmFhODUzNDVmM2RiZGVjYWJkLi44NGIwYTE1
ODliZjcwNjA5OGQzYmZiODVjZmZmMjljMWZhMzdmZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0
Tm9kZXMoTm9kZSogbm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiAKIHN0YXRpYyB2b2lkIGNvbGxl
Y3RUYXJnZXROb2RlcyhOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKIHsKLSAgICBpZiAo
bm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB7CisgICAg
aWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSB8fCBu
b2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBub2Rlcy5hcHBlbmQobm9kZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgYm9vbCBDb250YWluZXJOb2Rl
OjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQs
IEV4Y2UKICAgICAvLyB0aGF0IG5vIGNhbGxlcnMgY2FsbCB3aXRoIHJlZiBjb3VudCA9PSAwIGFu
ZCBwYXJlbnQgPSAwIChhcyBvZiB0aGlzCiAgICAgLy8gd3JpdGluZywgdGhlcmUgYXJlIGRlZmlu
aXRlbHkgY2FsbGVycyB3aG8gY2FsbCB0aGF0IHdheSkuCiAKLSAgICBib29sIGlzRnJhZ21lbnQg
PSBuZXdDaGlsZC0+bm9kZVR5cGUoKSA9PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOworICAgIGJv
b2wgaXNGcmFnbWVudCA9IG5ld0NoaWxkLT5ub2RlVHlwZSgpID09IERPQ1VNRU5UX0ZSQUdNRU5U
X05PREUgJiYgIW5ld0NoaWxkLT5pc1NoYWRvd1Jvb3QoKTsKIAogICAgIC8vIEFkZCB0aGUgbmV3
IGNoaWxkKHJlbikKICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBpc0ZyYWdtZW50ID8gbmV3Q2hp
bGQtPmZpcnN0Q2hpbGQoKSA6IG5ld0NoaWxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
NjJlZWZmOWI5OTlkOGI3OTVlNDk2MjllMzQ5NzA2ODk0MWM5ZmQ4My4uYTE1YmVjZjdkOGZiMmQz
Y2ZlNjhmMjZhZGEyMjk0OThmMDNhMzlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04
NzYsNiArODc2LDExIEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9k
ZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvCiAgICAgY2FzZSBBVFRSSUJV
VEVfTk9ERToKICAgICAgICAgcmV0dXJuIEF0dHI6OmNyZWF0ZSgwLCB0aGlzLCBzdGF0aWNfY2Fz
dDxBdHRyKj4oaW1wb3J0ZWROb2RlKS0+YXR0cigpLT5jbG9uZSgpKTsKICAgICBjYXNlIERPQ1VN
RU5UX0ZSQUdNRU5UX05PREU6IHsKKyAgICAgICAgaWYgKGltcG9ydGVkTm9kZS0+aXNTaGFkb3dS
b290KCkpIHsKKyAgICAgICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hvdWxkIG5vdCBiZSBl
eHBsaWNpdGx5IGltcG9ydGFibGUuCisgICAgICAgICAgICAvLyBFaXRoZXIgdGhleSBhcmUgaW1w
b3J0ZWQgYWxvbmcgd2l0aCB0aGVpciBob3N0IG5vZGUsIG9yIGNyZWF0ZWQgaW1wbGljaXRseS4K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQq
IG9sZEZyYWdtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGltcG9ydGVkTm9k
ZSk7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBuZXdGcmFnbWVudCA9IGNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgaWYgKGRlZXApIHsKQEAgLTg5OCw5ICs5MDMs
NiBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVk
Tm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgRE9DVU1FTlRfTk9ERToKICAg
ICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICBjYXNlIFhQQVRIX05BTUVTUEFDRV9OT0RF
OgotICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKLSAgICAgICAgLy8gU2hhZG93Um9vdCBub2Rl
cyBzaG91bGQgbm90IGJlIGV4cGxpY2l0bHkgaW1wb3J0YWJsZS4KLSAgICAgICAgLy8gRWl0aGVy
IHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIgaG9zdCBub2RlLCBvciBjcmVhdGVk
IGltcGxpY2l0bHkuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwpAQCAtMjg1Niw3ICsyODU4LDYgQEAgYm9vbCBEb2N1bWVudDo6Y2hpbGRUeXBlQWxs
b3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAogICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICBj
YXNlIFRFWFRfTk9ERToKICAgICBjYXNlIFhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgIGNhc2Ug
U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgQ09NTUVO
VF9OT0RFOgogICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgpAQCAtMjkyNiw5
ICsyOTI3LDYgQEAgYm9vbCBEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxk
LCBOb2RlKiBvbGRDaGlsZCkKICAgICAgICAgICAgIGNhc2UgRUxFTUVOVF9OT0RFOgogICAgICAg
ICAgICAgICAgIG51bUVsZW1lbnRzKys7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTI5NDIsNyArMjk0MCw2IEBAIGJvb2wgRG9jdW1l
bnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCiAgICAg
ICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBURVhUX05PREU6CiAgICAgICAg
IGNhc2UgWFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9E
RToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBDT01NRU5UX05PREU6
CiAgICAgICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IGQ5NDU5M2IyNzY5MGFiMzRhOWZjNWUxZjcxNzIwNzQwYWFjNTFkZGYuLjA3NGNmYTQ2
OGYwNGU1MTNmOWVhMGE4NWJjYzlmNDQyNzk2ZDQ1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTIy
Nyw3ICsyMjcsMTAgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdN
RU5UX05PREU6IHsKLSAgICAgICAgICAgICAgICArK2ZyYWdtZW50Tm9kZXM7CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgICAgICAgICArK3No
YWRvd1Jvb3ROb2RlczsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICsrZnJhZ21lbnROb2RlczsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERTogewpAQCAtMjM4LDEwICsyNDEsNiBAQCB2
b2lkIE5vZGU6OmR1bXBTdGF0aXN0aWNzKCkKICAgICAgICAgICAgICAgICArK3hwYXRoTlNOb2Rl
czsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNh
c2UgU0hBRE9XX1JPT1RfTk9ERTogewotICAgICAgICAgICAgICAgICsrc2hhZG93Um9vdE5vZGVz
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCkBAIC0xODQ1LDcgKzE4NDQsNiBAQCBib29sIE5vZGU6OmlzRGVmYXVsdE5hbWVzcGFjZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSU1heWJlRW1wdHkpIGNvbnN0CiAgICAgICAg
IGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6CiAg
ICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1df
Uk9PVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEFUVFJJ
QlVURV9OT0RFOiB7CiAgICAgICAgICAgICBjb25zdCBBdHRyKiBhdHRyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQXR0cio+KHRoaXMpOwpAQCAtMTg3OSw3ICsxODc3LDYgQEAgU3RyaW5nIE5vZGU6Omxv
b2t1cFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcgJm5hbWVzcGFjZVVSSSkgY29uc3QKICAgICAg
ICAgY2FzZSBOT1RBVElPTl9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05P
REU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNlIFNIQURP
V19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2Ug
QVRUUklCVVRFX05PREU6IHsKICAgICAgICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBBdHRyICo+KHRoaXMpOwpAQCAtMTkzOCw3ICsxOTM1LDYgQEAgU3RyaW5nIE5v
ZGU6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcgJnByZWZpeCkgY29uc3QKICAgICAg
ICAgY2FzZSBOT1RBVElPTl9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToK
ICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIFNIQURP
V19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIGNhc2Ug
QVRUUklCVVRFX05PREU6IHsKICAgICAgICAgICAgIGNvbnN0IEF0dHIgKmF0dHIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBBdHRyICo+KHRoaXMpOwpAQCAtMjAwNiw3ICsyMDAyLDYgQEAgc3RhdGljIHZv
aWQgYXBwZW5kVGV4dENvbnRlbnQoY29uc3QgTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QlJzVG9O
ZXdsaW5lcywgYm9vbCYKICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01F
TlRfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIGlzTnVs
bFN0cmluZyA9IGZhbHNlOwogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAg
ICAgaWYgKGNoaWxkLT5ub2RlVHlwZSgpID09IE5vZGU6OkNPTU1FTlRfTk9ERSB8fCBjaGlsZC0+
bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpCkBAIC0yMDQ0
LDggKzIwMzksNyBAQCB2b2lkIE5vZGU6OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgQVRUUklCVVRFX05PREU6CiAgICAg
ICAgIGNhc2UgRU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgRU5USVRZX1JFRkVSRU5DRV9OT0RF
OgotICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hB
RE9XX1JPT1RfTk9ERTogeworICAgICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsK
ICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciA9IHRvQ29udGFpbmVyTm9kZSh0
aGlzKTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgICAgICAgICAgQ2hpbGRM
aXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGUxYmJlYTVk
OTI3NzFlYzZlNjdlMGYzZTE0OGU3Y2VjOWQ4MjE0ZmUuLmVlZjI2Y2RlZmE5ZmIwNjY3Y2ZhZWI5
YTBlYzVjOTY2MmRjMWRjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTIyLDcgKzEyMiw2IEBAIHB1Ymxp
YzoKICAgICAgICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSA9IDExLAogICAgICAgICBOT1RBVElP
Tl9OT0RFID0gMTIsCiAgICAgICAgIFhQQVRIX05BTUVTUEFDRV9OT0RFID0gMTMsCi0gICAgICAg
IFNIQURPV19ST09UX05PREUgPSAxNAogICAgIH07CiAgICAgZW51bSBEb2N1bWVudFBvc2l0aW9u
IHsKICAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fRVFVSVZBTEVOVCA9IDB4MDAsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcAppbmRleCBlMDg2ZDVmZTY5ZjMxMjk3NTEzMDQxMGE1MDBhNmZjZDk5MzgzNGM2Li4w
YzAwY2ZkYTkwYjBkYjVlOWFlZGQ1OGUzOTRjNWE4YzA1MGY0NzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAKQEAgLTY3Nyw3ICs2NzcsNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29u
dGVudHNJbk5vZGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBB
VEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAg
ICAgICByZXR1cm4gbm9kZS0+Y2hpbGROb2RlQ291bnQoKTsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC04NDAsNyArODM5LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6
cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWYK
ICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpO
T1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
Y2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdl
IGFzc2VydCB0aGF0IHNvbWUgbm9kZXMgbmV2ZXIgYXBwZWFyIGhlcmU/CiAgICAgICAgIGlmIChh
Y3Rpb24gPT0gRVhUUkFDVF9DT05URU5UUyB8fCBhY3Rpb24gPT0gQ0xPTkVfQ09OVEVOVFMpIHsK
ICAgICAgICAgICAgIGlmIChmcmFnbWVudCkKQEAgLTk5Nyw3ICs5OTUsNyBAQCB2b2lkIFJhbmdl
OjppbnNlcnROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gcHJwTmV3Tm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAKICAgICBOb2RlOjpOb2RlVHlwZSBuZXdOb2RlVHlwZSA9IG5ld05vZGUtPm5vZGVUeXBl
KCk7CiAgICAgaW50IG51bU5ld0NoaWxkcmVuOwotICAgIGlmIChuZXdOb2RlVHlwZSA9PSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB7CisgICAgaWYgKG5ld05vZGVUeXBlID09IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgJiYgIW5ld05vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAg
ICAgICAgIC8vIGNoZWNrIGVhY2ggY2hpbGQgbm9kZSwgbm90IHRoZSBEb2N1bWVudEZyYWdtZW50
IGl0c2VsZgogICAgICAgICBudW1OZXdDaGlsZHJlbiA9IDA7CiAgICAgICAgIGZvciAoTm9kZSog
YyA9IG5ld05vZGUtPmZpcnN0Q2hpbGQoKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nKCkpIHsKQEAg
LTEwMjgsMTAgKzEwMjYsMTMgQEAgdm9pZCBSYW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVmUHRyPE5v
ZGU+IHBycE5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGNhc2UgTm9kZTo6RU5USVRZ
X05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6RE9D
VU1FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgIGVj
ID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChuZXdOb2RlLT5pc1NoYWRvd1Jvb3QoKSkgewor
ICAgICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApA
QCAtMTIxNyw4ICsxMjE4LDcgQEAgTm9kZSogUmFuZ2U6OmNoZWNrTm9kZVdPZmZzZXQoTm9kZSog
biwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6CiAgICAg
ICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6
OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05P
REU6IHsKKyAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERTogewogICAgICAg
ICAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
ICBOb2RlKiBjaGlsZEJlZm9yZSA9IG4tPmNoaWxkTm9kZShvZmZzZXQgLSAxKTsKQEAgLTEyNDMs
NyArMTI0Myw2IEBAIHZvaWQgUmFuZ2U6OmNoZWNrTm9kZUJBKE5vZGUqIG4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAg
IGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9E
RToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgZWMg
PSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKQEAgLTEyNjUsNyAr
MTI2NCw2IEBAIHZvaWQgUmFuZ2U6OmNoZWNrTm9kZUJBKE5vZGUqIG4sIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAgICAgICBj
YXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJB
R01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgogICAg
ICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKQEAgLTEzOTcsNyArMTM5NSw2IEBAIHZvaWQg
UmFuZ2U6OnNlbGVjdE5vZGUoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAgICAgICAg
ICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9O
QU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRf
VFlQRV9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKQEAgLTE0MjIs
NyArMTQxOSw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGUoTm9kZSogcmVmTm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RF
OgotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICBlYyA9
IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTQ2Myw3ICsxNDU5LDYgQEAgdm9pZCBSYW5nZTo6c2VsZWN0Tm9kZUNv
bnRlbnRzKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgY2Fz
ZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgICAgICBjYXNlIE5v
ZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05P
REU6Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToK
ICAgICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNTEyLDcgKzE1MDcsNiBA
QCB2b2lkIFJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKFBhc3NSZWZQdHI8Tm9kZT4gcGFzc05ld1Bh
cmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19J
TlNUUlVDVElPTl9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAg
Y2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFE
T1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKaW5kZXggYjNmYjZhZGQyZGNmOTEzNGI1Yjc2MjIzYmRkZTk3ODdmNmViNWIz
NS4uM2Q3NTIxNzkxMzUyMDY0ZGU0MDFiYjI4NDYyYzY2ODI1YmVhN2I2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcApAQCAtMTI1LDExICsxMjUsNiBAQCBTdHJpbmcgU2hhZG93Um9vdDo6
bm9kZU5hbWUoKSBjb25zdAogICAgIHJldHVybiAiI3NoYWRvdy1yb290IjsKIH0KIAotTm9kZTo6
Tm9kZVR5cGUgU2hhZG93Um9vdDo6bm9kZVR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBTSEFE
T1dfUk9PVF9OT0RFOwotfQotCiBQYXNzUmVmUHRyPE5vZGU+IFNoYWRvd1Jvb3Q6OmNsb25lTm9k
ZShib29sKQogewogICAgIC8vIFNoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBiZSBhcmJpdHJhcmlseSBj
bG9uZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCAwZjJkOWRmY2M4ZmU1MDVkMzA5MDY4
YTFkYjZkNWRkYzVkODQyYTc4Li5iYTQ1M2FjYjkwZWFlZDkzYmQxY2FhN2UzZTMxNGVlNzAwYzdj
Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTgzLDcgKzgzLDYgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFt
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogCkBAIC0xMTMsNyArMTEy
LDcgQEAgaW5saW5lIGJvb2wgU2hhZG93Um9vdDo6bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFu
ZFNoYWRvdygpCiAKIGlubGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkK
IHsKLSAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1df
Uk9PVF9OT0RFKTsKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFkb3dSb290Kj4obm9kZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZmM3Mjg2ZWJhNjE5ODUxYTg4
NTI5YTMyMzhkZjdmZWM2NGQ2NmQ1OC4uZGUyZDY1ZDdlNzZmNmU3MmEzZGI4ZmEwNjBlNjllZDZl
NjI5ZGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAg
LTQyNSwxMCArNDI1LDE3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uQWZ0ZXJBZG9wdGlu
Z1RleHRSZXBsYWNlbWVudChQb3NpdGlvbiYgcG9zaXRpb24sIENoYXJhCiAgICAgICAgIHBvc2l0
aW9uLm1vdmVUb09mZnNldChwb3NpdGlvbk9mZnNldCAtIG9sZExlbmd0aCArIG5ld0xlbmd0aCk7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBub2RlSXNEZXRhY2hlZEZyb21Eb2N1bWVudChOb2Rl
KiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBoaWdoZXN0ID0gaGlnaGVz
dEFuY2VzdG9yKG5vZGUpOworICAgIHJldHVybiBoaWdoZXN0LT5ub2RlVHlwZSgpID09IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgJiYgIWhpZ2hlc3QtPmlzU2hhZG93Um9vdCgpOworfQor
CiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp0ZXh0V2lsbEJlUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSog
bm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xl
bmd0aCkKIHsKICAgICAvLyBUaGUgZnJhZ21lbnQgY2hlY2sgaXMgYSBwZXJmb3JtYW5jZSBvcHRp
bWl6YXRpb24uIFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMDA2Mi4KLSAg
ICBpZiAoaXNOb25lKCkgfHwgIW5vZGUgfHwgaGlnaGVzdEFuY2VzdG9yKG5vZGUpLT5ub2RlVHlw
ZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpCisgICAgaWYgKGlzTm9uZSgpIHx8
ICFub2RlIHx8IG5vZGVJc0RldGFjaGVkRnJvbURvY3VtZW50KG5vZGUpKQogICAgICAgICByZXR1
cm47CiAKICAgICBQb3NpdGlvbiBiYXNlID0gbV9zZWxlY3Rpb24uYmFzZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCAwNDU4NzRiMjFlM2Fl
NmFiMzk4ZmIzYWM0ZWJiZjJmYzAxNTIyOTZmLi40NzY5MDRlYmM5MTNjYWJkNmU5Y2UwYzgzYjNk
N2Q3N2JhMWM0MDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcApAQCAtNDQ0LDcgKzQ0NCw2IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3QgTm9kZSogbm9kCiAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElP
Tl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RWxlbWVudFN0YWNrLmNwcAppbmRleCA5ODg4NTc0M2U3NzY4NjU2NmY5Mjk3ZjY1NDYzMTMwOGRh
MzQ0YTdlLi45Y2MzYTAzMTY2ZTUxMWFiMjU4NjcyZjQzY2I3MDA4MTVjNzc0MDI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtNTMs
NyArNTMsNiBAQCBpbmxpbmUgYm9vbCBpc051bWJlcmVkSGVhZGVyRWxlbWVudChDb250YWluZXJO
b2RlKiBub2RlKQogaW5saW5lIGJvb2wgaXNSb290Tm9kZShDb250YWluZXJOb2RlKiBub2RlKQog
ewogICAgIHJldHVybiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9O
T0RFCiAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRhZyk7CiB9CiAKQEAgLTMxMCw3
ICszMDksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVudGlsRm9yZWlnbkNvbnRlbnRT
Y29wZU1hcmtlcigpCiAgICAgCiB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hSb290Tm9kZShQ
YXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3ROb2RlKQogewotICAgIEFTU0VSVChyb290Tm9k
ZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFIHx8IHJvb3ROb2Rl
LT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREUpOworICAgIEFTU0VSVChyb290
Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKTsKICAgICBw
dXNoUm9vdE5vZGVDb21tb24ocm9vdE5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKaW5kZXggZjYwNGY4MmM3ODM3OTk3NWQ2ZmZiMzFi
OGRiYmRmMTYyN2VhZjk4OC4uNTY5N2U4MGM4Nzg2Y2RhNGQwMzJiOWVkMDY5MjNlOTIxMGEyZTg1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFj
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suaApA
QCAtMTgwLDggKzE4MCw3IEBAIGlubGluZSBib29sIGlzSW5IVE1MTmFtZXNwYWNlKE5vZGUqIG5v
ZGUpCiAgICAgLy8gQSBEb2N1bWVudEZyYWdtZW50IHRha2VzIHRoZSBwbGFjZSBvZiB0aGUgZG9j
dW1lbnQgZWxlbWVudCB3aGVuIHBhcnNpbmcKICAgICAvLyBmcmFnbWVudHMgYW5kIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGluIHRoZSBIVE1MIG5hbWVzcGFjZS4KICAgICByZXR1cm4gbm9kZS0+bmFt
ZXNwYWNlVVJJKCkgPT0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSQotICAgICAgICB8fCBu
b2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAg
fHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOyAvLyBGSVhNRTog
RG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9vdD8KKyAgICAgICAgfHwgbm9kZS0+bm9k
ZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0
aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9vdD8KIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA1NjQwNmQzMGIwNTlkYmI2NjM4
MmM1NGQ2M2E1YTQwMzU2NmQ4MjQ2Li5iOWYyMDc4MjA2OWVhYzVkY2FjYWE5Yzg2YzBmYjE2NWYz
YTUzYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1
bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByb290KQogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQpCiB7
CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwotICAgIGlmICghbm9kZSB8fCAo
bm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUo
KSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9D
VU1FTlRfRlJBR01FTlRfTk9ERSkpCisgICAgaWYgKCFub2RlIHx8IChub2RlLT5ub2RlVHlwZSgp
ICE9IE5vZGU6OkVMRU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VN
RU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFKSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICht
X2NoaWxkcmVuUmVxdWVzdGVkLmNvbnRhaW5zKG5vZGVJZCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTExNjAsNyArMTE2MCw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGluCiAgICAgICAgIGxvY2Fs
TmFtZSA9IG5vZGUtPmxvY2FsTmFtZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIW5v
ZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZhbGwg
dGhyb3VnaAogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkVM
RU1FTlRfTk9ERToKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcAppbmRleCA0
YzQ1ZmNiY2ExYTg3ZmFmZjJiYjU2MmFmNWZlZDc3MWU1ZmM0OGFiLi43YThmZjMzY2Y2NzMyNWZi
MWViNDRlMjg1MjhmZjc3ZmQ2ZTJmM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcApAQCAt
ODUsNyArODUsNiBAQCBib29sIGlzVmFsaWRDb250ZXh0Tm9kZShOb2RlKiBub2RlKQogICAgICAg
ICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZF
UkVOQ0VfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgotICAgICAgICBj
YXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuICEobm9kZS0+
cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNBdHRyaWJ1dGVOb2RlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKaW5kZXggY2EwNTgzNDg4OTBmZjEzMzA2NGUxYzA4OTgwNzA2MGY3YjA4OTNlNS4uMDcy
YTk5MDljNTc5NDY2YTA0ZGJhMmMwZTcxYTAwMzJmN2RiYmIwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCkBAIC00MTcs
NyArNDE3LDYgQEAgdm9pZCBXZWJQYWdlU2VyaWFsaXplckltcGw6OmJ1aWxkQ29udGVudEZvck5v
ZGUoTm9kZSogbm9kZSwKICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05P
REU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICAvLyBTaG91bGQg
bm90IGV4aXN0LgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZjVmOTEzYTQzNGE3MmQzZjAzMTEzNjgxZGMxMGE3MmExMzJjYjFmYi4uMmM4ODE5
MDQ1YjhjM2I1NDIzYzg2YTVhYjlhZmRkYzBjNmQ4ZWU4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTAyLTA3ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBOb2RlVHlw
ZS5TSEFET1dfUk9PVF9OT0RFIHR5cGUgaXMgZmluYWxseSBnb25lLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvbm9kZXR5cGUuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAu
anM6CisgICAgICAgIChNYXJrdXAuX2dldCk6CisKIDIwMTItMDItMTQgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLCBza2lwIG5ldyBmYWlsaW5nIHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L25vZGV0eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9ub2RldHlwZS1leHBlY3RlZC50eHQKaW5kZXggY2I1MDU1MmZkMmE1NTg0ZmQ0N2Ez
YTJkZmE0NDc5Zjk0ZmM4YTgxYi4uMjFlY2NkNTVlOWY2YzY5YjM3NWEyY2MzYjgwZDgyYTAwMmU0
YzQyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUtZXhw
ZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAogCiBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdz
IGFuZCBzaGFkb3cgcm9vdCdzIG5vZGVUeXBlLgogUEFTUyBrZXlnZW4ubm9kZVR5cGUgaXMgTm9k
ZS5FTEVNRU5UX05PREUKLVBBU1Mgc2hhZG93Lm5vZGVUeXBlIGlzIDE0CitQQVNTIHNoYWRvdy5u
b2RlVHlwZSBpcyBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKIFBBU1Mgc2hhZG93Q2hpbGQg
aXMgbm9uLW51bGwuCi1QQVNTIHNoYWRvd0NoaWxkLm5vZGVUeXBlICE9IDE0IGlzIHRydWUKK1BB
U1Mgc2hhZG93Q2hpbGQubm9kZVR5cGUgIT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGlz
IHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAppbmRleCBlYTFiYTFhZjU2
MGNjMDkyZjAzYWM0NzgzZmUxZjg0MjZhNDEzMGY4Li4wMTE5MjU4YWQ1MjA1ZGI0NTk1NzZhYjE0
MzFhOTY3Mzc0MWQ1NDM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
bm9kZXR5cGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUu
aHRtbApAQCAtMTYsOSArMTYsOSBAQCBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBz
aGFkb3cgcm9vdCdzIG5vZGVUeXBlLgogICAgICAgICB2YXIgc2hhZG93ID0gaW50ZXJuYWxzLnNo
YWRvd1Jvb3Qoa2V5Z2VuKTsKICAgICAgICAgdmFyIHNoYWRvd0NoaWxkID0gc2hhZG93LmZpcnN0
Q2hpbGQ7CiAgICAgICAgIHNob3VsZEJlKCdrZXlnZW4ubm9kZVR5cGUnLCAnTm9kZS5FTEVNRU5U
X05PREUnKTsKLSAgICAgICAgc2hvdWxkQmUoJ3NoYWRvdy5ub2RlVHlwZScsICcxNCcpOworICAg
ICAgICBzaG91bGRCZSgnc2hhZG93Lm5vZGVUeXBlJywgJ05vZGUuRE9DVU1FTlRfRlJBR01FTlRf
Tk9ERScpOwogICAgICAgICBzaG91bGRCZU5vbk51bGwoJ3NoYWRvd0NoaWxkJyk7Ci0gICAgICAg
IHNob3VsZEJlVHJ1ZSgnc2hhZG93Q2hpbGQubm9kZVR5cGUgIT0gMTQnKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCdzaGFkb3dDaGlsZC5ub2RlVHlwZSAhPSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREUnKTsKICAgICB9CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jl
c291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFz
LW1hcmt1cC5qcwppbmRleCA4Y2I2OGVjODdlN2Q5Zjk2MmY0NDc0ZjViMTgxZDFkOGY2N2E4Mjcz
Li5jNGQwNjljMTVkNzJmNTUyODExMzgzM2U4MTZjMDBhYzI5Mzc0YjY2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMKKysrIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCkBAIC0yMTUsOCArMjE1LDkgQEAgTWFya3VwLl9n
ZXQgPSBmdW5jdGlvbihub2RlLCBkZXB0aCkKICAgICAgICAgICAgICAgICBzdHIgKz0gTWFya3Vw
Ll9pbmRlbnQoZGVwdGggKyAxKSArICd0aGlzLnZhbHVlPSInICsgbm9kZS52YWx1ZSArICciJzsK
IAogICAgICAgICBicmVhazsKLSAgICBjYXNlIDE0OiAvLyBTZWUgU0hBRE9XX1JPT1RfTk9ERSBv
biBOb2RlOjpOb2RlVHlwZQotICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOworICAgIGNh
c2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICBpZiAobm9kZS5ub2RlTmFt
ZSA9PSAiI3NoYWRvdy1yb290IikKKyAgICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOwog
ICAgIH0KIAogICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBub2RlLmNoaWxkTm9kZXMubGVuZ3Ro
OyBpIDwgbGVuOyBpKyspIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>