<?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>97298</bug_id>
          
          <creation_ts>2012-09-20 23:43:49 -0700</creation_ts>
          <short_desc>[Refactoring] Introduce a traversal strategy in SelectorChecker</short_desc>
          <delta_ts>2012-10-04 21:47:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          
          <blocked>96990</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hayato</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725199</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-20 23:43:49 -0700</bug_when>
    <thetext>In Bug 96990, we would like to make SelectorChecker work with a node pool which is populated by &lt;content&gt; or &lt;shadow&gt; element.
As the first step, we would like to extract a dom traversal code from SelectorChecker so that we would like to reuse SelectorChecker for a node pool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725223</commentid>
    <comment_count>1</comment_count>
      <attachid>165065</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-21 00:21:49 -0700</bug_when>
    <thetext>Created attachment 165065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725582</commentid>
    <comment_count>2</comment_count>
      <attachid>165065</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-21 09:45:01 -0700</bug_when>
    <thetext>Comment on attachment 165065
Patch

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

I am still happy with the general approach, just need to keep improving.

&gt; Source/WebCore/ChangeLog:14
&gt; +        Since this code path is very hot, we were very careful not to regress performance.
&gt; +        We used template and inline method, also we did not add a new argument to SelectorChecker::checkOneSelector,
&gt; +        but replaced the SelectorCheckingContext to Strategy. When we added a new argument to checkOneSelector,
&gt; +        we detected 3% ~ 5% performance regression.

This seems like black magic. Why would the performance regress like this?

Also, I am fine with Context containing Strategy, but not the other way around. Strategy is an abstract notion and shouldn&apos;t really have state. Context contains specifics of selector-checking. Strategy taking Context as argument also seems fine.

&gt; Source/WebCore/ChangeLog:42
&gt; +        (WebCore::SelectorChecker::DOMTraversalStrategy::isFirstChild): This kind of methods takes arguments
&gt; +        instead of having a member. When we use member, we have detected 10% performance regression.

I don&apos;t understand this comment. Maybe remove it? :)

&gt; Source/WebCore/css/SelectorChecker.h:268
&gt; +inline bool SelectorChecker::DOMTraversalStrategy::isFirstOfType(Element* element, const QualifiedName&amp; type) const

Do all these methods have to live in the header? That seems sad.

&gt; PerformanceTests/CSS/pseudoclass-selectors.html:6
&gt; +    &lt;span&gt;&lt;/span&gt;

I wonder if you would make the tree a bit more complex, you&apos;d see more interesting data. I worry this is too small to give you any meaningful results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725618</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-21 10:22:59 -0700</bug_when>
    <thetext>Factoring like this makes no sense to me. You are invoking the DOMTraversalStrategy functions with &apos;this&apos; pointer but none of them actually use it.

The added abstraction just makes the code harder to understand. If there are code sharing opportunities please just factor them into static inline functions.

Generally, I&apos;d like to hear what the goal here is. Refactoring without some measurable end goal (enabling performance improvements or new features for example) does not necessarily lead to good results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725637</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-21 11:00:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Factoring like this makes no sense to me. You are invoking the DOMTraversalStrategy functions with &apos;this&apos; pointer but none of them actually use it.

That is a really good point.

&gt; The added abstraction just makes the code harder to understand. If there are code sharing opportunities please just factor them into static inline functions.

&gt; Generally, I&apos;d like to hear what the goal here is. Refactoring without some measurable end goal (enabling performance improvements or new features for example) does not necessarily lead to good results.

Here&apos;s the larger patch on bug 96990 (that I asked Shinya to break up) to show the context:
https://bugs.webkit.org/attachment.cgi?id=164899&amp;action=review

The trick here is that in Shadow DOM, we need the selector to match a list of nodes that is not (necessarily) the list of children of an element. Some of the nodes are, but some may have been projected as children by an enclosing shadow DOM subtree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727247</commentid>
    <comment_count>5</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-24 21:08:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 165065 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165065&amp;action=review
&gt; 
&gt; I am still happy with the general approach, just need to keep improving.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        Since this code path is very hot, we were very careful not to regress performance.
&gt; &gt; +        We used template and inline method, also we did not add a new argument to SelectorChecker::checkOneSelector,
&gt; &gt; +        but replaced the SelectorCheckingContext to Strategy. When we added a new argument to checkOneSelector,
&gt; &gt; +        we detected 3% ~ 5% performance regression.
&gt; 
&gt; This seems like black magic. Why would the performance regress like this?

The 4th argument is passed with a register, and it will cause a few extra memory operations in the function, as far as I investigated the assembly code.

&gt; &gt; PerformanceTests/CSS/pseudoclass-selectors.html:6
&gt; &gt; +    &lt;span&gt;&lt;/span&gt;
&gt; 
&gt; I wonder if you would make the tree a bit more complex, you&apos;d see more interesting data. I worry this is too small to give you any meaningful results.

Since we want to measure the overhead of template function call, it seems simpler is better. A simple test will magnify the overhead of this patch if any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727275</commentid>
    <comment_count>6</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-24 21:44:46 -0700</bug_when>
    <thetext>&gt; &gt; &gt; PerformanceTests/CSS/pseudoclass-selectors.html:6
&gt; &gt; &gt; +    &lt;span&gt;&lt;/span&gt;
&gt; &gt; 
&gt; &gt; I wonder if you would make the tree a bit more complex, you&apos;d see more interesting data. I worry this is too small to give you any meaningful results.
&gt; 
&gt; Since we want to measure the overhead of template function call, it seems simpler is better. A simple test will magnify the overhead of this patch if any.

Oops, this is not correct so much. checkSelector will be called for all elements which we try to match. So I think complexity does not matter so much. Very simple one is not good, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727324</commentid>
    <comment_count>7</comment_count>
      <attachid>165529</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-24 23:27:37 -0700</bug_when>
    <thetext>Created attachment 165529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727342</commentid>
    <comment_count>8</comment_count>
      <attachid>165529</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-24 23:56:52 -0700</bug_when>
    <thetext>Comment on attachment 165529
Patch

Attachment 165529 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14006377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727369</commentid>
    <comment_count>9</comment_count>
      <attachid>165545</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-25 00:49:27 -0700</bug_when>
    <thetext>Created attachment 165545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727386</commentid>
    <comment_count>10</comment_count>
      <attachid>165545</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-25 01:06:00 -0700</bug_when>
    <thetext>Comment on attachment 165545
Patch

This doesn&apos;t pass tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727388</commentid>
    <comment_count>11</comment_count>
      <attachid>165548</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-25 01:10:20 -0700</bug_when>
    <thetext>Created attachment 165548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727399</commentid>
    <comment_count>12</comment_count>
      <attachid>165550</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-25 01:21:30 -0700</bug_when>
    <thetext>Created attachment 165550
WIP including other patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727402</commentid>
    <comment_count>13</comment_count>
      <attachid>165552</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-25 01:24:23 -0700</bug_when>
    <thetext>Created attachment 165552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727676</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-25 08:43:14 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; &gt; &gt; +        but replaced the SelectorCheckingContext to Strategy. When we added a new argument to checkOneSelector,
&gt; &gt; &gt; +        we detected 3% ~ 5% performance regression.
&gt; &gt; 
&gt; &gt; This seems like black magic. Why would the performance regress like this?
&gt; 
&gt; The 4th argument is passed with a register, and it will cause a few extra memory operations in the function, as far as I investigated the assembly code.

Whoa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727697</commentid>
    <comment_count>15</comment_count>
      <attachid>165552</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-25 09:17:58 -0700</bug_when>
    <thetext>Comment on attachment 165552
Patch

Hmm.. The template turducken is not enjoyable. It&apos;s clever, but at least to me, it&apos;s a decrease in clarity. Let me ponder this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727710</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-25 09:28:23 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #5)
&gt; 
&gt; &gt; &gt; &gt; +        but replaced the SelectorCheckingContext to Strategy. When we added a new argument to checkOneSelector,
&gt; &gt; &gt; &gt; +        we detected 3% ~ 5% performance regression.
&gt; &gt; &gt; 
&gt; &gt; &gt; This seems like black magic. Why would the performance regress like this?
&gt; &gt; 
&gt; &gt; The 4th argument is passed with a register, and it will cause a few extra memory operations in the function, as far as I investigated the assembly code.
&gt; 
&gt; Whoa.

BTW, I will reduce function signature to 2 arguments in bug 96445, which I&apos;ll finish as soon as I am done with &lt;insert word that rhymes with nerf&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728628</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-26 09:02:33 -0700</bug_when>
    <thetext>I wonder if we could lower the complexity by making SelectorCheckingContext a template and specializing it _before_ it&apos;s passes to checkSelector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729137</commentid>
    <comment_count>18</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-26 19:09:43 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I wonder if we could lower the complexity by making SelectorCheckingContext a template and specializing it _before_ it&apos;s passes to checkSelector?

I&apos;ve thought the following ideas before.
# I prefer to making SelectorCheckingContext and SelectorCheckingContextForShadow incompatible, since they are not have is-a relation.

(type A)

template&lt;Strategy&gt;
struct SelectorCheckingContext {
    ...
    Strategy strategy;
};

When we should not have Vector&lt;Node*&gt; for strategy, we have to pass SelectorCheckingContext to strategy anyway. Seems strange for me.

(type B) 

template&lt;Strategy&gt;
struct SelectorCheckingContextBase {
    typedef Strategy TraversalStrategy;
};

and

struct SelectCheckingContext : public SelectorCheckingContextBase&lt;DOMTraversalStrategy&gt; {
};

struct SelectCheckingContextForShadow : public SelectorCheckingContextBase&lt;ShadowDOMTraversalStrategy&gt; {
    Vector&lt;Node*&gt; nodes;
    int nth;
};

and calls CheckingContext::TraversalStrategy::isFirstChild(context, element) etc. This is more complicated than now, I think.

(type C)

struct SelectorCheckingContextBase {
    // fields are the same as exiting SelectorCheckingContext.
};

and

struct SelectCheckingContext : public SelectorCheckingContextBase {
    bool isFirstChild(Element*) const;
    ...
};

struct SelectCheckingContextForShadow : public SelectorCheckingContextBase&lt;ShadowDOMTraversalStrategy&gt; {
    bool isFirstChild(Element*) const;
    ...

    Vector&lt;Node*&gt; nodes;
    int nth;
};

SelectorCheckingContext and TraversalStrategy are mixed. I don&apos;t like this design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729138</commentid>
    <comment_count>19</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-26 19:10:41 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I wonder if we could lower the complexity by making SelectorCheckingContext a template and specializing it _before_ it&apos;s passes to checkSelector?

I&apos;m not sure what this means, so can you give me some example?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729162</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-26 20:03:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; I wonder if we could lower the complexity by making SelectorCheckingContext a template and specializing it _before_ it&apos;s passes to checkSelector?
&gt; 
&gt; I&apos;ve thought the following ideas before.
&gt; # I prefer to making SelectorCheckingContext and SelectorCheckingContextForShadow incompatible, since they are not have is-a relation.
&gt; 
&gt; (type A)
&gt; 
&gt; template&lt;Strategy&gt;
&gt; struct SelectorCheckingContext {
&gt;     ...
&gt;     Strategy strategy;
&gt; };

This is the one I meant. 

&gt; When we should not have Vector&lt;Node*&gt; for strategy, we have to pass SelectorCheckingContext to strategy anyway. Seems strange for me.

Can you explain this a bit? I am not sure I understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730248</commentid>
    <comment_count>21</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-27 22:30:26 -0700</bug_when>
    <thetext>&gt; &gt; When we should not have Vector&lt;Node*&gt; for strategy, we have to pass SelectorCheckingContext to strategy anyway. Seems strange for me.
&gt; 
&gt; Can you explain this a bit? I am not sure I understand.

Since we don&apos;t want to have state in Strategy, we will have to have Vector&lt;Node*&gt; in SelectorCheckingContext (for Shadow). Strategy for ShadowDOM needs Vector&lt;Node*&gt;, we have to pass SelectorCheckingContext to Strategy as an argument. The method signature of Strategy will be like this.

class Strategy {
    ...
    bool isFirstChild(const SelectorCheckingContext&lt;Strategy&gt;&amp; context, Element*) const;
    ...
};

Though strategy is owned by Context, we have to pass Context to strategy. This seems a bit strange for me. It&apos;s OK in some case, but I hesitate to do like this.

# Here, we have to pass Element to isFirstChild not to regress performance. Though context has the same object, reading form a class field needs memory operation in the current compiler.

If it&apos;s OK to have Vector&lt;Node*&gt; in Strategy, this discussion does not hold, and I don&apos;t have any objection for this, since we don&apos;t have to pass SelectorCheckingContext to Strategy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730689</commentid>
    <comment_count>22</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-28 08:43:35 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; &gt; When we should not have Vector&lt;Node*&gt; for strategy, we have to pass SelectorCheckingContext to strategy anyway. Seems strange for me.
&gt; &gt; 
&gt; &gt; Can you explain this a bit? I am not sure I understand.
&gt; 
&gt; Since we don&apos;t want to have state in Strategy, we will have to have Vector&lt;Node*&gt; in SelectorCheckingContext (for Shadow). Strategy for ShadowDOM needs Vector&lt;Node*&gt;, we have to pass SelectorCheckingContext to Strategy as an argument. The method signature of Strategy will be like this.
&gt; 
&gt; class Strategy {
&gt;     ...
&gt;     bool isFirstChild(const SelectorCheckingContext&lt;Strategy&gt;&amp; context, Element*) const;
&gt;     ...
&gt; };
&gt; 
&gt; Though strategy is owned by Context, we have to pass Context to strategy. This seems a bit strange for me. It&apos;s OK in some case, but I hesitate to do like this.
&gt; 
&gt; # Here, we have to pass Element to isFirstChild not to regress performance. Though context has the same object, reading form a class field needs memory operation in the current compiler.
&gt; 
&gt; If it&apos;s OK to have Vector&lt;Node*&gt; in Strategy, this discussion does not hold, and I don&apos;t have any objection for this, since we don&apos;t have to pass SelectorCheckingContext to Strategy.

I am ok with relaxing my view that Strategies should not hold state, if it will make code more readable. Let&apos;s do it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732708</commentid>
    <comment_count>23</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-02 09:21:03 -0700</bug_when>
    <thetext>Wanted to check and see how things are going here. I think I am waiting on a new patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733593</commentid>
    <comment_count>24</comment_count>
      <attachid>166868</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-03 05:35:00 -0700</bug_when>
    <thetext>Created attachment 166868
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733594</commentid>
    <comment_count>25</comment_count>
      <attachid>166869</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-03 05:36:23 -0700</bug_when>
    <thetext>Created attachment 166869
Sync with ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733595</commentid>
    <comment_count>26</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-03 05:38:13 -0700</bug_when>
    <thetext>I&apos;ve updated the patch, syncing with ToT. I am afraid that I have not addressed every comments in the discussion. Please let me know if I miss something.

(In reply to comment #23)
&gt; Wanted to check and see how things are going here. I think I am waiting on a new patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733916</commentid>
    <comment_count>27</comment_count>
      <attachid>166936</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-03 12:18:09 -0700</bug_when>
    <thetext>Created attachment 166936
WIP: Strategy as a member of SelectorCheckingContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733921</commentid>
    <comment_count>28</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-03 12:23:03 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=166936) [details]
&gt; WIP: Strategy as a member of SelectorCheckingContext.

In this patch, I tried the approach A from comment 18. Performance stays within the noise range, but the templates are still quite ugly. Let me give this another try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733979</commentid>
    <comment_count>29</comment_count>
      <attachid>166869</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-03 13:21:04 -0700</bug_when>
    <thetext>Comment on attachment 166869
Sync with ToT

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

&gt; Source/WebCore/ChangeLog:33
&gt; +        Test: PerformanceTests/CSS?pseudoclass-selectors.html

Please use CamelCase for the test name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733981</commentid>
    <comment_count>30</comment_count>
      <attachid>166950</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-03 13:21:40 -0700</bug_when>
    <thetext>Created attachment 166950
WIP: Strategy as interface member of SelectorCheckingContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734018</commentid>
    <comment_count>31</comment_count>
      <attachid>166950</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-03 14:09:40 -0700</bug_when>
    <thetext>Comment on attachment 166950
WIP: Strategy as interface member of SelectorCheckingContext.

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

Personally, I like this one the best. Running the perf test, I couldn&apos;t discern any differences between either of the three approaches. WDYT?

&gt; Source/WebCore/css/SelectorChecker.h:122
&gt; +    bool checkOneSelector(const SelectorCheckingContext&amp;) const;

This can probably move back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734316</commentid>
    <comment_count>32</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-03 19:26:59 -0700</bug_when>
    <thetext>The code became much cleaner and simpler. I like that.

I am afraid that shinya has intentionally introduced an template approach to avoid the performance regression. I guess shinya noticed the performance regression, but if perf test cannot tell any differences between these approaches, I prefer the clean one.

Let me investigate further.

(In reply to comment #31)
&gt; (From update of attachment 166950 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166950&amp;action=review
&gt; 
&gt; Personally, I like this one the best. Running the perf test, I couldn&apos;t discern any differences between either of the three approaches. WDYT?
&gt; 
&gt; &gt; Source/WebCore/css/SelectorChecker.h:122
&gt; &gt; +    bool checkOneSelector(const SelectorCheckingContext&amp;) const;
&gt; 
&gt; This can probably move back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734318</commentid>
    <comment_count>33</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-03 19:34:01 -0700</bug_when>
    <thetext>(In reply to comment #32)

Antti, which one do you prefer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734328</commentid>
    <comment_count>34</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-03 20:11:48 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; 
&gt; Antti, which one do you prefer?

This one. https://bugs.webkit.org/attachment.cgi?id=166950&amp;action=review

Let me rewrite the patch in https://bugs.webkit.org/show_bug.cgi?id=96990 based on attachment 166950 and see how things work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734483</commentid>
    <comment_count>35</comment_count>
      <attachid>167045</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-04 01:11:35 -0700</bug_when>
    <thetext>Created attachment 167045
Fix a performance test and update the benchmark result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734484</commentid>
    <comment_count>36</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-04 01:13:37 -0700</bug_when>
    <thetext>I fixed the performance test and update the benchmark result in the ChangeLog.
It seems there is no performance regression.

(In reply to comment #35)
&gt; Created an attachment (id=167045) [details]
&gt; Fix a performance test and update the benchmark result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734487</commentid>
    <comment_count>37</comment_count>
      <attachid>167045</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 01:18:13 -0700</bug_when>
    <thetext>Comment on attachment 167045
Fix a performance test and update the benchmark result.

Attachment 167045 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14168197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734588</commentid>
    <comment_count>38</comment_count>
      <attachid>167073</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-04 04:39:12 -0700</bug_when>
    <thetext>Created attachment 167073
Fix a performance test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735003</commentid>
    <comment_count>39</comment_count>
      <attachid>167073</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-04 14:11:18 -0700</bug_when>
    <thetext>Comment on attachment 167073
Fix a performance test.

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

I&apos;m bit unhappy about having to make this code generic and so harder to understand. The reasons given are about Shadow DOM and I can&apos;t evaluate if they are valid or not. The patch itself seems ok so I&apos;ll r+ it anyway.

&gt; Source/WebCore/ChangeLog:29
&gt; +        The performance of the added test before using this patch was:
&gt; +          avg 3669.143396776992 runs/s
&gt; +          median 3667.9394112696314 runs/s
&gt; +          stdev 21.12345296601369 runs/s
&gt; +          min 3594.5452776430134 runs/s
&gt; +          max 3707.408251056703 runs/s
&gt; +
&gt; +        When we used this patch, the performance was:
&gt; +          avg 3851.376555590946 runs/s
&gt; +          median 3858.343345260435 runs/s
&gt; +          stdev 25.245683967249494 runs/s
&gt; +          min 3782.510878241754 runs/s
&gt; +          max 3878.4305938425096 runs/s

Can you explain where the performance gains are coming from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735214</commentid>
    <comment_count>40</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-04 18:36:06 -0700</bug_when>
    <thetext>
(In reply to comment #39)
&gt; (From update of attachment 167073 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167073&amp;action=review
&gt; 
&gt; I&apos;m bit unhappy about having to make this code generic and so harder to understand. The reasons given are about Shadow DOM and I can&apos;t evaluate if they are valid or not. The patch itself seems ok so I&apos;ll r+ it anyway.

I understand the concern. That&apos;s our biggest concern too. We are still seeking and trying various approaches which keep code clean.

Let me land this now and try another approaches as in another bugs.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:29
&gt; &gt; +        The performance of the added test before using this patch was:
&gt; &gt; +          avg 3669.143396776992 runs/s
&gt; &gt; +          median 3667.9394112696314 runs/s
&gt; &gt; +          stdev 21.12345296601369 runs/s
&gt; &gt; +          min 3594.5452776430134 runs/s
&gt; &gt; +          max 3707.408251056703 runs/s
&gt; &gt; +
&gt; &gt; +        When we used this patch, the performance was:
&gt; &gt; +          avg 3851.376555590946 runs/s
&gt; &gt; +          median 3858.343345260435 runs/s
&gt; &gt; +          stdev 25.245683967249494 runs/s
&gt; &gt; +          min 3782.510878241754 runs/s
&gt; &gt; +          max 3878.4305938425096 runs/s
&gt; 
&gt; Can you explain where the performance gains are coming from?

I picked the benchmark results simply at ramdom (no intention) to be honest.
As a result, unfortunately, the number became confusing since the
benchmark results on my machine are unstable.

Let me update the benchmark result which runs on stable machine. We already tried that. Then land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735238</commentid>
    <comment_count>41</comment_count>
      <attachid>167226</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-04 19:14:08 -0700</bug_when>
    <thetext>Created attachment 167226
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735319</commentid>
    <comment_count>42</comment_count>
      <attachid>167226</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 21:47:11 -0700</bug_when>
    <thetext>Comment on attachment 167226
Patch for landing

Clearing flags on attachment: 167226

Committed r130459: &lt;http://trac.webkit.org/changeset/130459&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735320</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 21:47:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165065</attachid>
            <date>2012-09-21 00:21:49 -0700</date>
            <delta_ts>2012-09-24 23:27:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97298-20120921162113.patch</filename>
            <type>text/plain</type>
            <size>19136</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI4MmM0NWU4MjVlOTVj
MjE5NmU0MGQ2YThkZTE1NDBlY2QzYjg3My4uNmIzZDc0MTM5MTkzZTYwNTEzNWYxYWRmNWYwYzky
NzIxYjhjNzg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTIxICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3Jp
bmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBE
T00gdHJhdmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNl
IGFub3RoZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBz
dHJhdGVneSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNl
IHRoaXMgY29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8g
cmVncmVzcyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2UgdXNlZCB0ZW1wbGF0ZSBhbmQgaW5saW5l
IG1ldGhvZCwgYWxzbyB3ZSBkaWQgbm90IGFkZCBhIG5ldyBhcmd1bWVudCB0byBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IsCisgICAgICAgIGJ1dCByZXBsYWNlZCB0aGUgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQgdG8gU3RyYXRlZ3kuIFdoZW4gd2UgYWRkZWQgYSBuZXcgYXJndW1l
bnQgdG8gY2hlY2tPbmVTZWxlY3RvciwKKyAgICAgICAgd2UgZGV0ZWN0ZWQgMyUgfiA1JSBwZXJm
b3JtYW5jZSByZWdyZXNzaW9uLgorCisgICAgICAgIFdlIGNvbmZpcm1lZCB0aGF0IHRoaXMgcGF0
Y2ggZG9lcyBub3QgcmVncmVzcyBTZWxlY3RvckNoZWNrZXJQZXJmb3JtYW5jZS4gSSBoYXZlIGNo
ZWNrZWQgdGhlIHBlcmZvcm1hbmNlIG9mCisgICAgICAgIHRoZSBhZGRlZCB0ZXN0IGluIG15IExp
bnV4IEJveCB1c2luZyBydW4tcGVyZi10ZXN0cy4KKworICAgICAgICBUaGUgcGVyZm9ybWFuY2Ug
b2YgdGhlIGFkZGVkIHRlc3QgYmVmb3JlIHVzaW5nIHRoaXMgcGF0Y2ggd2FzOgorICAgICAgICAg
IGF2ZyA0MDM0LjYzNTg3NDYwOTM3MSBydW5zL3MKKyAgICAgICAgICBtZWRpYW4gNDA0My4xNjU4
NjgzNjk1NDM3IHJ1bnMvcworICAgICAgICAgIHN0ZGV2IDI4LjY2NTg1ODE0MTQ4MjA4NyBydW5z
L3MKKyAgICAgICAgICBtaW4gMzk3My40ODY5MDc3MTMyNTY2IHJ1bnMvcworICAgICAgICAgIG1h
eCA0MDg4LjIyOTA5NDY2NjMyMDYgcnVucy9zCisKKyAgICAgICAgV2hlbiB3ZSB1c2VkIHRoaXMg
cGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6CisgICAgICAgICAgYXZnIDQwNjIuOTQxMTYyODI2
NzQ4IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiA0MDYyLjQ3MzIzMDc4NjMyMSBydW5zL3MKKyAg
ICAgICAgICBzdGRldiAxNi4wMjI4NjgyOTQxNTM2OTIgcnVucy9zCisgICAgICAgICAgbWluIDQw
MjEuNjAxMDIxMzU5ODM3IHJ1bnMvcworICAgICAgICAgIG1heCA0MDg5LjkzNzczMDg1NDc3MyBy
dW5zL3MKKworICAgICAgICBUZXN0OiBQZXJmb3JtYW5jZVRlc3RzL0NTUz9wc2V1ZG9jbGFzcy1z
ZWxlY3RvcnMuaHRtbAorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3RvcldpdGhTdHJhdGVneSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5o
OgorICAgICAgICAoRE9NVHJhdmVyc2FsU3RyYXRlZ3kpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6RE9NVHJhdmVyc2FsU3RyYXRlZ3kp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVn
eTo6aXNGaXJzdENoaWxkKTogVGhpcyBraW5kIG9mIG1ldGhvZHMgdGFrZXMgYXJndW1lbnRzCisg
ICAgICAgIGluc3RlYWQgb2YgaGF2aW5nIGEgbWVtYmVyLiBXaGVuIHdlIHVzZSBtZW1iZXIsIHdl
IGhhdmUgZGV0ZWN0ZWQgMTAlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0xhc3RDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojpjb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0ZpcnN0T2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k6OmlzTGFzdE9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQmVmb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6
OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0FmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50
RWxlbWVudHNPZlR5cGVBZnRlcik6CisKIDIwMTItMDktMjAgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSBtb3JlIGNsYW5nIHdhcm5p
bmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDEzM2UyYThhYTRj
ZTZmZTMwY2FiM2JkNzk4MzQyZjc3ZGM0OGZiMzMuLjJmMTA3ZmRjNzMwNjg4OTM0NTk1Mzc5ZTVh
ZjliMDk2OTVmMGUwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBA
IC03MDAsOCArNzAwLDEwIEBAIHN0YXRpYyBib29sIGFueUF0dHJpYnV0ZU1hdGNoZXMoRWxlbWVu
dCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1hdGNoLCBjb25zCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8s
IGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1l
IFN0cmF0ZWd5PgorYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3JXaXRoU3Ry
YXRlZ3koU3RyYXRlZ3kgc3RyYXRlZ3ksIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sJiBo
YXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CisgICAgY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmIGNvbnRleHQgPSBzdHJhdGVneS5jb250ZXh0KCk7CiAgICAgRWxlbWVudCog
Y29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OwogICAgIENTU1NlbGVjdG9yKiBjb25z
dCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsKICAgICBBU1NFUlQoZWxlbWVudCk7CkBA
IC03OTEsOSArNzkzLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3Io
Y29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZpcnN0LWNoaWxk
IG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAgICAgICAgICAg
aWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5wcmV2aW91c0VsZW1l
bnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBzdHJhdGVneS5pc0ZpcnN0Q2hpbGQoZWxlbWVudCk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxl
ID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAg
ICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRT
dHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgp
LT5yZW5kZXJTdHlsZSgpOwpAQCAtODA4LDE0ICs4MDgsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4
dCwgUAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlwZToKICAgICAg
ICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMg
dHlwZQogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAg
ICAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJs
aW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBzdHJhdGVneS5pc0ZpcnN0T2ZUeXBl
KGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21v
ZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtODI3LDcgKzgyMCw3IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGls
ZDoKICAgICAgICAgICAgIC8vIGxhc3QtY2hpbGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0
IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQg
PSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQt
Pm5leHRFbGVtZW50U2libGluZygpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFy
ZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIHN0cmF0ZWd5LmlzTGFz
dENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5n
U3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBj
b250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVu
ZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
ID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBh
cmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC04NDksMTkgKzg0MiwxMyBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
IXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBzdHJhdGVneS5pc0xhc3RP
ZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxk
OgogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSAhZWxlbWVu
dC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAgIGJvb2wgb25seUNo
aWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotCisgICAgICAgICAgICAg
ICAgYm9vbCBmaXJzdENoaWxkID0gc3RyYXRlZ3kuaXNGaXJzdENoaWxkKGVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50
LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgc3RyYXRlZ3kuaXNMYXN0Q2hpbGQoZWxl
bWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgp
OwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0
LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVu
dC0+cmVuZGVyU3R5bGUoKTsKQEAgLTg4OSwzMyArODc2LDE0IEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0LCBQCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxl
bWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9
IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50
KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyYXRl
Z3kuaXNGaXJzdE9mVHlwZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKSAmJiBzdHJhdGVn
eS5pc0xhc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
TnRoQ2hpbGQ6CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQg
PSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQg
PSAxOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1l
bnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJT
dHlsZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpbmRleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IHN0cmF0ZWd5LmNvdW50RWxlbWVudHNCZWZvcmUoZWxlbWVu
dCkgKyAxOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVs
ZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUo
KTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MzMsMTIgKzkwMSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0LCBQCiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAx
OwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50
YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9
IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsr
Y291bnQ7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEg
KyBzdHJhdGVneS5jb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkK
QEAgLTk2MCw5ICs5MjMsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgc3RyYXRlZ3kuY291
bnRFbGVtZW50c0FmdGVyKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+
bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KQEAgLTk3OCwxMiArOTM5LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0Zp
bmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzdHJhdGVneS5jb3VudEVsZW1lbnRzT2ZUeXBl
QWZ0ZXIoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4
IGYxNWNlMGQwOGVlNDMyOThiNDEyMDQxMmNmNzZkOTVhYTViZjNjMDEuLmQ1Yjg5NjFlYWY4YTJm
MWU0MGJhZjU5ZTA0ODQ4YTZiMzg3Yjc0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCisj
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5o
IgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50
LmgiCkBAIC0xMTcsNyArMTE4LDI5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlbGVtZW50
TWF0Y2hlc1NlbGVjdG9yU2NvcGVzKGNvbnN0IFN0eWxlZEVsZW1lbnQqLCBjb25zdCBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiYgaWRTY29wZXMsIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5n
SW1wbCo+JiBjbGFzc1Njb3Blcyk7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgRE9NVHJhdmVyc2Fs
U3RyYXRlZ3kgeworICAgIHB1YmxpYzoKKyAgICAgICAgRE9NVHJhdmVyc2FsU3RyYXRlZ3koY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIDogbV9jb250ZXh0KGNvbnRleHQp
IHsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0ZpcnN0Q2hpbGQoRWxlbWVudCogZWxlbWVu
dCkgY29uc3QgeyByZXR1cm4gIWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgfQor
ICAgICAgICBib29sIGlzTGFzdENoaWxkKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJu
ICFlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgfQorICAgICAgICBib29sIGlzRmlyc3RP
ZlR5cGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICAgICAgYm9v
bCBpc0xhc3RPZlR5cGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAg
ICAgICAgCisgICAgICAgIGludCBjb3VudEVsZW1lbnRzQmVmb3JlKEVsZW1lbnQqKSBjb25zdDsK
KyAgICAgICAgaW50IGNvdW50RWxlbWVudHNBZnRlcihFbGVtZW50KikgY29uc3Q7CisgICAgICAg
IGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CisgICAgICAgIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoRWxlbWVu
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKworICAgICAgICBjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQor
ICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBtX2Nv
bnRleHQ7CisgICAgfTsKKwogICAgIGJvb2wgY2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1l
bnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJhdGVneT4KKyAgICBib29sIGNo
ZWNrT25lU2VsZWN0b3JXaXRoU3RyYXRlZ3koU3RyYXRlZ3ksIFBzZXVkb0lkJiwgYm9vbCYgaGFz
VW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKKwogICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQ
c2V1ZG9DbGFzcyhDU1NTZWxlY3RvciosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvKSBjb25zdDsK
ICAgICBzdGF0aWMgYm9vbCBpc0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50Kik7CiAKQEAgLTE2
Niw2ICsxODksMTEgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpmYXN0UmVqZWN0U2Vs
ZWN0b3IoY29uc3QgdW5zaWduZWQqIGlkZW50aWZpZXJIYXNoZXMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25z
dCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRvSWQmIGR5bmFtaWNQc2V1
ZG8sIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QKK3sKKyAgICByZXR1cm4g
Y2hlY2tPbmVTZWxlY3RvcldpdGhTdHJhdGVneTxET01UcmF2ZXJzYWxTdHJhdGVneT4oRE9NVHJh
dmVyc2FsU3RyYXRlZ3koY29udGV4dCksIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9F
bGVtZW50cyk7Cit9CisKIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1
ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICBpZiAo
c2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKQpAQCAtMjM3LDYg
KzI2NSw3MiBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmVsZW1lbnRNYXRjaGVzU2Vs
ZWN0b3JTY29wZXMoY29uc3QgU3R5bGVkRWxlbWVudCogZQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNG
aXJzdE9mVHlwZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKSBj
b25zdAoreworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZp
b3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3Vz
RWxlbWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6
aXNMYXN0T2ZUeXBlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUp
IGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4
dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVu
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lu
bGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVt
ZW50c0JlZm9yZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIGludCBjb3VudCA9IDA7
CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVt
ZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50
U2libGluZygpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2libGluZy0+cmVuZGVyU3R5
bGUoKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsK
KyAgICAgICAgaWYgKGluZGV4KSB7CisgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvdW50Kys7CisgICAgfQorCisgICAg
cmV0dXJuIGNvdW50OworfQorCitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKK3sKKyAgICBpbnQgY291bnQgPSAwOwor
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAg
ICAgICAgICsrY291bnQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCitpbmxpbmUg
aW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNB
ZnRlcihFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIGludCBjb3VudCA9IDA7CisgICAg
Zm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5n
KCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAg
ICAgICAgKytjb3VudDsKKworICAgIHJldHVybiBjb3VudDsKK30KKworaW5saW5lIGludCBTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKK3sK
KyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVs
ZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUo
dHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsK
K30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3BzZXVk
b2NsYXNzLXNlbGVjdG9ycy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mt
c2VsZWN0b3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBhYjE1Nzg0MjRmYTc3YjcwMWI2OTI5ZWRjZTc0
N2MzNGYyZmFkOAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3BzZXVk
b2NsYXNzLXNlbGVjdG9ycy5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0idGVzdC10YXJnZXQiPgorICAgIDxzcGFuPjwvc3Bh
bj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9kaXY+CisgICAgPHNwYW4+PC9zcGFuPgor
ICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+PC9kaXY+CisgICAg
PHNwYW4+PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQoewor
ICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBiZW5jaG1hcmsgdGVzdHMgQ1NTIFNlbGVjdG9yIHBlcmZv
cm1hbmNlIHdpdGggcXVlcnlTZWxlY3RvcigpLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3Rvcigic3BhbjpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOm50aC1jaGlsZCgybisxKSIpOworICAgICAgICAgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1jaGlsZCgybisxKSIpOworICAg
ICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtb2YtdHlwZSgybisxKSIp
OworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1vZi10
eXBlKDJuKzEpIik7CisgICAgICAgIH0KKyAgICB9Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCAxYjkxMzg3ZTc1Y2E0ODU4NGQ0MjgxMjgzY2I4NzRj
MzQ5MDc4Y2NlLi5kZTBjZjVjZDE5YWNiYjI5YjVjNzIzY2ZlNGJkNDBiZDAyYzMxMTU3IDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTIxICBTaGlueWEgS2F3YW5ha2Eg
IDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVj
ZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBxdWVyeVNlbGVjdG9y
KCkgcGVyZm9ybWFuY2UgdGVzdHMgdG8gY2hlY2sgU2VsZWN0b3JDaGVja2VyIHBlcmZvcm1hbmNl
LgorCisgICAgICAgICogQ1NTL3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwog
MjAxMi0wOS0yMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXN1bHRzIHBhZ2Ugc2hvdWxkIHNob3cgaW5kaXZpc3VhbCB2YWx1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165529</attachid>
            <date>2012-09-24 23:27:37 -0700</date>
            <delta_ts>2012-09-25 00:49:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97298-20120925152656.patch</filename>
            <type>text/plain</type>
            <size>22582</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MGI5MzBmYjc3YTA2
NWJlNzNjYjNlODFlZWM1N2M3NjYwZTk3My4uODA5ZmM5YTZmNzE2ZDBjNzc2MzM0MDdjMDRlNjNh
Nzk5NGJiMGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTI0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3Jp
bmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBE
T00gdHJhdmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNl
IGFub3RoZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBz
dHJhdGVneSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNl
IHRoaXMgY29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8g
cmVncmVzcyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgV2UgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9y
Q2hlY2tlclBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAg
ICAgICAgdGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3Rz
LgorCisgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNp
bmcgdGhpcyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMv
cworICAgICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAg
c3RkZXYgMjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3
NjQzMDEzNCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisK
KyAgICAgICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6Cisg
ICAgICAgICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAz
ODU4LjM0MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0
OTQgcnVucy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAg
ICAgIG1heCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0
aGVzZSB0ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJl
LgorCisgICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVj
dG9ycy5odG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yKTogTWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRl
eHQgdHlwZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2Vk
IGluIGNvbWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9m
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0
cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1l
bnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQWZ0ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAg
ICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6
IEV4dHJhY3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBB
bm90aGVyIHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29t
aW5nIHBhdGNoLgorCiAyMDEyLTA5LTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmc6Om9wZXJhdG9yKz0oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBhYWU0N2UyY2Y5MzY5ODU0ZjVjYTE3ZDBl
Yjc3MDZiMDViMjMwNjM2Li4wN2M5YzQ0ZGUwZjAxNzliZjZhMDQ4N2E0ZmQ3Yjk5MjBhM2RhNTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDM5LDcgKzQzOSw4
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IpCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgICAtIHRo
ZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQWxs
U2libGluZ3MgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9mIGUK
IC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBl
IGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1TZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCYgaGFz
VW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tpbmdD
b250ZXh0PgorU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBk
eW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAg
ICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCiAgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKGNvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykpCkBA
IC00NTMsNyArNDU0LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICBpZiAoIWhpc3Rv
cnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKIAotICAgIFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOworICAgIENoZWNraW5nQ29u
dGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhp
c3RvcnlTZWxlY3RvcjsKIAogICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2Vs
ZWN0b3IpIHsKQEAgLTcwMSw3ICs3MDIsOCBAQCBzdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRj
aGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29ucwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAgICAg
RWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OwogICAgIENTU1NlbGVj
dG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsKQEAgLTczOCw3ICs3NDAs
NyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvckxp
c3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgQ2hlY2tp
bmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICBzdWJDb250ZXh0Lmlz
U3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChzdWJDb250ZXh0LnNlbGVjdG9y
ID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0LnNlbGVjdG9yOyBzdWJDb250ZXh0
LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCByZWFsbHkga25vdyB3aHkgdGhp
cyBpcyBhCkBAIC03OTIsOSArNzk0LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZp
cnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVj
a2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4
dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJT
dHlsZSgpOwpAQCAtODA5LDE0ICs4MDksNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlwZToKICAgICAgICAgICAgIC8v
IGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMgdHlwZQogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNp
Ymxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0Nv
bnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1l
KCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVt
ZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxl
KQpAQCAtODI4LDcgKzgyMSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGxhc3QtY2hp
bGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAg
IGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVk
UGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOworICAg
ICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46Omlz
TGFzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNo
aWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDog
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC04NTAsMTkgKzg0Mywx
MyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBET01U
cmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwg
ZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkOgogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSAhZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0g
Zmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkg
JiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotCisgICAgICAgICAgICAgICAgYm9v
bCBmaXJzdENoaWxkID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNG
aXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJvb2wgb25seUNo
aWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hp
bGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNv
bHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTg5MCwzMyArODc3LDE0IEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9y
IChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdO
YW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKSAmJiBET01UcmF2ZXJz
YWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwgZWxlbWVu
dCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQ6CiAgICAgICAgICAg
ICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxp
bmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJl
bmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcyA/IHMt
PmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBj
b3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9
IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRz
QmVmb3JlKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxk
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxl
bWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MzQsMTIgKzkwMiw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJz
ZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQq
IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+
Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkK
QEAgLTk2MSw5ICs5MjQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2Fs
U3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c0FmdGVyKGNvbnRleHQsIGVs
ZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTk3OSwx
MiArOTQwLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5
cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBj
b3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVs
ZW1lbnRzT2ZUeXBlQWZ0ZXIoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtOTk1LDcgKzk1Miw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55OgogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBm
b3IgKHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCktPmZpcnN0
KCk7IHN1YkNvbnRleHQuc2VsZWN0b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoc3ViQ29udGV4dC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgZHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBz
ZXVkb0VsZW1lbnRzKSA9PSBTZWxlY3Rvck1hdGNoZXMpCkBAIC0xMzkyLDQgKzEzNDksODcgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNlbGVjdG9yU2NvcGVzKGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8
PgoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnN0
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwor
fQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0xh
c3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Jiwg
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRP
TVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQor
eworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+
CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgZm9yIChjb25zdCBFbGVtZW50
KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlm
IChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0
b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAg
IGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVu
dC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2li
bGluZy0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hp
bGRJbmRleCgpIDogMDsKKyAgICAgICAgaWYgKGluZGV4KSB7CisgICAgICAgICAgICBjb3VudCAr
PSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvdW50Kys7
CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50
IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRT
aWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8
PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIo
Y29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQq
IHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQorICAgICAgICArK2NvdW50OworCisg
ICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hl
Y2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5n
OyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYg
KHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0K
KworICAgIHJldHVybiBjb3VudDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5oCmluZGV4IGYxNWNlMGQwOGVlNDMyOThiNDEyMDQxMmNmNzZkOTVhYTViZjNjMDEuLjZkMThm
YjZkZGQ1ZTAwNzM5YmMzMTg3OTUxOGIwOTUxOTBhYWExNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmgKQEAgLTc3LDggKzc3LDI1IEBAIHB1YmxpYzoKICAgICAgICAgUHNldWRv
SWQgcHNldWRvU3R5bGU7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+
CisgICAgc3RydWN0IERPTVRyYXZlcnNhbFN0cmF0ZWd5IHsKKyAgICAgICAgc3RhdGljIGJvb2wg
aXNGaXJzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBi
b29sIGlzTGFzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRp
YyBib29sIGlzRmlyc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdE9mVHlwZShjb25zdCBDb250
ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgICAgICBzdGF0aWMg
aW50IGNvdW50RWxlbWVudHNCZWZvcmUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAgICAg
ICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQq
KTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IENv
bnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0aWMg
aW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB9OworCiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENT
U1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxz
ZSkgY29uc3Q7Ci0gICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVu
dHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBT
ZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRv
SWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29u
c3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0OworCiAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Io
Y29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENT
U1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNvbnN0OwogCkBAIC0xMTcsNyArMTM0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzU2VsZWN0b3JTY29wZXMoY29u
c3QgU3R5bGVkRWxlbWVudCosIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZFNj
b3BlcywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsKIAog
cHJpdmF0ZToKLSAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29u
c3Q7CisKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqLCBQ
c2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgaXNGcmFtZUZv
Y3VzZWQoY29uc3QgRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NT
Uy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3BzZXVk
b2NsYXNzLXNlbGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYmZiZmNjY2QyMzU1MjVmZjQxZGIz
NDI3YzY0MDg0MjgzYWY4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NT
Uy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9InRlc3QtdGFyZ2V0Ij4KKyAgICA8ZGl2
PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNwYW4+
PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+PC9z
cGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNwYW4+PC9zcGFu
PgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+Cis8L2Rpdj4KKworPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK1BlcmZU
ZXN0UnVubmVyLnJ1blBlclNlY29uZCh7CisgICAgZGVzY3JpcHRpb246ICJUaGlzIGJlbmNobWFy
ayB0ZXN0cyBDU1MgU2VsZWN0b3IgcGVyZm9ybWFuY2Ugd2l0aCBxdWVyeVNlbGVjdG9yKCkuIiwK
KyAgICBydW46IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
aSsrKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0LWNo
aWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmxhc3QtY2hp
bGQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46Zmlyc3Qtb2Yt
dHlwZSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0LW9m
LXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bnRoLWNo
aWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOm50
aC1sYXN0LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJzcGFuOm50aC1vZi10eXBlKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJzcGFuOm50aC1sYXN0LW9mLXR5cGUoNG4rMykiKTsKKyAgICAgICAgfQorICAgIH0K
K30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiOTEz
ODdlNzVjYTQ4NTg0ZDQyODEyODNjYjg3NGMzNDkwNzhjY2UuLmRlMGNmNWNkMTlhY2JiMjliNWM3
MjNjZmU0YmQ0MGJkMDJjMzExNTcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMDktMjEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtSZWZhY3RvcmluZ10gSW50cm9kdWNlIGEgdHJhdmVyc2FsIHN0cmF0ZWd5IGluIFNlbGVj
dG9yQ2hlY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTcyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnRyb2R1Y2VzIHF1ZXJ5U2VsZWN0b3IoKSBwZXJmb3JtYW5jZSB0ZXN0cyB0byBjaGVjayBT
ZWxlY3RvckNoZWNrZXIgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBDU1MvcHNldWRvY2xhc3Mt
c2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTIwICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VsdHMgcGFnZSBzaG91bGQgc2hvdyBpbmRpdmlz
dWFsIHZhbHVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165545</attachid>
            <date>2012-09-25 00:49:27 -0700</date>
            <delta_ts>2012-09-25 01:10:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97298-20120925164847.patch</filename>
            <type>text/plain</type>
            <size>22756</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MGI5MzBmYjc3YTA2
NWJlNzNjYjNlODFlZWM1N2M3NjYwZTk3My4uODA5ZmM5YTZmNzE2ZDBjNzc2MzM0MDdjMDRlNjNh
Nzk5NGJiMGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTI0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3Jp
bmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBE
T00gdHJhdmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNl
IGFub3RoZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBz
dHJhdGVneSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNl
IHRoaXMgY29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8g
cmVncmVzcyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgV2UgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9y
Q2hlY2tlclBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAg
ICAgICAgdGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3Rz
LgorCisgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNp
bmcgdGhpcyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMv
cworICAgICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAg
c3RkZXYgMjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3
NjQzMDEzNCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisK
KyAgICAgICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6Cisg
ICAgICAgICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAz
ODU4LjM0MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0
OTQgcnVucy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAg
ICAgIG1heCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0
aGVzZSB0ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJl
LgorCisgICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVj
dG9ycy5odG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yKTogTWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRl
eHQgdHlwZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2Vk
IGluIGNvbWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9m
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0
cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1l
bnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQWZ0ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAg
ICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6
IEV4dHJhY3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBB
bm90aGVyIHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29t
aW5nIHBhdGNoLgorCiAyMDEyLTA5LTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmc6Om9wZXJhdG9yKz0oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBhYWU0N2UyY2Y5MzY5ODU0ZjVjYTE3ZDBl
Yjc3MDZiMDViMjMwNjM2Li44NzRlNzBkMjViYjI0NzQ2NWZlM2ZlZGM0MDlmOTUyNDI0MDI4NTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDM5LDcgKzQzOSw4
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IpCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgICAtIHRo
ZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQWxs
U2libGluZ3MgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9mIGUK
IC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBl
IGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1TZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCYgaGFz
VW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tpbmdD
b250ZXh0PgorU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBk
eW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAg
ICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCiAgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKGNvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykpCkBA
IC00NTMsNyArNDU0LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICBpZiAoIWhpc3Rv
cnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKIAotICAgIFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOworICAgIENoZWNraW5nQ29u
dGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhp
c3RvcnlTZWxlY3RvcjsKIAogICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2Vs
ZWN0b3IpIHsKQEAgLTcwMSw3ICs3MDIsOCBAQCBzdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRj
aGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29ucwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAgICAg
RWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OwogICAgIENTU1NlbGVj
dG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsKQEAgLTczOCw3ICs3NDAs
NyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvckxp
c3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgQ2hlY2tp
bmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICBzdWJDb250ZXh0Lmlz
U3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChzdWJDb250ZXh0LnNlbGVjdG9y
ID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0LnNlbGVjdG9yOyBzdWJDb250ZXh0
LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCByZWFsbHkga25vdyB3aHkgdGhp
cyBpcyBhCkBAIC03OTIsOSArNzk0LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZp
cnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVj
a2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4
dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJT
dHlsZSgpOwpAQCAtODA5LDE0ICs4MDksNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlwZToKICAgICAgICAgICAgIC8v
IGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMgdHlwZQogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNp
Ymxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0Nv
bnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1l
KCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVt
ZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxl
KQpAQCAtODI4LDcgKzgyMSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGxhc3QtY2hp
bGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAg
IGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVk
UGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOworICAg
ICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46Omlz
TGFzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNo
aWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDog
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC04NTAsMTkgKzg0Mywx
MyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBET01U
cmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwg
ZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkOgogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSAhZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0g
Zmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkg
JiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotCisgICAgICAgICAgICAgICAgYm9v
bCBmaXJzdENoaWxkID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNG
aXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJvb2wgb25seUNo
aWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hp
bGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNv
bHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTg5MCwzMyArODc3LDE0IEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9y
IChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdO
YW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKSAmJiBET01UcmF2ZXJz
YWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwgZWxlbWVu
dCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQ6CiAgICAgICAgICAg
ICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxp
bmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJl
bmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcyA/IHMt
PmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBj
b3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9
IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRz
QmVmb3JlKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxk
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxl
bWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MzQsMTIgKzkwMiw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJz
ZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQq
IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+
Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkK
QEAgLTk2MSw5ICs5MjQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2Fs
U3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c0FmdGVyKGNvbnRleHQsIGVs
ZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTk3OSwx
MiArOTQwLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5
cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBj
b3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVs
ZW1lbnRzT2ZUeXBlQWZ0ZXIoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtOTk1LDcgKzk1Miw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55OgogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBm
b3IgKHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCktPmZpcnN0
KCk7IHN1YkNvbnRleHQuc2VsZWN0b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoc3ViQ29udGV4dC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgZHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBz
ZXVkb0VsZW1lbnRzKSA9PSBTZWxlY3Rvck1hdGNoZXMpCkBAIC0xMzkyLDQgKzEzNDksOTAgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNlbGVjdG9yU2NvcGVzKGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8
PgoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnN0
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwor
fQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0xh
c3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Jiwg
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRP
TVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQor
eworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+
CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgZm9yIChjb25zdCBFbGVtZW50
KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlm
IChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0
b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAg
IGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVu
dC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2li
bGluZy0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hp
bGRJbmRleCgpIDogMDsKKyAgICAgICAgaWYgKGluZGV4KSB7CisgICAgICAgICAgICBjb3VudCAr
PSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvdW50Kys7
CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50
IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRT
aWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8
PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIo
Y29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQq
IHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQorICAgICAgICArK2NvdW50OworCisg
ICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hl
Y2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5n
OyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYg
KHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0K
KworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGUKK1NlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I8U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD4oY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
LCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCmluZGV4IGYxNWNlMGQwOGVlNDMyOThiNDEyMDQxMmNmNzZkOTVhYTViZjNjMDEuLjZk
MThmYjZkZGQ1ZTAwNzM5YmMzMTg3OTUxOGIwOTUxOTBhYWExNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKQEAgLTc3LDggKzc3LDI1IEBAIHB1YmxpYzoKICAgICAgICAgUHNl
dWRvSWQgcHNldWRvU3R5bGU7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRl
eHQ+CisgICAgc3RydWN0IERPTVRyYXZlcnNhbFN0cmF0ZWd5IHsKKyAgICAgICAgc3RhdGljIGJv
b2wgaXNGaXJzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRp
YyBib29sIGlzTGFzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0
YXRpYyBib29sIGlzRmlyc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdE9mVHlwZShjb25zdCBD
b250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgICAgICBzdGF0
aWMgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAg
ICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1l
bnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0
aWMgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBDb250ZXh0JiwgRWxlbWVudCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB9OworCiAgICAgYm9vbCBjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBm
YWxzZSkgY29uc3Q7Ci0gICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAg
ICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNl
dWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBib29sIGNoZWNrT25lU2VsZWN0b3Io
Y29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRv
RWxlbWVudHMpIGNvbnN0OworCiAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNvbnN0OwogCkBAIC0xMTcsNyArMTM0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzU2VsZWN0b3JTY29wZXMo
Y29uc3QgU3R5bGVkRWxlbWVudCosIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBp
ZFNjb3BlcywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsK
IAogcHJpdmF0ZToKLSAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykg
Y29uc3Q7CisKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3Iq
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgaXNGcmFt
ZUZvY3VzZWQoY29uc3QgRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3Bz
ZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYmZiZmNjY2QyMzU1MjVmZjQx
ZGIzNDI3YzY0MDg0MjgzYWY4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9InRlc3QtdGFyZ2V0Ij4KKyAgICA8
ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNw
YW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+
PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNwYW4+PC9z
cGFuPgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+Cis8L2Rpdj4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK1Bl
cmZUZXN0UnVubmVyLnJ1blBlclNlY29uZCh7CisgICAgZGVzY3JpcHRpb246ICJUaGlzIGJlbmNo
bWFyayB0ZXN0cyBDU1MgU2VsZWN0b3IgcGVyZm9ybWFuY2Ugd2l0aCBxdWVyeVNlbGVjdG9yKCku
IiwKKyAgICBydW46IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgaSsrKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0
LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmxhc3Qt
Y2hpbGQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46Zmlyc3Qt
b2YtdHlwZSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0
LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bnRo
LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFu
Om50aC1sYXN0LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJzcGFuOm50aC1vZi10eXBlKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJzcGFuOm50aC1sYXN0LW9mLXR5cGUoNG4rMykiKTsKKyAgICAgICAgfQorICAg
IH0KK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFi
OTEzODdlNzVjYTQ4NTg0ZDQyODEyODNjYjg3NGMzNDkwNzhjY2UuLmRlMGNmNWNkMTlhY2JiMjli
NWM3MjNjZmU0YmQ0MGJkMDJjMzExNTcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMjEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtSZWZhY3RvcmluZ10gSW50cm9kdWNlIGEgdHJhdmVyc2FsIHN0cmF0ZWd5IGluIFNl
bGVjdG9yQ2hlY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTcyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2VzIHF1ZXJ5U2VsZWN0b3IoKSBwZXJmb3JtYW5jZSB0ZXN0cyB0byBjaGVj
ayBTZWxlY3RvckNoZWNrZXIgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBDU1MvcHNldWRvY2xh
c3Mtc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTIwICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VsdHMgcGFnZSBzaG91bGQgc2hvdyBpbmRp
dmlzdWFsIHZhbHVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165548</attachid>
            <date>2012-09-25 01:10:20 -0700</date>
            <delta_ts>2012-09-25 01:19:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97298-20120925170940.patch</filename>
            <type>text/plain</type>
            <size>22756</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MGI5MzBmYjc3YTA2
NWJlNzNjYjNlODFlZWM1N2M3NjYwZTk3My4uODA5ZmM5YTZmNzE2ZDBjNzc2MzM0MDdjMDRlNjNh
Nzk5NGJiMGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTI0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3Jp
bmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBE
T00gdHJhdmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNl
IGFub3RoZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBz
dHJhdGVneSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNl
IHRoaXMgY29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8g
cmVncmVzcyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgV2UgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9y
Q2hlY2tlclBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAg
ICAgICAgdGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3Rz
LgorCisgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNp
bmcgdGhpcyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMv
cworICAgICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAg
c3RkZXYgMjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3
NjQzMDEzNCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisK
KyAgICAgICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6Cisg
ICAgICAgICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAz
ODU4LjM0MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0
OTQgcnVucy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAg
ICAgIG1heCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0
aGVzZSB0ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJl
LgorCisgICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVj
dG9ycy5odG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yKTogTWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRl
eHQgdHlwZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2Vk
IGluIGNvbWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9m
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0
cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1l
bnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQWZ0ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAg
ICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6
IEV4dHJhY3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBB
bm90aGVyIHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29t
aW5nIHBhdGNoLgorCiAyMDEyLTA5LTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmc6Om9wZXJhdG9yKz0oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBhYWU0N2UyY2Y5MzY5ODU0ZjVjYTE3ZDBl
Yjc3MDZiMDViMjMwNjM2Li44N2JlZmQ1OWE5NjgxNjg2YWJiOGIzNzFmZjlmNzdlNGE5YzA1YmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDM5LDcgKzQzOSw4
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IpCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgICAtIHRo
ZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQWxs
U2libGluZ3MgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9mIGUK
IC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBl
IGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1TZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCYgaGFz
VW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tpbmdD
b250ZXh0PgorU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBk
eW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAg
ICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCiAgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKGNvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykpCkBA
IC00NTMsNyArNDU0LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICBpZiAoIWhpc3Rv
cnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKIAotICAgIFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOworICAgIENoZWNraW5nQ29u
dGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhp
c3RvcnlTZWxlY3RvcjsKIAogICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2Vs
ZWN0b3IpIHsKQEAgLTcwMSw3ICs3MDIsOCBAQCBzdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRj
aGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29ucwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAgICAg
RWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OwogICAgIENTU1NlbGVj
dG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsKQEAgLTczOCw3ICs3NDAs
NyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvckxp
c3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgQ2hlY2tp
bmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICBzdWJDb250ZXh0Lmlz
U3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChzdWJDb250ZXh0LnNlbGVjdG9y
ID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0LnNlbGVjdG9yOyBzdWJDb250ZXh0
LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCByZWFsbHkga25vdyB3aHkgdGhp
cyBpcyBhCkBAIC03OTIsOSArNzk0LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZp
cnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVj
a2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4
dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJT
dHlsZSgpOwpAQCAtODA5LDE0ICs4MDksNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlwZToKICAgICAgICAgICAgIC8v
IGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMgdHlwZQogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNp
Ymxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0Nv
bnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1l
KCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVt
ZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxl
KQpAQCAtODI4LDcgKzgyMSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGxhc3QtY2hp
bGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAg
IGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVk
UGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOworICAg
ICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46Omlz
TGFzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNo
aWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDog
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC04NTAsMTkgKzg0Mywx
MyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBET01U
cmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwg
ZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkOgogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSAhZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0g
Zmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkg
JiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotCisgICAgICAgICAgICAgICAgYm9v
bCBmaXJzdENoaWxkID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNG
aXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJvb2wgb25seUNo
aWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hp
bGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNv
bHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTg5MCwzMyArODc3LDE0IEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9y
IChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdO
YW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKSAmJiBET01UcmF2ZXJz
YWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwgZWxlbWVu
dCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQ6CiAgICAgICAgICAg
ICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxp
bmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJl
bmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcyA/IHMt
PmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBj
b3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9
IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRz
QmVmb3JlKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxk
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxl
bWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MzQsMTIgKzkwMiw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJz
ZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQq
IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+
Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkK
QEAgLTk2MSw5ICs5MjQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2Fs
U3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c0FmdGVyKGNvbnRleHQsIGVs
ZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTk3OSwx
MiArOTQwLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5
cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBj
b3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVs
ZW1lbnRzT2ZUeXBlQWZ0ZXIoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtOTk1LDcgKzk1Miw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55OgogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBm
b3IgKHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCktPmZpcnN0
KCk7IHN1YkNvbnRleHQuc2VsZWN0b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoc3ViQ29udGV4dC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgZHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBz
ZXVkb0VsZW1lbnRzKSA9PSBTZWxlY3Rvck1hdGNoZXMpCkBAIC0xMzkyLDQgKzEzNDksOTAgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNlbGVjdG9yU2NvcGVzKGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8
PgoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnN0
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwor
fQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0xh
c3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Jiwg
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRP
TVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQor
eworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmlzTGFzdE9mVHlw
ZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBmb3IgKGNvbnN0
IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGlu
Zzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlm
IChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0
b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAg
IGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVu
dC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2li
bGluZy0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hp
bGRJbmRleCgpIDogMDsKKyAgICAgICAgaWYgKGluZGV4KSB7CisgICAgICAgICAgICBjb3VudCAr
PSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvdW50Kys7
CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50
IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRT
aWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8
PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIo
Y29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQq
IHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQorICAgICAgICArK2NvdW50OworCisg
ICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hl
Y2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5n
OyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYg
KHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0K
KworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGUKK1NlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I8U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD4oY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
LCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCmluZGV4IGYxNWNlMGQwOGVlNDMyOThiNDEyMDQxMmNmNzZkOTVhYTViZjNjMDEuLjZk
MThmYjZkZGQ1ZTAwNzM5YmMzMTg3OTUxOGIwOTUxOTBhYWExNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKQEAgLTc3LDggKzc3LDI1IEBAIHB1YmxpYzoKICAgICAgICAgUHNl
dWRvSWQgcHNldWRvU3R5bGU7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRl
eHQ+CisgICAgc3RydWN0IERPTVRyYXZlcnNhbFN0cmF0ZWd5IHsKKyAgICAgICAgc3RhdGljIGJv
b2wgaXNGaXJzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRp
YyBib29sIGlzTGFzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0
YXRpYyBib29sIGlzRmlyc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdE9mVHlwZShjb25zdCBD
b250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgICAgICBzdGF0
aWMgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAg
ICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1l
bnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0
aWMgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBDb250ZXh0JiwgRWxlbWVudCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB9OworCiAgICAgYm9vbCBjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBm
YWxzZSkgY29uc3Q7Ci0gICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAg
ICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNl
dWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBib29sIGNoZWNrT25lU2VsZWN0b3Io
Y29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRv
RWxlbWVudHMpIGNvbnN0OworCiAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNvbnN0OwogCkBAIC0xMTcsNyArMTM0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzU2VsZWN0b3JTY29wZXMo
Y29uc3QgU3R5bGVkRWxlbWVudCosIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBp
ZFNjb3BlcywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsK
IAogcHJpdmF0ZToKLSAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykg
Y29uc3Q7CisKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3Iq
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgaXNGcmFt
ZUZvY3VzZWQoY29uc3QgRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3Bz
ZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYmZiZmNjY2QyMzU1MjVmZjQx
ZGIzNDI3YzY0MDg0MjgzYWY4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9InRlc3QtdGFyZ2V0Ij4KKyAgICA8
ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNw
YW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+
PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNwYW4+PC9z
cGFuPgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+Cis8L2Rpdj4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK1Bl
cmZUZXN0UnVubmVyLnJ1blBlclNlY29uZCh7CisgICAgZGVzY3JpcHRpb246ICJUaGlzIGJlbmNo
bWFyayB0ZXN0cyBDU1MgU2VsZWN0b3IgcGVyZm9ybWFuY2Ugd2l0aCBxdWVyeVNlbGVjdG9yKCku
IiwKKyAgICBydW46IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgaSsrKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0
LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmxhc3Qt
Y2hpbGQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46Zmlyc3Qt
b2YtdHlwZSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0
LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bnRo
LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFu
Om50aC1sYXN0LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJzcGFuOm50aC1vZi10eXBlKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJzcGFuOm50aC1sYXN0LW9mLXR5cGUoNG4rMykiKTsKKyAgICAgICAgfQorICAg
IH0KK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFi
OTEzODdlNzVjYTQ4NTg0ZDQyODEyODNjYjg3NGMzNDkwNzhjY2UuLmRlMGNmNWNkMTlhY2JiMjli
NWM3MjNjZmU0YmQ0MGJkMDJjMzExNTcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMjEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtSZWZhY3RvcmluZ10gSW50cm9kdWNlIGEgdHJhdmVyc2FsIHN0cmF0ZWd5IGluIFNl
bGVjdG9yQ2hlY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTcyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2VzIHF1ZXJ5U2VsZWN0b3IoKSBwZXJmb3JtYW5jZSB0ZXN0cyB0byBjaGVj
ayBTZWxlY3RvckNoZWNrZXIgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBDU1MvcHNldWRvY2xh
c3Mtc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTIwICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VsdHMgcGFnZSBzaG91bGQgc2hvdyBpbmRp
dmlzdWFsIHZhbHVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165550</attachid>
            <date>2012-09-25 01:21:30 -0700</date>
            <delta_ts>2012-09-25 01:22:08 -0700</delta_ts>
            <desc>WIP including other patches</desc>
            <filename>bug-97298-20120925172050.patch</filename>
            <type>text/plain</type>
            <size>41011</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MGI5MzBmYjc3YTA2
NWJlNzNjYjNlODFlZWM1N2M3NjYwZTk3My4uZjU5OWM2MzBmY2VmYTE0NmZiZDBhOGVjNmJiYzE4
MmZkMjI0ODYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAxMi0wOS0yMCAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBDb250
ZW50U2VsZWN0b3JRdWVyeSB3b3JrIHdoZW4gYSBub2RlIFBPT0wgaXMgdXNlZCBpbnN0ZWFkIG9m
IG5vZGUncyByZWFsIHNpYmxpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTY5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIHdlIGltcGxlbWVudCBjb250ZW50IHJlcHJvamVjdGlvbiBpbiBT
aGFkb3cgRE9NLCB3ZSBoYXZlIHRvIHVzZSBhIG5vZGUgcG9vbCBhcyBzaWJsaW5ncworICAgICAg
ICBpbnN0ZWFkIG9mIG5vZGUncyByZWFsIHNpYmxpbmdzLiBTZWxlY3RvckNoZWNrZXIgc2hvdWxk
IGJlIGFibGUgdG8gaGFuZGxlIGl0IGFzIHdlbGwuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIFNl
bGVjdG9yQ2hlY2tpbmdTdHJhdGVneSBhcyBhIHRlbXBsYXRlIGFyZ3VtZW50IG9mIGNoZWNrT25l
U2VsZWN0b3IgdG8gaGFuZGxlIHRoaXMuCisgICAgICAgIFRoZSBEZWZhdWx0U2VsZWN0b3JDaGVj
a2luZ1N0cmF0ZWd5IGlzIHRoZSBzYW1lIGFzIGV4aXN0aW5nIGFsZ29yaXRobS4gQ29udGVudFNl
bGVjdG9yQ2hlY2tpbmdTdHJhdGVneQorICAgICAgICBpcyBhIG5ldyBhbGdvcml0aG0gdG8gcmVu
ZGVyIG5vZGUgcG9vbCBhcyBzaWJsaW5ncy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0
aW5nIHRlc3RzIHNob3VsZCBjb3Zlci4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3JXaXRoU3RyYXRlZ3kpOgorICAgICAgICAoV2ViQ29yZTo6RGVm
YXVsdFNlbGVjdG9yQ2hlY2tpbmdTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0U2VsZWN0b3JDaGVja2luZ1N0cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdFNlbGVjdG9yQ2hlY2tpbmdTdHJhdGVneTo6Y291bnRF
bGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2VsZWN0b3JDaGVja2lu
Z1N0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmF1bHRTZWxlY3RvckNoZWNraW5nU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2VsZWN0b3JDaGVja2luZ1N0cmF0ZWd5Ojpjb3VudEVs
ZW1lbnRzT2ZUeXBlQWZ0ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAg
ICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChEZWZhdWx0U2VsZWN0b3JDaGVja2lu
Z1N0cmF0ZWd5KTogSW1wbGVtZW50cyB0aGUgc2FtZSBhbGdvcml0aG0gd2hpY2ggd2FzIHdyaXR0
ZW4gaW4gaW5saW5lIGJlZm9yZS4KKyAgICAgICAgRXh0cmFjdHMgc2V2ZXJhbCBtZXRob2RzIHRv
IGNoZWNrIGFuIGVsZW1lbnQgaXMgdGhlIGZpcnN0IGNoaWxkLCBldGMuCisgICAgICAgIChXZWJD
b3JlOjpEZWZhdWx0U2VsZWN0b3JDaGVja2luZ1N0cmF0ZWd5OjpEZWZhdWx0U2VsZWN0b3JDaGVj
a2luZ1N0cmF0ZWd5KToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRTZWxlY3RvckNoZWNraW5n
U3RyYXRlZ3k6OmlzRmlyc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2VsZWN0
b3JDaGVja2luZ1N0cmF0ZWd5Ojppc0xhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JDaGVja2VyOjpDb250ZW50U2Vs
ZWN0b3JDaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvckNoZWNrZXI6
OmNoZWNrQ29udGVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3Rv
ckRhdGFMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3Rv
ckRhdGFMaXN0OjptYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvckNo
ZWNraW5nU3RyYXRlZ3k6OkNvbnRlbnRTZWxlY3RvckNoZWNraW5nU3RyYXRlZ3kpOiBVc2VzIGEg
bm9kZSBwb29sIGFzCisgICAgICAgIGVsZW1lbnQncyBzaWJsaW5ncy4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWxlY3RvckNoZWNraW5nU3RyYXRlZ3k6OmlzRmlyc3RDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JDaGVja2luZ1N0cmF0ZWd5Ojppc0xhc3RDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JDaGVja2luZ1N0cmF0ZWd5Ojpp
c0ZpcnN0T2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvckNoZWNraW5n
U3RyYXRlZ3k6OmlzTGFzdE9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0
b3JDaGVja2luZ1N0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWxlY3RvckNoZWNraW5nU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JDaGVja2luZ1N0cmF0ZWd5Ojpjb3Vu
dEVsZW1lbnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3Rv
ckNoZWNraW5nU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VsZWN0b3JRdWVyeTo6Q29udGVudFNlbGVjdG9yUXVlcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmg6CisgICAgICAgIChDb250ZW50U2Vs
ZWN0b3JDaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29udGVudFNlbGVj
dG9yRGF0YUxpc3QpOgorICAgICAgICAoQ29udGVudFNlbGVjdG9yQ2hlY2tpbmdTdHJhdGVneSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JDaGVja2luZ1N0cmF0ZWd5OjplbGVt
ZW50KToKKyAgICAgICAgKENvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKworMjAxMi0wOS0yMSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1JlZmFjdG9y
aW5nXSBJbnRyb2R1Y2UgYSB0cmF2ZXJzYWwgc3RyYXRlZ3kgaW4gU2VsZWN0b3JDaGVja2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGV4dHJhY3Qg
RE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyIHNvIHRoYXQgd2UgY2FuIHVz
ZSBhbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVneS4KKyAgICAgICAgQW5vdGhlciB0cmF2ZXJzYWwg
c3RyYXRlZ3kgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIEJ1ZyA5Njk5MC4KKworICAgICAgICBTaW5j
ZSB0aGlzIGNvZGUgcGF0aCBpcyB2ZXJ5IGhvdCwgd2Ugd2VyZSB2ZXJ5IGNhcmVmdWwgbm90IHRv
IHJlZ3Jlc3MgcGVyZm9ybWFuY2UuCisgICAgICAgIFdlIHVzZWQgdGVtcGxhdGUgYW5kIGlubGlu
ZSBtZXRob2QsIGFsc28gd2UgZGlkIG5vdCBhZGQgYSBuZXcgYXJndW1lbnQgdG8gU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yLAorICAgICAgICBidXQgcmVwbGFjZWQgdGhlIFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0IHRvIFN0cmF0ZWd5LiBXaGVuIHdlIGFkZGVkIGEgbmV3IGFyZ3Vt
ZW50IHRvIGNoZWNrT25lU2VsZWN0b3IsCisgICAgICAgIHdlIGRldGVjdGVkIDMlIH4gNSUgcGVy
Zm9ybWFuY2UgcmVncmVzc2lvbi4KKworICAgICAgICBXZSBjb25maXJtZWQgdGhhdCB0aGlzIHBh
dGNoIGRvZXMgbm90IHJlZ3Jlc3MgU2VsZWN0b3JDaGVja2VyUGVyZm9ybWFuY2UuIEkgaGF2ZSBj
aGVja2VkIHRoZSBwZXJmb3JtYW5jZSBvZgorICAgICAgICB0aGUgYWRkZWQgdGVzdCBpbiBteSBM
aW51eCBCb3ggdXNpbmcgcnVuLXBlcmYtdGVzdHMuCisKKyAgICAgICAgVGhlIHBlcmZvcm1hbmNl
IG9mIHRoZSBhZGRlZCB0ZXN0IGJlZm9yZSB1c2luZyB0aGlzIHBhdGNoIHdhczoKKyAgICAgICAg
ICBhdmcgNDAzNC42MzU4NzQ2MDkzNzEgcnVucy9zCisgICAgICAgICAgbWVkaWFuIDQwNDMuMTY1
ODY4MzY5NTQzNyBydW5zL3MKKyAgICAgICAgICBzdGRldiAyOC42NjU4NTgxNDE0ODIwODcgcnVu
cy9zCisgICAgICAgICAgbWluIDM5NzMuNDg2OTA3NzEzMjU2NiBydW5zL3MKKyAgICAgICAgICBt
YXggNDA4OC4yMjkwOTQ2NjYzMjA2IHJ1bnMvcworCisgICAgICAgIFdoZW4gd2UgdXNlZCB0aGlz
IHBhdGNoLCB0aGUgcGVyZm9ybWFuY2Ugd2FzOgorICAgICAgICAgIGF2ZyA0MDYyLjk0MTE2Mjgy
Njc0OCBydW5zL3MKKyAgICAgICAgICBtZWRpYW4gNDA2Mi40NzMyMzA3ODYzMjEgcnVucy9zCisg
ICAgICAgICAgc3RkZXYgMTYuMDIyODY4Mjk0MTUzNjkyIHJ1bnMvcworICAgICAgICAgIG1pbiA0
MDIxLjYwMTAyMTM1OTgzNyBydW5zL3MKKyAgICAgICAgICBtYXggNDA4OS45Mzc3MzA4NTQ3NzMg
cnVucy9zCisKKyAgICAgICAgVGVzdDogUGVyZm9ybWFuY2VUZXN0cy9DU1M/cHNldWRvY2xhc3Mt
c2VsZWN0b3JzLmh0bWwKKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3JXaXRoU3RyYXRlZ3kpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIu
aDoKKyAgICAgICAgKERPTVRyYXZlcnNhbFN0cmF0ZWd5KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k6OmlzRmlyc3RDaGlsZCk6IFRoaXMga2luZCBvZiBtZXRob2RzIHRha2VzIGFyZ3VtZW50cwor
ICAgICAgICBpbnN0ZWFkIG9mIGhhdmluZyBhIG1lbWJlci4gV2hlbiB3ZSB1c2UgbWVtYmVyLCB3
ZSBoYXZlIGRldGVjdGVkIDEwJSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVn
eTo6Y29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVn
eTo6aXNGaXJzdE9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRP
TVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3Vu
dEVsZW1lbnRzT2ZUeXBlQWZ0ZXIpOgorCisyMDEyLTA5LTI0ICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVjZSBh
IHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJhdmVyc2FsIGNv
ZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3RoZXIgdHJhdmVy
c2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVneSB3aWxsIGJl
IGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMgY29kZSBwYXRo
IGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVzcyBwZXJmb3Jt
YW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gdG8gY2hh
bmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2UgY29uZmlybWVk
IHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tlclBlcmZvcm1h
bmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAgdGhlIGFkZGVk
IHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisgICAgICAgIFRo
ZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhpcyBwYXRjaCB3
YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMvcworICAgICAgICAgIG1l
ZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAgc3RkZXYgMjEuMTIzNDUy
OTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3NjQzMDEzNCBydW5zL3MK
KyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisKKyAgICAgICAgV2hlbiB3
ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6CisgICAgICAgICAgYXZnIDM4
NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAzODU4LjM0MzM0NTI2MDQz
NSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0OTQgcnVucy9zCisgICAg
ICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAgICAgIG1heCAzODc4LjQz
MDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0aGVzZSB0ZXN0cyBzZXZl
cmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJlLgorCisgICAgICAgIFRl
c3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sCisKKyAg
ICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTogTWFrZSB0aGlz
IGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRleHQgdHlwZS4KKyAgICAg
ICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIGNvbWluZyBwYXRj
aC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0xhc3RP
ZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxT
dHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNr
ZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIpOgorICAg
ICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9y
Q2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6IEV4dHJhY3RlZCB0aGUg
RE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBBbm90aGVyIHRyYXZlcnNh
bCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29taW5nIHBhdGNoLgorCiAy
MDEyLTA5LTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBTdHJpbmc6Om9wZXJhdG9yKz0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcAppbmRleCBhYWU0N2UyY2Y5MzY5ODU0ZjVjYTE3ZDBlYjc3MDZiMDViMjMwNjM2
Li42M2JjYzhiNzNlODhkYWIzMDU3NjcwMzY5MDQxMjk1NWJiYmZjNzk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJD
b250ZW50U2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxl
ci5oIgpAQCAtNDM5LDcgKzQ0MCw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVj
a2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiAvLyAqIFNlbGVjdG9y
RmFpbHNMb2NhbGx5ICAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVsZW1lbnQgZQog
Ly8gKiBTZWxlY3RvckZhaWxzQWxsU2libGluZ3MgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUg
YW5kIGFueSBzaWJsaW5nIG9mIGUKIC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgIC0gdGhl
IHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1T
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHlu
YW1pY1BzZXVkbywgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAordGVtcGxh
dGU8dHlwZW5hbWUgQ2hlY2tpbmdDb250ZXh0PgorU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1h
dGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRv
RWxlbWVudHMpIGNvbnN0CiB7CiAgICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCiAg
ICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKGNvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25v
d25Qc2V1ZG9FbGVtZW50cykpCkBAIC00NTMsNyArNDU1LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWMKICAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9y
TWF0Y2hlczsKIAotICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRl
eHQpOworICAgIENoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0
Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKIAogICAgIGlmIChyZWxhdGlvbiAh
PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpIHsKQEAgLTcwMSw3ICs3MDMsOCBAQCBzdGF0aWMg
Ym9vbCBhbnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpN
YXRjaCBtYXRjaCwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNv
bnRleHQsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNv
bnRleHQsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5l
bGVtZW50OwogICAgIENTU1NlbGVjdG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxl
Y3RvcjsKQEAgLTczOCw3ICs3NDEsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAg
ICAgICAgaWYgKCFzZWxlY3Rvckxpc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQp
OworICAgICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAg
ICAgICAgICBzdWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9y
IChzdWJDb250ZXh0LnNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0
LnNlbGVjdG9yOyBzdWJDb250ZXh0LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFn
SGlzdG9yeSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24n
dCByZWFsbHkga25vdyB3aHkgdGhpcyBpcyBhCkBAIC03OTIsOSArNzk1LDcgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQmIGNvbnRleHQsIFAKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGls
ZDoKICAgICAgICAgICAgIC8vIGZpcnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRo
YXQgaXMgYW4gZWxlbWVudAogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkgewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01U
cmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwg
ZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkg
ewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQu
ZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+
cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwpAQCAtODA5LDE0ICs4MTAsNyBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYgY29udGV4dCwgUAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9m
VHlwZToKICAgICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxl
bWVudCBvZiBpdHMgdHlwZQogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkgewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91
c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1Rh
Z05hbWUodHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJz
YWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1l
bnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHls
ZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtODI4LDcgKzgyMiw3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0LCBQCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAg
ICAgICAgICAgIC8vIGxhc3QtY2hpbGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFu
IGVsZW1lbnQKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJl
bnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRF
bGVtZW50U2libGluZygpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxl
bWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5
PENoZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAg
ICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7CkBAIC04NTAsMTkgKzg0NCwxMyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNo
ZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdR
TmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVs
ZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmct
Pmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIHJldHVybiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpp
c0xhc3RPZlR5cGUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvT25seUNoaWxkOgogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQg
PSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0
Q2hpbGQgPSAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAg
ICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0Zpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwot
CisgICAgICAgICAgICAgICAgYm9vbCBmaXJzdENoaWxkID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8
Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOworICAgICAg
ICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5l
bGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAg
LTg5MCwzMyArODc4LDE0IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7
Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+
cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5n
LT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQq
IHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6aXNGaXJzdE9mVHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdR
TmFtZSgpKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RP
ZlR5cGUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
TnRoQ2hpbGQ6CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQg
PSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQg
PSAxOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1l
bnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJT
dHlsZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpbmRleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0Nv
bnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CkBAIC05MzQsMTIgKzkwMyw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAg
ICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3Vz
RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxl
bWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFn
TmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJh
dGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQs
IGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21v
ZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChwYXJlbnRTdHlsZSkKQEAgLTk2MSw5ICs5MjUsNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29u
dGV4dCwgUAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVs
ZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAg
ICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRT
aWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmco
KSkKLSAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291
bnQgPSAxICsgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVt
ZW50c0FmdGVyKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rv
ci0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KQEAgLTk3OSwxMiArOTQxLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAg
ICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVj
a2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoY29udGV4dCwgZWxlbWVudCwg
ZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRj
aE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQpAQCAtOTk1LDcgKzk1Myw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55OgogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRl
eHQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQo
Y29udGV4dCk7CiAgICAgICAgICAgICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBmb3IgKHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvci0+
c2VsZWN0b3JMaXN0KCktPmZpcnN0KCk7IHN1YkNvbnRleHQuc2VsZWN0b3I7IHN1YkNvbnRleHQu
c2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViQ29udGV4dC5zZWxlY3RvcikpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgZHluYW1p
Y1BzZXVkbywgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSA9PSBTZWxlY3Rvck1hdGNoZXMpCkBA
IC0xMzkyLDQgKzEzNTAsMTkyIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVTZWxl
Y3RvclNjb3Blcyhjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dD46OmlzRmlyc3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0JiwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQtPnByZXZp
b3VzRWxlbWVudFNpYmxpbmcoKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGJvb2wgU2VsZWN0
b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuICFl
bGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9mVHlwZShjb25zdCBTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcg
PSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBz
aWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmct
Pmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNo
ZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5
cGUpCit7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVs
ZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c0Jl
Zm9yZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxl
bWVudCogZWxlbWVudCkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGlu
Zzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAgICAg
ICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7CisgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7CisgICAgICAgIGlmIChpbmRleCkg
eworICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwor
dGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0
ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1l
bnRzT2ZUeXBlQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQorewor
ICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxl
bWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGlu
Zy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNU
YWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1cm4g
Y291bnQ7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
Pjo6Y291bnRFbGVtZW50c0FmdGVyKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGludCBjb3VudCA9IDA7Cisg
ICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJs
aW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
KyAgICAgICAgKytjb3VudDsKKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8Pgor
aW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgaW50IGNvdW50
ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2li
bGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAg
ICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3RlbXBsYXRl
PD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbD46OmlzRmly
c3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0
aE5vZGVQb29sJiBjb250ZXh0LCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3MgPSBjb250ZXh0LnNpYmxpbmdzOworICAgIGZvciAo
aW50IGkgPSBjb250ZXh0Lm50aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGlmIChzaWJs
aW5nc1tpXSAmJiBzaWJsaW5nc1tpXS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+Citp
bmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2w+Ojppc0xhc3RDaGls
ZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0aE5vZGVQ
b29sJiBjb250ZXh0LCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiYgc2libGluZ3MgPSBjb250ZXh0LnNpYmxpbmdzOworICAgIGZvciAoc2l6ZV90
IGkgPSBjb250ZXh0Lm50aCArIDE7IGkgPCBzaWJsaW5ncy5zaXplKCk7ICsraSkgeworICAgICAg
ICBpZiAoc2libGluZ3NbaV0gJiYgc2libGluZ3NbaV0tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVt
cGxhdGU8PgoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVn
eTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0aE5vZGVQb29sPjo6
aXNGaXJzdE9mVHlwZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0V2l0aE5vZGVQb29sJiBjb250ZXh0LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiB0eXBlKQoreworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGlu
Z3MgPSBjb250ZXh0LnNpYmxpbmdzOworICAgIGZvciAoaW50IGkgPSBjb250ZXh0Lm50aCAtIDE7
IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGlmIChzaWJsaW5nc1tpXSAmJiBzaWJsaW5nc1tpXS0+
aXNFbGVtZW50Tm9kZSgpICYmIHNpYmxpbmdzW2ldLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1w
bGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2w+Ojpp
c0xhc3RPZlR5cGUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dFdpdGhOb2RlUG9vbCYgY29udGV4dCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgdHlwZSkKK3sKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdz
ID0gY29udGV4dC5zaWJsaW5nczsKKyAgICBmb3IgKHNpemVfdCBpID0gY29udGV4dC5udGggKyAx
OyBpIDwgc2libGluZ3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHNpYmxpbmdzW2ldICYm
IHNpYmxpbmdzW2ldLT5pc0VsZW1lbnROb2RlKCkgJiYgc2libGluZ3NbaV0tPmhhc1RhZ05hbWUo
dHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2
ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0
aE5vZGVQb29sPjo6Y291bnRFbGVtZW50c0JlZm9yZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNl
bGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0aE5vZGVQb29sJiBjb250ZXh0LCBFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3MgPSBjb250
ZXh0LnNpYmxpbmdzOworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChpbnQgaSA9IGNvbnRl
eHQubnRoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmdzW2ldICYmIHNp
YmxpbmdzW2ldLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0K
KworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3Rv
ckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2w+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgU2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbCYgY29udGV4
dCwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4m
IHNpYmxpbmdzID0gY29udGV4dC5zaWJsaW5nczsKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZv
ciAoc2l6ZV90IGkgPSBjb250ZXh0Lm50aCArIDE7IGkgPCBzaWJsaW5ncy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoc2libGluZ3NbaV0gJiYgc2libGluZ3NbaV0tPmlzRWxlbWVudE5vZGUo
KSkKKyAgICAgICAgICAgIHJldHVybiArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3Vu
dDsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZl
cnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRo
Tm9kZVBvb2w+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tl
cjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2wmIGNvbnRleHQsIEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+JiBzaWJsaW5ncyA9IGNvbnRleHQuc2libGluZ3M7CisgICAgaW50IGNv
dW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gY29udGV4dC5udGggLSAxOyBpID49IDA7IC0taSkg
eworICAgICAgICBpZiAoc2libGluZ3NbaV0gJiYgc2libGluZ3NbaV0tPmlzRWxlbWVudE5vZGUo
KSAmJiBzaWJsaW5nc1tpXS0+aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAgICAgICAgICsrY291bnQ7
CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50
IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbD46OmNvdW50RWxlbWVudHNPZlR5cGVB
ZnRlcihjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0aE5v
ZGVQb29sJiBjb250ZXh0LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0
eXBlKQoreworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3MgPSBjb250
ZXh0LnNpYmxpbmdzOworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IGNv
bnRleHQubnRoICsgMTsgaSA8IHNpYmxpbmdzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChz
aWJsaW5nc1tpXSAmJiBzaWJsaW5nc1tpXS0+aXNFbGVtZW50Tm9kZSgpICYmIHNpYmxpbmdzW2ld
LT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuICsrY291bnQ7CisgICAgfQor
CisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZQorU2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcjxTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYs
IFBzZXVkb0lkJiwgYm9vbCYpIGNvbnN0OwordGVtcGxhdGUKK2Jvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yPFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHRXaXRoTm9kZVBvb2w+KGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0Nv
bnRleHRXaXRoTm9kZVBvb2wmLCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IGYxNWNlMGQwOGVlNDMyOThiNDEyMDQxMmNm
NzZkOTVhYTViZjNjMDEuLjQ2NzA3ZmU4Y2U1ZTVmMmUyNDIxZDE4OGJkYzIyNWI4YTI0MzlkZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJp
bmcuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCkBAIC01NCwzMSArNTUsNjUgQEAgcHVi
bGljOgogICAgIGVudW0gVmlzaXRlZE1hdGNoVHlwZSB7IFZpc2l0ZWRNYXRjaERpc2FibGVkLCBW
aXNpdGVkTWF0Y2hFbmFibGVkIH07CiAgICAgZW51bSBNb2RlIHsgUmVzb2x2aW5nU3R5bGUgPSAw
LCBDb2xsZWN0aW5nUnVsZXMsIFF1ZXJ5aW5nUnVsZXMgfTsKIAotICAgIHN0cnVjdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCB7CisgICAgc3RydWN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0QmFz
ZSB7CiAgICAgICAgIC8vIEluaXRpYWwgc2VsZWN0b3IgY29uc3RydWN0b3IKLSAgICAgICAgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBFbGVtZW50KiBlbGVt
ZW50LCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUpCisgICAgICAgIFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0QmFzZShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIEVsZW1lbnQqIGVsZW1l
bnQsIFZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKICAgICAgICAgICAgIDogc2Vs
ZWN0b3Ioc2VsZWN0b3IpCiAgICAgICAgICAgICAsIGVsZW1lbnQoZWxlbWVudCkKICAgICAgICAg
ICAgICwgc2NvcGUoMCkKICAgICAgICAgICAgICwgdmlzaXRlZE1hdGNoVHlwZSh2aXNpdGVkTWF0
Y2hUeXBlKQorICAgICAgICAgICAgLCBwc2V1ZG9TdHlsZShOT1BTRVVETykKICAgICAgICAgICAg
ICwgZWxlbWVudFN0eWxlKDApCiAgICAgICAgICAgICAsIGVsZW1lbnRQYXJlbnRTdHlsZSgwKQog
ICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQotICAgICAgICAgICAgLCBwc2V1ZG9T
dHlsZShOT1BTRVVETykKICAgICAgICAgeyB9CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yOwogICAgICAgICBFbGVtZW50KiBlbGVtZW50OwogICAgICAgICBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZTsKICAgICAgICAgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlOwor
ICAgICAgICBQc2V1ZG9JZCBwc2V1ZG9TdHlsZTsKICAgICAgICAgUmVuZGVyU3R5bGUqIGVsZW1l
bnRTdHlsZTsKICAgICAgICAgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZTsKICAgICAg
ICAgYm9vbCBpc1N1YlNlbGVjdG9yOwotICAgICAgICBQc2V1ZG9JZCBwc2V1ZG9TdHlsZTsKKyAg
ICB9OworCisgICAgc3RydWN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IDogcHVibGljIFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0QmFzZSB7CisgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
KENTU1NlbGVjdG9yKiBzZWxlY3RvciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlw
ZSB2aXNpdGVkTWF0Y2hUeXBlKQorICAgICAgICAgICAgOiBTZWxlY3RvckNoZWNraW5nQ29udGV4
dEJhc2Uoc2VsZWN0b3IsIGVsZW1lbnQsIHZpc2l0ZWRNYXRjaFR5cGUpCisgICAgICAgIHsgfQor
ICAgIH07CisKKyAgICBzdHJ1Y3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2wg
OiBwdWJsaWMgU2VsZWN0b3JDaGVja2luZ0NvbnRleHRCYXNlIHsKKyAgICAgICAgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2woQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHBvb2wsIGludCBudGgsIFZpc2l0ZWRNYXRjaFR5cGUgdmlz
aXRlZE1hdGNoVHlwZSkKKyAgICAgICAgICAgIDogU2VsZWN0b3JDaGVja2luZ0NvbnRleHRCYXNl
KHNlbGVjdG9yLCB0b0VsZW1lbnQocG9vbFtudGhdLmdldCgpKSwgdmlzaXRlZE1hdGNoVHlwZSkK
KyAgICAgICAgICAgICwgc2libGluZ3MocG9vbCkKKyAgICAgICAgICAgICwgbnRoKG50aCkKKyAg
ICAgICAgeyB9CisKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHNpYmxpbmdzOworICAg
ICAgICBpbnQgbnRoOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0Pgor
ICAgIHN0cnVjdCBET01UcmF2ZXJzYWxTdHJhdGVneSB7CisgICAgICAgIHN0YXRpYyBib29sIGlz
Rmlyc3RDaGlsZChjb25zdCBDb250ZXh0JiwgRWxlbWVudCopOworICAgICAgICBzdGF0aWMgYm9v
bCBpc0xhc3RDaGlsZChjb25zdCBDb250ZXh0JiwgRWxlbWVudCopOworICAgICAgICBzdGF0aWMg
Ym9vbCBpc0ZpcnN0T2ZUeXBlKGNvbnN0IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgICAgICBzdGF0aWMgYm9vbCBpc0xhc3RPZlR5cGUoY29uc3QgQ29udGV4
dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICAgICAgc3RhdGljIGlu
dCBjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAg
IHN0YXRpYyBpbnQgY291bnRFbGVtZW50c0FmdGVyKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7
CisgICAgICAgIHN0YXRpYyBpbnQgY291bnRFbGVtZW50c09mVHlwZUJlZm9yZShjb25zdCBDb250
ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgc3RhdGljIGlu
dCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgfTsKIAogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NT
ZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2Up
IGNvbnN0OwotICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNo
ZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRz
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+CisgICAgU2Vs
ZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lk
JiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+CisgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKGNvbnN0
IENoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1l
bnRzKSBjb25zdDsKKwogICAgIHN0YXRpYyBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKik7CiAgICAgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKIApAQCAtMTE3LDcgKzE1Miw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc1NlbGVjdG9yU2NvcGVzKGNvbnN0
IFN0eWxlZEVsZW1lbnQqLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgaWRTY29w
ZXMsIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBjbGFzc1Njb3Blcyk7CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0
OworCiAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9yKiwgUHNl
dWRvSWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGlzRnJhbWVGb2N1
c2VkKGNvbnN0IEVsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggMDc2YTcyM2M4YTkxYWZlOTMxODg3NjU4OTRj
ZTc3MzZkYzM2NmEwMC4uNjc0OGI1OTkxZGI2N2ZiYjM1ZGVjNzlmMzUzNDg2YTRkYmQ3ZGVhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
Y3BwCkBAIC0xMTcsMTAgKzExNywxMCBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJp
YnV0ZVNlbGVjdGlvbnNUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsCiAgICAgICAg
IGlmIChkaXN0cmlidXRlZFtpXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE5v
ZGUqIGNoaWxkID0gcG9vbFtpXS5nZXQoKTsKLSAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNo
aWxkKSkKKyAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKHBvb2wsIGkpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKKyAgICAgICAgTm9kZSogY2hpbGQgPSBwb29sW2ldLmdldCgpOwogICAgICAg
ICBkaXN0cmlidXRpb24uYXBwZW5kKGNoaWxkKTsKICAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Q
b2ludC5hZGQoY2hpbGQsIGluc2VydGlvblBvaW50KTsKICAgICAgICAgZGlzdHJpYnV0ZWRbaV0g
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuY3BwCmluZGV4IGYxMmM1OTkyNWY3YzkzMjRmNmZlZmNiZWIyMjM1ODk1N2RmMjEx
ZjMuLjI1Yjg0MjcwOTk1NjRmYmFhYjg4MmU5OGMwM2M5ZGNiNmU1NDA0NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKQEAg
LTI5LDE3ICsyOSw1MyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NT
U2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CisKK0NvbnRlbnRTZWxlY3RvckNoZWNrZXI6OkNvbnRlbnRTZWxlY3Rv
ckNoZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHN0cmljdFBhcnNpbmcpCisgICAgOiBt
X3NlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCwgc3RyaWN0UGFyc2luZykKK3sKKyAgICBtX3NlbGVj
dG9yQ2hlY2tlci5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKTsKK30K
KworYm9vbCBDb250ZW50U2VsZWN0b3JDaGVja2VyOjpjaGVja0NvbnRlbnRTZWxlY3RvcihDU1NT
ZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3Ms
IGludCBudGgpIGNvbnN0Cit7CisgICAgUHNldWRvSWQgZHluYW1pY1BzZXVkbyA9IE5PUFNFVURP
OworICAgIGJvb2wgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzID0gZmFsc2U7CisgICAgU2VsZWN0
b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbCBjb250ZXh0KHNl
bGVjdG9yLCBzaWJsaW5ncywgbnRoLCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaERpc2Fi
bGVkKTsKKyAgICAKKyAgICByZXR1cm4gbV9zZWxlY3RvckNoZWNrZXIuY2hlY2tPbmVTZWxlY3Rv
cihjb250ZXh0LCBkeW5hbWljUHNldWRvLCBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpOworfQor
Cit2b2lkIENvbnRlbnRTZWxlY3RvckRhdGFMaXN0Ojppbml0aWFsaXplKGNvbnN0IENTU1NlbGVj
dG9yTGlzdCYgc2VsZWN0b3JzKQoreworICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0g
c2VsZWN0b3JzLmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6
bmV4dChzZWxlY3RvcikpCisgICAgICAgIG1fc2VsZWN0b3JzLmFwcGVuZChzZWxlY3Rvcik7Cit9
CisKK2Jvb2wgQ29udGVudFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoY29uc3QgQ29udGVudFNl
bGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4mIHNpYmxpbmdzLCBpbnQgbnRoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHNlbGVjdG9yQ291
bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNl
bGVjdG9yQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrQ29u
dGVudFNlbGVjdG9yKG1fc2VsZWN0b3JzW2ldLCBzaWJsaW5ncywgbnRoKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogQ29udGVudFNl
bGVjdG9yUXVlcnk6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5KGNvbnN0IEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCkKICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpCiAg
ICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihpbnNlcnRpb25Qb2ludC0+ZG9jdW1lbnQoKSwgIWluc2Vy
dGlvblBvaW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKIHsKLSAgICBtX3NlbGVjdG9y
Q2hlY2tlci5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKTsKLQogICAg
IGlmIChpbnNlcnRpb25Qb2ludC0+c2VsZWN0KCkuaXNOdWxsKCkgfHwgaW5zZXJ0aW9uUG9pbnQt
PnNlbGVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICBtX2lzVmFsaWRTZWxlY3RvciA9IHRydWU7
CiAgICAgICAgIHJldHVybjsKQEAgLTU4LDE0ICs5NCwxNCBAQCBib29sIENvbnRlbnRTZWxlY3Rv
clF1ZXJ5Ojppc1ZhbGlkU2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBtX2lzVmFsaWRTZWxl
Y3RvcjsKIH0KIAotYm9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhOb2RlKiBub2Rl
KSBjb25zdAorYm9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdzLCBpbnQgbnRoKSBjb25zdAogeworICAgIE5vZGUqIG5v
ZGUgPSBzaWJsaW5nc1tudGhdLmdldCgpOworCiAgICAgQVNTRVJUKG5vZGUpOwogICAgIGlmICgh
bm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKG5vZGUtPnBhcmVudE5v
ZGUoKSA9PSBtX2luc2VydGlvblBvaW50LT5zaGFkb3dSb290KCktPmhvc3QoKSk7Ci0KICAgICBp
ZiAobV9pbnNlcnRpb25Qb2ludC0+c2VsZWN0KCkuaXNOdWxsKCkgfHwgbV9pbnNlcnRpb25Qb2lu
dC0+c2VsZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNzUsNyAr
MTExLDcgQEAgYm9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhOb2RlKiBub2RlKSBj
b25zdAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gbV9zZWxlY3RvcnMubWF0Y2hlcyhtX3NlbGVjdG9yQ2hlY2tlciwg
dG9FbGVtZW50KG5vZGUpKTsKKyAgICByZXR1cm4gbV9zZWxlY3RvcnMubWF0Y2hlcyhtX3NlbGVj
dG9yQ2hlY2tlciwgc2libGluZ3MsIG50aCk7CiB9CiAKIHN0YXRpYyBib29sIHZhbGlkYXRlU3Vi
U2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKaW5kZXggOTRmYTNlZmNjZjNmOWQ3MmU5
NzQ3NzVlMmQyZDMxNDBkMTNjYjM0ZS4uMmM3MTBhNTg1MmU5MmQ3Njg4MmM3YzIwNzUwYmZkMjZk
YTJhYTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5oCkBAIC00MywyNSArNDMsNDEgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBO
b2RlOwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiAKK2NsYXNzIENvbnRlbnRTZWxlY3RvckNoZWNr
ZXIgeworcHVibGljOgorICAgIENvbnRlbnRTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29s
IHN0cmljdFBhcnNpbmcpOworCisgICAgYm9vbCBjaGVja0NvbnRlbnRTZWxlY3RvcihDU1NTZWxl
Y3RvciosIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3MsIGludCBudGhOb2Rl
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgU2VsZWN0b3JDaGVja2VyIG1fc2VsZWN0b3JDaGVja2Vy
OworfTsKKworY2xhc3MgQ29udGVudFNlbGVjdG9yRGF0YUxpc3QgeworcHVibGljOgorICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKKyAgICBib29sIG1hdGNoZXMo
Y29uc3QgQ29udGVudFNlbGVjdG9yQ2hlY2tlciYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiYgc2libGluZ3MsIGludCBudGhOb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8
Q1NTU2VsZWN0b3IqPiBtX3NlbGVjdG9yczsKK307CisKIGNsYXNzIENvbnRlbnRTZWxlY3RvclF1
ZXJ5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50U2VsZWN0b3JRdWVyeSk7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQ29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9u
UG9pbnQqKTsKIAogICAgIGJvb2wgaXNWYWxpZFNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgYm9vbCBt
YXRjaGVzKE5vZGUqKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+JiBzaWJsaW5ncywgaW50IG50aE5vZGUpIGNvbnN0OwogcHJpdmF0ZToKICAgICBi
b29sIHZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CiAKICAgICBjb25zdCBJbnNlcnRpb25Qb2ludCog
bV9pbnNlcnRpb25Qb2ludDsKLSAgICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOworICAg
IENvbnRlbnRTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOwogICAgIENTU1NlbGVjdG9yTGlz
dCBtX3NlbGVjdG9yTGlzdDsKLSAgICBTZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7
CisgICAgQ29udGVudFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKICAgICBib29s
IG1faXNWYWxpZFNlbGVjdG9yOwogfTsKIAogfQogCi0KLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvQ1NTL3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYmZi
ZmNjY2QyMzU1MjVmZjQxZGIzNDI3YzY0MDg0MjgzYWY4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsx
LDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9InRlc3Qt
dGFyZ2V0Ij4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2Pgor
ICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAg
ICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNw
YW4+PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c3Bhbj48L3NwYW4+
CisgICAgPHNwYW4+PC9zcGFuPgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+
Cis8L2Rpdj4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK1BlcmZUZXN0UnVubmVyLnJ1blBlclNlY29uZCh7CisgICAgZGVzY3JpcHRp
b246ICJUaGlzIGJlbmNobWFyayB0ZXN0cyBDU1MgU2VsZWN0b3IgcGVyZm9ybWFuY2Ugd2l0aCBx
dWVyeVNlbGVjdG9yKCkuIiwKKyAgICBydW46IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJzcGFuOmZpcnN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJzcGFuOmxhc3QtY2hpbGQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3Rvcigic3BhbjpsYXN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoInNwYW46bnRoLWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJzcGFuOm50aC1sYXN0LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOm50aC1vZi10eXBlKDRuKzMpIik7CisgICAgICAgICAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOm50aC1sYXN0LW9mLXR5cGUoNG4rMykiKTsK
KyAgICAgICAgfQorICAgIH0KK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDFiOTEzODdlNzVjYTQ4NTg0ZDQyODEyODNjYjg3NGMzNDkwNzhjY2UuLmRl
MGNmNWNkMTlhY2JiMjliNWM3MjNjZmU0YmQ0MGJkMDJjMzExNTcgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gSW50cm9kdWNlIGEgdHJhdmVyc2Fs
IHN0cmF0ZWd5IGluIFNlbGVjdG9yQ2hlY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VzIHF1ZXJ5U2VsZWN0b3IoKSBwZXJmb3JtYW5j
ZSB0ZXN0cyB0byBjaGVjayBTZWxlY3RvckNoZWNrZXIgcGVyZm9ybWFuY2UuCisKKyAgICAgICAg
KiBDU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTIwICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VsdHMgcGFnZSBz
aG91bGQgc2hvdyBpbmRpdmlzdWFsIHZhbHVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165552</attachid>
            <date>2012-09-25 01:24:23 -0700</date>
            <delta_ts>2012-10-03 05:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97298-20120925172343.patch</filename>
            <type>text/plain</type>
            <size>22756</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MGI5MzBmYjc3YTA2
NWJlNzNjYjNlODFlZWM1N2M3NjYwZTk3My4uODA5ZmM5YTZmNzE2ZDBjNzc2MzM0MDdjMDRlNjNh
Nzk5NGJiMGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTI0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3Jp
bmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBE
T00gdHJhdmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNl
IGFub3RoZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBz
dHJhdGVneSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNl
IHRoaXMgY29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8g
cmVncmVzcyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgV2UgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9y
Q2hlY2tlclBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAg
ICAgICAgdGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3Rz
LgorCisgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNp
bmcgdGhpcyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMv
cworICAgICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAg
c3RkZXYgMjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3
NjQzMDEzNCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisK
KyAgICAgICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6Cisg
ICAgICAgICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAz
ODU4LjM0MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0
OTQgcnVucy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAg
ICAgIG1heCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0
aGVzZSB0ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJl
LgorCisgICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVj
dG9ycy5odG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yKTogTWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRl
eHQgdHlwZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2Vk
IGluIGNvbWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9m
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0
cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1l
bnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQWZ0ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAg
ICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6
IEV4dHJhY3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBB
bm90aGVyIHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29t
aW5nIHBhdGNoLgorCiAyMDEyLTA5LTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmc6Om9wZXJhdG9yKz0oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBhYWU0N2UyY2Y5MzY5ODU0ZjVjYTE3ZDBl
Yjc3MDZiMDViMjMwNjM2Li44N2JlZmQ1OWE5NjgxNjg2YWJiOGIzNzFmZjlmNzdlNGE5YzA1YmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDM5LDcgKzQzOSw4
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IpCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgICAtIHRo
ZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQWxs
U2libGluZ3MgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9mIGUK
IC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBl
IGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1TZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCYgaGFz
VW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tpbmdD
b250ZXh0PgorU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBk
eW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAg
ICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCiAgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKGNvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykpCkBA
IC00NTMsNyArNDU0LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICBpZiAoIWhpc3Rv
cnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKIAotICAgIFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOworICAgIENoZWNraW5nQ29u
dGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29udGV4dC5zZWxlY3RvciA9IGhp
c3RvcnlTZWxlY3RvcjsKIAogICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2Vs
ZWN0b3IpIHsKQEAgLTcwMSw3ICs3MDIsOCBAQCBzdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRj
aGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29ucwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0CiB7CiAgICAg
RWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OwogICAgIENTU1NlbGVj
dG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsKQEAgLTczOCw3ICs3NDAs
NyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvckxp
c3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgQ2hlY2tp
bmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICBzdWJDb250ZXh0Lmlz
U3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChzdWJDb250ZXh0LnNlbGVjdG9y
ID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0LnNlbGVjdG9yOyBzdWJDb250ZXh0
LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCByZWFsbHkga25vdyB3aHkgdGhp
cyBpcyBhCkBAIC03OTIsOSArNzk0LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZp
cnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVj
a2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4
dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJT
dHlsZSgpOwpAQCAtODA5LDE0ICs4MDksNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlwZToKICAgICAgICAgICAgIC8v
IGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMgdHlwZQogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNp
Ymxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0Nv
bnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1l
KCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVt
ZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxl
KQpAQCAtODI4LDcgKzgyMSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGxhc3QtY2hp
bGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAg
IGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVk
UGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOworICAg
ICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46Omlz
TGFzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNo
aWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDog
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC04NTAsMTkgKzg0Mywx
MyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBET01U
cmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwg
ZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkOgogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSAhZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0g
Zmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkg
JiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotCisgICAgICAgICAgICAgICAgYm9v
bCBmaXJzdENoaWxkID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNG
aXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJvb2wgb25seUNo
aWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hp
bGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNv
bHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTg5MCwzMyArODc3LDE0IEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9y
IChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdO
YW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKSAmJiBET01UcmF2ZXJz
YWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwgZWxlbWVu
dCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQ6CiAgICAgICAgICAg
ICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxp
bmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJl
bmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcyA/IHMt
PmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBj
b3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9
IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRz
QmVmb3JlKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxk
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxl
bWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MzQsMTIgKzkwMiw3IEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJz
ZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQq
IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+
Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkK
QEAgLTk2MSw5ICs5MjQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2Fs
U3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c0FmdGVyKGNvbnRleHQsIGVs
ZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTk3OSwx
MiArOTQwLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5
cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBj
b3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVs
ZW1lbnRzT2ZUeXBlQWZ0ZXIoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtOTk1LDcgKzk1Miw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55OgogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBm
b3IgKHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCktPmZpcnN0
KCk7IHN1YkNvbnRleHQuc2VsZWN0b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoc3ViQ29udGV4dC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgZHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBz
ZXVkb0VsZW1lbnRzKSA9PSBTZWxlY3Rvck1hdGNoZXMpCkBAIC0xMzkyLDQgKzEzNDksOTAgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNlbGVjdG9yU2NvcGVzKGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8
PgoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnN0
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwor
fQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0xh
c3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Jiwg
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQtPm5leHRFbGVtZW50U2li
bGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRP
TVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQor
eworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmlzTGFzdE9mVHlw
ZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBmb3IgKGNvbnN0
IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGlu
Zzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlm
IChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0
b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAg
IGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVu
dC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2li
bGluZy0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hp
bGRJbmRleCgpIDogMDsKKyAgICAgICAgaWYgKGluZGV4KSB7CisgICAgICAgICAgICBjb3VudCAr
PSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvdW50Kys7
CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50
IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRT
aWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8
PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIo
Y29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQq
IHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQorICAgICAgICArK2NvdW50OworCisg
ICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hl
Y2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5n
OyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYg
KHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0K
KworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGUKK1NlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I8U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD4oY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
LCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCmluZGV4IGYxNWNlMGQwOGVlNDMyOThiNDEyMDQxMmNmNzZkOTVhYTViZjNjMDEuLjZk
MThmYjZkZGQ1ZTAwNzM5YmMzMTg3OTUxOGIwOTUxOTBhYWExNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKQEAgLTc3LDggKzc3LDI1IEBAIHB1YmxpYzoKICAgICAgICAgUHNl
dWRvSWQgcHNldWRvU3R5bGU7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRl
eHQ+CisgICAgc3RydWN0IERPTVRyYXZlcnNhbFN0cmF0ZWd5IHsKKyAgICAgICAgc3RhdGljIGJv
b2wgaXNGaXJzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRp
YyBib29sIGlzTGFzdENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0
YXRpYyBib29sIGlzRmlyc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdE9mVHlwZShjb25zdCBD
b250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgICAgICBzdGF0
aWMgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAg
ICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1l
bnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0
aWMgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBDb250ZXh0JiwgRWxlbWVudCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB9OworCiAgICAgYm9vbCBjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBm
YWxzZSkgY29uc3Q7Ci0gICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAg
ICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNl
dWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBib29sIGNoZWNrT25lU2VsZWN0b3Io
Y29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRv
RWxlbWVudHMpIGNvbnN0OworCiAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNvbnN0OwogCkBAIC0xMTcsNyArMTM0LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzU2VsZWN0b3JTY29wZXMo
Y29uc3QgU3R5bGVkRWxlbWVudCosIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBp
ZFNjb3BlcywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsK
IAogcHJpdmF0ZToKLSAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykg
Y29uc3Q7CisKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3Iq
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgaXNGcmFt
ZUZvY3VzZWQoY29uc3QgRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3Bz
ZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYmZiZmNjY2QyMzU1MjVmZjQx
ZGIzNDI3YzY0MDg0MjgzYWY4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9InRlc3QtdGFyZ2V0Ij4KKyAgICA8
ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNw
YW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4+
PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNwYW4+PC9z
cGFuPgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+Cis8L2Rpdj4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK1Bl
cmZUZXN0UnVubmVyLnJ1blBlclNlY29uZCh7CisgICAgZGVzY3JpcHRpb246ICJUaGlzIGJlbmNo
bWFyayB0ZXN0cyBDU1MgU2VsZWN0b3IgcGVyZm9ybWFuY2Ugd2l0aCBxdWVyeVNlbGVjdG9yKCku
IiwKKyAgICBydW46IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgaSsrKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0
LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmxhc3Qt
Y2hpbGQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46Zmlyc3Qt
b2YtdHlwZSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0
LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bnRo
LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFu
Om50aC1sYXN0LWNoaWxkKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJzcGFuOm50aC1vZi10eXBlKDRuKzMpIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJzcGFuOm50aC1sYXN0LW9mLXR5cGUoNG4rMykiKTsKKyAgICAgICAgfQorICAg
IH0KK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFi
OTEzODdlNzVjYTQ4NTg0ZDQyODEyODNjYjg3NGMzNDkwNzhjY2UuLmRlMGNmNWNkMTlhY2JiMjli
NWM3MjNjZmU0YmQ0MGJkMDJjMzExNTcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMjEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtSZWZhY3RvcmluZ10gSW50cm9kdWNlIGEgdHJhdmVyc2FsIHN0cmF0ZWd5IGluIFNl
bGVjdG9yQ2hlY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTcyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2VzIHF1ZXJ5U2VsZWN0b3IoKSBwZXJmb3JtYW5jZSB0ZXN0cyB0byBjaGVj
ayBTZWxlY3RvckNoZWNrZXIgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBDU1MvcHNldWRvY2xh
c3Mtc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTIwICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VsdHMgcGFnZSBzaG91bGQgc2hvdyBpbmRp
dmlzdWFsIHZhbHVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166868</attachid>
            <date>2012-10-03 05:35:00 -0700</date>
            <delta_ts>2012-10-03 05:36:19 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-97298-20121003213411.patch</filename>
            <type>text/plain</type>
            <size>22349</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxYzBhYmQ4Nzg2Mzcx
YjUyYWVhYWIzOWVmODZkYjI2NWRiYjQzMC4uMGI3NDBhOWYyMWYxN2ZmYjU4YWY3YTdiMTNhMjUy
YzkwYWI5Y2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTEwLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIElu
dHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJh
dmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3Ro
ZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVn
eSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMg
Y29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVz
cyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2Ug
Y29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tl
clBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAg
dGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhp
cyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMvcworICAg
ICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAgc3RkZXYg
MjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3NjQzMDEz
NCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisKKyAgICAg
ICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6CisgICAgICAg
ICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAzODU4LjM0
MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0OTQgcnVu
cy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAgICAgIG1h
eCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0aGVzZSB0
ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJlLgorCisg
ICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5o
dG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTog
TWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRleHQgdHlw
ZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIGNv
bWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAg
KFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6IEV4dHJh
Y3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBBbm90aGVy
IHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29taW5nIHBh
dGNoLgorCiAyMDEyLTEwLTAzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgV2luQ0UgYWZ0ZXIgcjEzMDE2MC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNDAzYjIxOGFmOWZjYmM2ZjZiNGJjNGZk
MmMwMzY3ZWFjYmI1YTY5MS4uYmY1ODAzZDIwNzhlZjcxOTc0MDZhZWUwNmVjODM3ODBiMjIwNmU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQzOSw3ICs0Mzks
OCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAgLSB0
aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKIC8vICogU2VsZWN0b3JGYWlsc0Fs
bFNpYmxpbmdzIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvZiBl
CiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5ICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3Ig
ZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQotU2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNo
ZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wmIGhh
c1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5n
Q29udGV4dD4KK1NlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYg
ZHluYW1pY1BzZXVkbywgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAogewog
ICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRjaAogICAgIGlmICghY2hlY2tPbmVTZWxl
Y3Rvcihjb250ZXh0KSkKQEAgLTQ3Miw3ICs0NzMsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
YwogICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKQogICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRj
aGVzOwogCi0gICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7
CisgICAgQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOwogICAgIG5leHRDb250
ZXh0LnNlbGVjdG9yID0gaGlzdG9yeVNlbGVjdG9yOwogCiAgICAgUHNldWRvSWQgaWdub3JlRHlu
YW1pY1BzZXVkbyA9IE5PUFNFVURPOwpAQCAtNzI2LDcgKzcyNyw4IEBAIHN0YXRpYyBib29sIGFu
eUF0dHJpYnV0ZU1hdGNoZXMoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1h
dGNoLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KK2Jvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKICAgICBFbGVtZW50KiBjb25zdCAmIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7
CiAgICAgQ1NTU2VsZWN0b3IqIGNvbnN0ICYgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yOwpA
QCAtNzYzLDcgKzc2NSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yTGlzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAg
ICAgICAgICBDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4dChjb250ZXh0KTsKICAgICAgICAgICAg
IHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CiAgICAgICAgICAgICBmb3IgKHN1YkNv
bnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YkNvbnRleHQuc2VsZWN0
b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzdWJDb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5
KCkpIHsKICAgICAgICAgICAgICAgICAvLyA6bm90IGNhbm5vdCBuZXN0LiBJIGRvbid0IHJlYWxs
eSBrbm93IHdoeSB0aGlzIGlzIGEKQEAgLTgxNyw5ICs4MTksNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29u
dGV4dCkgYwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdENoaWxkOgogICAg
ICAgICAgICAgLy8gZmlyc3QtY2hpbGQgbWF0Y2hlcyB0aGUgZmlyc3QgY2hpbGQgdGhhdCBpcyBh
biBlbGVtZW50CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAo
IWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IERPTVRyYXZlcnNh
bFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RDaGlsZChjb250ZXh0LCBlbGVtZW50
KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBlbGVtZW50LT5wYXJlbnRO
b2RlKCktPnJlbmRlclN0eWxlKCk7CkBAIC04MzQsMTQgKzgzNCw3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0KSBjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0T2ZUeXBlOgog
ICAgICAgICAgICAgLy8gZmlyc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBmaXJzdCBlbGVtZW50IG9m
IGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0
eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IERPTVRyYXZlcnNhbFN0cmF0
ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RPZlR5cGUoY29udGV4dCwgZWxlbWVudCwgZWxl
bWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZp
bmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxl
bWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50U3R5bGUpCkBAIC04NTMsNyArODQ2LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQp
IGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkOgogICAgICAgICAg
ICAgLy8gbGFzdC1jaGlsZCBtYXRjaGVzIHRoZSBsYXN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVu
dAogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiAhZWxlbWVudC0+bmV4dEVsZW1lbnRT
aWJsaW5nKCk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5l
bGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAg
LTg3NSwxOSArODY4LDEzIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7
Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+
bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxl
bWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFn
TmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9P
bmx5Q2hpbGQ6CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RDaGlsZCA9
ICFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4oKSAmJiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7Ci0KKyAgICAg
ICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2lu
Z0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVsZW1lbnQtPmlzRmluaXNo
ZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojppc0xhc3RDaGlsZChjb250ZXh0LCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAo
bV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRT
dHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVt
ZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwpAQCAtOTE1LDMz
ICs5MDIsMTQgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91
c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1Rh
Z05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGlu
ZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2li
bGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNp
YmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIHJldHVybiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkp
ICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdE9mVHlwZShj
b250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGls
ZDoKICAgICAgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0g
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlv
dXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBz
ID0gc2libGluZy0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAg
ICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46
OmNvdW50RWxlbWVudHNCZWZvcmUoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVt
ZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTk1
OSwxMiArOTI3LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgICAgIGlmICgh
c2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2li
bGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5
cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENo
ZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY29udGV4dCwgZWxlbWVu
dCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBS
ZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhcmVudFN0eWxlKQpAQCAtOTg2LDkgKzk0OSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBj
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+
aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmco
KTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQotICAg
ICAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEg
KyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0
ZXIoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRj
aE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQpAQCAtMTAwNCwxMiArOTY1LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0Zpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0Nv
bnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoY29udGV4dCwgZWxlbWVudCwgZWxlbWVu
dC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChj
b3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpA
QCAtMTAyMCw3ICs5NzcsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueToKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNv
bnRleHQpOworICAgICAgICAgICAgICAgIENoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYm9vbCBoYXNVbmtub3duUHNldWRvRWxlbWVudHMgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBQc2V1ZG9JZCBpZ25vcmVEeW5hbWljUHNldWRvID0gTk9QU0VVRE87CkBA
IC0xNDAyLDQgKzEzNTksOTAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNlbGVj
dG9yU2NvcGVzKGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAordGVtcGxhdGU8PgoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
Pjo6aXNGaXJzdENoaWxkKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlv
dXNFbGVtZW50U2libGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2luZ0NvbnRleHQ+Ojppc0xhc3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVs
ZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiB0eXBlKQoreworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9
IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+
aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5n
Q29udGV4dD46OmlzTGFzdE9mVHlwZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlw
ZSkKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2li
bGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxh
dGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVm
b3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5n
OyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAg
IFJlbmRlclN0eWxlKiBzID0gc2libGluZy0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsKKyAgICAgICAgaWYgKGluZGV4KSB7
CisgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0
ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVu
dHNPZlR5cGVCZWZvcmUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7Cisg
ICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVt
ZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5n
LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1Rh
Z05hbWUodHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBj
b3VudDsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+
Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQor
ICAgICAgICArK2NvdW50OworCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+Citp
bmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JD
aGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVBZnRl
cihjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBpbnQgY291bnQg
PSAwOworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVt
ZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGUK
K1NlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3I8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD4oY29uc3QgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDc5ZWJhZjY1OTZhM2E3MDQwOWY2NTY3
MmQ5NWNjMmZmY2VlY2ZiNWMuLjFmMzQ5MGM2NDc2NGIwZDIwMjFjNzNkZWM4ZjE5MWZiYjE2MjNh
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTgxLDggKzgxLDI1IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87CiAgICAgfTsKIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+CisgICAgc3RydWN0IERPTVRyYXZlcnNhbFN0cmF0
ZWd5IHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNGaXJzdENoaWxkKGNvbnN0IENvbnRleHQmLCBF
bGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdENoaWxkKGNvbnN0IENvbnRleHQm
LCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGlzRmlyc3RPZlR5cGUoY29uc3QgQ29u
dGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGlzTGFzdE9mVHlwZShjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKworICAgICAgICBzdGF0aWMgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoY29uc3Qg
Q29udGV4dCYsIEVsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQWZ0
ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVs
ZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgICAgICBzdGF0aWMgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihj
b25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB9Owor
CiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNG
YXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7Ci0gICAgU2VsZWN0b3JNYXRjaCBj
aGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBi
b29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoY29u
c3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAg
ICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JikgY29uc3Q7CisK
ICAgICBzdGF0aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciopOwogICAgIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25z
dCBFbGVtZW50KikgY29uc3Q7CiAKQEAgLTEyMSw3ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgZWxlbWVudE1hdGNoZXNTZWxlY3RvclNjb3Blcyhjb25zdCBTdHlsZWRFbGVtZW50
KiwgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGlkU2NvcGVzLCBjb25zdCBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgY2xhc3NTY29wZXMpOwogCiBwcml2YXRlOgotICAgIGJv
b2wgY2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYpIGNvbnN0
OwogICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3RvciopIGNvbnN0
OwogICAgIHN0YXRpYyBib29sIGlzRnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQqKTsKIApkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZWJmYmZjY2NkMjM1NTI1ZmY0MWRiMzQyN2M2NDA4NDI4M2FmOGM0Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWwK
QEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorCis8ZGl2
IGlkPSJ0ZXN0LXRhcmdldCI+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAg
ICAgPGRpdj4KKyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgICAgIDxzcGFuPjwv
c3Bhbj4KKyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj4KKyAgICAg
ICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPHNw
YW4+PC9zcGFuPgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNw
YW4+PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQoeworICAg
IGRlc2NyaXB0aW9uOiAiVGhpcyBiZW5jaG1hcmsgdGVzdHMgQ1NTIFNlbGVjdG9yIHBlcmZvcm1h
bmNlIHdpdGggcXVlcnlTZWxlY3RvcigpLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcigic3BhbjpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoInNwYW46bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJzcGFuOm50aC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1jaGlsZCg0biszKSIpOworICAgICAg
ICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtb2YtdHlwZSg0biszKSIpOwor
ICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1vZi10eXBl
KDRuKzMpIik7CisgICAgICAgIH0KKyAgICB9Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZwppbmRleCAxMjc0YTk1N2ZmMWQzODhiMDU3MTJlNjcyMzZmN2Q2ZGQ5
ZjM4ZWViLi5kNTE0ZTNmYzQyNzVjYTczN2ZiNDk1MTVhYmUyYTk5MTRhYjgwZmM4IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTAzICBIYXlhdG8gSXRvICA8aGF5YXRv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVjZSBhIHRyYXZl
cnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBxdWVyeVNlbGVjdG9yKCkgcGVyZm9y
bWFuY2UgdGVzdHMgdG8gY2hlY2sgU2VsZWN0b3JDaGVja2VyIHBlcmZvcm1hbmNlLgorCisgICAg
ICAgICogQ1NTL3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0w
MiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXgg
YWZ0ZXIgcjEzMDEzNS4gRHJvbWFlbyB0ZXN0cyBvbmx5IHJlcG9ydCBzaW5nbGUgbWVtb3J5IHZh
bHVlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166869</attachid>
            <date>2012-10-03 05:36:23 -0700</date>
            <delta_ts>2012-10-04 01:11:21 -0700</delta_ts>
            <desc>Sync with ToT</desc>
            <filename>bug-97298-20121003213535.patch</filename>
            <type>text/plain</type>
            <size>22349</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxYzBhYmQ4Nzg2Mzcx
YjUyYWVhYWIzOWVmODZkYjI2NWRiYjQzMC4uMGI3NDBhOWYyMWYxN2ZmYjU4YWY3YTdiMTNhMjUy
YzkwYWI5Y2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTEwLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIElu
dHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJh
dmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3Ro
ZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVn
eSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMg
Y29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVz
cyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2Ug
Y29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tl
clBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAg
dGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhp
cyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMvcworICAg
ICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAgc3RkZXYg
MjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3NjQzMDEz
NCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisKKyAgICAg
ICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6CisgICAgICAg
ICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAzODU4LjM0
MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0OTQgcnVu
cy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAgICAgIG1h
eCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0aGVzZSB0
ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJlLgorCisg
ICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5o
dG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTog
TWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRleHQgdHlw
ZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIGNv
bWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAg
KFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6IEV4dHJh
Y3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBBbm90aGVy
IHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29taW5nIHBh
dGNoLgorCiAyMDEyLTEwLTAzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgV2luQ0UgYWZ0ZXIgcjEzMDE2MC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNDAzYjIxOGFmOWZjYmM2ZjZiNGJjNGZk
MmMwMzY3ZWFjYmI1YTY5MS4uYmY1ODAzZDIwNzhlZjcxOTc0MDZhZWUwNmVjODM3ODBiMjIwNmU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQzOSw3ICs0Mzks
OCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAgLSB0
aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKIC8vICogU2VsZWN0b3JGYWlsc0Fs
bFNpYmxpbmdzIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvZiBl
CiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5ICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3Ig
ZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQotU2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNo
ZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wmIGhh
c1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5n
Q29udGV4dD4KK1NlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYg
ZHluYW1pY1BzZXVkbywgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAogewog
ICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRjaAogICAgIGlmICghY2hlY2tPbmVTZWxl
Y3Rvcihjb250ZXh0KSkKQEAgLTQ3Miw3ICs0NzMsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hl
YwogICAgIGlmICghaGlzdG9yeVNlbGVjdG9yKQogICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRj
aGVzOwogCi0gICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7
CisgICAgQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOwogICAgIG5leHRDb250
ZXh0LnNlbGVjdG9yID0gaGlzdG9yeVNlbGVjdG9yOwogCiAgICAgUHNldWRvSWQgaWdub3JlRHlu
YW1pY1BzZXVkbyA9IE5PUFNFVURPOwpAQCAtNzI2LDcgKzcyNyw4IEBAIHN0YXRpYyBib29sIGFu
eUF0dHJpYnV0ZU1hdGNoZXMoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1h
dGNoLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KK2Jvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKICAgICBFbGVtZW50KiBjb25zdCAmIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7
CiAgICAgQ1NTU2VsZWN0b3IqIGNvbnN0ICYgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yOwpA
QCAtNzYzLDcgKzc2NSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yTGlzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAg
ICAgICAgICBDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4dChjb250ZXh0KTsKICAgICAgICAgICAg
IHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CiAgICAgICAgICAgICBmb3IgKHN1YkNv
bnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YkNvbnRleHQuc2VsZWN0
b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzdWJDb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5
KCkpIHsKICAgICAgICAgICAgICAgICAvLyA6bm90IGNhbm5vdCBuZXN0LiBJIGRvbid0IHJlYWxs
eSBrbm93IHdoeSB0aGlzIGlzIGEKQEAgLTgxNyw5ICs4MTksNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29u
dGV4dCkgYwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdENoaWxkOgogICAg
ICAgICAgICAgLy8gZmlyc3QtY2hpbGQgbWF0Y2hlcyB0aGUgZmlyc3QgY2hpbGQgdGhhdCBpcyBh
biBlbGVtZW50CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAo
IWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IERPTVRyYXZlcnNh
bFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RDaGlsZChjb250ZXh0LCBlbGVtZW50
KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBlbGVtZW50LT5wYXJlbnRO
b2RlKCktPnJlbmRlclN0eWxlKCk7CkBAIC04MzQsMTQgKzgzNCw3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0KSBjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0T2ZUeXBlOgog
ICAgICAgICAgICAgLy8gZmlyc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBmaXJzdCBlbGVtZW50IG9m
IGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0
eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IERPTVRyYXZlcnNhbFN0cmF0
ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RPZlR5cGUoY29udGV4dCwgZWxlbWVudCwgZWxl
bWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZp
bmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxl
bWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50U3R5bGUpCkBAIC04NTMsNyArODQ2LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQp
IGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkOgogICAgICAgICAg
ICAgLy8gbGFzdC1jaGlsZCBtYXRjaGVzIHRoZSBsYXN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVu
dAogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiAhZWxlbWVudC0+bmV4dEVsZW1lbnRT
aWJsaW5nKCk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5l
bGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAg
LTg3NSwxOSArODY4LDEzIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7
Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+
bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxl
bWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFn
TmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9P
bmx5Q2hpbGQ6CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RDaGlsZCA9
ICFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4oKSAmJiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7Ci0KKyAgICAg
ICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2lu
Z0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVsZW1lbnQtPmlzRmluaXNo
ZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojppc0xhc3RDaGlsZChjb250ZXh0LCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAo
bV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRT
dHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVt
ZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwpAQCAtOTE1LDMz
ICs5MDIsMTQgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91
c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1Rh
Z05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGlu
ZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2li
bGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNp
YmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIHJldHVybiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkp
ICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdE9mVHlwZShj
b250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGls
ZDoKICAgICAgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0g
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlv
dXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBz
ID0gc2libGluZy0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAg
ICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46
OmNvdW50RWxlbWVudHNCZWZvcmUoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVt
ZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTk1
OSwxMiArOTI3LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgICAgIGlmICgh
c2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2li
bGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5
cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENo
ZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY29udGV4dCwgZWxlbWVu
dCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBS
ZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhcmVudFN0eWxlKQpAQCAtOTg2LDkgKzk0OSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBj
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+
aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmco
KTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQotICAg
ICAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEg
KyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0
ZXIoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRj
aE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQpAQCAtMTAwNCwxMiArOTY1LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0Zpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0Nv
bnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoY29udGV4dCwgZWxlbWVudCwgZWxlbWVu
dC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChj
b3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpA
QCAtMTAyMCw3ICs5NzcsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueToKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNv
bnRleHQpOworICAgICAgICAgICAgICAgIENoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYm9vbCBoYXNVbmtub3duUHNldWRvRWxlbWVudHMgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBQc2V1ZG9JZCBpZ25vcmVEeW5hbWljUHNldWRvID0gTk9QU0VVRE87CkBA
IC0xNDAyLDQgKzEzNTksOTAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNlbGVj
dG9yU2NvcGVzKGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAordGVtcGxhdGU8PgoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
Pjo6aXNGaXJzdENoaWxkKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlv
dXNFbGVtZW50U2libGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2luZ0NvbnRleHQ+Ojppc0xhc3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVs
ZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiB0eXBlKQoreworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9
IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+
aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5n
Q29udGV4dD46OmlzTGFzdE9mVHlwZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlw
ZSkKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2li
bGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxh
dGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVm
b3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5n
OyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAg
IFJlbmRlclN0eWxlKiBzID0gc2libGluZy0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsKKyAgICAgICAgaWYgKGluZGV4KSB7
CisgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0
ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVu
dHNPZlR5cGVCZWZvcmUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7Cisg
ICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVt
ZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5n
LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1Rh
Z05hbWUodHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBj
b3VudDsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+
Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQor
ICAgICAgICArK2NvdW50OworCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+Citp
bmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JD
aGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVBZnRl
cihjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBpbnQgY291bnQg
PSAwOworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVt
ZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGUK
K1NlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3I8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD4oY29uc3QgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDc5ZWJhZjY1OTZhM2E3MDQwOWY2NTY3
MmQ5NWNjMmZmY2VlY2ZiNWMuLjFmMzQ5MGM2NDc2NGIwZDIwMjFjNzNkZWM4ZjE5MWZiYjE2MjNh
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTgxLDggKzgxLDI1IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87CiAgICAgfTsKIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+CisgICAgc3RydWN0IERPTVRyYXZlcnNhbFN0cmF0
ZWd5IHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNGaXJzdENoaWxkKGNvbnN0IENvbnRleHQmLCBF
bGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdENoaWxkKGNvbnN0IENvbnRleHQm
LCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGlzRmlyc3RPZlR5cGUoY29uc3QgQ29u
dGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGlzTGFzdE9mVHlwZShjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKworICAgICAgICBzdGF0aWMgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoY29uc3Qg
Q29udGV4dCYsIEVsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQWZ0
ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVs
ZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgICAgICBzdGF0aWMgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihj
b25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB9Owor
CiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNG
YXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7Ci0gICAgU2VsZWN0b3JNYXRjaCBj
aGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBi
b29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoY29u
c3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxl
bWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAg
ICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JikgY29uc3Q7CisK
ICAgICBzdGF0aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciopOwogICAgIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25z
dCBFbGVtZW50KikgY29uc3Q7CiAKQEAgLTEyMSw3ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgZWxlbWVudE1hdGNoZXNTZWxlY3RvclNjb3Blcyhjb25zdCBTdHlsZWRFbGVtZW50
KiwgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGlkU2NvcGVzLCBjb25zdCBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgY2xhc3NTY29wZXMpOwogCiBwcml2YXRlOgotICAgIGJv
b2wgY2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYpIGNvbnN0
OwogICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3RvciopIGNvbnN0
OwogICAgIHN0YXRpYyBib29sIGlzRnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQqKTsKIApkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZWJmYmZjY2NkMjM1NTI1ZmY0MWRiMzQyN2M2NDA4NDI4M2FmOGM0Ci0tLSAvZGV2L251
bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWwK
QEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorCis8ZGl2
IGlkPSJ0ZXN0LXRhcmdldCI+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAg
ICAgPGRpdj4KKyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgICAgIDxzcGFuPjwv
c3Bhbj4KKyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj4KKyAgICAg
ICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPHNw
YW4+PC9zcGFuPgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNw
YW4+PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQoeworICAg
IGRlc2NyaXB0aW9uOiAiVGhpcyBiZW5jaG1hcmsgdGVzdHMgQ1NTIFNlbGVjdG9yIHBlcmZvcm1h
bmNlIHdpdGggcXVlcnlTZWxlY3RvcigpLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcigic3BhbjpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoInNwYW46bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJzcGFuOm50aC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1jaGlsZCg0biszKSIpOworICAgICAg
ICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtb2YtdHlwZSg0biszKSIpOwor
ICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1vZi10eXBl
KDRuKzMpIik7CisgICAgICAgIH0KKyAgICB9Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZwppbmRleCAxMjc0YTk1N2ZmMWQzODhiMDU3MTJlNjcyMzZmN2Q2ZGQ5
ZjM4ZWViLi5kNTE0ZTNmYzQyNzVjYTczN2ZiNDk1MTVhYmUyYTk5MTRhYjgwZmM4IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTAzICBIYXlhdG8gSXRvICA8aGF5YXRv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVjZSBhIHRyYXZl
cnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBxdWVyeVNlbGVjdG9yKCkgcGVyZm9y
bWFuY2UgdGVzdHMgdG8gY2hlY2sgU2VsZWN0b3JDaGVja2VyIHBlcmZvcm1hbmNlLgorCisgICAg
ICAgICogQ1NTL3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0w
MiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXgg
YWZ0ZXIgcjEzMDEzNS4gRHJvbWFlbyB0ZXN0cyBvbmx5IHJlcG9ydCBzaW5nbGUgbWVtb3J5IHZh
bHVlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166936</attachid>
            <date>2012-10-03 12:18:09 -0700</date>
            <delta_ts>2012-10-04 01:11:25 -0700</delta_ts>
            <desc>WIP: Strategy as a member of SelectorCheckingContext.</desc>
            <filename>bug-97298-20121003121720.patch</filename>
            <type>text/plain</type>
            <size>23936</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhiMTIwZjJjN2IwMmI2
YzAzMWQ0NDZkMWNkN2Q4NDk4NGNmMjBjMS4uZDA3Mzg1YjA1YjE5Nzg2MTY0YTMxOTgwY2VkMDAx
NjNmMGRmMDEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTEwLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIElu
dHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJh
dmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3Ro
ZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVn
eSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMg
Y29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVz
cyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2Ug
Y29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tl
clBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAg
dGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhp
cyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMvcworICAg
ICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAgc3RkZXYg
MjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3NjQzMDEz
NCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisKKyAgICAg
ICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6CisgICAgICAg
ICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAzODU4LjM0
MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0OTQgcnVu
cy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAgICAgIG1h
eCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0aGVzZSB0
ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJlLgorCisg
ICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5o
dG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTog
TWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRleHQgdHlw
ZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIGNv
bWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAg
KFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6IEV4dHJh
Y3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBBbm90aGVy
IHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29taW5nIHBh
dGNoLgorCiAyMDEyLTEwLTAzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgSW5kZXhlZERCOiBPcHRpbWl6ZSBlbmNvZGVTdHJpbmcvZGVjb2RlU3RyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDQwM2IyMThhZjlmY2JjNmY2
YjRiYzRmZDJjMDM2N2VhY2JiNWE2OTEuLmQ4ODQ4YmY4MjRmZDUzNTRjOGNlZGY4OGRkYTQwMzcz
ZWY4NDQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0yNjgs
NyArMjY4LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHNlbCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBpc0YKIAogICAgIFBzZXVkb0lkIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKICAgICBib29sIGhhc1Vua25vd25Qc2V1ZG9FbGVt
ZW50cyA9IGZhbHNlOwotICAgIHJldHVybiBjaGVja1NlbGVjdG9yKFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0KHNlbCwgZWxlbWVudCwgU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hEaXNhYmxl
ZCksIGlnbm9yZUR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgPT0gU2Vs
ZWN0b3JNYXRjaGVzOworICAgIERPTVRyYXZlcnNhbFN0cmF0ZWd5IHN0cmF0ZWd5OworICAgIHJl
dHVybiBjaGVja1NlbGVjdG9yKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0PERPTVRyYXZlcnNhbFN0
cmF0ZWd5PihzdHJhdGVneSwgc2VsLCBlbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRN
YXRjaERpc2FibGVkKSwgaWdub3JlRHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBzZXVkb0VsZW1l
bnRzKSA9PSBTZWxlY3Rvck1hdGNoZXM7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC00MzksNyArNDQw
LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIC8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgIC0g
dGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNB
bGxTaWJsaW5ncyAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb2Yg
ZQogLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9y
IGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9mIGUKLVNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sJiBo
YXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2lu
Z0NvbnRleHQ+CitTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2Vy
OjpjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRvSWQm
IGR5bmFtaWNQc2V1ZG8sIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QKIHsK
ICAgICAvLyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKICAgICBpZiAoIWNoZWNrT25lU2Vs
ZWN0b3IoY29udGV4dCkpCkBAIC00NzIsNyArNDc0LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNo
ZWMKICAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yTWF0
Y2hlczsKIAotICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQp
OworICAgIENoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0Q29u
dGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKIAogICAgIFBzZXVkb0lkIGlnbm9yZUR5
bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKQEAgLTcyNiw3ICs3MjgsOCBAQCBzdGF0aWMgYm9vbCBh
bnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBt
YXRjaCwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0CiB7CiAgICAgRWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50
OwogICAgIENTU1NlbGVjdG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsK
QEAgLTc2Myw3ICs3NjYsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAgICAg
aWYgKCFzZWxlY3Rvckxpc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAg
ICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAg
ICBzdWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChzdWJD
b250ZXh0LnNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0LnNlbGVj
dG9yOyBzdWJDb250ZXh0LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFnSGlzdG9y
eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCByZWFs
bHkga25vdyB3aHkgdGhpcyBpcyBhCkBAIC04MTcsOSArODIwLDcgQEAgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNv
bnRleHQpIGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKICAg
ICAgICAgICAgIC8vIGZpcnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMg
YW4gZWxlbWVudAogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewot
ICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYg
KCFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjb250ZXh0Lmlz
Rmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVy
U3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
Y29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1l
bnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKQEAgLTgzNCwxNCArODM1LDcgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmly
c3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBmaXJzdC1vZi10eXBlIG1hdGNoZXMgdGhlIGZpcnN0
IGVsZW1lbnQgb2YgaXRzIHR5cGUKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlv
dXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5o
YXNUYWdOYW1lKHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY29udGV4
dC5pc0ZpcnN0T2ZUeXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZp
bmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxl
bWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50U3R5bGUpCkBAIC04NTMsNyArODQ3LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQp
IGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkOgogICAgICAgICAg
ICAgLy8gbGFzdC1jaGlsZCBtYXRjaGVzIHRoZSBsYXN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVu
dAogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiAhZWxlbWVudC0+bmV4dEVsZW1lbnRT
aWJsaW5nKCk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgY29udGV4dC5pc0xhc3RDaGlsZCgpOwogICAg
ICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/
IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5
bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0
eWxlKCk7CkBAIC04NzUsMTkgKzg2OSwxMyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmlu
aXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50
YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9
IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGlu
Zy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxp
bmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmlzTGFzdE9mVHlwZSgpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09u
bHlDaGlsZDoKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBmaXJzdENoaWxkID0g
IWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKLSAgICAgICAgICAgICAgICBib29s
IG9ubHlDaGlsZCA9IGZpcnN0Q2hpbGQgJiYgcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbigpICYmICFlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKLQorICAgICAg
ICAgICAgICAgIGJvb2wgZmlyc3RDaGlsZCA9IGNvbnRleHQuaXNGaXJzdENoaWxkKCk7CisgICAg
ICAgICAgICAgICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVsZW1lbnQt
PmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBjb250ZXh0LmlzTGFzdENoaWxkKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxl
ID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAg
ICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRT
dHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVy
U3R5bGUoKTsKQEAgLTkxNSwzMyArOTAzLDE0IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNG
aW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQt
PnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5n
ID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0g
c2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5pc0ZpcnN0
T2ZUeXBlKCkgJiYgY29udGV4dC5pc0xhc3RPZlR5cGUoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGlsZDoK
ICAgICAgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlv
dXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNF
bGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBzID0g
c2libGluZy0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAg
aW50IGNvdW50ID0gMSArIGNvbnRleHQuY291bnRFbGVtZW50c0JlZm9yZSgpOwogICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CkBAIC05NTksMTIgKzkyOCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAg
ICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3Vz
RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxl
bWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFn
TmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBjb250ZXh0LmNvdW50RWxl
bWVudHNPZlR5cGVCZWZvcmUoKTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBw
YXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFy
ZW50U3R5bGUpCkBAIC05ODYsOSArOTUwLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0Zp
bmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGZvciAo
Y29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBz
aWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAg
ICAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIGNv
bnRleHQuY291bnRFbGVtZW50c0FmdGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9y
LT5tYXRjaE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQpAQCAtMTAwNCwxMiArOTY2LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAg
ICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBjb250ZXh0LmNvdW50RWxlbWVudHNPZlR5
cGVBZnRlcigpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEw
MjAsNyArOTc4LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4dChjb250ZXh0
KTsKKyAgICAgICAgICAgICAgICBDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4dChjb250ZXh0KTsK
ICAgICAgICAgICAgICAgICBzdWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGJvb2wgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwpAQCAtMTQw
Miw0ICsxMzYwLDc5IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVTZWxlY3RvclNj
b3Blcyhjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6
OmlzRmlyc3RDaGlsZChFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiAhZWxl
bWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworfQorCitpbmxpbmUgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0xhc3RDaGlsZChFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAoreworICAgIHJldHVybiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7
Cit9CisKK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6
OmlzRmlyc3RPZlR5cGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlw
ZSkgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5w
cmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUo
dHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0xhc3RPZlR5cGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlw
ZSkgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
aW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVs
ZW1lbnRzQmVmb3JlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgaW50IGNvdW50ID0g
MDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1l
bnRTaWJsaW5nKCkpIHsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHMgPSBzaWJsaW5nLT5yZW5kZXJT
dHlsZSgpOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHMgPyBzLT5jaGlsZEluZGV4KCkgOiAw
OworICAgICAgICBpZiAoaW5kZXgpIHsKKyAgICAgICAgICAgIGNvdW50ICs9IGluZGV4OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY291bnQrKzsKKyAgICB9CisKKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2
ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c09mVHlwZUJlZm9yZShFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKSBjb25zdAoreworICAgIGludCBjb3VudCA9IDA7
CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVt
ZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50
U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAg
ICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK2lubGlu
ZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50
c0FmdGVyKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQor
ICAgICAgICArK2NvdW50OworCisgICAgcmV0dXJuIGNvdW50OworfQorCitpbmxpbmUgaW50IFNl
bGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNPZlR5cGVB
ZnRlcihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKSBjb25zdAor
eworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0g
ZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5n
LT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFt
ZSh0eXBlKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggNzllYmFmNjU5
NmEzYTcwNDA5ZjY1NjcyZDk1Y2MyZmZjZWVjZmI1Yy4uMmEwMDYyMDVkODcyOGFlMTc3MTE1YzUw
MTVlZTcwZjkyZjRjOGM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAt
NTQsMTAgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBlbnVtIFZpc2l0ZWRNYXRjaFR5cGUgeyBWaXNp
dGVkTWF0Y2hEaXNhYmxlZCwgVmlzaXRlZE1hdGNoRW5hYmxlZCB9OwogICAgIGVudW0gTW9kZSB7
IFJlc29sdmluZ1N0eWxlID0gMCwgQ29sbGVjdGluZ1J1bGVzLCBRdWVyeWluZ1J1bGVzIH07CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmF2ZXJzYWxTdHJhdGVneT4KICAgICBzdHJ1Y3QgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQgewogICAgICAgICAvLyBJbml0aWFsIHNlbGVjdG9yIGNvbnN0
cnVjdG9yCi0gICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBl
KQotICAgICAgICAgICAgOiBzZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQoVHJhdmVyc2FsU3RyYXRlZ3kgc3RyYXRlZ3ksIENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBl
KQorICAgICAgICAgICAgOiBzdHJhdGVneShzdHJhdGVneSkKKyAgICAgICAgICAgICwgc2VsZWN0
b3Ioc2VsZWN0b3IpCiAgICAgICAgICAgICAsIGVsZW1lbnQoZWxlbWVudCkKICAgICAgICAgICAg
ICwgc2NvcGUoMCkKICAgICAgICAgICAgICwgdmlzaXRlZE1hdGNoVHlwZSh2aXNpdGVkTWF0Y2hU
eXBlKQpAQCAtNjksNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlv
blBzZXVkbyhmYWxzZSkKICAgICAgICAgeyB9CiAKKyAgICAgICAgLy8gRklYTUU6IENvcHlpbmcg
dGhpcyBtaWdodCBiZSB0cmlja3kuCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5IHN0cmF0ZWd5
OwogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQ7CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwpAQCAtNzksMTAgKzgzLDM1
IEBAIHB1YmxpYzoKICAgICAgICAgUHNldWRvSWQgcHNldWRvU3R5bGU7CiAgICAgICAgIGJvb2wg
aGFzU2Nyb2xsYmFyUHNldWRvOwogICAgICAgICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKKwor
ICAgICAgICBib29sIGlzRmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIHN0cmF0ZWd5LmlzRmly
c3RDaGlsZChlbGVtZW50KTsgfQorICAgICAgICBib29sIGlzTGFzdENoaWxkKCkgY29uc3QgeyBy
ZXR1cm4gc3RyYXRlZ3kuaXNMYXN0Q2hpbGQoZWxlbWVudCk7IH0KKyAgICAgICAgYm9vbCBpc0Zp
cnN0T2ZUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RyYXRlZ3kuaXNGaXJzdE9mVHlwZShlbGVtZW50
LCBlbGVtZW50LT50YWdRTmFtZSgpKTsgfQorICAgICAgICBib29sIGlzTGFzdE9mVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0cmF0ZWd5LmlzTGFzdE9mVHlwZShlbGVtZW50LCBlbGVtZW50LT50YWdR
TmFtZSgpKTsgfQorICAgICAgICBib29sIGNvdW50RWxlbWVudHNCZWZvcmUoKSBjb25zdCB7IHJl
dHVybiBzdHJhdGVneS5jb3VudEVsZW1lbnRzQmVmb3JlKGVsZW1lbnQpOyB9CisgICAgICAgIGJv
b2wgY291bnRFbGVtZW50c0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3RyYXRlZ3kuY291bnRFbGVt
ZW50c0FmdGVyKGVsZW1lbnQpOyB9CisgICAgICAgIGJvb2wgY291bnRFbGVtZW50c09mVHlwZUJl
Zm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmF0ZWd5LmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUo
ZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7IH0KKyAgICAgICAgYm9vbCBjb3VudEVsZW1l
bnRzT2ZUeXBlQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdHJhdGVneS5jb3VudEVsZW1lbnRzT2ZU
eXBlQWZ0ZXIoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7IH0KKyAgICB9OworCisgICAg
c3RydWN0IERPTVRyYXZlcnNhbFN0cmF0ZWd5IHsKKyAgICAgICAgYm9vbCBpc0ZpcnN0Q2hpbGQo
RWxlbWVudCopIGNvbnN0OworICAgICAgICBib29sIGlzTGFzdENoaWxkKEVsZW1lbnQqKSBjb25z
dDsKKyAgICAgICAgYm9vbCBpc0ZpcnN0T2ZUeXBlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CisgICAgICAgIGJvb2wgaXNMYXN0T2ZUeXBlKEVsZW1lbnQqLCBjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CisKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNCZWZvcmUo
RWxlbWVudCopIGNvbnN0OworICAgICAgICBpbnQgY291bnRFbGVtZW50c0FmdGVyKEVsZW1lbnQq
KSBjb25zdDsKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoRWxlbWVudCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNP
ZlR5cGVBZnRlcihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIH07
CiAKICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBp
c0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKLSAgICBTZWxlY3Rvck1hdGNo
IGNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYs
IGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tpbmdDb250ZXh0PgorICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3Rvcihj
b25zdCBDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9F
bGVtZW50cykgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tpbmdDb250ZXh0Pgor
ICAgIGJvb2wgY2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmKSBjb25zdDsK
KwogICAgIHN0YXRpYyBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVj
dG9yKik7CiAgICAgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciosIGNv
bnN0IEVsZW1lbnQqKSBjb25zdDsKIApAQCAtMTIxLDcgKzE1MCw2IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc1NlbGVjdG9yU2NvcGVzKGNvbnN0IFN0eWxlZEVsZW1l
bnQqLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgaWRTY29wZXMsIGNvbnN0IEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBjbGFzc1Njb3Blcyk7CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JikgY29u
c3Q7CiAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9yKikgY29u
c3Q7CiAgICAgc3RhdGljIGJvb2wgaXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVudCopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggY2MzZjVmM2RmMmZhM2MxMjQ4MmEx
YjgyOGZjY2NiMzI3OTk4MmQwYy4uMGFkNzRlYzFkNmNjOGVkODQ0MjAyM2UwZGQ2NGIyYTNjN2Jj
NmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMjQxNyw3ICsyNDE3
LDggQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW4KICAgICB9CiAKICAgICAvLyBTbG93IHBhdGgu
Ci0gICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCBjb250ZXh0KHJ1
bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0
Y2hFbmFibGVkKTsKKyAgICBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5IHN0
cmF0ZWd5OworICAgIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ8U2Vs
ZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneT4gY29udGV4dChzdHJhdGVneSwgcnVs
ZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRj
aEVuYWJsZWQpOwogICAgIGNvbnRleHQuZWxlbWVudFN0eWxlID0gc3R5bGUoKTsKICAgICBjb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IG1fcGFyZW50Tm9kZSA/IG1fcGFyZW50Tm9kZS0+cmVu
ZGVyU3R5bGUoKSA6IDA7CiAgICAgY29udGV4dC5zY29wZSA9IHNjb3BlOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWJm
YmZjY2NkMjM1NTI1ZmY0MWRiMzQyN2M2NDA4NDI4M2FmOGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWwKQEAgLTAsMCAr
MSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJ0ZXN0
LXRhcmdldCI+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj4K
KyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAg
ICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXY+PC9k
aXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICAgIDxz
cGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPHNwYW4+PC9zcGFu
PgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNwYW4+PC9zcGFu
PgorPC9kaXY+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQoeworICAgIGRlc2NyaXB0
aW9uOiAiVGhpcyBiZW5jaG1hcmsgdGVzdHMgQ1NTIFNlbGVjdG9yIHBlcmZvcm1hbmNlIHdpdGgg
cXVlcnlTZWxlY3RvcigpLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3Rvcigic3BhbjpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3Rvcigic3BhbjpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoInNwYW46bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJzcGFuOm50aC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtb2YtdHlwZSg0biszKSIpOworICAgICAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1vZi10eXBlKDRuKzMpIik7
CisgICAgICAgIH0KKyAgICB9Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZwppbmRleCAxMjc0YTk1N2ZmMWQzODhiMDU3MTJlNjcyMzZmN2Q2ZGQ5ZjM4ZWViLi5k
NTE0ZTNmYzQyNzVjYTczN2ZiNDk1MTVhYmUyYTk5MTRhYjgwZmM4IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTAzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJh
dGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBxdWVyeVNlbGVjdG9yKCkgcGVyZm9ybWFuY2UgdGVz
dHMgdG8gY2hlY2sgU2VsZWN0b3JDaGVja2VyIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogQ1NT
L3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0wMiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjEz
MDEzNS4gRHJvbWFlbyB0ZXN0cyBvbmx5IHJlcG9ydCBzaW5nbGUgbWVtb3J5IHZhbHVlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166950</attachid>
            <date>2012-10-03 13:21:40 -0700</date>
            <delta_ts>2012-10-04 01:11:29 -0700</delta_ts>
            <desc>WIP: Strategy as interface member of SelectorCheckingContext.</desc>
            <filename>bug-97298-20121003132051.patch</filename>
            <type>text/plain</type>
            <size>21785</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhiMTIwZjJjN2IwMmI2
YzAzMWQ0NDZkMWNkN2Q4NDk4NGNmMjBjMS4uZDA3Mzg1YjA1YjE5Nzg2MTY0YTMxOTgwY2VkMDAx
NjNmMGRmMDEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTEwLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIElu
dHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJh
dmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3Ro
ZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVn
eSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMg
Y29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVz
cyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2Ug
Y29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tl
clBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAg
dGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhp
cyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMvcworICAg
ICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAgc3RkZXYg
MjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3NjQzMDEz
NCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisKKyAgICAg
ICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6CisgICAgICAg
ICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAzODU4LjM0
MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0OTQgcnVu
cy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAgICAgIG1h
eCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0aGVzZSB0
ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJlLgorCisg
ICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTP3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5o
dG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTog
TWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRleHQgdHlw
ZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIGNv
bWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAg
KFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6IEV4dHJh
Y3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBBbm90aGVy
IHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29taW5nIHBh
dGNoLgorCiAyMDEyLTEwLTAzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgSW5kZXhlZERCOiBPcHRpbWl6ZSBlbmNvZGVTdHJpbmcvZGVjb2RlU3RyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDQwM2IyMThhZjlmY2JjNmY2
YjRiYzRmZDJjMDM2N2VhY2JiNWE2OTEuLjJjYjQ5ZDY2YmI3Yjg0NjExNzNkMTRjMDFlZjk1Nzkw
ZTEwNmQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0yNjgs
NyArMjY4LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHNlbCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBpc0YKIAogICAgIFBzZXVkb0lkIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKICAgICBib29sIGhhc1Vua25vd25Qc2V1ZG9FbGVt
ZW50cyA9IGZhbHNlOwotICAgIHJldHVybiBjaGVja1NlbGVjdG9yKFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0KHNlbCwgZWxlbWVudCwgU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hEaXNhYmxl
ZCksIGlnbm9yZUR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgPT0gU2Vs
ZWN0b3JNYXRjaGVzOworICAgIERPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSBzdHJhdGVneTsK
KyAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihTZWxlY3RvckNoZWNraW5nQ29udGV4dCgmc3RyYXRl
Z3ksIHNlbCwgZWxlbWVudCwgU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hEaXNhYmxlZCks
IGlnbm9yZUR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgPT0gU2VsZWN0
b3JNYXRjaGVzOwogfQogCiBuYW1lc3BhY2UgewpAQCAtODE3LDkgKzgxOCw3IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0Q2hp
bGQ6CiAgICAgICAgICAgICAvLyBmaXJzdC1jaGlsZCBtYXRjaGVzIHRoZSBmaXJzdCBjaGlsZCB0
aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIGlmICghZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpKQotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY29u
dGV4dC5pc0ZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxl
ID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQt
PnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUg
OiBlbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7CkBAIC04MzQsMTQgKzgzMyw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0ZpcnN0T2ZUeXBlOgogICAgICAgICAgICAgLy8gZmlyc3Qtb2YtdHlwZSBtYXRjaGVzIHRo
ZSBmaXJzdCBlbGVtZW50IG9mIGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFy
ZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFt
ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1l
bnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2li
bGluZy0+aGFzVGFnTmFtZSh0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9
IGNvbnRleHQuaXNGaXJzdE9mVHlwZSgpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHls
ZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtODUzLDcgKzg0NSw3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0KSBjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAg
ICAgICAgICAgIC8vIGxhc3QtY2hpbGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFu
IGVsZW1lbnQKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJl
bnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRF
bGVtZW50U2libGluZygpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxl
bWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIGNvbnRleHQuaXNMYXN0Q2hpbGQo
KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5y
ZW5kZXJTdHlsZSgpOwpAQCAtODc1LDE5ICs4NjcsMTMgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQp
IGMKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50
LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxl
bWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNp
YmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9
IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5pc0xhc3RPZlR5cGUoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9Pbmx5Q2hpbGQ6CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RD
aGlsZCA9ICFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVsZW1lbnQtPmlzRmluaXNo
ZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7Ci0K
KyAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSBjb250ZXh0LmlzRmlyc3RDaGlsZCgp
OworICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRF
bGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgY29udGV4dC5pc0xhc3RDaGls
ZCgpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1l
bnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5l
bGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQt
PnJlbmRlclN0eWxlKCk7CkBAIC05MTUsMzMgKzkwMSwxNCBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4
dCkgYwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBl
bGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCog
c2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2li
bGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5n
KCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQu
aXNGaXJzdE9mVHlwZSgpICYmIGNvbnRleHQuaXNMYXN0T2ZUeXBlKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRo
Q2hpbGQ6CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAx
OwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQt
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpbmRleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAg
ICAgICAgIGludCBjb3VudCA9IDEgKyBjb250ZXh0LmNvdW50RWxlbWVudHNCZWZvcmUoKTsKICAg
ICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0
eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJT
dHlsZSgpOwpAQCAtOTU5LDEyICs5MjYsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAg
ICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFy
ZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAg
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsK
LSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5w
cmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmct
Pmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50OwotICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgY29udGV4dC5j
b3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9
PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0
eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHBhcmVudFN0eWxlKQpAQCAtOTg2LDkgKzk0OCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0
KSBjCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQot
ICAgICAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgICAgIGludCBjb3VudCA9
IDEgKyBjb250ZXh0LmNvdW50RWxlbWVudHNBZnRlcigpOwogICAgICAgICAgICAgICAgIGlmIChz
ZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KQEAgLTEwMDQsMTIgKzk2NCw4IEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0KSBjCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxl
bWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAg
ICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0
RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50
U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1l
KHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgY29udGV4dC5jb3VudEVsZW1l
bnRzT2ZUeXBlQWZ0ZXIoKTsKICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRo
KGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CkBAIC0xNDAyLDQgKzEzNTgsNzkgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNl
bGVjdG9yU2NvcGVzKGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3k6OmlzRmlyc3RDaGlsZChFbGVtZW50KiBlbGVtZW50KSBjb25zdAorewor
ICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOworfQorCitpbmxp
bmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6aXNM
YXN0Q2hpbGQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQt
Pm5leHRFbGVtZW50U2libGluZygpOworfQorCitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZShFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKSBjb25zdAoreworICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAg
ICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojppc0xhc3RPZlR5cGUoRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKK3sKKyAgICBmb3Ig
KGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsg
c2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7CisgICAg
ICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGludCBTZWxlY3RvckNo
ZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZShF
bGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChj
b25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygp
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7
CisgICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2libGluZy0+cmVuZGVyU3R5bGUoKTsKKyAgICAg
ICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsKKyAgICAgICAgaWYg
KGluZGV4KSB7CisgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50
OworfQorCitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUpIGNvbnN0Cit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBm
b3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJs
aW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAg
ICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKworaW5saW5lIGludCBT
ZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50
c0FmdGVyKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgaW50IGNvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQor
ICAgICAgICArK2NvdW50OworCisgICAgcmV0dXJuIGNvdW50OworfQorCitpbmxpbmUgaW50IFNl
bGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRz
T2ZUeXBlQWZ0ZXIoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkg
Y29uc3QKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2li
bGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0g
c2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhh
c1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVy
biBjb3VudDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDc5
ZWJhZjY1OTZhM2E3MDQwOWY2NTY3MmQ5NWNjMmZmY2VlY2ZiNWMuLjAzNDVlYTVmYmU4MTFhYzMw
Y2RjY2ZkOGU3M2VjMDkzMTA0ZTBjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmgKQEAgLTQ1LDYgKzQ1LDE5IEBAIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAorY2xhc3MgU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaXJzdENoaWxkKEVsZW1lbnQqKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzTGFzdENoaWxkKEVsZW1lbnQqKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzRmlyc3RPZlR5cGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGFzdE9mVHlwZShFbGVtZW50Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgaW50IGNvdW50
RWxlbWVudHNCZWZvcmUoRWxlbWVudCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBjb3Vu
dEVsZW1lbnRzQWZ0ZXIoRWxlbWVudCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBjb3Vu
dEVsZW1lbnRzT2ZUeXBlQmVmb3JlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKK307CisKIGNsYXNzIFNlbGVjdG9y
Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2VsZWN0b3JDaGVja2VyKTsKIHB1
YmxpYzoKQEAgLTU2LDggKzY5LDkgQEAgcHVibGljOgogCiAgICAgc3RydWN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0IHsKICAgICAgICAgLy8gSW5pdGlhbCBzZWxlY3RvciBjb25zdHJ1Y3Rvcgot
ICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dChDU1NTZWxlY3Rvciogc2VsZWN0b3IsIEVs
ZW1lbnQqIGVsZW1lbnQsIFZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKLSAgICAg
ICAgICAgIDogc2VsZWN0b3Ioc2VsZWN0b3IpCisgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0KFNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSogc3RyYXRlZ3ksIENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBl
KQorICAgICAgICAgICAgOiBzdHJhdGVneShzdHJhdGVneSkKKyAgICAgICAgICAgICwgc2VsZWN0
b3Ioc2VsZWN0b3IpCiAgICAgICAgICAgICAsIGVsZW1lbnQoZWxlbWVudCkKICAgICAgICAgICAg
ICwgc2NvcGUoMCkKICAgICAgICAgICAgICwgdmlzaXRlZE1hdGNoVHlwZSh2aXNpdGVkTWF0Y2hU
eXBlKQpAQCAtNjksNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGhhc1NlbGVjdGlv
blBzZXVkbyhmYWxzZSkKICAgICAgICAgeyB9CiAKKyAgICAgICAgU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5KiBzdHJhdGVneTsKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOwogICAgICAg
ICBFbGVtZW50KiBlbGVtZW50OwogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZTsK
QEAgLTc5LDEwICs5NCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIFBzZXVkb0lkIHBzZXVkb1N0eWxl
OwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAgYm9vbCBoYXNTZWxl
Y3Rpb25Qc2V1ZG87CisKKyAgICAgICAgYm9vbCBpc0ZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVy
biBzdHJhdGVneS0+aXNGaXJzdENoaWxkKGVsZW1lbnQpOyB9CisgICAgICAgIGJvb2wgaXNMYXN0
Q2hpbGQoKSBjb25zdCB7IHJldHVybiBzdHJhdGVneS0+aXNMYXN0Q2hpbGQoZWxlbWVudCk7IH0K
KyAgICAgICAgYm9vbCBpc0ZpcnN0T2ZUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RyYXRlZ3ktPmlz
Rmlyc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7IH0KKyAgICAgICAgYm9v
bCBpc0xhc3RPZlR5cGUoKSBjb25zdCB7IHJldHVybiBzdHJhdGVneS0+aXNMYXN0T2ZUeXBlKGVs
ZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOyB9CisgICAgICAgIGludCBjb3VudEVsZW1lbnRz
QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gc3RyYXRlZ3ktPmNvdW50RWxlbWVudHNCZWZvcmUoZWxl
bWVudCk7IH0KKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNBZnRlcigpIGNvbnN0IHsgcmV0dXJu
IHN0cmF0ZWd5LT5jb3VudEVsZW1lbnRzQWZ0ZXIoZWxlbWVudCk7IH0KKyAgICAgICAgaW50IGNv
dW50RWxlbWVudHNPZlR5cGVCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdHJhdGVneS0+Y291bnRF
bGVtZW50c09mVHlwZUJlZm9yZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsgfQorICAg
ICAgICBpbnQgY291bnRFbGVtZW50c09mVHlwZUFmdGVyKCkgY29uc3QgeyByZXR1cm4gc3RyYXRl
Z3ktPmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgp
KTsgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgRE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5IDog
U2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5IHsKKyAgICAgICAgYm9vbCBpc0ZpcnN0Q2hpbGQoRWxl
bWVudCopIGNvbnN0OworICAgICAgICBib29sIGlzTGFzdENoaWxkKEVsZW1lbnQqKSBjb25zdDsK
KyAgICAgICAgYm9vbCBpc0ZpcnN0T2ZUeXBlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CisgICAgICAgIGJvb2wgaXNMYXN0T2ZUeXBlKEVsZW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7CisKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoRWxl
bWVudCopIGNvbnN0OworICAgICAgICBpbnQgY291bnRFbGVtZW50c0FmdGVyKEVsZW1lbnQqKSBj
b25zdDsKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoRWxlbWVudCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNPZlR5
cGVBZnRlcihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIH07CiAK
ICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zh
c3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKICAgICBTZWxlY3Rvck1hdGNoIGNo
ZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJv
b2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3Q7CisgICAgYm9vbCBjaGVja09uZVNl
bGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JikgY29uc3Q7CisKICAgICBzdGF0
aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwogICAg
IGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50
KikgY29uc3Q7CiAKQEAgLTEyMSw3ICsxNTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
ZWxlbWVudE1hdGNoZXNTZWxlY3RvclNjb3Blcyhjb25zdCBTdHlsZWRFbGVtZW50KiwgY29uc3Qg
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGlkU2NvcGVzLCBjb25zdCBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiYgY2xhc3NTY29wZXMpOwogCiBwcml2YXRlOgotICAgIGJvb2wgY2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYpIGNvbnN0OwogICAgIGJv
b2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3RvciopIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIGlzRnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGNjM2Y1ZjNkZjJmYTNjMTI0ODJhMWI4MjhmY2NjYjMy
Nzk5ODJkMGMuLjZmOTZjZmVkOTA0MzFlNDlmYzdlYTFlYTFhZDVlYzlhMzNlY2NlNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTI0MTcsNyArMjQxNyw4IEBAIGlubGlu
ZSBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIHJ1bGVE
YXRhLCBjb25zdCBDb250YWluCiAgICAgfQogCiAgICAgLy8gU2xvdyBwYXRoLgotICAgIFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQgY29udGV4dChydWxlRGF0YS5zZWxl
Y3RvcigpLCBtX2VsZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZCk7
CisgICAgU2VsZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kgc3RyYXRl
Z3k7CisgICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCBjb250ZXh0
KCZzdHJhdGVneSwgcnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBTZWxlY3RvckNoZWNr
ZXI6OlZpc2l0ZWRNYXRjaEVuYWJsZWQpOwogICAgIGNvbnRleHQuZWxlbWVudFN0eWxlID0gc3R5
bGUoKTsKICAgICBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IG1fcGFyZW50Tm9kZSA/IG1f
cGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDA7CiAgICAgY29udGV4dC5zY29wZSA9IHNjb3Bl
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3Jz
Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0NTUy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZWJmYmZjY2NkMjM1NTI1ZmY0MWRiMzQyN2M2NDA4NDI4M2FmOGM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3Jz
Lmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
Cis8ZGl2IGlkPSJ0ZXN0LXRhcmdldCI+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4K
KyAgICAgICAgPGRpdj4KKyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgICAgIDxz
cGFuPjwvc3Bhbj4KKyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj4K
KyAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cisg
ICAgPHNwYW4+PC9zcGFuPgorICAgIDxzcGFuPjwvc3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+Cisg
ICAgPHNwYW4+PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVu
bmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQo
eworICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBiZW5jaG1hcmsgdGVzdHMgQ1NTIFNlbGVjdG9yIHBl
cmZvcm1hbmNlIHdpdGggcXVlcnlTZWxlY3RvcigpLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuOm50aC1jaGlsZCg0biszKSIpOworICAgICAgICAg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1jaGlsZCg0biszKSIpOwor
ICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtb2YtdHlwZSg0bisz
KSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbjpudGgtbGFzdC1v
Zi10eXBlKDRuKzMpIik7CisgICAgICAgIH0KKyAgICB9Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJm
b3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCAxMjc0YTk1N2ZmMWQzODhiMDU3MTJlNjcyMzZm
N2Q2ZGQ5ZjM4ZWViLi5kNTE0ZTNmYzQyNzVjYTczN2ZiNDk1MTVhYmUyYTk5MTRhYjgwZmM4IDEw
MDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTAzICBIYXlhdG8gSXRvICA8
aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVjZSBh
IHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBxdWVyeVNlbGVjdG9yKCkg
cGVyZm9ybWFuY2UgdGVzdHMgdG8gY2hlY2sgU2VsZWN0b3JDaGVja2VyIHBlcmZvcm1hbmNlLgor
CisgICAgICAgICogQ1NTL3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0xMC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWls
ZCBmaXggYWZ0ZXIgcjEzMDEzNS4gRHJvbWFlbyB0ZXN0cyBvbmx5IHJlcG9ydCBzaW5nbGUgbWVt
b3J5IHZhbHVlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167045</attachid>
            <date>2012-10-04 01:11:35 -0700</date>
            <delta_ts>2012-10-04 04:39:06 -0700</delta_ts>
            <desc>Fix a performance test and update the benchmark result.</desc>
            <filename>bug-97298-20121004171045.patch</filename>
            <type>text/plain</type>
            <size>22331</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg3ZTA1NTc5ODVlYzk5
ZjRmMGI0NDM1MzRjMzZjNTM5ZTQ5NDA5Ny4uMzgzYzU2OGM3NGExNjk3YWJmZTA5YzUwZDlmMDFm
ZWQ0OGU2Y2E2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTEwLTAzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIElu
dHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJh
dmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3Ro
ZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVn
eSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMg
Y29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVz
cyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2Ug
Y29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tl
clBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAg
dGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhp
cyBwYXRjaCB3YXM6CisKKyAgICAgICAgICBhdmc9IDQ2NzcuNTYzODY1NTUgcnVucy9zCisgICAg
ICAgICAgbWVkaWFuPSA0Njc4Ljk1MzM1NTI4IHJ1bnMvcywgc3RkZXY9IDE2Ljk4NzUwNzAxNzQg
cnVucy9zLCBtaW49IDQ2NTUuMjY1NjczOTcgcnVucy9zLCBtYXg9IDQ3MDYuNjU1MjU5NzkgcnVu
cy9zCisKKyAgICAgICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3
YXM6CisKKyAgICAgICAgICBhdmc9IDQ3MDUuODUwMjU0MzkgcnVucy9zCisgICAgICAgICAgbWVk
aWFuPSA0NzEzLjE3MTY3MDAxIHJ1bnMvcywgc3RkZXY9IDEzLjI2MjMzNzI2NTggcnVucy9zLCBt
aW49IDQ2ODMuMDExOTc0ODUgcnVucy9zLCBtYXg9IDQ3MjEuNDU4NTM3IHJ1bnMvcworCisgICAg
ICAgIEkndmUgdHJpZWQgdGhlc2UgdGVzdHMgc2V2ZXJhbCB0aW1lcywgYW5kIEkgdXNlZCB0aGUg
YmVzdCByZWNvcmQgaGVyZS4KKworICAgICAgICBUZXN0OiBQZXJmb3JtYW5jZVRlc3RzL0NTUy9Q
c2V1ZG9DbGFzc1NlbGVjdG9ycy5odG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6
IE1ha2UgdGhpcyBhIHRlbXBsYXRlIG1ldGhvZCB0byBhY2NlcHQgYW5vdGhlciBDb250ZXh0IHR5
cGUuCisgICAgICAgIEFub3RoZXIgQ29udGV4dCB0eXBlIHdpbGwgYmUgaW50cm9kdWNlZCBpbiBj
b21pbmcgcGF0Y2guCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdENoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0
ZWd5Ojppc0xhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRP
TVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0
T2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1Ry
YXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1l
bnRzT2ZUeXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9N
U2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQWZ0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k6OmNv
dW50RWxlbWVudHNPZlR5cGVBZnRlcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5o
OgorICAgICAgICAoU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAoU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNo
ZWNraW5nQ29udGV4dDo6aXNGaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OmlzTGFzdENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OmlzRmly
c3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNo
ZWNraW5nQ29udGV4dDo6aXNMYXN0T2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OmNvdW50RWxlbWVudHNCZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dDo6Y291bnRFbGVtZW50c0FmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tl
cjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dDo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6
CisgICAgICAgIChET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisKIDIwMTItMTAtMDMgIEtlaXNoaSBIYXR0b3JpICA8
a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IGxvY2FsaXplVmFsdWUgZm9y
IFRpbWVJbnB1dFR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXgg
NDAzYjIxOGFmOWZjYmM2ZjZiNGJjNGZkMmMwMzY3ZWFjYmI1YTY5MS4uMmNiNDlkNjZiYjdiODQ2
MTE3M2QxNGMwMWVmOTU3OTBlMTA2ZDg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAKQEAgLTI2OCw3ICsyNjgsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tT
ZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlbGVtZW50LCBib29sIGlzRgogCiAg
ICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIGJvb2wgaGFz
VW5rbm93blBzZXVkb0VsZW1lbnRzID0gZmFsc2U7Ci0gICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Io
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQoc2VsLCBlbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6OlZp
c2l0ZWRNYXRjaERpc2FibGVkKSwgaWdub3JlRHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBzZXVk
b0VsZW1lbnRzKSA9PSBTZWxlY3Rvck1hdGNoZXM7CisgICAgRE9NU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5IHN0cmF0ZWd5OworICAgIHJldHVybiBjaGVja1NlbGVjdG9yKFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0KCZzdHJhdGVneSwgc2VsLCBlbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0
ZWRNYXRjaERpc2FibGVkKSwgaWdub3JlRHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBzZXVkb0Vs
ZW1lbnRzKSA9PSBTZWxlY3Rvck1hdGNoZXM7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC04MTcsOSAr
ODE4LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvRmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZpcnN0LWNoaWxkIG1hdGNoZXMg
dGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAgICAgICAgICAgaWYgKGVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5n
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAg
Ym9vbCByZXN1bHQgPSBjb250ZXh0LmlzRmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgICAgIGlm
IChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
U3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVu
dFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVs
ZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsK
QEAgLTgzNCwxNCArODMzLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBmaXJzdC1v
Zi10eXBlIG1hdGNoZXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgaXRzIHR5cGUKICAgICAgICAgICAg
IGlmIChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJl
c3VsdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9
IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50
KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gY29udGV4dC5pc0ZpcnN0T2ZUeXBlKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgp
OwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC04NTMsNyArODQ1LDcg
QEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvTGFzdENoaWxkOgogICAgICAgICAgICAgLy8gbGFzdC1jaGlsZCBtYXRjaGVzIHRoZSBsYXN0
IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVu
dEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAm
JiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgY29u
dGV4dC5pc0xhc3RDaGlsZCgpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2
aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+
cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6
IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC04NzUsMTkgKzg2NywxMyBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5n
Q29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp
ZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAo
Y29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBz
aWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmlzTGFz
dE9mVHlwZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09ubHlDaGlsZDoKICAgICAgICAgICAgIGlmIChFbGVtZW50
KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAg
ICAgICAgYm9vbCBmaXJzdENoaWxkID0gIWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmco
KTsKLSAgICAgICAgICAgICAgICBib29sIG9ubHlDaGlsZCA9IGZpcnN0Q2hpbGQgJiYgcGFyZW50
RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmICFlbGVtZW50LT5uZXh0RWxl
bWVudFNpYmxpbmcoKTsKLQorICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RDaGlsZCA9IGNvbnRl
eHQuaXNGaXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJz
dENoaWxkICYmIHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBj
b250ZXh0LmlzTGFzdENoaWxkKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNv
bHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
IDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTkxNSwzMyArOTAxLDE0IEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9y
IChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdO
YW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5pc0ZpcnN0T2ZUeXBlKCkgJiYgY29udGV4dC5pc0xhc3RPZlR5cGUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9OdGhDaGlsZDoKICAgICAgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNl
TnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCog
cGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAg
ICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBz
aWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJs
aW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2libGluZy0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDogMDsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b3VudCArPSBpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgICAgICAg
ICAgfQotCisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIGNvbnRleHQuY291bnRFbGVt
ZW50c0JlZm9yZSgpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVy
U3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
Y29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVu
dEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05NTksMTIgKzkyNiw3IEBAIGJvb2wgU2VsZWN0
b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiBjb250ZXh0KSBjCiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1l
bnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291
bnQgPSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVt
ZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2li
bGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICsrY291bnQ7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCBjb3Vu
dCA9IDEgKyBjb250ZXh0LmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoKTsKICAgICAgICAgICAg
ICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAg
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4
dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC05ODYsOSArOTQ4LDcgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAx
OwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQt
Pm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVs
ZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgICAg
ICAgICAgaW50IGNvdW50ID0gMSArIGNvbnRleHQuY291bnRFbGVtZW50c0FmdGVyKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTAwNCwxMiArOTY0LDggQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQg
PSAxOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50
LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGlu
ZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2li
bGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNp
YmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50
OwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBj
b250ZXh0LmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcigpOwogICAgICAgICAgICAgICAgIGlmIChz
ZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KQEAgLTE0MDIsNCArMTM1OCw3OSBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6ZGV0ZXJtaW5lU2VsZWN0b3JTY29wZXMoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxl
Y3RvckxpcwogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdENoaWxkKEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuICFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJs
aW5nKCk7Cit9CisKK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZl
cnNhbFN0cmF0ZWd5Ojppc0xhc3RDaGlsZChFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAg
IHJldHVybiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7Cit9CisKK2lubGluZSBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0T2ZU
eXBlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpIGNvbnN0Cit7
CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVt
ZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50
U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5s
aW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k6Omlz
TGFzdE9mVHlwZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKSBj
b25zdAoreworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRF
bGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRT
aWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitpbmxp
bmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojpjb3Vu
dEVsZW1lbnRzQmVmb3JlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgaW50IGNvdW50
ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91
c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHMgPSBzaWJsaW5nLT5yZW5k
ZXJTdHlsZSgpOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHMgPyBzLT5jaGlsZEluZGV4KCkg
OiAwOworICAgICAgICBpZiAoaW5kZXgpIHsKKyAgICAgICAgICAgIGNvdW50ICs9IGluZGV4Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY291bnQrKzsKKyAgICB9CisK
KyAgICByZXR1cm4gY291bnQ7Cit9CisKK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01T
aWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKK3sKKyAgICBpbnQg
Y291bnQgPSAwOworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZp
b3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0
eXBlKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50Owor
fQorCitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0
ZWd5Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBp
bnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQt
Pm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVs
ZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICsrY291bnQ7CisKKyAgICByZXR1cm4gY291bnQ7Cit9
CisKK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRl
Z3k6OmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiB0eXBlKSBjb25zdAoreworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChj
b25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNp
Ymxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgeworICAgICAg
ICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAgICAgICAgICsrY291bnQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKaW5kZXggNzllYmFmNjU5NmEzYTcwNDA5ZjY1NjcyZDk1Y2MyZmZjZWVjZmI1Yy4u
MDM0NWVhNWZiZTgxMWFjMzBjZGNjZmQ4ZTczZWMwOTMxMDRlMGM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaApAQCAtNDUsNiArNDUsMTkgQEAgY2xhc3MgQ1NTU2VsZWN0b3I7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCitjbGFzcyBTaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3kgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc0ZpcnN0Q2hpbGQo
RWxlbWVudCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYXN0Q2hpbGQoRWxlbWVu
dCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaXJzdE9mVHlwZShFbGVtZW50Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMYXN0
T2ZUeXBlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBpbnQgY291bnRFbGVtZW50c0JlZm9yZShFbGVtZW50KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgaW50IGNvdW50RWxlbWVudHNBZnRlcihFbGVtZW50KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgaW50IGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoRWxlbWVudCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgY291bnRFbGVtZW50c09m
VHlwZUFmdGVyKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworfTsK
KwogY2xhc3MgU2VsZWN0b3JDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZWxl
Y3RvckNoZWNrZXIpOwogcHVibGljOgpAQCAtNTYsOCArNjksOSBAQCBwdWJsaWM6CiAKICAgICBz
dHJ1Y3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgewogICAgICAgICAvLyBJbml0aWFsIHNlbGVj
dG9yIGNvbnN0cnVjdG9yCi0gICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KENTU1NlbGVj
dG9yKiBzZWxlY3RvciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVk
TWF0Y2hUeXBlKQotICAgICAgICAgICAgOiBzZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQoU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5KiBzdHJhdGVneSwg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBFbGVtZW50KiBlbGVtZW50LCBWaXNpdGVkTWF0Y2hUeXBl
IHZpc2l0ZWRNYXRjaFR5cGUpCisgICAgICAgICAgICA6IHN0cmF0ZWd5KHN0cmF0ZWd5KQorICAg
ICAgICAgICAgLCBzZWxlY3RvcihzZWxlY3RvcikKICAgICAgICAgICAgICwgZWxlbWVudChlbGVt
ZW50KQogICAgICAgICAgICAgLCBzY29wZSgwKQogICAgICAgICAgICAgLCB2aXNpdGVkTWF0Y2hU
eXBlKHZpc2l0ZWRNYXRjaFR5cGUpCkBAIC02OSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICwgaGFzU2VsZWN0aW9uUHNldWRvKGZhbHNlKQogICAgICAgICB7IH0KIAorICAgICAgICBT
aWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kqIHN0cmF0ZWd5OwogICAgICAgICBDU1NTZWxlY3Rvciog
c2VsZWN0b3I7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQ7CiAgICAgICAgIGNvbnN0IENvbnRh
aW5lck5vZGUqIHNjb3BlOwpAQCAtNzksMTAgKzk0LDMzIEBAIHB1YmxpYzoKICAgICAgICAgUHNl
dWRvSWQgcHNldWRvU3R5bGU7CiAgICAgICAgIGJvb2wgaGFzU2Nyb2xsYmFyUHNldWRvOwogICAg
ICAgICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKKworICAgICAgICBib29sIGlzRmlyc3RDaGls
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0cmF0ZWd5LT5pc0ZpcnN0Q2hpbGQoZWxlbWVudCk7IH0KKyAg
ICAgICAgYm9vbCBpc0xhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIHN0cmF0ZWd5LT5pc0xhc3RD
aGlsZChlbGVtZW50KTsgfQorICAgICAgICBib29sIGlzRmlyc3RPZlR5cGUoKSBjb25zdCB7IHJl
dHVybiBzdHJhdGVneS0+aXNGaXJzdE9mVHlwZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgp
KTsgfQorICAgICAgICBib29sIGlzTGFzdE9mVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmF0ZWd5
LT5pc0xhc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7IH0KKyAgICAgICAg
aW50IGNvdW50RWxlbWVudHNCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdHJhdGVneS0+Y291bnRF
bGVtZW50c0JlZm9yZShlbGVtZW50KTsgfQorICAgICAgICBpbnQgY291bnRFbGVtZW50c0FmdGVy
KCkgY29uc3QgeyByZXR1cm4gc3RyYXRlZ3ktPmNvdW50RWxlbWVudHNBZnRlcihlbGVtZW50KTsg
fQorICAgICAgICBpbnQgY291bnRFbGVtZW50c09mVHlwZUJlZm9yZSgpIGNvbnN0IHsgcmV0dXJu
IHN0cmF0ZWd5LT5jb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOyB9CisgICAgICAgIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoKSBjb25z
dCB7IHJldHVybiBzdHJhdGVneS0+Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKGVsZW1lbnQsIGVs
ZW1lbnQtPnRhZ1FOYW1lKCkpOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBET01TaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3kgOiBTaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kgeworICAgICAgICBib29s
IGlzRmlyc3RDaGlsZChFbGVtZW50KikgY29uc3Q7CisgICAgICAgIGJvb2wgaXNMYXN0Q2hpbGQo
RWxlbWVudCopIGNvbnN0OworICAgICAgICBib29sIGlzRmlyc3RPZlR5cGUoRWxlbWVudCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0xhc3RPZlR5cGUoRWxl
bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKworICAgICAgICBpbnQgY291bnRF
bGVtZW50c0JlZm9yZShFbGVtZW50KikgY29uc3Q7CisgICAgICAgIGludCBjb3VudEVsZW1lbnRz
QWZ0ZXIoRWxlbWVudCopIGNvbnN0OworICAgICAgICBpbnQgY291bnRFbGVtZW50c09mVHlwZUJl
Zm9yZShFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgICAgICBpbnQg
Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7CiAgICAgfTsKIAogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVs
ZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwogICAg
IFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYsIFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKKyAg
ICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmKSBj
b25zdDsKKwogICAgIHN0YXRpYyBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENT
U1NlbGVjdG9yKik7CiAgICAgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciosIGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKIApAQCAtMTIxLDcgKzE1OSw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc1NlbGVjdG9yU2NvcGVzKGNvbnN0IFN0eWxl
ZEVsZW1lbnQqLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgaWRTY29wZXMsIGNv
bnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBjbGFzc1Njb3Blcyk7CiAKIHByaXZhdGU6
Ci0gICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JikgY29uc3Q7CiAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9y
KikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgaXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVudCop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggY2MzZjVmM2RmMmZhM2Mx
MjQ4MmExYjgyOGZjY2NiMzI3OTk4MmQwYy4uNmY5NmNmZWQ5MDQzMWU0OWZjN2VhMWVhMWFkNWVj
OWEzM2VjY2U3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMjQxNyw3
ICsyNDE3LDggQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tTZWxlY3Rvcihjb25z
dCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW4KICAgICB9CiAKICAgICAvLyBTbG93
IHBhdGguCi0gICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCBjb250
ZXh0KHJ1bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgU2VsZWN0b3JDaGVja2VyOjpWaXNp
dGVkTWF0Y2hFbmFibGVkKTsKKyAgICBTZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJz
YWxTdHJhdGVneSBzdHJhdGVneTsKKyAgICBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0IGNvbnRleHQoJnN0cmF0ZWd5LCBydWxlRGF0YS5zZWxlY3RvcigpLCBtX2VsZW1l
bnQsIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZCk7CiAgICAgY29udGV4dC5l
bGVtZW50U3R5bGUgPSBzdHlsZSgpOwogICAgIGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0g
bV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpIDogMDsKICAgICBjb250
ZXh0LnNjb3BlID0gc2NvcGU7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NTUy9Qc2V1
ZG9DbGFzc1NlbGVjdG9ycy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9DU1MvUHNldWRvQ2xhc3NT
ZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGM0MGIwYWU4MTljMDljOGZkNDk2MjYxNDFiZmRi
Y2ZlMDBjNWJiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DU1MvUHNldWRv
Q2xhc3NTZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0LXRhcmdldCI+CisgICAgPGRpdj4KKyAgICAgICAg
PGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICAgIDxwPjwvcD4KKyAgICAgICAg
ICAgIDxwPjwvcD4KKyAgICAgICAgICAgIDxwPjwvcD4KKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdj4KKyAgICAg
ICAgICAgIDxwPjwvcD4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPHA+PC9wPgor
ICAgIDxwPjwvcD4KKyAgICA8cD48L3A+CisgICAgPHA+PC9wPgorPC9kaXY+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RS
dW5uZXIucnVuUGVyU2Vjb25kKHsKKyAgICBkZXNjcmlwdGlvbjogIlRoaXMgYmVuY2htYXJrIHRl
c3RzIENTUyBTZWxlY3RvciBwZXJmb3JtYW5jZSB3aXRoIHF1ZXJ5U2VsZWN0b3IoKS4iLAorICAg
IHJ1bjogZnVuY3Rpb24oKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyBpKysp
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInA6Zmlyc3QtY2hpbGQiKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInA6bGFzdC1jaGlsZCIpOworICAg
ICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigicDpmaXJzdC1vZi10eXBlIik7CisgICAg
ICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJwOmxhc3Qtb2YtdHlwZSIpOworICAgICAg
ICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigicDpudGgtY2hpbGQoNG4rMykiKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInA6bnRoLWxhc3QtY2hpbGQoNG4rMykiKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInA6bnRoLW9mLXR5cGUoNG4rMyki
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInA6bnRoLWxhc3Qtb2YtdHlw
ZSg0biszKSIpOworICAgICAgICB9CisgICAgfQorfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDVlMjdkNzVmODdlNGVjOWJlYWUyZDE4YWI3NjM2MDJl
YmY3Njk3Yy4uNTBiNTUyZTZlZWQ3ZThjZjY5NmY4NDcxZjgxMjJiYWZiZmQ0ZDc0MSAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0wNCAgSGF5YXRvIEl0byAgPGhheWF0
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBJbnRyb2R1Y2UgYSB0cmF2
ZXJzYWwgc3RyYXRlZ3kgaW4gU2VsZWN0b3JDaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgcXVlcnlTZWxlY3RvcigpIHBlcmZv
cm1hbmNlIHRlc3RzIHRvIGNoZWNrIFNlbGVjdG9yQ2hlY2tlciBwZXJmb3JtYW5jZS4KKworICAg
ICAgICAqIENTUy9Qc2V1ZG9DbGFzc1NlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0w
MyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBB
ZGQgYSBwZXJmb3JtYW5jZSB0ZXN0IGZvciBzdWJ0cmVlIGRldGFjaGluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167073</attachid>
            <date>2012-10-04 04:39:12 -0700</date>
            <delta_ts>2012-10-04 19:14:02 -0700</delta_ts>
            <desc>Fix a performance test.</desc>
            <filename>bug-97298-20121004203822.patch</filename>
            <type>text/plain</type>
            <size>22255</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg3ZTA1NTc5ODVlYzk5
ZjRmMGI0NDM1MzRjMzZjNTM5ZTQ5NDA5Ny4uNTVkNzFiODYwZWFkMjUyMTUzMjk3N2Q4ZDVmOGVi
NmYzMDA1OWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTEwLTA0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIElu
dHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJh
dmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3Ro
ZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVn
eSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMg
Y29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVz
cyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2Ug
Y29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tl
clBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAg
dGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhp
cyBwYXRjaCB3YXM6CisgICAgICAgICAgYXZnIDM2NjkuMTQzMzk2Nzc2OTkyIHJ1bnMvcworICAg
ICAgICAgIG1lZGlhbiAzNjY3LjkzOTQxMTI2OTYzMTQgcnVucy9zCisgICAgICAgICAgc3RkZXYg
MjEuMTIzNDUyOTY2MDEzNjkgcnVucy9zCisgICAgICAgICAgbWluIDM1OTQuNTQ1Mjc3NjQzMDEz
NCBydW5zL3MKKyAgICAgICAgICBtYXggMzcwNy40MDgyNTEwNTY3MDMgcnVucy9zCisKKyAgICAg
ICAgV2hlbiB3ZSB1c2VkIHRoaXMgcGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSB3YXM6CisgICAgICAg
ICAgYXZnIDM4NTEuMzc2NTU1NTkwOTQ2IHJ1bnMvcworICAgICAgICAgIG1lZGlhbiAzODU4LjM0
MzM0NTI2MDQzNSBydW5zL3MKKyAgICAgICAgICBzdGRldiAyNS4yNDU2ODM5NjcyNDk0OTQgcnVu
cy9zCisgICAgICAgICAgbWluIDM3ODIuNTEwODc4MjQxNzU0IHJ1bnMvcworICAgICAgICAgIG1h
eCAzODc4LjQzMDU5Mzg0MjUwOTYgcnVucy9zCisKKyAgICAgICAgSSd2ZSB0cmllZCB0aGVzZSB0
ZXN0cyBzZXZlcmFsIHRpbWVzLCBhbmQgSSB1c2VkIHRoZSBiZXN0IHJlY29yZCBoZXJlLgorCisg
ICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTL1BzZXVkb0NsYXNzLVNlbGVjdG9ycy5o
dG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTog
TWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRleHQgdHlw
ZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIGNv
bWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAg
KFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6IEV4dHJh
Y3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBBbm90aGVy
IHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29taW5nIHBh
dGNoLgorCiAyMDEyLTEwLTAzICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcGxlbWVudCBsb2NhbGl6ZVZhbHVlIGZvciBUaW1lSW5wdXRUeXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDQwM2IyMThhZjlmY2JjNmY2YjRi
YzRmZDJjMDM2N2VhY2JiNWE2OTEuLmJmNTgwM2QyMDc4ZWY3MTk3NDA2YWVlMDZlYzgzNzgwYjIy
MDZlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC00MzksNyAr
NDM5LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIC8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAg
IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFp
bHNBbGxTaWJsaW5ncyAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcg
b2YgZQogLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAgLSB0aGUgc2VsZWN0b3IgZmFpbHMg
Zm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9mIGUKLVNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29s
JiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a2luZ0NvbnRleHQ+CitTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVj
a2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRv
SWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QK
IHsKICAgICAvLyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKICAgICBpZiAoIWNoZWNrT25l
U2VsZWN0b3IoY29udGV4dCkpCkBAIC00NzIsNyArNDczLDcgQEAgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWMKICAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9y
TWF0Y2hlczsKIAotICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRl
eHQpOworICAgIENoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0
Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKIAogICAgIFBzZXVkb0lkIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKQEAgLTcyNiw3ICs3MjcsOCBAQCBzdGF0aWMgYm9v
bCBhbnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRj
aCBtYXRjaCwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVt
ZW50OwogICAgIENTU1NlbGVjdG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3Rv
cjsKQEAgLTc2Myw3ICs3NjUsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAg
ICAgaWYgKCFzZWxlY3Rvckxpc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOwor
ICAgICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAg
ICAgICBzdWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChz
dWJDb250ZXh0LnNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0LnNl
bGVjdG9yOyBzdWJDb250ZXh0LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFnSGlz
dG9yeSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCBy
ZWFsbHkga25vdyB3aHkgdGhpcyBpcyBhCkBAIC04MTcsOSArODE5LDcgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQpIGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoK
ICAgICAgICAgICAgIC8vIGZpcnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQg
aXMgYW4gZWxlbWVudAogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
aWYgKCFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2
ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxl
bWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgp
OwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0
LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFy
ZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwpAQCAtODM0LDE0ICs4MzQsNyBAQCBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYgY29udGV4dCkgYwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlw
ZToKICAgICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVu
dCBvZiBpdHMgdHlwZQogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1l
bnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05h
bWUodHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxT
dHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQs
IGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVz
b2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6
IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtODUzLDcgKzg0Niw3IEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0KSBjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAgICAg
ICAgICAgIC8vIGxhc3QtY2hpbGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVs
ZW1lbnQKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRF
bGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVt
ZW50U2libGluZygpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENo
ZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CkBAIC04NzUsMTkgKzg2OCwxMyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQ
YXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFt
ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1l
bnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4
dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhh
c1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIHJldHVybiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xh
c3RPZlR5cGUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvT25seUNoaWxkOgogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hp
bGQgPSAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAg
IGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVk
UGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotCisg
ICAgICAgICAgICAgICAgYm9vbCBmaXJzdENoaWxkID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hl
Y2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOworICAgICAgICAg
ICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0Zp
bmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdD
b250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVt
ZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTkx
NSwzMyArOTAyLDE0IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNv
bnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdD
aGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlv
dXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5o
YXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNp
YmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9
IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdD
b250ZXh0Pjo6aXNGaXJzdE9mVHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFt
ZSgpKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5
cGUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRo
Q2hpbGQ6CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAx
OwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQt
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpbmRleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAg
ICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBA
IC05NTksMTIgKzkyNyw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAg
ICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFt
ZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVn
eTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQsIGVs
ZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwYXJlbnRTdHlsZSkKQEAgLTk4Niw5ICs5NDksNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4
dCkgYwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJs
aW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
LSAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQg
PSAxICsgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50
c0FmdGVyKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+
bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KQEAgLTEwMDQsMTIgKzk2NSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNG
aW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNp
YmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKGNvbnRleHQsIGVsZW1lbnQsIGVs
ZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hO
dGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KQEAgLTEwMjAsNyArOTc3LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4
dChjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4dChj
b250ZXh0KTsKICAgICAgICAgICAgICAgICBzdWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVl
OwogICAgICAgICAgICAgICAgIGJvb2wgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURP
OwpAQCAtMTQwMiw0ICsxMzU5LDkwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVT
ZWxlY3RvclNjb3Blcyhjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dD46OmlzRmlyc3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQtPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJu
ICFlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5l
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9mVHlwZShjb25zdCBTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxp
bmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcg
PSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxp
bmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUpCit7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4
dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVu
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVn
eTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50
c0JlZm9yZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Jiwg
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAg
ICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7CisgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7CisgICAgICAgIGlmIChpbmRl
eCkgeworICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30K
KwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0
cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVs
ZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQor
eworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0g
ZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2li
bGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5o
YXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1
cm4gY291bnQ7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpE
T01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0Pjo6Y291bnRFbGVtZW50c0FmdGVyKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGludCBjb3VudCA9IDA7
CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRT
aWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmco
KSkKKyAgICAgICAgKytjb3VudDsKKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8
PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBl
QWZ0ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgaW50IGNv
dW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0
RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50
U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAg
ICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3RlbXBs
YXRlCitTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVj
a1NlbGVjdG9yPFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+KGNvbnN0
IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJikgY29uc3Q7CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA3OWViYWY2NTk2YTNhNzA0MDlm
NjU2NzJkOTVjYzJmZmNlZWNmYjVjLi4xZjM0OTBjNjQ3NjRiMGQyMDIxYzczZGVjOGYxOTFmYmIx
NjIzYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC04MSw4ICs4MSwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOwogICAgIH07CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgorICAgIHN0cnVjdCBET01UcmF2ZXJzYWxT
dHJhdGVneSB7CisgICAgICAgIHN0YXRpYyBib29sIGlzRmlyc3RDaGlsZChjb25zdCBDb250ZXh0
JiwgRWxlbWVudCopOworICAgICAgICBzdGF0aWMgYm9vbCBpc0xhc3RDaGlsZChjb25zdCBDb250
ZXh0JiwgRWxlbWVudCopOworICAgICAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0T2ZUeXBlKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0
aWMgYm9vbCBpc0xhc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJik7CisKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQmVmb3JlKGNv
bnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBpbnQgY291bnRFbGVtZW50
c0FmdGVyKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBpbnQgY291
bnRFbGVtZW50c09mVHlwZUJlZm9yZShjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
fTsKKwogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29s
IGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwotICAgIFNlbGVjdG9yTWF0
Y2ggY2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lk
JiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+CisgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9y
KGNvbnN0IENoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVk
b0VsZW1lbnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+
CisgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYpIGNvbnN0
OworCiAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwg
Y29uc3QgRWxlbWVudCopIGNvbnN0OwogCkBAIC0xMjEsNyArMTM4LDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzU2VsZWN0b3JTY29wZXMoY29uc3QgU3R5bGVkRWxl
bWVudCosIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZFNjb3BlcywgY29uc3Qg
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsKIAogcHJpdmF0ZToKLSAg
ICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmKSBj
b25zdDsKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqKSBj
b25zdDsKICAgICBzdGF0aWMgYm9vbCBpc0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL1BzZXVkb0NsYXNzU2VsZWN0b3JzLmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0NTUy9Qc2V1ZG9DbGFzc1NlbGVjdG9ycy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVkYzQwYjBhZTgxOWMwOWM4ZmQ0OTYyNjE0MWJmZGJjZmUwMGM1YmIKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NTUy9Qc2V1ZG9DbGFzc1NlbGVjdG9ycy5odG1s
CkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYg
aWQ9InRlc3QtdGFyZ2V0Ij4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAg
ICA8ZGl2PgorICAgICAgICAgICAgPHA+PC9wPgorICAgICAgICAgICAgPHA+PC9wPgorICAgICAg
ICAgICAgPHA+PC9wPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHA+PC9wPgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8cD48L3A+CisgICAgPHA+PC9wPgorICAgIDxw
PjwvcD4KKyAgICA8cD48L3A+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVu
bmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQo
eworICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBiZW5jaG1hcmsgdGVzdHMgQ1NTIFNlbGVjdG9yIHBl
cmZvcm1hbmNlIHdpdGggcXVlcnlTZWxlY3RvcigpLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigicDpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigicDpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJwOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoInA6bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJwOm50aC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigicDpudGgtbGFzdC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigicDpudGgtb2YtdHlwZSg0biszKSIpOworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigicDpudGgtbGFzdC1vZi10eXBlKDRuKzMpIik7CisgICAgICAg
IH0KKyAgICB9Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCBkNWUyN2Q3NWY4N2U0ZWM5YmVhZTJkMThhYjc2MzYwMmViZjc2OTdjLi41MGI1NTJlNmVl
ZDdlOGNmNjk2Zjg0NzFmODEyMmJhZmJmZDRkNzQxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTEwLTA0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBT
ZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlcyBxdWVyeVNlbGVjdG9yKCkgcGVyZm9ybWFuY2UgdGVzdHMgdG8gY2hl
Y2sgU2VsZWN0b3JDaGVja2VyIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogQ1NTL1BzZXVkb0Ns
YXNzU2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTAzICBKdWxpZW4gQ2hhZmZyYWl4
ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhIHBlcmZvcm1hbmNlIHRl
c3QgZm9yIHN1YnRyZWUgZGV0YWNoaW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167226</attachid>
            <date>2012-10-04 19:14:08 -0700</date>
            <delta_ts>2012-10-04 21:47:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97298-20121005111316.patch</filename>
            <type>text/plain</type>
            <size>22141</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg3ZTA1NTc5ODVlYzk5
ZjRmMGI0NDM1MzRjMzZjNTM5ZTQ5NDA5Ny4uNzUyOTJjMTI3YThmMTg2YWEyNWVkNzU2YWE4MGU5
NzRhN2IzZjgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTA0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIElu
dHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBTZWxlY3RvckNoZWNrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mjk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgV2UgZXh0cmFjdCBET00gdHJh
dmVyc2FsIGNvZGUgZnJvbSBTZWxlY3RvckNoZWNrZXIgc28gdGhhdCB3ZSBjYW4gdXNlIGFub3Ro
ZXIgdHJhdmVyc2FsIHN0cmF0ZWd5LgorICAgICAgICBBbm90aGVyIHRyYXZlcnNhbCBzdHJhdGVn
eSB3aWxsIGJlIGludHJvZHVjZWQgaW4gQnVnIDk2OTkwLgorCisgICAgICAgIFNpbmNlIHRoaXMg
Y29kZSBwYXRoIGlzIHZlcnkgaG90LCB3ZSB3ZXJlIHZlcnkgY2FyZWZ1bCBub3QgdG8gcmVncmVz
cyBwZXJmb3JtYW5jZS4KKyAgICAgICAgV2Ugd2lsbCB1c2UgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdG8gY2hhbmdlIHRoZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgV2Ug
Y29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCByZWdyZXNzIFNlbGVjdG9yQ2hlY2tl
clBlcmZvcm1hbmNlLiBJIGhhdmUgY2hlY2tlZCB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAgICAgICAg
dGhlIGFkZGVkIHRlc3QgaW4gbXkgTGludXggQm94IHVzaW5nIHJ1bi1wZXJmLXRlc3RzLgorCisg
ICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWRkZWQgdGVzdCBiZWZvcmUgdXNpbmcgdGhp
cyBwYXRjaCB3YXM6CisKKyAgICAgICAgICBSRVNVTFQgQ1NTOiBQc2V1ZG9DbGFzc1NlbGVjdG9y
cz0gMzM5OS42ODMwODAzMSBydW5zL3MKKyAgICAgICAgICBtZWRpYW49IDM0MDQuNDg2ODU1NjQg
cnVucy9zLCBzdGRldj0gMzcuMzQ4MDExNDQ0OSBydW5zL3MsIG1pbj0gMzI3Mi42NDg3MTExNCBy
dW5zL3MsIG1heD0gMzQzOC43MjM4NTE4NCBydW5zL3MKKworICAgICAgICBXaGVuIHdlIHVzZWQg
dGhpcyBwYXRjaCwgdGhlIHBlcmZvcm1hbmNlIHdhczoKKworICAgICAgICAgIFJFU1VMVCBDU1M6
IFBzZXVkb0NsYXNzU2VsZWN0b3JzPSAzMzY3Ljc0NDczODg2IHJ1bnMvcworICAgICAgICAgIG1l
ZGlhbj0gMzM2Ny4xMjA3Mjc1NSBydW5zL3MsIHN0ZGV2PSAxNC4xNDY0NTQ3NjM5IHJ1bnMvcywg
bWluPSAzMzQ4LjU1ODgxMTcxIHJ1bnMvcywgbWF4PSAzMzk1Ljk4MjEyODU3IHJ1bnMvcworCisg
ICAgICAgIFRlc3Q6IFBlcmZvcm1hbmNlVGVzdHMvQ1NTL1BzZXVkb0NsYXNzLVNlbGVjdG9ycy5o
dG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTog
TWFrZSB0aGlzIGEgdGVtcGxhdGUgbWV0aG9kIHRvIGFjY2VwdCBhbm90aGVyIENvbnRleHQgdHlw
ZS4KKyAgICAgICAgQW5vdGhlciBDb250ZXh0IHR5cGUgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIGNv
bWluZyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
Ojppc0xhc3RPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZU
eXBlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0KToKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAg
KFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChET01UcmF2ZXJzYWxTdHJhdGVneSk6IEV4dHJh
Y3RlZCB0aGUgRE9NIHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyLiBBbm90aGVy
IHRyYXZlcnNhbCBjb2RlCisgICAgICAgIHdpbGwgYmUgaW50cm9kdWNlZCB0aGUgY29taW5nIHBh
dGNoLgorCiAyMDEyLTEwLTAzICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcGxlbWVudCBsb2NhbGl6ZVZhbHVlIGZvciBUaW1lSW5wdXRUeXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDQwM2IyMThhZjlmY2JjNmY2YjRi
YzRmZDJjMDM2N2VhY2JiNWE2OTEuLmJmNTgwM2QyMDc4ZWY3MTk3NDA2YWVlMDZlYzgzNzgwYjIy
MDZlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC00MzksNyAr
NDM5LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIC8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAg
IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFp
bHNBbGxTaWJsaW5ncyAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcg
b2YgZQogLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAgLSB0aGUgc2VsZWN0b3IgZmFpbHMg
Zm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9mIGUKLVNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29s
JiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a2luZ0NvbnRleHQ+CitTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVj
a2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRv
SWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QK
IHsKICAgICAvLyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKICAgICBpZiAoIWNoZWNrT25l
U2VsZWN0b3IoY29udGV4dCkpCkBAIC00NzIsNyArNDczLDcgQEAgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWMKICAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9y
TWF0Y2hlczsKIAotICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRl
eHQpOworICAgIENoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0
Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKIAogICAgIFBzZXVkb0lkIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKQEAgLTcyNiw3ICs3MjcsOCBAQCBzdGF0aWMgYm9v
bCBhbnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRj
aCBtYXRjaCwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Citib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogY29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVt
ZW50OwogICAgIENTU1NlbGVjdG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3Rv
cjsKQEAgLTc2Myw3ICs3NjUsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAg
ICAgaWYgKCFzZWxlY3Rvckxpc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOwor
ICAgICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAg
ICAgICBzdWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChz
dWJDb250ZXh0LnNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJDb250ZXh0LnNl
bGVjdG9yOyBzdWJDb250ZXh0LnNlbGVjdG9yID0gc3ViQ29udGV4dC5zZWxlY3Rvci0+dGFnSGlz
dG9yeSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24ndCBy
ZWFsbHkga25vdyB3aHkgdGhpcyBpcyBhCkBAIC04MTcsOSArODE5LDcgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQpIGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoK
ICAgICAgICAgICAgIC8vIGZpcnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQg
aXMgYW4gZWxlbWVudAogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
aWYgKCFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2
ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxl
bWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgp
OwogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0
LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFy
ZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwpAQCAtODM0LDE0ICs4MzQsNyBAQCBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYgY29udGV4dCkgYwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlw
ZToKICAgICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVu
dCBvZiBpdHMgdHlwZQogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1l
bnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05h
bWUodHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxT
dHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQs
IGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVz
b2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6
IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtODUzLDcgKzg0Niw3IEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0KSBjCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RDaGlsZDoKICAgICAg
ICAgICAgIC8vIGxhc3QtY2hpbGQgbWF0Y2hlcyB0aGUgbGFzdCBjaGlsZCB0aGF0IGlzIGFuIGVs
ZW1lbnQKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBwYXJlbnRF
bGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVt
ZW50U2libGluZygpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENo
ZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CkBAIC04NzUsMTkgKzg2OCwxMyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgYwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQ
YXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFt
ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1l
bnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4
dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmctPmhh
c1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIHJldHVybiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xh
c3RPZlR5cGUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvT25seUNoaWxkOgogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hp
bGQgPSAhZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwotICAgICAgICAgICAgICAg
IGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVk
UGFyc2luZ0NoaWxkcmVuKCkgJiYgIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwotCisg
ICAgICAgICAgICAgICAgYm9vbCBmaXJzdENoaWxkID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hl
Y2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOworICAgICAgICAg
ICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0Zp
bmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdD
b250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVt
ZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTkx
NSwzMyArOTAyLDE0IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNv
bnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdD
aGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQtPnRhZ1FOYW1lKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlv
dXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5o
YXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNp
YmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9
IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdD
b250ZXh0Pjo6aXNGaXJzdE9mVHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFt
ZSgpKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5
cGUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRo
Q2hpbGQ6CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAx
OwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQt
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpbmRleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAg
ICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250
ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBA
IC05NTksMTIgKzkyNyw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxOwotICAgICAgICAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAg
ICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFt
ZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJhdGVn
eTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQsIGVs
ZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwYXJlbnRTdHlsZSkKQEAgLTk4Niw5ICs5NDksNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4
dCkgYwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJs
aW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
LSAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQg
PSAxICsgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50
c0FmdGVyKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+
bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KQEAgLTEwMDQsMTIgKzk2NSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNG
aW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNp
YmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKGNvbnRleHQsIGVsZW1lbnQsIGVs
ZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hO
dGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KQEAgLTEwMjAsNyArOTc3LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGMKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Bbnk6CiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4
dChjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4dChj
b250ZXh0KTsKICAgICAgICAgICAgICAgICBzdWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVl
OwogICAgICAgICAgICAgICAgIGJvb2wgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURP
OwpAQCAtMTQwMiw0ICsxMzU5LDkwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVT
ZWxlY3RvclNjb3Blcyhjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dD46OmlzRmlyc3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gIWVsZW1lbnQtPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJu
ICFlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5l
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9mVHlwZShjb25zdCBTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxp
bmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcg
PSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxp
bmctPmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUpCit7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4
dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVu
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVn
eTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50
c0JlZm9yZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Jiwg
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3Qg
RWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAg
ICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7CisgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7CisgICAgICAgIGlmIChpbmRl
eCkgeworICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30K
KwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0
cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVs
ZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQor
eworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0g
ZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2li
bGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5o
YXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1
cm4gY291bnQ7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpE
T01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250
ZXh0Pjo6Y291bnRFbGVtZW50c0FmdGVyKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGludCBjb3VudCA9IDA7
CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRT
aWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmco
KSkKKyAgICAgICAgKytjb3VudDsKKworICAgIHJldHVybiBjb3VudDsKK30KKwordGVtcGxhdGU8
PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBl
QWZ0ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgaW50IGNv
dW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0
RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50
U2libGluZygpKSB7CisgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAg
ICAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3RlbXBs
YXRlCitTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVj
a1NlbGVjdG9yPFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+KGNvbnN0
IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJikgY29uc3Q7CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA3OWViYWY2NTk2YTNhNzA0MDlm
NjU2NzJkOTVjYzJmZmNlZWNmYjVjLi4xZjM0OTBjNjQ3NjRiMGQyMDIxYzczZGVjOGYxOTFmYmIx
NjIzYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC04MSw4ICs4MSwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOwogICAgIH07CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgorICAgIHN0cnVjdCBET01UcmF2ZXJzYWxT
dHJhdGVneSB7CisgICAgICAgIHN0YXRpYyBib29sIGlzRmlyc3RDaGlsZChjb25zdCBDb250ZXh0
JiwgRWxlbWVudCopOworICAgICAgICBzdGF0aWMgYm9vbCBpc0xhc3RDaGlsZChjb25zdCBDb250
ZXh0JiwgRWxlbWVudCopOworICAgICAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0T2ZUeXBlKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0
aWMgYm9vbCBpc0xhc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJik7CisKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQmVmb3JlKGNv
bnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBpbnQgY291bnRFbGVtZW50
c0FmdGVyKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBpbnQgY291
bnRFbGVtZW50c09mVHlwZUJlZm9yZShjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0
ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
fTsKKwogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29s
IGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFsc2UpIGNvbnN0OwotICAgIFNlbGVjdG9yTWF0
Y2ggY2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lk
JiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+CisgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9y
KGNvbnN0IENoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVk
b0VsZW1lbnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+
CisgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYpIGNvbnN0
OworCiAgICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwg
Y29uc3QgRWxlbWVudCopIGNvbnN0OwogCkBAIC0xMjEsNyArMTM4LDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzU2VsZWN0b3JTY29wZXMoY29uc3QgU3R5bGVkRWxl
bWVudCosIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZFNjb3BlcywgY29uc3Qg
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsKIAogcHJpdmF0ZToKLSAg
ICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmKSBj
b25zdDsKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqKSBj
b25zdDsKICAgICBzdGF0aWMgYm9vbCBpc0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL1BzZXVkb0NsYXNzU2VsZWN0b3JzLmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0NTUy9Qc2V1ZG9DbGFzc1NlbGVjdG9ycy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVkYzQwYjBhZTgxOWMwOWM4ZmQ0OTYyNjE0MWJmZGJjZmUwMGM1YmIKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NTUy9Qc2V1ZG9DbGFzc1NlbGVjdG9ycy5odG1s
CkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYg
aWQ9InRlc3QtdGFyZ2V0Ij4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAg
ICA8ZGl2PgorICAgICAgICAgICAgPHA+PC9wPgorICAgICAgICAgICAgPHA+PC9wPgorICAgICAg
ICAgICAgPHA+PC9wPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHA+PC9wPgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8cD48L3A+CisgICAgPHA+PC9wPgorICAgIDxw
PjwvcD4KKyAgICA8cD48L3A+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVu
bmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQo
eworICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBiZW5jaG1hcmsgdGVzdHMgQ1NTIFNlbGVjdG9yIHBl
cmZvcm1hbmNlIHdpdGggcXVlcnlTZWxlY3RvcigpLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigicDpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigicDpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJwOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoInA6bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJwOm50aC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigicDpudGgtbGFzdC1jaGlsZCg0biszKSIpOworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigicDpudGgtb2YtdHlwZSg0biszKSIpOworICAgICAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigicDpudGgtbGFzdC1vZi10eXBlKDRuKzMpIik7CisgICAgICAg
IH0KKyAgICB9Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCBkNWUyN2Q3NWY4N2U0ZWM5YmVhZTJkMThhYjc2MzYwMmViZjc2OTdjLi4wZjkyOTllODQ4
OGIzNzkyMWU2YzFkZDYzNTU5NWQ1OGYxMmEzZjIxIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTEwLTA0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbUmVmYWN0b3JpbmddIEludHJvZHVjZSBhIHRyYXZlcnNhbCBzdHJhdGVneSBpbiBT
ZWxlY3RvckNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3Mjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAg
ICAgICAgSW50cm9kdWNlcyBxdWVyeVNlbGVjdG9yKCkgcGVyZm9ybWFuY2UgdGVzdHMgdG8gY2hl
Y2sgU2VsZWN0b3JDaGVja2VyIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogQ1NTL1BzZXVkb0Ns
YXNzU2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTAzICBKdWxpZW4gQ2hhZmZyYWl4
ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhIHBlcmZvcm1hbmNlIHRl
c3QgZm9yIHN1YnRyZWUgZGV0YWNoaW5nCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>