<?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>105480</bug_id>
          
          <creation_ts>2012-12-19 16:51:14 -0800</creation_ts>
          <short_desc>Implement element type selectors for the WebVTT ::cue pseudo class</short_desc>
          <delta_ts>2013-01-14 17:18:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
    
    <blocked>105481</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dima Gorbik">dgorbik</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>silviapf</cc>
    
    <cc>vcarbune</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>795041</commentid>
    <comment_count>0</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-19 16:51:14 -0800</bug_when>
    <thetext>Element type selector matching should be implemented for such WebVTT node classes like ruby, rt, b, v and others. Full list: http://dev.w3.org/html5/webvtt/#the-&apos;::cue&apos;-pseudo-element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795044</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-12-19 16:52:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/12914597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795947</commentid>
    <comment_count>2</comment_count>
      <attachid>180441</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-20 16:41:01 -0800</bug_when>
    <thetext>Created attachment 180441
Proposed fix 0.1

I suggest moving tag comparison to the overloaded &quot;==&quot; operator of a QualifiedName. That would simplify SelectorChecker::tagMatches quite a bit.
All general tag names like i, b, ruby and rt are being already handled. This patch adds the support for rare cases with &quot;c&quot; and &quot;v&quot; tags.
I will add layout tests after the previous patch is being reviewed (https://bugs.webkit.org/show_bug.cgi?id=105473) because they will be based on the existing layout tests from that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800823</commentid>
    <comment_count>3</comment_count>
      <attachid>181422</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-04 19:26:33 -0800</bug_when>
    <thetext>Created attachment 181422
Proposed fix 0.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800857</commentid>
    <comment_count>4</comment_count>
      <attachid>181422</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-04 22:16:36 -0800</bug_when>
    <thetext>Comment on attachment 181422
Proposed fix 0.2

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

New failing tests:
media/track/track-css-matching.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800890</commentid>
    <comment_count>5</comment_count>
      <attachid>181422</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-05 01:48:26 -0800</bug_when>
    <thetext>Comment on attachment 181422
Proposed fix 0.2

This is hacky. Also tagMatches() is hot and we don&apos;t want to add branches there. I think you should make the WebVTT shadow nodes really have these tag names (c, v), and add the UA CSS rules to style them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801736</commentid>
    <comment_count>6</comment_count>
      <attachid>181578</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-07 15:39:21 -0800</bug_when>
    <thetext>Created attachment 181578
Proposed fix 0.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801870</commentid>
    <comment_count>7</comment_count>
      <attachid>181578</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 17:20:23 -0800</bug_when>
    <thetext>Comment on attachment 181578
Proposed fix 0.3

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

New failing tests:
media/track/track-css-matching.html
media/track/track-webvtt-tc025-class-markup.html
media/track/track-webvtt-tc026-voice.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801914</commentid>
    <comment_count>8</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-07 18:29:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 181422 [details])
&gt; This is hacky. Also tagMatches() is hot and we don&apos;t want to add branches there. I think you should make the WebVTT shadow nodes really have these tag names (c, v), and add the UA CSS rules to style them.

WebVTT standard requires those nodes to be qTags and spans when they are being converted into DOM nodes. (that&apos;s why tests are failing). Do you suggest replacing those with &quot;c&quot; and &quot;v&quot; tagNames  in markPastFutureNodes (which already does some sorts of conversion for building rendering element?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801917</commentid>
    <comment_count>9</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-07 18:32:11 -0800</bug_when>
    <thetext>Also do you want me to make a v tag copy qTag behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802164</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-08 02:34:23 -0800</bug_when>
    <thetext>If I&apos;m reading the spec right, the cue rendering section does not reference &quot;WebVTT cue text DOM construction rules&quot; section at all. Those are only ever used when getCueAsHTML() API is invoked and that is the only time where &lt;span&gt; etc. are required being generated.

In other words it sounds to me like updateDisplayTree() and getCueAsHTML() paths should be separated with only the latter doing the &quot;DOM construction rules&quot; mappings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802219</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-08 05:15:02 -0800</bug_when>
    <thetext>It seems to me that what we want is:

- Make WebVTTParser generate a tree of Elements corresponding to &quot;WebVTT Node Objects&quot; with tag names and attributes set for selector matching (http://dev.w3.org/html5/webvtt/#the-&apos;::cue&apos;-pseudo-element).
- getCueAsHTML() should not be used internally. It should be invoked on API access only and traverse the internal tree, constructing a new tree with mappings described in http://dev.w3.org/html5/webvtt/#webvtt-cue-text-dom-construction-rules
- I see no obvious need to make a copy of the node tree for rendering. It looks like we could just use it as-is, simplifying things (eliminate m_allDocumentNodes).
- Instead of marking the tree with bits, :future and :past should be implemented in SelectorChecker by grabbing the media elements time stamp and walking to the nearest timestamp node.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802564</commentid>
    <comment_count>12</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-08 13:20:05 -0800</bug_when>
    <thetext>&gt; It seems to me that what we want is:
&gt; 
&gt; - Make WebVTTParser generate a tree of Elements corresponding to &quot;WebVTT Node Objects&quot; with tag names and attributes set for selector matching (http://dev.w3.org/html5/webvtt/#the-&apos;::cue&apos;-pseudo-element).
&gt; - getCueAsHTML() should not be used internally. It should be invoked on API access only and traverse the internal tree, constructing a new tree with mappings described in http://dev.w3.org/html5/webvtt/#webvtt-cue-text-dom-construction-rules
&gt; - I see no obvious need to make a copy of the node tree for rendering. It looks like we could just use it as-is, simplifying things (eliminate m_allDocumentNodes).
&gt; - Instead of marking the tree with bits, :future and :past should be implemented in SelectorChecker by grabbing the media elements time stamp and walking to the nearest timestamp node.
&gt; 
&gt; What do you think?

These are good ideas. But it may be hard to build a DOM tree from the rendering tree in future, specifications require some nodes (for example ruby) be wrapped in anonymous boxes, and I suspect future implementations of the webvtt style word wrapping will introduce even more changes. It may be much easier making a rendering tree from the DOM tree but going backwards may be an overcomplication.
For now I suggest separating getCueAsHTML from the one that is used internally. API access function will map those new &quot;v&quot; and &quot;c&quot; tags to spans and qtags. We will still have 3 trees in this case since we will be still copying the rendering tree. Probably that&apos;s not that bad because it will be easy to make rendering and DOM trees from the tree that&apos;s produced by the parser. 
As for marking the tree with bits, I think we will still have to mark nodes as webvtt nodes. And presetting those bits may speed up things a little bit. (the only case when it&apos;s slower — when we don&apos;t have any cue styling rules at all).
Does this sound reasonable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802603</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-08 14:02:54 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; As for marking the tree with bits, I think we will still have to mark nodes as webvtt nodes. And presetting those bits may speed up things a little bit. (the only case when it&apos;s slower — when we don&apos;t have any cue styling rules at all).

I doubt there is significant performance difference. Walking the internal tree to mark time is not that fast either and is not very nice architecturally. I&apos;m not sure if there is really need to mark WebVTT nodes at all, everything SelectorChecker sees after matching cue() is going to be WebVTT node (it could just be part of SelectorCheckingContext).

&gt; Does this sound reasonable?

Yeah.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802983</commentid>
    <comment_count>14</comment_count>
      <attachid>181838</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-08 21:11:34 -0800</bug_when>
    <thetext>Created attachment 181838
Proposed fix 0.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802999</commentid>
    <comment_count>15</comment_count>
      <attachid>181839</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-08 21:25:14 -0800</bug_when>
    <thetext>Created attachment 181839
Proposed fix 0.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803271</commentid>
    <comment_count>16</comment_count>
      <attachid>181839</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 06:05:14 -0800</bug_when>
    <thetext>Comment on attachment 181839
Proposed fix 0.5

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

New failing tests:
media/track/track-css-matching.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803322</commentid>
    <comment_count>17</comment_count>
      <attachid>181839</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 07:22:25 -0800</bug_when>
    <thetext>Comment on attachment 181839
Proposed fix 0.5

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

New failing tests:
media/track/track-css-matching.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803645</commentid>
    <comment_count>18</comment_count>
      <attachid>181974</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-09 13:25:53 -0800</bug_when>
    <thetext>Created attachment 181974
Proposd fix 0.6

Now seeking to specific values in the layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803698</commentid>
    <comment_count>19</comment_count>
      <attachid>181974</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-09 14:20:02 -0800</bug_when>
    <thetext>Comment on attachment 181974
Proposd fix 0.6

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

&gt; LayoutTests/media/track/captions-webvtt/styling.vtt:19
&gt;  \ No newline at end of file

You could fix that.

&gt; Source/WebCore/html/HTMLQuoteElement.cpp:37
&gt;  inline HTMLQuoteElement::HTMLQuoteElement(const QualifiedName&amp; tagName, Document* document)
&gt;      : HTMLElement(tagName, document)
&gt;  {
&gt; -    ASSERT(hasTagName(qTag) || hasTagName(blockquoteTag));
&gt; +    ASSERT(hasTagName(qTag) || hasTagName(blockquoteTag) || hasTagName(vTag));

This seems unnecessary. You never construct HTMLQuoteElement with vTag. Is this just because you want to use cloneNode() for making the rendering tree?

&gt; Source/WebCore/html/HTMLTagNames.in:26
&gt; +c interfaceName=HTMLElement

This is bit misleading as these are not really HTML names (we don&apos;t expose HTML elements with these names) and so should not be in HTMLTagNames. I think you should just construct and expose QualifiedNames for them manually in TextTrackCue.h/cpp (see anyName in QualifiedName.h for example).

&gt; Source/WebCore/html/HTMLTagNames.in:139
&gt; +v interfaceName=HTMLQuoteElement

Same thing.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:486
&gt;          m_documentFragment = WebVTTParser::create(0, m_scriptExecutionContext)-&gt;createDocumentFragmentFromCueText(m_content);

m_documentFragment should be called something more sensible like m_webVTTNodeTree.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:490
&gt; -
&gt;          if (!m_documentFragment)
&gt; -          return 0;
&gt; +            return;
&gt; +    }
&gt; +}

This return branch looks unnecessary.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:492
&gt; +void TextTrackCue::copyWebVTTNodeToDOMTree(PassRefPtr&lt;Node&gt; WebVTTNode, PassRefPtr&lt;Node&gt; root)

&apos;root&apos; is not root here. The variable should be called &apos;parent&apos;. It could also be tightened to be ContainerNode.

PassRefPtr&apos;s are only needed when transferring ownership. Please use plain pointers.

In WebKit coding style, variable names start with lowercase letter (webVTTNode).

This could be a standalone function if you passed in the Document*.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:496
&gt; +    for (Node* n = WebVTTNode-&gt;firstChild(); n &amp;&amp; !ec; n = n-&gt;nextSibling()) {

Please use complete words are variable names, n -&gt; node.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:499
&gt; +        if (n-&gt;isElementNode() &amp;&amp; toElement(n)-&gt;localName() == HTMLNames::cTag.localName())

Test with node-&gt;hasTagName(vTag), no need of element test or toElement.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:500
&gt; +            clonedNode = HTMLElement::create(spanTag, static_cast&lt;Document*&gt;(m_scriptExecutionContext));

You should construct correct subclasses, HTMLSpanElement here...

Please save Document* to a variable for resuse.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:501
&gt; +        else if (n-&gt;isElementNode() &amp;&amp; toElement(n)-&gt;localName() == HTMLNames::vTag.localName())

hasTagName

&gt; Source/WebCore/html/track/TextTrackCue.cpp:502
&gt; +            clonedNode = HTMLElement::create(qTag, static_cast&lt;Document*&gt;(m_scriptExecutionContext));

... HTMLQuoteElement here.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:509
&gt; +        if (!clonedNode)
&gt; +            clonedNode = n-&gt;cloneNode(false);
&gt; +        else {
&gt; +            toElement(clonedNode.get())-&gt;setAttribute(classAttr, toElement(n)-&gt;getAttribute(classAttr));
&gt; +            toElement(clonedNode.get())-&gt;setAttribute(titleAttr, toElement(n)-&gt;getAttribute(titleAttr));
&gt;          }

With this class and title attributes are only getting set for elements created from v and q nodes. This seems wrong as there are other node types mapping to Elements.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:510
&gt; +        root-&gt;appendChild(clonedNode, ec);

This should never fail. Get rid of the ec variable, do appendChild(clonedNode, ASSERT_NO_EXCEPTION) instead.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:511
&gt; +        copyWebVTTNodeToDOMTree(n, clonedNode);

You shouldn&apos;t recurse if the node is not a ContainerNode.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:530
&gt; +PassRefPtr&lt;DocumentFragment&gt; TextTrackCue::getCueRenderingTree()
&gt; +{

We don&apos;t use get* naming like this, createCueRenderingTree.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:537
&gt; +    Document* document;
&gt; +    RefPtr&lt;DocumentFragment&gt; clonedFragment;
&gt; +    
&gt; +    createWebVTTNodeTree();
&gt; +    document = static_cast&lt;Document*&gt;(m_scriptExecutionContext);
&gt; +    
&gt; +    clonedFragment = DocumentFragment::create(document);

Please define the variable and set its value on a single line.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:-745
&gt; -    if (m_hasInnerTimestamps)
&gt; -        updateDisplayTree(track()-&gt;mediaElement()-&gt;currentTime());

Why don&apos;t we need to call updateDisplayTree anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803721</commentid>
    <comment_count>20</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-09 14:42:29 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Source/WebCore/html/HTMLQuoteElement.cpp:37
&gt; &gt;  inline HTMLQuoteElement::HTMLQuoteElement(const QualifiedName&amp; tagName, Document* document)
&gt; &gt;      : HTMLElement(tagName, document)
&gt; &gt;  {
&gt; &gt; -    ASSERT(hasTagName(qTag) || hasTagName(blockquoteTag));
&gt; &gt; +    ASSERT(hasTagName(qTag) || hasTagName(blockquoteTag) || hasTagName(vTag));
&gt; 
&gt; This seems unnecessary. You never construct HTMLQuoteElement with vTag. Is this just because you want to use cloneNode() for making the rendering tree?
&gt; 
This is for cloneNode() to construct the right element. Also I think this should be for consistency.

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:486
&gt; &gt;          m_documentFragment = WebVTTParser::create(0, m_scriptExecutionContext)-&gt;createDocumentFragmentFromCueText(m_content);
&gt; 
&gt; m_documentFragment should be called something more sensible like m_webVTTNodeTree.

I agree. This is an old code. Do you want me to refactor this in this patch?

&gt; Please use complete words are variable names, n -&gt; node.
&gt; 
&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:499
&gt; &gt; +        if (n-&gt;isElementNode() &amp;&amp; toElement(n)-&gt;localName() == HTMLNames::cTag.localName())
&gt; 

This is how it is in the cloning code.

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:500
&gt; &gt; +            clonedNode = HTMLElement::create(spanTag, static_cast&lt;Document*&gt;(m_scriptExecutionContext));
&gt; 
&gt; You should construct correct subclasses, HTMLSpanElement here...

This is how this node is constructed in the WebVTT parser. Should it be changed there as well?

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:509
&gt; &gt; +        if (!clonedNode)
&gt; &gt; +            clonedNode = n-&gt;cloneNode(false);
&gt; &gt; +        else {
&gt; &gt; +            toElement(clonedNode.get())-&gt;setAttribute(classAttr, toElement(n)-&gt;getAttribute(classAttr));
&gt; &gt; +            toElement(clonedNode.get())-&gt;setAttribute(titleAttr, toElement(n)-&gt;getAttribute(titleAttr));
&gt; &gt;          }
&gt; 
&gt; With this class and title attributes are only getting set for elements created from v and q nodes. This seems wrong as there are other node types mapping to Elements.

Why should I do this for other node types if I use cloneNode function that copies all the attributes automatically?

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:511
&gt; &gt; +        copyWebVTTNodeToDOMTree(n, clonedNode);
&gt; 
&gt; You shouldn&apos;t recurse if the node is not a ContainerNode.

Is this because it&apos;s unsafe to call firstChild for non ContainerNodes?

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:-745
&gt; &gt; -    if (m_hasInnerTimestamps)
&gt; &gt; -        updateDisplayTree(track()-&gt;mediaElement()-&gt;currentTime());
&gt; 
&gt; Why don&apos;t we need to call updateDisplayTree anymore?

The tree doesn&apos;t change anymore, since I removed past/future containers in the previous patch. All nodes stay on their places throughout the cue lifetime.

Thanks for a review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804017</commentid>
    <comment_count>21</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-09 20:47:39 -0800</bug_when>
    <thetext>Antti, it looks like HTMLElementFactory is not used when HTMLElement::create is called. This means that the old code in the parser didn&apos;t create elements of the right type, or at least relied on the cloning which uses HTMLElementFactory::createHTMLElement and that actually calls the right constructor. What&apos;s better — to add vTag manually to the HTMLElementFactory function table so it would create the right element when cloning, or remove this call to the core cloning code and do it with my custom cloning function and just call the right constructor for this element?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804032</commentid>
    <comment_count>22</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-09 21:16:59 -0800</bug_when>
    <thetext>I also just released that my clone function will not create elements of the right types for other than v and c elements. And doing a switch is ugly. 
Probably we could add some option for HTMLTagNames.in so that we wouldn&apos;t create externally accessible  API&apos;s for those tags?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805960</commentid>
    <comment_count>23</comment_count>
      <attachid>182482</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-13 04:17:25 -0800</bug_when>
    <thetext>Created attachment 182482
Proposed fix 0.7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805965</commentid>
    <comment_count>24</comment_count>
      <attachid>182483</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-13 04:39:11 -0800</bug_when>
    <thetext>Created attachment 182483
Proposed fix 0.8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805967</commentid>
    <comment_count>25</comment_count>
      <attachid>182484</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-13 04:48:35 -0800</bug_when>
    <thetext>Created attachment 182484
Proposed fix 0.9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805982</commentid>
    <comment_count>26</comment_count>
      <attachid>182484</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-01-13 09:56:37 -0800</bug_when>
    <thetext>Comment on attachment 182484
Proposed fix 0.9

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        handled without any changes to the code. Creating a rendering tree and DOM tree nowuse different code paths. 

Typo: &quot;nowuse&quot; -&gt; &quot;now use&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806022</commentid>
    <comment_count>27</comment_count>
      <attachid>182494</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-13 16:23:47 -0800</bug_when>
    <thetext>Created attachment 182494
Proposed fix 1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806529</commentid>
    <comment_count>28</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-14 12:38:25 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Antti, it looks like HTMLElementFactory is not used when HTMLElement::create is called. This means that the old code in the parser didn&apos;t create elements of the right type, or at least relied on the cloning which uses HTMLElementFactory::createHTMLElement and that actually calls the right constructor. What&apos;s better — to add vTag manually to the HTMLElementFactory function table so it would create the right element when cloning, or remove this call to the core cloning code and do it with my custom cloning function and just call the right constructor for this element?

The internal node tree does not really need to be HTMLElements as it doesn&apos;t need HTML semantics. That some WebVTT tags have the same names as HTML tags is good for remembering them but does not make them HTML tags. Rendering and selector matching code works fine with generic Elements and it would probably be clearer to create internal nodes with Element::create(). It doesn&apos;t make much practical difference though.

On the other hand it is important that the tree exposed by getCueAsHTML() is correctly constructed from HTML elements.

As I mentioned above, as long as the rendering tree and the node tree are identical you can avoid the whole cloning question by just having one tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806530</commentid>
    <comment_count>29</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-14 12:39:27 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; I also just released that my clone function will not create elements of the right types for other than v and c elements. And doing a switch is ugly. 
&gt; Probably we could add some option for HTMLTagNames.in so that we wouldn&apos;t create externally accessible  API&apos;s for those tags?

There is nothing particularly ugly about doing it in the switch. Matches well with the spec language.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806633</commentid>
    <comment_count>30</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-14 14:34:20 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; As I mentioned above, as long as the rendering tree and the node tree are identical you can avoid the whole cloning question by just having one tree.

Sounds reasonable, but specs already have some requirements to add several wrappers for webvtt nodes that shouldn&apos;t be in DOM. I think we shouldn&apos;t use the same tree now because if we do we will still have to revert it back to cloning pretty soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806696</commentid>
    <comment_count>31</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-14 15:51:44 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Sounds reasonable, but specs already have some requirements to add several wrappers for webvtt nodes that shouldn&apos;t be in DOM. I think we shouldn&apos;t use the same tree now because if we do we will still have to revert it back to cloning pretty soon.

If you mean this 

&quot;Runs of children of WebVTT Ruby Objects that are not WebVTT Ruby Text Objects must be wrapped in anonymous boxes whose &apos;display&apos; property has the value &apos;ruby-base&apos;.&quot;

it doesn&apos;t sound to me like this implies any wrappers in the webvtt node tree. The anonymous boxes are in rendering level (and possibly handled already, see comments in RenderRuby.h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806707</commentid>
    <comment_count>32</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-14 15:54:49 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; Sounds reasonable, but specs already have some requirements to add several wrappers for webvtt nodes that shouldn&apos;t be in DOM. I think we shouldn&apos;t use the same tree now because if we do we will still have to revert it back to cloning pretty soon.
&gt; 
&gt; If you mean this 
&gt; 
&gt; &quot;Runs of children of WebVTT Ruby Objects that are not WebVTT Ruby Text Objects must be wrapped in anonymous boxes whose &apos;display&apos; property has the value &apos;ruby-base&apos;.&quot;
&gt; 
&gt; it doesn&apos;t sound to me like this implies any wrappers in the webvtt node tree. The anonymous boxes are in rendering level (and possibly handled already, see comments in RenderRuby.h)

There are also some requirements for the text wrapping. I guess they will be hard to comply with without modifying the tree. 
Could you please review the last patch please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806767</commentid>
    <comment_count>33</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-14 16:45:24 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; it doesn&apos;t sound to me like this implies any wrappers in the webvtt node tree. The anonymous boxes are in rendering level (and possibly handled already, see comments in RenderRuby.h)

That just may be complicated to remove those additional wrappers to make a DOM tree from the WebVTT Node tree if we make it equal to a rendering tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806804</commentid>
    <comment_count>34</comment_count>
      <attachid>182494</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 17:18:43 -0800</bug_when>
    <thetext>Comment on attachment 182494
Proposed fix 1.0

Clearing flags on attachment: 182494

Committed r139692: &lt;http://trac.webkit.org/changeset/139692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806805</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 17:18:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180441</attachid>
            <date>2012-12-20 16:41:01 -0800</date>
            <delta_ts>2013-01-04 19:26:33 -0800</delta_ts>
            <desc>Proposed fix 0.1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1220</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA5YmRiNjY5Li40MDkyYmRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC0xOTEsNiArMTkxLDE3IEBAIGlu
bGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhjb25zdCBFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBDU1NTZWxlY3RvCiAgICAgaWYgKCFzZWxlY3Rvci0+aGFzVGFnKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gc2Vs
ZWN0b3ItPnRhZygpLmxvY2FsTmFtZSgpOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBp
ZiAoZWxlbWVudC0+aXNXZWJWVFROb2RlKCkpIHsKKyAgICAgICAgLy8gQWxsIFdlYlZUVCBjbGFz
cyBub2RlcyBhcmUgc3BhbnMgYW5kIGFsbCBXZWJWVFQgdm9pY2Ugbm9kZXMgYXJlIHF1b3RlIHRh
Z3MuCisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB3ZWJW
VFRDbGFzc1RhZywgKCJjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgd2ViVlRUVm9p
Y2VUYWcsICgidiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAg
ICAgaWYgKGxvY2FsTmFtZSA9PSB3ZWJWVFRDbGFzc1RhZyAmJiBlbGVtZW50LT5sb2NhbE5hbWUo
KSA9PSBIVE1MTmFtZXM6OnNwYW5UYWcubG9jYWxOYW1lKCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgaWYgKGxvY2FsTmFtZSA9PSB3ZWJWVFRWb2ljZVRhZyAmJiBlbGVtZW50
LT5sb2NhbE5hbWUoKSA9PSBIVE1MTmFtZXM6OnFUYWcubG9jYWxOYW1lKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAobG9jYWxOYW1lICE9IHN0YXJB
dG9tICYmIGxvY2FsTmFtZSAhPSBlbGVtZW50LT5sb2NhbE5hbWUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJID0gc2VsZWN0b3It
PnRhZygpLm5hbWVzcGFjZVVSSSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181422</attachid>
            <date>2013-01-04 19:26:33 -0800</date>
            <delta_ts>2013-01-07 15:39:21 -0800</delta_ts>
            <desc>Proposed fix 0.2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8667</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMGUzNGMyLi4xZDkxMzc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEt
MDQgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorCiAyMDEzLTAxLTA0ICBYaWFuemh1IFdhbmcgIDx3
YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdkLiBGaXggYnJlYWsg
Y2F1c2VkIGJ5IHVzaW5nIG9sZCBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRp
bmdGb3JGaXhlZFBvc2l0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9j
YXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0
aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKaW5kZXggMzI3NDhjOS4uODk2MGUzZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0Cisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dApA
QCAtMSwxMyArMSwxNyBAQAogV0VCVlRUCiAKIDEKLTAwOjAwLjAwMCAtLT4gMDA6MDEuMDAwCisw
MDowMC4wMDAgLS0+IDAwOjAwLjIwMAogTG9ydW0gaXBzdW0KIAogMgotMDA6MDEuMDAwIC0tPiAw
MDowMi4wMDAKKzAwOjAwLjIwMCAtLT4gMDA6MDAuNDAwCiA8Yy5yZWQ+ZG9sb3Igc2l0IDwvYz48
Yy5ncmVlbj5hbWV0LCBjb25zZWN0ZXR1ciA8L2M+PGMucmVkMj5hZGlwaXNjaW5nIGVsaXQ8L2M+
CiAKIDMKLTAwOjAyLjAwMCAtLT4gMDA6MDUuMDAwCi08MDA6MDIuMDAwPjxjPlN1c3BlbmRpc3Nl
IGFjY3Vtc2FuLCA8L2M+PDAwOjAzLjAwMD48Yz5tYXVyaXMgc2VkIDwvYz48MDA6MDQuMDAwPjxj
PmV1aXNtb2QgcGhhcmV0cmE8L2M+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorMDA6MDAu
NDAwIC0tPiAwMDowMS4wMDAKKzwwMDowMC40MDA+PGM+U3VzcGVuZGlzc2UgYWNjdW1zYW4sIDwv
Yz48MDA6MDAuNjAwPjxjPm1hdXJpcyBzZWQgPC9jPjwwMDowMC44MDA+PGM+ZXVpc21vZCBwaGFy
ZXRyYTwvYz4KKworNAorMDA6MDEuMDAwIC0tPiAwMDowMS4yMDAKKzxjPkFsaXF1YW0gc29sbGlj
aXR1ZGluPC9jPiA8dj5tYXNzYSBhYyBtYWduYSB2dWxwdXRhdGUgZGlnbmlzc2ltPC92PiA8Yj5w
b3N1ZXJlIGV0IGZlcm1lbnR1bTwvYj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLWV4cGVj
dGVkLnR4dAppbmRleCA0MDg3YmRmLi5iZGEyZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQKQEAgLTUsMjUg
KzUsMzQgQEAgRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3Jn
YigyNTUsIDAsIDApJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNv
bG9yID09ICdyZ2IoMCwgMTI4LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogCi1SVU4odmlkZW8uY3VycmVu
dFRpbWUgPSAyLjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUwMDAwMDAxMTkyMDkyODkp
CiBFVkVOVChzZWVrZWQpCiAKIAogMi4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8gY2xhc3MuCi1FWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAx
MjgpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdy
Z2IoMTI4LCAxMjgsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9k
ZSkuY29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50
VGltZSA9IDMuNSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNykKIEVWRU5UKHNlZWtlZCkK
LUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAy
NTUsIDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ig
PT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCiBFWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAx
MjgpJykgT0sKIAotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gNC41KQorUlVOKHZpZGVvLmN1cnJl
bnRUaW1lID0gMC44OTgzMzMzMjMwMDE4NjE1KQogRVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdl
dENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9L
Ci1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwg
MjU1LCAyNTUpJykgT0sKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9y
ID09ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENv
bXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQ
RUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEy
OCknKSBPSworCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjA5NjY2NjY0NjAwMzcyMykKK0VW
RU5UKHNlZWtlZCkKKworCiszLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9w
ZXJseSBieSB0YWcuCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9
PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVO
b2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDAsIDI1NSwgMCknKSBPSwogRU5EIE9GIFRF
U1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNo
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRt
bAppbmRleCA4MTQ1YjJjLi40ZWNiYTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApAQCAtOCwxMCArOCwxMiBAQAogICAgICAgICA8c2Ny
aXB0IHNyYz0uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KIAogICAgICAgICA8c3R5bGU+
Ci0KKyAgICAgICAgdmlkZW86OmN1ZShjKSB7Y29sb3I6IHB1cnBsZX0KKyAgICAgICAgdmlkZW86
OmN1ZSh2KSB7Y29sb3I6IHllbGxvd30KKyAgICAgICAgdmlkZW86OmN1ZShiKSB7Y29sb3I6IGxp
bWV9CiAgICAgICAgIHZpZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0KICAgICAg
ICAgI3Rlc3R2aWRlbzo6Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9Ci0KKyAgICAgICAgdmlk
ZW86OmN1ZSg6ZnV0dXJlKSB7Y29sb3I6IGdyYXl9CiAgICAgICAgIDwvc3R5bGU+CiAKICAgICAg
ICAgPHNjcmlwdD4KQEAgLTE5LDEwICsyMSwxMSBAQAogICAgICAgICB2YXIgY3VlTm9kZTsKICAg
ICAgICAgdmFyIHNlZWtlZENvdW50ID0gMDsKICAgICAgICAgdmFyIGluZm8gPSBbWyJyZ2IoMjU1
LCAwLCAwKSIsICJyZ2IoMCwgMTI4LCAwKSIsICJyZ2IoMjU1LCAwLCAwKSJdLAotICAgICAgICAg
ICAgICAgICAgICBbInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAi
cmdiKDEyOCwgMTI4LCAxMjgpIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1
LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiXSwKLSAg
ICAgICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDI1NSwgMjU1LCAy
NTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSJdXTsKLSAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAicmdiKDEyOCwg
MTI4LCAxMjgpIl0sCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJy
Z2IoMTI4LCAwLCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAg
ICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAw
LCAxMjgpIl0sCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2Io
MjU1LCAyNTUsIDApIiwgInJnYigwLCAyNTUsIDApIl1dOworCiAgICAgICAgIGZ1bmN0aW9uIHNr
aXBOb25FbGVtZW50cyhyb290KQogICAgICAgICB7CiAgICAgICAgICAgICBuZXh0RWxlbWVudFNp
YmxpbmcgPSByb290OwpAQCAtNDEsNiArNDQsMTAgQEAKICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIyLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBw
cm9wZXJseSBieSB0aGUgJzpmdXR1cmUnIHBzZXVkbyBjbGFzcy4iKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoc2Vla2VkQ291bnQgPT0gNCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjMuIFRlc3QgdGhhdCBjdWVzIGFyZSBiZWluZyBtYXRjaGVkIHByb3Bl
cmx5IGJ5IHRhZy4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY3VlTm9kZSA9IHNr
aXBOb25FbGVtZW50cyh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2FsbC1ub2Rlcycp
LmZpcnN0Q2hpbGQpOwpAQCAtNTUsNyArNjIsNyBAQAogICAgICAgICAgICAgICAgIGVuZFRlc3Qo
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7
Ci0gICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIgKyAodmlkZW8uY3Vy
cmVudFRpbWUgKyAxKSk7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9
ICIgKyAodmlkZW8uY3VycmVudFRpbWUgKyAwLjIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCkBAIC02Niw3ICs3Myw3IEBACiAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFG
aWxlKCd2aWRlbycsICcuLi9jb250ZW50L3Rlc3QnKTsKICAgICAgICAgICAgIHZpZGVvLmlkID0g
InRlc3R2aWRlbyI7CiAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3NlZWtlZCcsIHNlZWtlZCk7
Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7
IHZpZGVvLmN1cnJlbnRUaW1lID0gMS41OyB9KTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRpbWUgPSAwLjM7IH0p
OwogICAgICAgICB9CiAKICAgICAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwYTRhMS4u
YWMxMTdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTA0ICBEaW1hIEdv
cmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBlbGVtZW50IHR5
cGUgc2VsZWN0b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NDgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnRl
ZCB0YWcgbWF0Y2hpbmcgZm9yIHRoZSBXZWJWVFQgc3BlY2lmaWMgdGFncyAiYyIgYW5kICJ2Ii4g
QWxsIGNvbW1vbiBodG1sCisgICAgICAgIHRhZ3MgbGlrZSAiYiIgYW5kICJpIiBhcmUgaGFuZGxl
ZCB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLgorCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIHdlcmUgbW9kaWZpZWQgdG8gY292ZXIgdGhpcyBjYXNlLgorCisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjp0YWdN
YXRjaGVzKTogYWRkZWQgZXhwbGljaXQgdGFnIGNvbXBhcmlzb24gZm9yIFdlYlZUVCBzcGVjaWZp
YyB0YWdzLgorCiAyMDEzLTAxLTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgSFRNTFRyZWVCdWlsZGVyIHNob3VsZCBBU1NFUlQgdGhhdCBpdCBpcyBvbiB0aGUg
bWFpbiB0aHJlYWQgYmVmb3JlIHRvdWNoaW5nIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmgKaW5kZXggMzMxOTNmNy4uNDA1OGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuaApAQCAtMTM1LDYgKzEzNSwxNyBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OnRhZ01hdGNoZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0
bwogICAgIGlmICghc2VsZWN0b3ItPmhhc1RhZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IHNlbGVjdG9yLT50YWcoKS5sb2NhbE5h
bWUoKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGVsZW1lbnQtPmlzV2ViVlRU
Tm9kZSgpKSB7CisgICAgICAgIC8vIEFsbCBXZWJWVFQgY2xhc3Mgbm9kZXMgYXJlIHNwYW5zIGFu
ZCBhbGwgV2ViVlRUIHZvaWNlIG5vZGVzIGFyZSBxdW90ZSB0YWdzLgorICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgd2ViVlRUQ2xhc3NUYWcsICgiYyIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHdlYlZUVFZvaWNlVGFnLCAoInYiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIGlmIChsb2NhbE5hbWUgPT0g
d2ViVlRUQ2xhc3NUYWcgJiYgZWxlbWVudC0+bG9jYWxOYW1lKCkgPT0gSFRNTE5hbWVzOjpzcGFu
VGFnLmxvY2FsTmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChs
b2NhbE5hbWUgPT0gd2ViVlRUVm9pY2VUYWcgJiYgZWxlbWVudC0+bG9jYWxOYW1lKCkgPT0gSFRN
TE5hbWVzOjpxVGFnLmxvY2FsTmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorI2VuZGlmCiAgICAgaWYgKGxvY2FsTmFtZSAhPSBzdGFyQXRvbSAmJiBsb2NhbE5hbWUgIT0g
ZWxlbWVudC0+bG9jYWxOYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSA9IHNlbGVjdG9yLT50YWcoKS5uYW1lc3BhY2VVUkko
KTsK
</data>
<flag name="review"
          id="199040"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="199041"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181578</attachid>
            <date>2013-01-07 15:39:21 -0800</date>
            <delta_ts>2013-01-08 21:11:34 -0800</delta_ts>
            <desc>Proposed fix 0.3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9607</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMGUzNGMyLi45NDI1MjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEt
MDcgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorCiAyMDEzLTAxLTA0ICBYaWFuemh1IFdhbmcgIDx3
YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdkLiBGaXggYnJlYWsg
Y2F1c2VkIGJ5IHVzaW5nIG9sZCBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRp
bmdGb3JGaXhlZFBvc2l0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9j
YXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0
aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKaW5kZXggMzI3NDhjOS4uODk2MGUzZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0Cisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dApA
QCAtMSwxMyArMSwxNyBAQAogV0VCVlRUCiAKIDEKLTAwOjAwLjAwMCAtLT4gMDA6MDEuMDAwCisw
MDowMC4wMDAgLS0+IDAwOjAwLjIwMAogTG9ydW0gaXBzdW0KIAogMgotMDA6MDEuMDAwIC0tPiAw
MDowMi4wMDAKKzAwOjAwLjIwMCAtLT4gMDA6MDAuNDAwCiA8Yy5yZWQ+ZG9sb3Igc2l0IDwvYz48
Yy5ncmVlbj5hbWV0LCBjb25zZWN0ZXR1ciA8L2M+PGMucmVkMj5hZGlwaXNjaW5nIGVsaXQ8L2M+
CiAKIDMKLTAwOjAyLjAwMCAtLT4gMDA6MDUuMDAwCi08MDA6MDIuMDAwPjxjPlN1c3BlbmRpc3Nl
IGFjY3Vtc2FuLCA8L2M+PDAwOjAzLjAwMD48Yz5tYXVyaXMgc2VkIDwvYz48MDA6MDQuMDAwPjxj
PmV1aXNtb2QgcGhhcmV0cmE8L2M+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorMDA6MDAu
NDAwIC0tPiAwMDowMS4wMDAKKzwwMDowMC40MDA+PGM+U3VzcGVuZGlzc2UgYWNjdW1zYW4sIDwv
Yz48MDA6MDAuNjAwPjxjPm1hdXJpcyBzZWQgPC9jPjwwMDowMC44MDA+PGM+ZXVpc21vZCBwaGFy
ZXRyYTwvYz4KKworNAorMDA6MDEuMDAwIC0tPiAwMDowMS4yMDAKKzxjPkFsaXF1YW0gc29sbGlj
aXR1ZGluPC9jPiA8dj5tYXNzYSBhYyBtYWduYSB2dWxwdXRhdGUgZGlnbmlzc2ltPC92PiA8Yj5w
b3N1ZXJlIGV0IGZlcm1lbnR1bTwvYj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLWV4cGVj
dGVkLnR4dAppbmRleCA0MDg3YmRmLi5iZGEyZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQKQEAgLTUsMjUg
KzUsMzQgQEAgRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3Jn
YigyNTUsIDAsIDApJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNv
bG9yID09ICdyZ2IoMCwgMTI4LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogCi1SVU4odmlkZW8uY3VycmVu
dFRpbWUgPSAyLjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUwMDAwMDAxMTkyMDkyODkp
CiBFVkVOVChzZWVrZWQpCiAKIAogMi4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8gY2xhc3MuCi1FWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAx
MjgpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdy
Z2IoMTI4LCAxMjgsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9k
ZSkuY29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50
VGltZSA9IDMuNSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNykKIEVWRU5UKHNlZWtlZCkK
LUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAy
NTUsIDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ig
PT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCiBFWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAx
MjgpJykgT0sKIAotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gNC41KQorUlVOKHZpZGVvLmN1cnJl
bnRUaW1lID0gMC44OTgzMzMzMjMwMDE4NjE1KQogRVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdl
dENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9L
Ci1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwg
MjU1LCAyNTUpJykgT0sKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9y
ID09ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENv
bXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQ
RUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEy
OCknKSBPSworCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjA5NjY2NjY0NjAwMzcyMykKK0VW
RU5UKHNlZWtlZCkKKworCiszLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9w
ZXJseSBieSB0YWcuCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9
PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVO
b2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDAsIDI1NSwgMCknKSBPSwogRU5EIE9GIFRF
U1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNo
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRt
bAppbmRleCA4MTQ1YjJjLi40ZWNiYTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApAQCAtOCwxMCArOCwxMiBAQAogICAgICAgICA8c2Ny
aXB0IHNyYz0uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KIAogICAgICAgICA8c3R5bGU+
Ci0KKyAgICAgICAgdmlkZW86OmN1ZShjKSB7Y29sb3I6IHB1cnBsZX0KKyAgICAgICAgdmlkZW86
OmN1ZSh2KSB7Y29sb3I6IHllbGxvd30KKyAgICAgICAgdmlkZW86OmN1ZShiKSB7Y29sb3I6IGxp
bWV9CiAgICAgICAgIHZpZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0KICAgICAg
ICAgI3Rlc3R2aWRlbzo6Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9Ci0KKyAgICAgICAgdmlk
ZW86OmN1ZSg6ZnV0dXJlKSB7Y29sb3I6IGdyYXl9CiAgICAgICAgIDwvc3R5bGU+CiAKICAgICAg
ICAgPHNjcmlwdD4KQEAgLTE5LDEwICsyMSwxMSBAQAogICAgICAgICB2YXIgY3VlTm9kZTsKICAg
ICAgICAgdmFyIHNlZWtlZENvdW50ID0gMDsKICAgICAgICAgdmFyIGluZm8gPSBbWyJyZ2IoMjU1
LCAwLCAwKSIsICJyZ2IoMCwgMTI4LCAwKSIsICJyZ2IoMjU1LCAwLCAwKSJdLAotICAgICAgICAg
ICAgICAgICAgICBbInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAi
cmdiKDEyOCwgMTI4LCAxMjgpIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1
LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiXSwKLSAg
ICAgICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDI1NSwgMjU1LCAy
NTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSJdXTsKLSAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAicmdiKDEyOCwg
MTI4LCAxMjgpIl0sCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJy
Z2IoMTI4LCAwLCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAg
ICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAw
LCAxMjgpIl0sCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2Io
MjU1LCAyNTUsIDApIiwgInJnYigwLCAyNTUsIDApIl1dOworCiAgICAgICAgIGZ1bmN0aW9uIHNr
aXBOb25FbGVtZW50cyhyb290KQogICAgICAgICB7CiAgICAgICAgICAgICBuZXh0RWxlbWVudFNp
YmxpbmcgPSByb290OwpAQCAtNDEsNiArNDQsMTAgQEAKICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIyLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBw
cm9wZXJseSBieSB0aGUgJzpmdXR1cmUnIHBzZXVkbyBjbGFzcy4iKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoc2Vla2VkQ291bnQgPT0gNCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjMuIFRlc3QgdGhhdCBjdWVzIGFyZSBiZWluZyBtYXRjaGVkIHByb3Bl
cmx5IGJ5IHRhZy4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY3VlTm9kZSA9IHNr
aXBOb25FbGVtZW50cyh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2FsbC1ub2Rlcycp
LmZpcnN0Q2hpbGQpOwpAQCAtNTUsNyArNjIsNyBAQAogICAgICAgICAgICAgICAgIGVuZFRlc3Qo
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7
Ci0gICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIgKyAodmlkZW8uY3Vy
cmVudFRpbWUgKyAxKSk7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9
ICIgKyAodmlkZW8uY3VycmVudFRpbWUgKyAwLjIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCkBAIC02Niw3ICs3Myw3IEBACiAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFG
aWxlKCd2aWRlbycsICcuLi9jb250ZW50L3Rlc3QnKTsKICAgICAgICAgICAgIHZpZGVvLmlkID0g
InRlc3R2aWRlbyI7CiAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3NlZWtlZCcsIHNlZWtlZCk7
Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7
IHZpZGVvLmN1cnJlbnRUaW1lID0gMS41OyB9KTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRpbWUgPSAwLjM7IH0p
OwogICAgICAgICB9CiAKICAgICAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwYTRhMS4u
OTIyNzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTA3ICBEaW1hIEdv
cmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBlbGVtZW50IHR5
cGUgc2VsZWN0b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NDgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnRl
ZCB0YWcgbWF0Y2hpbmcgZm9yIHRoZSBXZWJWVFQgc3BlY2lmaWMgdGFncyAiYyIgYW5kICJ2Ii4g
QWxsIGNvbW1vbiBodG1sCisgICAgICAgIHRhZ3MgbGlrZSAiYiIgYW5kICJpIiBhcmUgaGFuZGxl
ZCB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLgorCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIHdlcmUgbW9kaWZpZWQgdG8gY292ZXIgdGhpcyBjYXNlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGFnTmFtZXMuaW46IGFkZGVkICJjIiBhbmQgInYiIHRhZ3Mgc3VwcG9ydC4KKyAgICAgICAg
KiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6IGNyZWF0ZSBlbGVtZW50cyB3aXRoIHJpZ2h0
IHRhZ3Mgd2hlbiBwYXJzaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjb25z
dHJ1Y3RUcmVlRnJvbVRva2VuKToKKwogMjAxMy0wMS0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUxUcmVlQnVpbGRlciBzaG91bGQgQVNTRVJUIHRoYXQg
aXQgaXMgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSB0b3VjaGluZyBlbGVtZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgppbmRleCBkNjIzZGQ5Li44OTc1ZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpAQCAtMjMsNiArMjMsNyBAQCBibG9ja3F1b3RlIGludGVy
ZmFjZU5hbWU9SFRNTFF1b3RlRWxlbWVudAogYm9keQogYnIgaW50ZXJmYWNlTmFtZT1IVE1MQlJF
bGVtZW50CiBidXR0b24gY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50CitjIGludGVyZmFjZU5h
bWU9SFRNTEVsZW1lbnQKIGNhbnZhcwogY2FwdGlvbiBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZUNh
cHRpb25FbGVtZW50CiBjZW50ZXIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudApAQCAtMTM1LDYg
KzEzNiw3IEBAIHRyYWNrIHdyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlLCBjb25kaXRpb25h
bD1WSURFT19UUkFDSwogdHQgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogdSBpbnRlcmZhY2VO
YW1lPUhUTUxFbGVtZW50CiB1bCBpbnRlcmZhY2VOYW1lPUhUTUxVTGlzdEVsZW1lbnQKK3YgaW50
ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogdmFyIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHZp
ZGVvIHdyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlLCBjb25kaXRpb25hbD1WSURFTywgY29u
c3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcgogd2JyIGludGVyZmFjZU5hbWU9SFRNTEVsZW1l
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCAyOTdl
NTk5Li4wYWIwMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCkBAIC0zNTksMTQgKzM1OSwxNCBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJl
ZUZyb21Ub2tlbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGlmIChpc1JlY29nbml6ZWRU
YWcodG9rZW5UYWdOYW1lKSkKICAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0
ZSh0YWdOYW1lLCBkb2N1bWVudCk7CiAgICAgICAgIGVsc2UgaWYgKG1fdG9rZW4ubmFtZSgpLnNp
emUoKSA9PSAxICYmIG1fdG9rZW4ubmFtZSgpWzBdID09ICdjJykKLSAgICAgICAgICAgIGNoaWxk
ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShzcGFuVGFnLCBkb2N1bWVudCk7CisgICAgICAgICAgICBj
aGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoY1RhZywgZG9jdW1lbnQpOwogICAgICAgICBlbHNl
IGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAn
dicpCi0gICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUocVRhZywgZG9jdW1l
bnQpOworICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHZUYWcsIGRvY3Vt
ZW50KTsKIAogICAgICAgICBpZiAoY2hpbGQpIHsKICAgICAgICAgICAgIGlmIChtX3Rva2VuLmNs
YXNzZXMoKS5zaXplKCkgPiAwKQogICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUo
Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcobV90b2tlbi5jbGFzc2VzKCkuZGF0YSgpLCBtX3Rva2Vu
LmNsYXNzZXMoKS5zaXplKCkpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShx
VGFnKSkKKyAgICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZSh2VGFnKSkKICAgICAgICAg
ICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKHRpdGxlQXR0ciwgQXRvbWljU3RyaW5nKG1fdG9r
ZW4uYW5ub3RhdGlvbigpLmRhdGEoKSwgbV90b2tlbi5hbm5vdGF0aW9uKCkuc2l6ZSgpKSk7CiAg
ICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChjaGlsZCk7CiAgICAg
ICAgICAgICBtX2N1cnJlbnROb2RlID0gY2hpbGQ7Cg==
</data>
<flag name="review"
          id="199260"
          type_id="1"
          status="-"
          setter="dgorbik"
    />
    <flag name="commit-queue"
          id="199261"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181838</attachid>
            <date>2013-01-08 21:11:34 -0800</date>
            <delta_ts>2013-01-08 21:25:14 -0800</delta_ts>
            <desc>Proposed fix 0.4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17327</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMGUzNGMyLi4wZDIwZmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEt
MDggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorCiAyMDEzLTAxLTA0ICBYaWFuemh1IFdhbmcgIDx3
YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdkLiBGaXggYnJlYWsg
Y2F1c2VkIGJ5IHVzaW5nIG9sZCBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlQ29tcG9zaXRp
bmdGb3JGaXhlZFBvc2l0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9j
YXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0
aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKaW5kZXggMzI3NDhjOS4uODk2MGUzZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0Cisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dApA
QCAtMSwxMyArMSwxNyBAQAogV0VCVlRUCiAKIDEKLTAwOjAwLjAwMCAtLT4gMDA6MDEuMDAwCisw
MDowMC4wMDAgLS0+IDAwOjAwLjIwMAogTG9ydW0gaXBzdW0KIAogMgotMDA6MDEuMDAwIC0tPiAw
MDowMi4wMDAKKzAwOjAwLjIwMCAtLT4gMDA6MDAuNDAwCiA8Yy5yZWQ+ZG9sb3Igc2l0IDwvYz48
Yy5ncmVlbj5hbWV0LCBjb25zZWN0ZXR1ciA8L2M+PGMucmVkMj5hZGlwaXNjaW5nIGVsaXQ8L2M+
CiAKIDMKLTAwOjAyLjAwMCAtLT4gMDA6MDUuMDAwCi08MDA6MDIuMDAwPjxjPlN1c3BlbmRpc3Nl
IGFjY3Vtc2FuLCA8L2M+PDAwOjAzLjAwMD48Yz5tYXVyaXMgc2VkIDwvYz48MDA6MDQuMDAwPjxj
PmV1aXNtb2QgcGhhcmV0cmE8L2M+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorMDA6MDAu
NDAwIC0tPiAwMDowMS4wMDAKKzwwMDowMC40MDA+PGM+U3VzcGVuZGlzc2UgYWNjdW1zYW4sIDwv
Yz48MDA6MDAuNjAwPjxjPm1hdXJpcyBzZWQgPC9jPjwwMDowMC44MDA+PGM+ZXVpc21vZCBwaGFy
ZXRyYTwvYz4KKworNAorMDA6MDEuMDAwIC0tPiAwMDowMS4yMDAKKzxjPkFsaXF1YW0gc29sbGlj
aXR1ZGluPC9jPiA8dj5tYXNzYSBhYyBtYWduYSB2dWxwdXRhdGUgZGlnbmlzc2ltPC92PiA8Yj5w
b3N1ZXJlIGV0IGZlcm1lbnR1bTwvYj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLWV4cGVj
dGVkLnR4dAppbmRleCA0MDg3YmRmLi5iZGEyZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQKQEAgLTUsMjUg
KzUsMzQgQEAgRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3Jn
YigyNTUsIDAsIDApJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNv
bG9yID09ICdyZ2IoMCwgMTI4LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogCi1SVU4odmlkZW8uY3VycmVu
dFRpbWUgPSAyLjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUwMDAwMDAxMTkyMDkyODkp
CiBFVkVOVChzZWVrZWQpCiAKIAogMi4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8gY2xhc3MuCi1FWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAx
MjgpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdy
Z2IoMTI4LCAxMjgsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9k
ZSkuY29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50
VGltZSA9IDMuNSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNykKIEVWRU5UKHNlZWtlZCkK
LUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAy
NTUsIDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ig
PT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCiBFWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAx
MjgpJykgT0sKIAotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gNC41KQorUlVOKHZpZGVvLmN1cnJl
bnRUaW1lID0gMC44OTgzMzMzMjMwMDE4NjE1KQogRVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdl
dENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9L
Ci1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwg
MjU1LCAyNTUpJykgT0sKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9y
ID09ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENv
bXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQ
RUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEy
OCknKSBPSworCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjA5NjY2NjY0NjAwMzcyMykKK0VW
RU5UKHNlZWtlZCkKKworCiszLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9w
ZXJseSBieSB0YWcuCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9
PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVO
b2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDAsIDI1NSwgMCknKSBPSwogRU5EIE9GIFRF
U1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNo
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRt
bAppbmRleCA4MTQ1YjJjLi40ZWNiYTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApAQCAtOCwxMCArOCwxMiBAQAogICAgICAgICA8c2Ny
aXB0IHNyYz0uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KIAogICAgICAgICA8c3R5bGU+
Ci0KKyAgICAgICAgdmlkZW86OmN1ZShjKSB7Y29sb3I6IHB1cnBsZX0KKyAgICAgICAgdmlkZW86
OmN1ZSh2KSB7Y29sb3I6IHllbGxvd30KKyAgICAgICAgdmlkZW86OmN1ZShiKSB7Y29sb3I6IGxp
bWV9CiAgICAgICAgIHZpZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0KICAgICAg
ICAgI3Rlc3R2aWRlbzo6Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9Ci0KKyAgICAgICAgdmlk
ZW86OmN1ZSg6ZnV0dXJlKSB7Y29sb3I6IGdyYXl9CiAgICAgICAgIDwvc3R5bGU+CiAKICAgICAg
ICAgPHNjcmlwdD4KQEAgLTE5LDEwICsyMSwxMSBAQAogICAgICAgICB2YXIgY3VlTm9kZTsKICAg
ICAgICAgdmFyIHNlZWtlZENvdW50ID0gMDsKICAgICAgICAgdmFyIGluZm8gPSBbWyJyZ2IoMjU1
LCAwLCAwKSIsICJyZ2IoMCwgMTI4LCAwKSIsICJyZ2IoMjU1LCAwLCAwKSJdLAotICAgICAgICAg
ICAgICAgICAgICBbInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAi
cmdiKDEyOCwgMTI4LCAxMjgpIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1
LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiXSwKLSAg
ICAgICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDI1NSwgMjU1LCAy
NTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSJdXTsKLSAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAicmdiKDEyOCwg
MTI4LCAxMjgpIl0sCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJy
Z2IoMTI4LCAwLCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAg
ICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAw
LCAxMjgpIl0sCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2Io
MjU1LCAyNTUsIDApIiwgInJnYigwLCAyNTUsIDApIl1dOworCiAgICAgICAgIGZ1bmN0aW9uIHNr
aXBOb25FbGVtZW50cyhyb290KQogICAgICAgICB7CiAgICAgICAgICAgICBuZXh0RWxlbWVudFNp
YmxpbmcgPSByb290OwpAQCAtNDEsNiArNDQsMTAgQEAKICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIyLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBw
cm9wZXJseSBieSB0aGUgJzpmdXR1cmUnIHBzZXVkbyBjbGFzcy4iKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoc2Vla2VkQ291bnQgPT0gNCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjMuIFRlc3QgdGhhdCBjdWVzIGFyZSBiZWluZyBtYXRjaGVkIHByb3Bl
cmx5IGJ5IHRhZy4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY3VlTm9kZSA9IHNr
aXBOb25FbGVtZW50cyh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2FsbC1ub2Rlcycp
LmZpcnN0Q2hpbGQpOwpAQCAtNTUsNyArNjIsNyBAQAogICAgICAgICAgICAgICAgIGVuZFRlc3Qo
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7
Ci0gICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIgKyAodmlkZW8uY3Vy
cmVudFRpbWUgKyAxKSk7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9
ICIgKyAodmlkZW8uY3VycmVudFRpbWUgKyAwLjIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCkBAIC02Niw3ICs3Myw3IEBACiAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFG
aWxlKCd2aWRlbycsICcuLi9jb250ZW50L3Rlc3QnKTsKICAgICAgICAgICAgIHZpZGVvLmlkID0g
InRlc3R2aWRlbyI7CiAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3NlZWtlZCcsIHNlZWtlZCk7
Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7
IHZpZGVvLmN1cnJlbnRUaW1lID0gMS41OyB9KTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRpbWUgPSAwLjM7IH0p
OwogICAgICAgICB9CiAKICAgICAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwYTRhMS4u
OWViODFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAxLTA4ICBEaW1hIEdv
cmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBlbGVtZW50IHR5
cGUgc2VsZWN0b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NDgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnRl
ZCB0YWcgbWF0Y2hpbmcgZm9yIHRoZSBXZWJWVFQgc3BlY2lmaWMgdGFncyAiYyIgYW5kICJ2Ii4g
QWxsIGNvbW1vbiBodG1sCisgICAgICAgIHRhZ3MgbGlrZSAiYiIgYW5kICJpIiBhcmUgaGFuZGxl
ZCB3aXRob3V0IGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiBDcmVhdGluZyBhIHJlbmRlcmluZyB0
cmVlIGFuZCBET00gdHJlZSBub3cKKyAgICAgICAgdXNlIGRpZmZlcmVudCBjb2RlIHBhdGhzLiBU
aGV5IGJvdGggYXJlIG1hZGUgYnkgY2xvbmluZyBhbmQgbW9kaWZ5aW5nIHRoZSB0cmVlIHByb2R1
Y2VkIGJ5IHRoZSBwYXJzZXIuIEFsc28gcmVtb3ZlZAorICAgICAgICBtX2hhc0lubmVyVGltZXN0
YW1wcyBzaW5jZSBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgorCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIHdlcmUgbW9kaWZpZWQgdG8gY292ZXIgdGhpcyBjYXNlLgorCisgICAgICAgICogaHRtbC9I
VE1MUXVvdGVFbGVtZW50LmNwcDogdlRhZyBzaG91bGQgYmUgc3VwcG9ydGVkIHRoZSB3YXkgcVRh
ZyBpcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQ6OkhUTUxRdW90ZUVsZW1l
bnQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQ6Omluc2VydGVk
SW50byk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOiBhZGRlZCAiYyIg
YW5kICJ2IiB0YWdzIHN1cHBvcnQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGVXZWJWVFROb2RlVHJlZSk6IHBhcnNl
IHRoZSBjdWUgaWYgaXQgaGFzbid0IGJlZW4gcGFyc2VkIGJlZm9yZS4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUpOiBjbG9uZSBhbmQgcHJl
cGFyZSBhIG5vZGUgZm9yIHVzaW5nIGluIHRoZSBET00gdHJlZSBhY2NvcmRpbmcgdG8gc3BlY3Mu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6IGdldCBhIERP
TSB0cmVlIGZvciB0aGUgY3VlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRD
dWVSZW5kZXJpbmdUcmVlKTogY3JlYXRlIGEgcmVuZGVyaW5nIHRyZWUgKG1haW4gdHJlZSBpcyBq
dXN0IGJlaW5nIGNsb25lZCBmb3Igbm93KS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1
ZTo6dXBkYXRlRGlzcGxheVRyZWUpOiB1c2UgZ2V0Q3VlUmVuZGVyaW5nVHJlZSBmdW5jdGlvbiB0
byBnZXQgdGhlIHJlbmRlcmluZyB0cmVlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjpnZXREaXNwbGF5VHJlZSk6IGNvZGUgY2xlYW51cCwgcmVtb3ZlZCBtX2hhc0lubmVyVGltZVN0
YW1wcy4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoVGV4
dFRyYWNrQ3VlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6IGNyZWF0
ZSBlbGVtZW50cyB3aXRoIHJpZ2h0IHRhZ3Mgd2hlbiBwYXJzaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKwogMjAxMy0wMS0wNCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUxUcmVlQnVpbGRl
ciBzaG91bGQgQVNTRVJUIHRoYXQgaXQgaXMgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSB0b3Vj
aGluZyBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAKaW5k
ZXggZDViZTJmMi4uZjdjNzMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UXVvdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1l
bnQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBpbmxp
bmUgSFRNTFF1b3RlRWxlbWVudDo6SFRNTFF1b3RlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKLSAgICBBU1NFUlQoaGFzVGFnTmFtZShxVGFnKSB8fCBoYXNUYWdOYW1l
KGJsb2NrcXVvdGVUYWcpKTsKKyAgICBBU1NFUlQoaGFzVGFnTmFtZShxVGFnKSB8fCBoYXNUYWdO
YW1lKGJsb2NrcXVvdGVUYWcpIHx8IGhhc1RhZ05hbWUodlRhZykpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxRdW90ZUVsZW1lbnQ+IEhUTUxRdW90ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC00NCw3ICs0NCw3IEBAIFBh
c3NSZWZQdHI8SFRNTFF1b3RlRWxlbWVudD4gSFRNTFF1b3RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgSFRNTFF1b3RlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlv
blBvaW50KQogewotICAgIGlmIChoYXNUYWdOYW1lKHFUYWcpKQorICAgIGlmIChoYXNUYWdOYW1l
KHFUYWcpIHx8IGhhc1RhZ05hbWUodlRhZykpCiAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2hl
ZXRDb2xsZWN0aW9uKCktPnNldFVzZXNCZWZvcmVBZnRlclJ1bGVzT3ZlcnJpZGUodHJ1ZSk7CiAK
ICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCmluZGV4IGQ2MjNkZDkuLmZhYjMxZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCkBAIC0yMyw2ICsyMyw3IEBAIGJsb2NrcXVvdGUg
aW50ZXJmYWNlTmFtZT1IVE1MUXVvdGVFbGVtZW50CiBib2R5CiBiciBpbnRlcmZhY2VOYW1lPUhU
TUxCUkVsZW1lbnQKIGJ1dHRvbiBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKK2MgaW50ZXJm
YWNlTmFtZT1IVE1MRWxlbWVudAogY2FudmFzCiBjYXB0aW9uIGludGVyZmFjZU5hbWU9SFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQKIGNlbnRlciBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CkBAIC0x
MzUsNiArMTM2LDcgQEAgdHJhY2sgd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUsIGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiB0dCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiB1IGludGVy
ZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHVsIGludGVyZmFjZU5hbWU9SFRNTFVMaXN0RWxlbWVudAor
diBpbnRlcmZhY2VOYW1lPUhUTUxRdW90ZUVsZW1lbnQKIHZhciBpbnRlcmZhY2VOYW1lPUhUTUxF
bGVtZW50CiB2aWRlbyB3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZSwgY29uZGl0aW9uYWw9
VklERU8sIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKIHdiciBpbnRlcmZhY2VOYW1l
PUhUTUxFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAK
aW5kZXggMzJiNGY0Zi4uZTU5ZTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcApAQCAtMjA2LDcgKzIwNiw2IEBAIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNr
Q3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91Ymxl
CiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9wYXVzZU9uRXhpdChmYWxzZSkKICAg
ICAsIG1fc25hcFRvTGluZXModHJ1ZSkKLSAgICAsIG1faGFzSW5uZXJUaW1lc3RhbXBzKGZhbHNl
KQogICAgICwgbV9hbGxEb2N1bWVudE5vZGVzKEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpCiAgICAgLCBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hh
bmdlKHRydWUpCiAgICAgLCBtX2Rpc3BsYXlUcmVlKFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgdGhpcykpCkBA
IC00ODEsMjcgKzQ4MCw2MSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6aW52YWxpZGF0ZUN1ZUluZGV4
KCkKICAgICBtX2N1ZUluZGV4ID0gaW52YWxpZEN1ZUluZGV4OwogfQogCi1QYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKCkKK3ZvaWQgVGV4dFRy
YWNrQ3VlOjpjcmVhdGVXZWJWVFROb2RlVHJlZSgpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNsb25lZEZyYWdtZW50OwotICAgIERvY3VtZW50KiBkb2N1bWVudDsKLQogICAgIGlm
ICghbV9kb2N1bWVudEZyYWdtZW50KSB7Ci0gICAgICAgIG1faGFzSW5uZXJUaW1lc3RhbXBzID0g
ZmFsc2U7CiAgICAgICAgIG1fZG9jdW1lbnRGcmFnbWVudCA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRl
KDAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9t
Q3VlVGV4dChtX2NvbnRlbnQpOwotCiAgICAgICAgIGlmICghbV9kb2N1bWVudEZyYWdtZW50KQot
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KIAotICAg
ICAgICBmb3IgKE5vZGUgKmNoaWxkID0gbV9kb2N1bWVudEZyYWdtZW50LT5maXJzdENoaWxkKCk7
ICFtX2hhc0lubmVyVGltZXN0YW1wcyAmJiBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgewotICAgICAgICAgICAgaWYgKGNoaWxkLT5ub2RlTmFtZSgpID09ICJ0aW1lc3RhbXAi
KQotICAgICAgICAgICAgICAgIG1faGFzSW5uZXJUaW1lc3RhbXBzID0gdHJ1ZTsKK3ZvaWQgVGV4
dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShQYXNzUmVmUHRyPE5vZGU+IFdlYlZU
VE5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gcm9vdCkKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkTm9kZTsKKyAgICBmb3IgKE5vZGUqIG4gPSBXZWJW
VFROb2RlLT5maXJzdENoaWxkKCk7IG4gJiYgIWVjOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewor
ICAgICAgICBjbG9uZWROb2RlID0gMDsKKyAgICAgICAgLy8gU3BlY3MgcmVxdWlyZSB2b2ljZSBl
bGVtZW50cyB0byBiZSBxVGFncyBhbmQgY2xhc3MgZWxlbWVudHMgc3BhbnMgZm9yIERPTSB0cmVl
cy4KKyAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobiktPmxvY2Fs
TmFtZSgpID09IEhUTUxOYW1lczo6Y1RhZy5sb2NhbE5hbWUoKSkKKyAgICAgICAgICAgIGNsb25l
ZE5vZGUgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHNwYW5UYWcsIHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgICAgIGVsc2UgaWYgKG4tPmlzRWxl
bWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobiktPmxvY2FsTmFtZSgpID09IEhUTUxOYW1lczo6dlRh
Zy5sb2NhbE5hbWUoKSkKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSBIVE1MRWxlbWVudDo6Y3Jl
YXRlKHFUYWcsIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KSk7CisKKyAgICAgICAgaWYgKCFjbG9uZWROb2RlKQorICAgICAgICAgICAgY2xvbmVkTm9kZSA9
IG4tPmNsb25lTm9kZShmYWxzZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdG9FbGVt
ZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCB0b0VsZW1lbnQo
biktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpKTsKKyAgICAgICAgICAgIHRvRWxlbWVudChjbG9u
ZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKHRpdGxlQXR0ciwgdG9FbGVtZW50KG4pLT5nZXRB
dHRyaWJ1dGUodGl0bGVBdHRyKSk7CiAgICAgICAgIH0KKyAgICAgICAgcm9vdC0+YXBwZW5kQ2hp
bGQoY2xvbmVkTm9kZSwgZWMpOworICAgICAgICBjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShuLCBj
bG9uZWROb2RlKTsKICAgICB9Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4
dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudDsgCisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25lZEZyYWdtZW50OwogCisgICAgY3JlYXRl
V2ViVlRUTm9kZVRyZWUoKTsKICAgICBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1l
bnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb3B5V2ViVlRUTm9kZVRvRE9NVHJl
ZShtX2RvY3VtZW50RnJhZ21lbnQsIGNsb25lZEZyYWdtZW50KTsKKworICAgIHJldHVybiBjbG9u
ZWRGcmFnbWVudC5yZWxlYXNlKCk7Cit9CisgICAgCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IFRleHRUcmFja0N1ZTo6Z2V0Q3VlUmVuZGVyaW5nVHJlZSgpCit7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50OworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsK
KyAgICAKKyAgICBjcmVhdGVXZWJWVFROb2RlVHJlZSgpOworICAgIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIAorICAgIGNs
b25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBt
X2RvY3VtZW50RnJhZ21lbnQtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7
CiAKICAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQucmVsZWFzZSgpOwpAQCAtNjk1LDEzICs3Mjgs
MTIgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGZsb2F0IG1vdmllVGlt
ZSkKICAgICBpZiAoIXRyYWNrKCktPmlzUmVuZGVyZWQoKSkKICAgICAgIHJldHVybjsKIAotCiAg
ICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBzZXQuCiAgICAgbV9hbGxEb2N1bWVudE5v
ZGVzLT5yZW1vdmVDaGlsZHJlbigpOwogICAgIG1fYWxsRG9jdW1lbnROb2Rlcy0+c2V0UHNldWRv
KGFsbE5vZGVzU2hhZG93UHNldWRvSWQoKSk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHR3byBzZXRz
IGNvbnRhaW5pbmcgcGFzdCBhbmQgZnV0dXJlIFdlYlZUVCBvYmplY3RzLgotICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiByZWZlcmVuY2VUcmVlID0gZ2V0Q3VlQXNIVE1MKCk7CisgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IHJlZmVyZW5jZVRyZWUgPSBnZXRDdWVSZW5kZXJpbmdUcmVl
KCk7CiAKICAgICBtX2FsbERvY3VtZW50Tm9kZXMtPmFwcGVuZENoaWxkKHJlZmVyZW5jZVRyZWUp
OwogICAgIG1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMobV9hbGxEb2N1bWVudE5vZGVzLmdldCgpLCBz
dGFydFRpbWUoKSwgbW92aWVUaW1lKTsKQEAgLTc0Miw5ICs3NzQsNiBAQCBQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZUJveD4gVGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5VHJlZSgpCiAgICAgLy8gbm9y
bWFsbHkgd291bGQgaW4gQ1NTLCBpdCBpcyBpbnN0ZWFkIGZvcmNpYmx5IHdyYXBwZWQgYXQgdGhl
IGJveCdzIGVkZ2UuKQogICAgIG1fZGlzcGxheVRyZWUtPmFwcGx5Q1NTUHJvcGVydGllcygpOwog
Ci0gICAgaWYgKG1faGFzSW5uZXJUaW1lc3RhbXBzKQotICAgICAgICB1cGRhdGVEaXNwbGF5VHJl
ZSh0cmFjaygpLT5tZWRpYUVsZW1lbnQoKS0+Y3VycmVudFRpbWUoKSk7Ci0KICAgICBtX2Rpc3Bs
YXlUcmVlU2hvdWxkQ2hhbmdlID0gZmFsc2U7CiAKICAgICAvLyAxMC4xNS4gTGV0IGN1ZSdzIHRl
eHQgdHJhY2sgY3VlIGRpc3BsYXkgc3RhdGUgaGF2ZSB0aGUgQ1NTIGJveGVzIGluCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA5MzA4NTU2Li4yYjU5MGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTEyNSw2ICsxMjUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ3VlSW5kZXgoKTsKIAogICAgIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7CisgICAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBnZXRDdWVSZW5kZXJpbmdUcmVlKCk7CiAKICAgICB1c2luZyBFdmVu
dFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PikgT1ZFUlJJREU7CkBAIC0yMDcsNyArMjA4LDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fcGF1c2VPbkV4aXQ7CiAgICAgYm9vbCBtX3NuYXBUb0xpbmVzOwogCi0gICAg
Ym9vbCBtX2hhc0lubmVyVGltZXN0YW1wczsKICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IG1f
YWxsRG9jdW1lbnROb2RlczsKIAogICAgIGJvb2wgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZTsK
QEAgLTIyMSw2ICsyMjEsOSBAQCBwcml2YXRlOgogICAgIGludCBtX2Rpc3BsYXlTaXplOwogCiAg
ICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gbV9kaXNwbGF5UG9zaXRpb247CisKKyAgICB2b2lk
IGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7CisgICAgdm9pZCBjb3B5V2ViVlRUTm9kZVRvRE9NVHJl
ZShQYXNzUmVmUHRyPE5vZGU+IFdlYlZUVE5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gcm9vdCk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKaW5kZXggMjk3ZTU5OS4uMGFiMDE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMzU5LDE0ICszNTksMTQgQEAgdm9pZCBX
ZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgICAgICBpZiAoaXNSZWNvZ25pemVkVGFnKHRva2VuVGFnTmFtZSkpCiAgICAgICAgICAgICBj
aGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOwogICAgICAgICBl
bHNlIGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9
PSAnYycpCi0gICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoc3BhblRhZywg
ZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGNUYWcs
IGRvY3VtZW50KTsKICAgICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEg
JiYgbV90b2tlbi5uYW1lKClbMF0gPT0gJ3YnKQotICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxl
bWVudDo6Y3JlYXRlKHFUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNoaWxkID0gSFRNTEVs
ZW1lbnQ6OmNyZWF0ZSh2VGFnLCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYgKGNoaWxkKSB7CiAg
ICAgICAgICAgICBpZiAobV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpID4gMCkKICAgICAgICAgICAg
ICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKG1fdG9rZW4u
Y2xhc3NlcygpLmRhdGEoKSwgbV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpKSk7Ci0gICAgICAgICAg
ICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUocVRhZykpCisgICAgICAgICAgICBpZiAoY2hpbGQtPmhh
c1RhZ05hbWUodlRhZykpCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZSh0aXRs
ZUF0dHIsIEF0b21pY1N0cmluZyhtX3Rva2VuLmFubm90YXRpb24oKS5kYXRhKCksIG1fdG9rZW4u
YW5ub3RhdGlvbigpLnNpemUoKSkpOwogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2Vy
QXBwZW5kQ2hpbGQoY2hpbGQpOwogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGNoaWxkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181839</attachid>
            <date>2013-01-08 21:25:14 -0800</date>
            <delta_ts>2013-01-09 13:25:53 -0800</delta_ts>
            <desc>Proposed fix 0.5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17142</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NDMyZmRlLi5hYzBmNmNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEt
MDggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorCiAyMDEzLTAxLTA4ICBTdGVwaGFuaWUgTGV3aXMg
IDxzbGV3aXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFzc2VydGlvbiBmYWlsdXJlIGluIFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dCBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dAppbmRl
eCAzMjc0OGM5Li44OTYwZTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9j
YXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
Y2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0CkBAIC0xLDEzICsxLDE3IEBACiBXRUJWVFQKIAog
MQotMDA6MDAuMDAwIC0tPiAwMDowMS4wMDAKKzAwOjAwLjAwMCAtLT4gMDA6MDAuMjAwCiBMb3J1
bSBpcHN1bQogCiAyCi0wMDowMS4wMDAgLS0+IDAwOjAyLjAwMAorMDA6MDAuMjAwIC0tPiAwMDow
MC40MDAKIDxjLnJlZD5kb2xvciBzaXQgPC9jPjxjLmdyZWVuPmFtZXQsIGNvbnNlY3RldHVyIDwv
Yz48Yy5yZWQyPmFkaXBpc2NpbmcgZWxpdDwvYz4KIAogMwotMDA6MDIuMDAwIC0tPiAwMDowNS4w
MDAKLTwwMDowMi4wMDA+PGM+U3VzcGVuZGlzc2UgYWNjdW1zYW4sIDwvYz48MDA6MDMuMDAwPjxj
Pm1hdXJpcyBzZWQgPC9jPjwwMDowNC4wMDA+PGM+ZXVpc21vZCBwaGFyZXRyYTwvYz4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiswMDowMC40MDAgLS0+IDAwOjAxLjAwMAorPDAwOjAwLjQw
MD48Yz5TdXNwZW5kaXNzZSBhY2N1bXNhbiwgPC9jPjwwMDowMC42MDA+PGM+bWF1cmlzIHNlZCA8
L2M+PDAwOjAwLjgwMD48Yz5ldWlzbW9kIHBoYXJldHJhPC9jPgorCis0CiswMDowMS4wMDAgLS0+
IDAwOjAxLjIwMAorPGM+QWxpcXVhbSBzb2xsaWNpdHVkaW48L2M+IDx2Pm1hc3NhIGFjIG1hZ25h
IHZ1bHB1dGF0ZSBkaWduaXNzaW08L3Y+IDxiPnBvc3VlcmUgZXQgZmVybWVudHVtPC9iPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CmluZGV4IDQwODdiZGYuLmJkYTJk
YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGlu
Zy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1h
dGNoaW5nLWV4cGVjdGVkLnR4dApAQCAtNSwyNSArNSwzNCBAQCBFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogRVhQRUNURUQg
KGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigwLCAxMjgsIDApJykgT0sK
IEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAw
LCAwKScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50VGltZSA9IDIuNSkKK1JVTih2aWRlby5jdXJy
ZW50VGltZSA9IDAuNTAwMDAwMDExOTIwOTI4OSkKIEVWRU5UKHNlZWtlZCkKIAogCiAyLiBUZXN0
IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9wZXJseSBieSB0aGUgJzpmdXR1cmUnIHBz
ZXVkbyBjbGFzcy4KLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09
ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3Vl
Tm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1
dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiBFWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAx
MjgpJykgT0sKIAotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMy41KQorUlVOKHZpZGVvLmN1cnJl
bnRUaW1lID0gMC43KQogRVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCi1FWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sK
K0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAw
LCAxMjgpJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09
ICdyZ2IoMTI4LCAwLCAxMjgpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5v
ZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAxMjgsIDEyOCknKSBPSwogCi1SVU4odmlkZW8uY3VycmVu
dFRpbWUgPSA0LjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjg5ODMzMzMyMzAwMTg2MTUp
CiBFVkVOVChzZWVrZWQpCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xv
ciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSwotRVhQRUNURUQgKGdl
dENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9L
CitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwg
MCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9
PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVO
b2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCisKK1JVTih2aWRlby5jdXJyZW50
VGltZSA9IDEuMDk2NjY2NjQ2MDAzNzIzKQorRVZFTlQoc2Vla2VkKQorCisKKzMuIFRlc3QgdGhh
dCBjdWVzIGFyZSBiZWluZyBtYXRjaGVkIHByb3Blcmx5IGJ5IHRhZy4KK0VYUEVDVEVEIChnZXRD
b21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAxMjgpJykgT0sKK0VY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDApJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdy
Z2IoMCwgMjU1LCAwKScpIE9LCiBFTkQgT0YgVEVTVAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbCBiL0xheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sCmluZGV4IDgxNDViMmMuLjRlY2JhM2UgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1s
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sCkBA
IC04LDEwICs4LDEyIEBACiAgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWNvbnRyb2xzLmpz
Pjwvc2NyaXB0PgogCiAgICAgICAgIDxzdHlsZT4KLQorICAgICAgICB2aWRlbzo6Y3VlKGMpIHtj
b2xvcjogcHVycGxlfQorICAgICAgICB2aWRlbzo6Y3VlKHYpIHtjb2xvcjogeWVsbG93fQorICAg
ICAgICB2aWRlbzo6Y3VlKGIpIHtjb2xvcjogbGltZX0KICAgICAgICAgdmlkZW86OmN1ZSgucmVk
LCAucmVkMikgeyBjb2xvcjpyZWQgfQogICAgICAgICAjdGVzdHZpZGVvOjpjdWUoLmdyZWVuKSB7
IGNvbG9yOmdyZWVuIH0KLQorICAgICAgICB2aWRlbzo6Y3VlKDpmdXR1cmUpIHtjb2xvcjogZ3Jh
eX0KICAgICAgICAgPC9zdHlsZT4KIAogICAgICAgICA8c2NyaXB0PgpAQCAtMTksMTAgKzIxLDEx
IEBACiAgICAgICAgIHZhciBjdWVOb2RlOwogICAgICAgICB2YXIgc2Vla2VkQ291bnQgPSAwOwog
ICAgICAgICB2YXIgaW5mbyA9IFtbInJnYigyNTUsIDAsIDApIiwgInJnYigwLCAxMjgsIDApIiwg
InJnYigyNTUsIDAsIDApIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1LCAy
NTUpIiwgInJnYigxMjgsIDEyOCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiXSwKLSAgICAg
ICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDI1NSwgMjU1LCAyNTUp
IiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAotICAgICAgICAgICAgICAgICAgICBbInJnYigyNTUs
IDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDI1NSwgMjU1LCAyNTUpIl1d
OwotICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgWyJyZ2IoMTI4LCAwLCAxMjgpIiwgInJn
YigxMjgsIDEyOCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiXSwKKyAgICAgICAgICAgICAg
ICAgICAgWyJyZ2IoMTI4LCAwLCAxMjgpIiwgInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwg
MTI4LCAxMjgpIl0sCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJy
Z2IoMTI4LCAwLCAxMjgpIiwgInJnYigxMjgsIDAsIDEyOCkiXSwKKyAgICAgICAgICAgICAgICAg
ICAgWyJyZ2IoMTI4LCAwLCAxMjgpIiwgInJnYigyNTUsIDI1NSwgMCkiLCAicmdiKDAsIDI1NSwg
MCkiXV07CisKICAgICAgICAgZnVuY3Rpb24gc2tpcE5vbkVsZW1lbnRzKHJvb3QpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG5leHRFbGVtZW50U2libGluZyA9IHJvb3Q7CkBAIC00MSw2ICs0NCwx
MCBAQAogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjIuIFRlc3Qg
dGhhdCBjdWVzIGFyZSBiZWluZyBtYXRjaGVkIHByb3Blcmx5IGJ5IHRoZSAnOmZ1dHVyZScgcHNl
dWRvIGNsYXNzLiIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChzZWVrZWRDb3VudCA9PSA0KSB7
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMy4gVGVzdCB0aGF0
IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGFnLiIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBjdWVOb2RlID0gc2tpcE5vbkVsZW1lbnRzKHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvLCAnYWxsLW5vZGVzJykuZmlyc3RDaGlsZCk7CkBAIC01NSw3ICs2Miw3
IEBACiAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAgICAgICAgICBydW4oInZpZGVv
LmN1cnJlbnRUaW1lID0gIiArICh2aWRlby5jdXJyZW50VGltZSArIDEpKTsKKyAgICAgICAgICAg
ICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gIiArICh2aWRlby5jdXJyZW50VGltZSArIDAu
MikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY2LDcgKzczLDcgQEAKICAgICAg
ICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJy4uL2NvbnRlbnQvdGVz
dCcpOwogICAgICAgICAgICAgdmlkZW8uaWQgPSAidGVzdHZpZGVvIjsKICAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgnc2Vla2VkJywgc2Vla2VkKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRpbWUgPSAxLjU7IH0p
OworICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uKCkg
eyB2aWRlby5jdXJyZW50VGltZSA9IDAuMzsgfSk7CiAgICAgICAgIH0KIAogICAgICAgICA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3ZmZlNzYwLi5hZWI5NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTMtMDEtMDggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQg
OjpjdWUgcHNldWRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDU0ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIHRhZyBtYXRjaGluZyBmb3IgdGhlIFdlYlZU
VCBzcGVjaWZpYyB0YWdzICJjIiBhbmQgInYiLiBBbGwgY29tbW9uIGh0bWwKKyAgICAgICAgdGFn
cyBsaWtlICJiIiBhbmQgImkiIGFyZSBoYW5kbGVkIHdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhl
IGNvZGUuIENyZWF0aW5nIGEgcmVuZGVyaW5nIHRyZWUgYW5kIERPTSB0cmVlIG5vdworICAgICAg
ICB1c2UgZGlmZmVyZW50IGNvZGUgcGF0aHMuIFRoZXkgYm90aCBhcmUgbWFkZSBieSBjbG9uaW5n
IGFuZCBtb2RpZnlpbmcgdGhlIHRyZWUgcHJvZHVjZWQgYnkgdGhlIHBhcnNlci4gQWxzbyByZW1v
dmVkCisgICAgICAgIG1faGFzSW5uZXJUaW1lc3RhbXBzIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdHMgd2VyZSBtb2RpZmllZCB0byBjb3ZlciB0
aGlzIGNhc2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwOiB2VGFnIHNo
b3VsZCBiZSBzdXBwb3J0ZWQgdGhlIHdheSBxVGFnIGlzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFF1b3RlRWxlbWVudDo6SFRNTFF1b3RlRWxlbWVudCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFF1b3RlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKTogZGl0dG8uCisgICAgICAgICogaHRt
bC9IVE1MVGFnTmFtZXMuaW46IGFkZGVkICJjIiBhbmQgInYiIHRhZ3Mgc3VwcG9ydC4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OlRleHRUcmFja0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmNyZWF0ZVdlYlZUVE5vZGVUcmVlKTogcGFyc2UgdGhlIGN1ZSBpZiBpdCBoYXNuJ3QgYmVlbiBw
YXJzZWQgYmVmb3JlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRU
Tm9kZVRvRE9NVHJlZSk6IGNsb25lIGFuZCBwcmVwYXJlIGEgbm9kZSBmb3IgdXNpbmcgaW4gdGhl
IERPTSB0cmVlIGFjY29yZGluZyB0byBzcGVjcy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6Z2V0Q3VlQXNIVE1MKTogZ2V0IGEgRE9NIHRyZWUgZm9yIHRoZSBjdWUuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZVJlbmRlcmluZ1RyZWUpOiBjcmVhdGUgYSBy
ZW5kZXJpbmcgdHJlZSAobWFpbiB0cmVlIGlzIGp1c3QgYmVpbmcgY2xvbmVkIGZvciBub3cpLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjp1cGRhdGVEaXNwbGF5VHJlZSk6IHVzZSBn
ZXRDdWVSZW5kZXJpbmdUcmVlIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVuZGVyaW5nIHRyZWUuCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldERpc3BsYXlUcmVlKTogY29kZSBjbGVh
bnVwLCByZW1vdmVkIG1faGFzSW5uZXJUaW1lU3RhbXBzLgorICAgICAgICAqIGh0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmg6CisgICAgICAgIChUZXh0VHJhY2tDdWUpOgorICAgICAgICAqIGh0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcDogY3JlYXRlIGVsZW1lbnRzIHdpdGggcmlnaHQgdGFncyB3
aGVuIHBhcnNpbmcuCisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRy
ZWVGcm9tVG9rZW4pOgorCiAyMDEzLTAxLTA4ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRS
ZW5kZXJlciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBsYXllciBhd2FyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAKaW5kZXggZDViZTJmMi4uZjdjNzMyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBpbmxpbmUgSFRNTFF1b3RlRWxlbWVudDo6SFRNTFF1b3Rl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKLSAgICBBU1NFUlQoaGFz
VGFnTmFtZShxVGFnKSB8fCBoYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKTsKKyAgICBBU1NFUlQo
aGFzVGFnTmFtZShxVGFnKSB8fCBoYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpIHx8IGhhc1RhZ05h
bWUodlRhZykpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxRdW90ZUVsZW1lbnQ+IEhUTUxRdW90ZUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkBAIC00NCw3ICs0NCw3IEBAIFBhc3NSZWZQdHI8SFRNTFF1b3RlRWxlbWVudD4gSFRN
TFF1b3RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAKIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFF1b3RlRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewotICAgIGlmIChoYXNUYWdOYW1l
KHFUYWcpKQorICAgIGlmIChoYXNUYWdOYW1lKHFUYWcpIHx8IGhhc1RhZ05hbWUodlRhZykpCiAg
ICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnNldFVzZXNCZWZvcmVB
ZnRlclJ1bGVzT3ZlcnJpZGUodHJ1ZSk7CiAKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Omluc2Vy
dGVkSW50byhpbnNlcnRpb25Qb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWdOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCmlu
ZGV4IGQ2MjNkZDkuLmZhYjMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCkBA
IC0yMyw2ICsyMyw3IEBAIGJsb2NrcXVvdGUgaW50ZXJmYWNlTmFtZT1IVE1MUXVvdGVFbGVtZW50
CiBib2R5CiBiciBpbnRlcmZhY2VOYW1lPUhUTUxCUkVsZW1lbnQKIGJ1dHRvbiBjb25zdHJ1Y3Rv
ck5lZWRzRm9ybUVsZW1lbnQKK2MgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogY2FudmFzCiBj
YXB0aW9uIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQKIGNlbnRlciBpbnRl
cmZhY2VOYW1lPUhUTUxFbGVtZW50CkBAIC0xMzUsNiArMTM2LDcgQEAgdHJhY2sgd3JhcHBlck9u
bHlJZk1lZGlhSXNBdmFpbGFibGUsIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiB0dCBpbnRlcmZh
Y2VOYW1lPUhUTUxFbGVtZW50CiB1IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHVsIGludGVy
ZmFjZU5hbWU9SFRNTFVMaXN0RWxlbWVudAordiBpbnRlcmZhY2VOYW1lPUhUTUxRdW90ZUVsZW1l
bnQKIHZhciBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiB2aWRlbyB3cmFwcGVyT25seUlmTWVk
aWFJc0F2YWlsYWJsZSwgY29uZGl0aW9uYWw9VklERU8sIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVk
QnlQYXJzZXIKIHdiciBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggYTVjOGYwMC4uNzI3YzMyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMjA2LDcgKzIwNiw2
IEBAIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAg
ICwgbV9wYXVzZU9uRXhpdChmYWxzZSkKICAgICAsIG1fc25hcFRvTGluZXModHJ1ZSkKLSAgICAs
IG1faGFzSW5uZXJUaW1lc3RhbXBzKGZhbHNlKQogICAgICwgbV9hbGxEb2N1bWVudE5vZGVzKEhU
TUxEaXZFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpCiAg
ICAgLCBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlKHRydWUpCiAgICAgLCBtX2Rpc3BsYXlUcmVl
KFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KSwgdGhpcykpCkBAIC00ODEsMjcgKzQ4MCw2MSBAQCB2b2lkIFRleHRU
cmFja0N1ZTo6aW52YWxpZGF0ZUN1ZUluZGV4KCkKICAgICBtX2N1ZUluZGV4ID0gaW52YWxpZEN1
ZUluZGV4OwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6
Z2V0Q3VlQXNIVE1MKCkKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpjcmVhdGVXZWJWVFROb2RlVHJlZSgp
CiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25lZEZyYWdtZW50OwotICAgIERv
Y3VtZW50KiBkb2N1bWVudDsKLQogICAgIGlmICghbV9kb2N1bWVudEZyYWdtZW50KSB7Ci0gICAg
ICAgIG1faGFzSW5uZXJUaW1lc3RhbXBzID0gZmFsc2U7CiAgICAgICAgIG1fZG9jdW1lbnRGcmFn
bWVudCA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRlKDAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkt
PmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChtX2NvbnRlbnQpOwotCiAgICAgICAg
IGlmICghbV9kb2N1bWVudEZyYWdtZW50KQotICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KIAotICAgICAgICBmb3IgKE5vZGUgKmNoaWxkID0gbV9kb2N1
bWVudEZyYWdtZW50LT5maXJzdENoaWxkKCk7ICFtX2hhc0lubmVyVGltZXN0YW1wcyAmJiBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKGNoaWxk
LT5ub2RlTmFtZSgpID09ICJ0aW1lc3RhbXAiKQotICAgICAgICAgICAgICAgIG1faGFzSW5uZXJU
aW1lc3RhbXBzID0gdHJ1ZTsKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9N
VHJlZShQYXNzUmVmUHRyPE5vZGU+IFdlYlZUVE5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gcm9vdCkK
K3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkTm9k
ZTsKKyAgICBmb3IgKE5vZGUqIG4gPSBXZWJWVFROb2RlLT5maXJzdENoaWxkKCk7IG4gJiYgIWVj
OyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBjbG9uZWROb2RlID0gMDsKKyAgICAg
ICAgLy8gU3BlY3MgcmVxdWlyZSB2b2ljZSBlbGVtZW50cyB0byBiZSBxVGFncyBhbmQgY2xhc3Mg
ZWxlbWVudHMgc3BhbnMgZm9yIERPTSB0cmVlcy4KKyAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5v
ZGUoKSAmJiB0b0VsZW1lbnQobiktPmxvY2FsTmFtZSgpID09IEhUTUxOYW1lczo6Y1RhZy5sb2Nh
bE5hbWUoKSkKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHNw
YW5UYWcsIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7
CisgICAgICAgIGVsc2UgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobiktPmxv
Y2FsTmFtZSgpID09IEhUTUxOYW1lczo6dlRhZy5sb2NhbE5hbWUoKSkKKyAgICAgICAgICAgIGNs
b25lZE5vZGUgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHFUYWcsIHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisKKyAgICAgICAgaWYgKCFjbG9uZWROb2Rl
KQorICAgICAgICAgICAgY2xvbmVkTm9kZSA9IG4tPmNsb25lTm9kZShmYWxzZSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgdG9FbGVtZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyLCB0b0VsZW1lbnQobiktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpKTsK
KyAgICAgICAgICAgIHRvRWxlbWVudChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKHRp
dGxlQXR0ciwgdG9FbGVtZW50KG4pLT5nZXRBdHRyaWJ1dGUodGl0bGVBdHRyKSk7CiAgICAgICAg
IH0KKyAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoY2xvbmVkTm9kZSwgZWMpOworICAgICAgICBj
b3B5V2ViVlRUTm9kZVRvRE9NVHJlZShuLCBjbG9uZWROb2RlKTsKICAgICB9Cit9CisKK1Bhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQorewor
ICAgIERvY3VtZW50KiBkb2N1bWVudDsgCisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNs
b25lZEZyYWdtZW50OwogCisgICAgY3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsKICAgICBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAog
ICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShtX2RvY3VtZW50RnJhZ21lbnQsIGNsb25lZEZy
YWdtZW50KTsKKworICAgIHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxlYXNlKCk7Cit9CisgICAg
CitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0Q3VlUmVuZGVy
aW5nVHJlZSgpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50OworICAgIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsKKyAgICAKKyAgICBjcmVhdGVXZWJWVFROb2RlVHJl
ZSgpOworICAgIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgIAorICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2RvY3VtZW50RnJhZ21lbnQtPmNsb25lQ2hpbGRO
b2RlcyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQu
cmVsZWFzZSgpOwpAQCAtNjk5LDcgKzczMiw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjp1cGRhdGVE
aXNwbGF5VHJlZShmbG9hdCBtb3ZpZVRpbWUpCiAgICAgbV9hbGxEb2N1bWVudE5vZGVzLT5yZW1v
dmVDaGlsZHJlbigpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB0d28gc2V0cyBjb250YWluaW5nIHBh
c3QgYW5kIGZ1dHVyZSBXZWJWVFQgb2JqZWN0cy4KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gcmVmZXJlbmNlVHJlZSA9IGdldEN1ZUFzSFRNTCgpOworICAgIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiByZWZlcmVuY2VUcmVlID0gZ2V0Q3VlUmVuZGVyaW5nVHJlZSgpOwogCiAgICAgbV9h
bGxEb2N1bWVudE5vZGVzLT5hcHBlbmRDaGlsZChyZWZlcmVuY2VUcmVlKTsKICAgICBtYXJrRnV0
dXJlQW5kUGFzdE5vZGVzKG1fYWxsRG9jdW1lbnROb2Rlcy5nZXQoKSwgc3RhcnRUaW1lKCksIG1v
dmllVGltZSk7CkBAIC03NDEsOSArNzc0LDYgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+
IFRleHRUcmFja0N1ZTo6Z2V0RGlzcGxheVRyZWUoKQogICAgIC8vIG5vcm1hbGx5IHdvdWxkIGlu
IENTUywgaXQgaXMgaW5zdGVhZCBmb3JjaWJseSB3cmFwcGVkIGF0IHRoZSBib3gncyBlZGdlLikK
ICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBseUNTU1Byb3BlcnRpZXMoKTsKIAotICAgIGlmIChtX2hh
c0lubmVyVGltZXN0YW1wcykKLSAgICAgICAgdXBkYXRlRGlzcGxheVRyZWUodHJhY2soKS0+bWVk
aWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkpOwotCiAgICAgbV9kaXNwbGF5VHJlZVNob3VsZENo
YW5nZSA9IGZhbHNlOwogCiAgICAgLy8gMTAuMTUuIExldCBjdWUncyB0ZXh0IHRyYWNrIGN1ZSBk
aXNwbGF5IHN0YXRlIGhhdmUgdGhlIENTUyBib3hlcyBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggOTMwODU1Ni4uMmI1OTBmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW52YWxpZGF0ZUN1ZUluZGV4KCk7CiAKICAgICBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGdldEN1ZUFzSFRNTCgpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZ2V0Q3VlUmVuZGVyaW5nVHJlZSgpOwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3Bh
dGNoRXZlbnQ7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pIE9WRVJSSURFOwpAQCAtMjA3LDcgKzIwOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Bh
dXNlT25FeGl0OwogICAgIGJvb2wgbV9zbmFwVG9MaW5lczsKIAotICAgIGJvb2wgbV9oYXNJbm5l
clRpbWVzdGFtcHM7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBtX2FsbERvY3VtZW50Tm9k
ZXM7CiAKICAgICBib29sIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2U7CkBAIC0yMjEsNiArMjIx
LDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kaXNwbGF5U2l6ZTsKIAogICAgIHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+IG1fZGlzcGxheVBvc2l0aW9uOworCisgICAgdm9pZCBjcmVhdGVXZWJWVFRO
b2RlVHJlZSgpOworICAgIHZvaWQgY29weVdlYlZUVE5vZGVUb0RPTVRyZWUoUGFzc1JlZlB0cjxO
b2RlPiBXZWJWVFROb2RlLCBQYXNzUmVmUHRyPE5vZGU+IHJvb3QpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
CmluZGV4IDI5N2U1OTkuLjBhYjAxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKQEAgLTM1OSwxNCArMzU5LDE0IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpj
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgaWYgKGlz
UmVjb2duaXplZFRhZyh0b2tlblRhZ05hbWUpKQogICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxl
bWVudDo6Y3JlYXRlKHRhZ05hbWUsIGRvY3VtZW50KTsKICAgICAgICAgZWxzZSBpZiAobV90b2tl
bi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1lKClbMF0gPT0gJ2MnKQotICAgICAg
ICAgICAgY2hpbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHNwYW5UYWcsIGRvY3VtZW50KTsKKyAg
ICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShjVGFnLCBkb2N1bWVudCk7CiAg
ICAgICAgIGVsc2UgaWYgKG1fdG9rZW4ubmFtZSgpLnNpemUoKSA9PSAxICYmIG1fdG9rZW4ubmFt
ZSgpWzBdID09ICd2JykKLSAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShx
VGFnLCBkb2N1bWVudCk7CisgICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUo
dlRhZywgZG9jdW1lbnQpOwogCiAgICAgICAgIGlmIChjaGlsZCkgewogICAgICAgICAgICAgaWYg
KG1fdG9rZW4uY2xhc3NlcygpLnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNl
dEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKS5kYXRh
KCksIG1fdG9rZW4uY2xhc3NlcygpLnNpemUoKSkpOwotICAgICAgICAgICAgaWYgKGNoaWxkLT5o
YXNUYWdOYW1lKHFUYWcpKQorICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHZUYWcp
KQogICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUodGl0bGVBdHRyLCBBdG9taWNT
dHJpbmcobV90b2tlbi5hbm5vdGF0aW9uKCkuZGF0YSgpLCBtX3Rva2VuLmFubm90YXRpb24oKS5z
aXplKCkpKTsKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKGNo
aWxkKTsKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBjaGlsZDsK
</data>
<flag name="commit-queue"
          id="199617"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181974</attachid>
            <date>2013-01-09 13:25:53 -0800</date>
            <delta_ts>2013-01-13 04:17:25 -0800</delta_ts>
            <desc>Proposd fix 0.6</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17161</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NDMyZmRlLi5hYzBmNmNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEt
MDggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorCiAyMDEzLTAxLTA4ICBTdGVwaGFuaWUgTGV3aXMg
IDxzbGV3aXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFzc2VydGlvbiBmYWlsdXJlIGluIFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dCBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dAppbmRl
eCAzMjc0OGM5Li44OTYwZTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9j
YXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
Y2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0CkBAIC0xLDEzICsxLDE3IEBACiBXRUJWVFQKIAog
MQotMDA6MDAuMDAwIC0tPiAwMDowMS4wMDAKKzAwOjAwLjAwMCAtLT4gMDA6MDAuMjAwCiBMb3J1
bSBpcHN1bQogCiAyCi0wMDowMS4wMDAgLS0+IDAwOjAyLjAwMAorMDA6MDAuMjAwIC0tPiAwMDow
MC40MDAKIDxjLnJlZD5kb2xvciBzaXQgPC9jPjxjLmdyZWVuPmFtZXQsIGNvbnNlY3RldHVyIDwv
Yz48Yy5yZWQyPmFkaXBpc2NpbmcgZWxpdDwvYz4KIAogMwotMDA6MDIuMDAwIC0tPiAwMDowNS4w
MDAKLTwwMDowMi4wMDA+PGM+U3VzcGVuZGlzc2UgYWNjdW1zYW4sIDwvYz48MDA6MDMuMDAwPjxj
Pm1hdXJpcyBzZWQgPC9jPjwwMDowNC4wMDA+PGM+ZXVpc21vZCBwaGFyZXRyYTwvYz4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiswMDowMC40MDAgLS0+IDAwOjAxLjAwMAorPDAwOjAwLjQw
MD48Yz5TdXNwZW5kaXNzZSBhY2N1bXNhbiwgPC9jPjwwMDowMC42MDA+PGM+bWF1cmlzIHNlZCA8
L2M+PDAwOjAwLjgwMD48Yz5ldWlzbW9kIHBoYXJldHJhPC9jPgorCis0CiswMDowMS4wMDAgLS0+
IDAwOjAxLjIwMAorPGM+QWxpcXVhbSBzb2xsaWNpdHVkaW48L2M+IDx2Pm1hc3NhIGFjIG1hZ25h
IHZ1bHB1dGF0ZSBkaWduaXNzaW08L3Y+IDxiPnBvc3VlcmUgZXQgZmVybWVudHVtPC9iPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CmluZGV4IDQwODdiZGYuLmUzZjhl
ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGlu
Zy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1h
dGNoaW5nLWV4cGVjdGVkLnR4dApAQCAtNSwyNSArNSwzNCBAQCBFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogRVhQRUNURUQg
KGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigwLCAxMjgsIDApJykgT0sK
IEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAw
LCAwKScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50VGltZSA9IDIuNSkKK1JVTih2aWRlby5jdXJy
ZW50VGltZSA9IDAuNSkKIEVWRU5UKHNlZWtlZCkKIAogCiAyLiBUZXN0IHRoYXQgY3VlcyBhcmUg
YmVpbmcgbWF0Y2hlZCBwcm9wZXJseSBieSB0aGUgJzpmdXR1cmUnIHBzZXVkbyBjbGFzcy4KLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigxMjgsIDAsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9k
ZSkuY29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAxMjgpJykgT0sKIAotUlVO
KHZpZGVvLmN1cnJlbnRUaW1lID0gMy41KQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC43KQog
RVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ig
PT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VYUEVDVEVEIChnZXRD
b21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAxMjgpJykgT0sKK0VY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAx
MjgpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdy
Z2IoMTI4LCAxMjgsIDEyOCknKSBPSwogCi1SVU4odmlkZW8uY3VycmVudFRpbWUgPSA0LjUpCitS
VU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjkpCiBFVkVOVChzZWVrZWQpCi1FWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sK
LUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAy
NTUsIDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ig
PT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4
KScpIE9LCisKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDEuMSkKK0VWRU5UKHNlZWtlZCkKKwor
CiszLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9wZXJseSBieSB0YWcuCitF
WFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwg
MTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAn
cmdiKDI1NSwgMjU1LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2Rl
KS5jb2xvciA9PSAncmdiKDAsIDI1NSwgMCknKSBPSwogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbAppbmRleCA4MTQ1YjJj
Li4zMjg2MzhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3Mt
bWF0Y2hpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0
Y2hpbmcuaHRtbApAQCAtOCwxMCArOCwxMiBAQAogICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRp
YS1jb250cm9scy5qcz48L3NjcmlwdD4KIAogICAgICAgICA8c3R5bGU+Ci0KKyAgICAgICAgdmlk
ZW86OmN1ZShjKSB7Y29sb3I6IHB1cnBsZX0KKyAgICAgICAgdmlkZW86OmN1ZSh2KSB7Y29sb3I6
IHllbGxvd30KKyAgICAgICAgdmlkZW86OmN1ZShiKSB7Y29sb3I6IGxpbWV9CiAgICAgICAgIHZp
ZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0KICAgICAgICAgI3Rlc3R2aWRlbzo6
Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9Ci0KKyAgICAgICAgdmlkZW86OmN1ZSg6ZnV0dXJl
KSB7Y29sb3I6IGdyYXl9CiAgICAgICAgIDwvc3R5bGU+CiAKICAgICAgICAgPHNjcmlwdD4KQEAg
LTE5LDEwICsyMSwxMiBAQAogICAgICAgICB2YXIgY3VlTm9kZTsKICAgICAgICAgdmFyIHNlZWtl
ZENvdW50ID0gMDsKICAgICAgICAgdmFyIGluZm8gPSBbWyJyZ2IoMjU1LCAwLCAwKSIsICJyZ2Io
MCwgMTI4LCAwKSIsICJyZ2IoMjU1LCAwLCAwKSJdLAotICAgICAgICAgICAgICAgICAgICBbInJn
YigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAicmdiKDEyOCwgMTI4LCAx
MjgpIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1LCAyNTUpIiwgInJnYigy
NTUsIDI1NSwgMjU1KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiXSwKLSAgICAgICAgICAgICAgICAg
ICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDI1NSwgMjU1LCAyNTUpIiwgInJnYigyNTUs
IDI1NSwgMjU1KSJdXTsKLSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwg
MCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiLCAicmdiKDEyOCwgMTI4LCAxMjgpIl0sCisg
ICAgICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAwLCAxMjgp
IiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAgICBbInJnYigxMjgs
IDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAwLCAxMjgpIl0sCisgICAg
ICAgICAgICAgICAgICAgIFsicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMjU1LCAyNTUsIDApIiwg
InJnYigwLCAyNTUsIDApIl1dOworICAgICAgICB2YXIgc2Vla1RpbWVzID0gWzAuMywgMC41LCAw
LjcsIDAuOSwgMS4xLCAxLjNdOworCiAgICAgICAgIGZ1bmN0aW9uIHNraXBOb25FbGVtZW50cyhy
b290KQogICAgICAgICB7CiAgICAgICAgICAgICBuZXh0RWxlbWVudFNpYmxpbmcgPSByb290OwpA
QCAtNDEsNiArNDUsMTAgQEAKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIyLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9wZXJseSBieSB0aGUg
JzpmdXR1cmUnIHBzZXVkbyBjbGFzcy4iKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc2Vla2Vk
Q291bnQgPT0gNCkgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IjMuIFRlc3QgdGhhdCBjdWVzIGFyZSBiZWluZyBtYXRjaGVkIHByb3Blcmx5IGJ5IHRhZy4iKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY3VlTm9kZSA9IHNraXBOb25FbGVtZW50cyh0
ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2FsbC1ub2RlcycpLmZpcnN0Q2hpbGQpOwpA
QCAtNTUsNyArNjMsNyBAQAogICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICAg
ICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIgKyAodmlkZW8uY3VycmVudFRpbWUgKyAxKSk7
CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIgKyBzZWVrVGltZXNb
c2Vla2VkQ291bnRdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC02Niw3ICs3NCw3
IEBACiAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICcuLi9j
b250ZW50L3Rlc3QnKTsKICAgICAgICAgICAgIHZpZGVvLmlkID0gInRlc3R2aWRlbyI7CiAgICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ3NlZWtlZCcsIHNlZWtlZCk7Ci0gICAgICAgICAgICB3YWl0
Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7IHZpZGVvLmN1cnJlbnRUaW1l
ID0gMS41OyB9KTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBm
dW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRpbWUgPSBzZWVrVGltZXNbMF07IH0pOwogICAgICAg
ICB9CiAKICAgICAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZmZTc2MC4uYWViOTVkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAxLTA4ICBEaW1hIEdvcmJpayAgPGRn
b3JiaWtAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBlbGVtZW50IHR5cGUgc2VsZWN0
b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NDgwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnRlZCB0YWcgbWF0
Y2hpbmcgZm9yIHRoZSBXZWJWVFQgc3BlY2lmaWMgdGFncyAiYyIgYW5kICJ2Ii4gQWxsIGNvbW1v
biBodG1sCisgICAgICAgIHRhZ3MgbGlrZSAiYiIgYW5kICJpIiBhcmUgaGFuZGxlZCB3aXRob3V0
IGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiBDcmVhdGluZyBhIHJlbmRlcmluZyB0cmVlIGFuZCBE
T00gdHJlZSBub3cKKyAgICAgICAgdXNlIGRpZmZlcmVudCBjb2RlIHBhdGhzLiBUaGV5IGJvdGgg
YXJlIG1hZGUgYnkgY2xvbmluZyBhbmQgbW9kaWZ5aW5nIHRoZSB0cmVlIHByb2R1Y2VkIGJ5IHRo
ZSBwYXJzZXIuIEFsc28gcmVtb3ZlZAorICAgICAgICBtX2hhc0lubmVyVGltZXN0YW1wcyBzaW5j
ZSBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHdlcmUg
bW9kaWZpZWQgdG8gY292ZXIgdGhpcyBjYXNlLgorCisgICAgICAgICogaHRtbC9IVE1MUXVvdGVF
bGVtZW50LmNwcDogdlRhZyBzaG91bGQgYmUgc3VwcG9ydGVkIHRoZSB3YXkgcVRhZyBpcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQ6OkhUTUxRdW90ZUVsZW1lbnQpOiBkaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQ6Omluc2VydGVkSW50byk6IGRp
dHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOiBhZGRlZCAiYyIgYW5kICJ2IiB0
YWdzIHN1cHBvcnQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGVXZWJWVFROb2RlVHJlZSk6IHBhcnNlIHRoZSBjdWUg
aWYgaXQgaGFzbid0IGJlZW4gcGFyc2VkIGJlZm9yZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUpOiBjbG9uZSBhbmQgcHJlcGFyZSBhIG5v
ZGUgZm9yIHVzaW5nIGluIHRoZSBET00gdHJlZSBhY2NvcmRpbmcgdG8gc3BlY3MuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6IGdldCBhIERPTSB0cmVlIGZv
ciB0aGUgY3VlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDdWVSZW5kZXJp
bmdUcmVlKTogY3JlYXRlIGEgcmVuZGVyaW5nIHRyZWUgKG1haW4gdHJlZSBpcyBqdXN0IGJlaW5n
IGNsb25lZCBmb3Igbm93KS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRl
RGlzcGxheVRyZWUpOiB1c2UgZ2V0Q3VlUmVuZGVyaW5nVHJlZSBmdW5jdGlvbiB0byBnZXQgdGhl
IHJlbmRlcmluZyB0cmVlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXREaXNw
bGF5VHJlZSk6IGNvZGUgY2xlYW51cCwgcmVtb3ZlZCBtX2hhc0lubmVyVGltZVN0YW1wcy4KKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoVGV4dFRyYWNrQ3Vl
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6IGNyZWF0ZSBlbGVtZW50
cyB3aXRoIHJpZ2h0IHRhZ3Mgd2hlbiBwYXJzaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
UGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKwogMjAxMy0wMS0wOCAgTWF0dCBGYWxr
ZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIgYW5kIG5leHRSZW5kZXJlciB0b3AgbGF5ZXIgYXdh
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCmluZGV4IGQ1YmUyZjIu
LmY3YzczMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcApAQCAt
MzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogaW5saW5lIEhUTUxRdW90
ZUVsZW1lbnQ6OkhUTUxRdW90ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7Ci0gICAgQVNTRVJUKGhhc1RhZ05hbWUocVRhZykgfHwgaGFzVGFnTmFtZShibG9ja3F1b3Rl
VGFnKSk7CisgICAgQVNTRVJUKGhhc1RhZ05hbWUocVRhZykgfHwgaGFzVGFnTmFtZShibG9ja3F1
b3RlVGFnKSB8fCBoYXNUYWdOYW1lKHZUYWcpKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUXVvdGVF
bGVtZW50PiBIVE1MUXVvdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPEhU
TUxRdW90ZUVsZW1lbnQ+IEhUTUxRdW90ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxRdW90
ZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsK
LSAgICBpZiAoaGFzVGFnTmFtZShxVGFnKSkKKyAgICBpZiAoaGFzVGFnTmFtZShxVGFnKSB8fCBo
YXNUYWdOYW1lKHZUYWcpKQogICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlv
bigpLT5zZXRVc2VzQmVmb3JlQWZ0ZXJSdWxlc092ZXJyaWRlKHRydWUpOwogCiAgICAgcmV0dXJu
IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWdOYW1lcy5pbgppbmRleCBkNjIzZGQ5Li5mYWIzMWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWdOYW1lcy5pbgpAQCAtMjMsNiArMjMsNyBAQCBibG9ja3F1b3RlIGludGVyZmFjZU5h
bWU9SFRNTFF1b3RlRWxlbWVudAogYm9keQogYnIgaW50ZXJmYWNlTmFtZT1IVE1MQlJFbGVtZW50
CiBidXR0b24gY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50CitjIGludGVyZmFjZU5hbWU9SFRN
TEVsZW1lbnQKIGNhbnZhcwogY2FwdGlvbiBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZUNhcHRpb25F
bGVtZW50CiBjZW50ZXIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudApAQCAtMTM1LDYgKzEzNiw3
IEBAIHRyYWNrIHdyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlLCBjb25kaXRpb25hbD1WSURF
T19UUkFDSwogdHQgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogdSBpbnRlcmZhY2VOYW1lPUhU
TUxFbGVtZW50CiB1bCBpbnRlcmZhY2VOYW1lPUhUTUxVTGlzdEVsZW1lbnQKK3YgaW50ZXJmYWNl
TmFtZT1IVE1MUXVvdGVFbGVtZW50CiB2YXIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogdmlk
ZW8gd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUsIGNvbmRpdGlvbmFsPVZJREVPLCBjb25z
dHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyCiB3YnIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGE1Yzhm
MDAuLjcyN2MzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAKQEAgLTIwNiw3ICsyMDYsNiBAQCBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZQogICAgICwgbV9p
c0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcGF1c2VPbkV4aXQoZmFsc2UpCiAgICAgLCBtX3NuYXBU
b0xpbmVzKHRydWUpCi0gICAgLCBtX2hhc0lubmVyVGltZXN0YW1wcyhmYWxzZSkKICAgICAsIG1f
YWxsRG9jdW1lbnROb2RlcyhIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCkpKQogICAgICwgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSh0cnVlKQog
ICAgICwgbV9kaXNwbGF5VHJlZShUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZShzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIHRoaXMpKQpAQCAtNDgxLDI3ICs0
ODAsNjEgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmludmFsaWRhdGVDdWVJbmRleCgpCiAgICAgbV9j
dWVJbmRleCA9IGludmFsaWRDdWVJbmRleDsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCit2b2lkIFRleHRUcmFja0N1ZTo6Y3Jl
YXRlV2ViVlRUTm9kZVRyZWUoKQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9u
ZWRGcmFnbWVudDsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQ7Ci0KICAgICBpZiAoIW1fZG9jdW1l
bnRGcmFnbWVudCkgewotICAgICAgICBtX2hhc0lubmVyVGltZXN0YW1wcyA9IGZhbHNlOwogICAg
ICAgICBtX2RvY3VtZW50RnJhZ21lbnQgPSBXZWJWVFRQYXJzZXI6OmNyZWF0ZSgwLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQobV9j
b250ZW50KTsKLQogICAgICAgICBpZiAoIW1fZG9jdW1lbnRGcmFnbWVudCkKLSAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CiAKLSAgICAgICAgZm9yIChO
b2RlICpjaGlsZCA9IG1fZG9jdW1lbnRGcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyAhbV9oYXNJbm5l
clRpbWVzdGFtcHMgJiYgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgICAgIGlmIChjaGlsZC0+bm9kZU5hbWUoKSA9PSAidGltZXN0YW1wIikKLSAgICAgICAg
ICAgICAgICBtX2hhc0lubmVyVGltZXN0YW1wcyA9IHRydWU7Cit2b2lkIFRleHRUcmFja0N1ZTo6
Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUoUGFzc1JlZlB0cjxOb2RlPiBXZWJWVFROb2RlLCBQYXNz
UmVmUHRyPE5vZGU+IHJvb3QpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVm
UHRyPE5vZGU+IGNsb25lZE5vZGU7CisgICAgZm9yIChOb2RlKiBuID0gV2ViVlRUTm9kZS0+Zmly
c3RDaGlsZCgpOyBuICYmICFlYzsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgY2xv
bmVkTm9kZSA9IDA7CisgICAgICAgIC8vIFNwZWNzIHJlcXVpcmUgdm9pY2UgZWxlbWVudHMgdG8g
YmUgcVRhZ3MgYW5kIGNsYXNzIGVsZW1lbnRzIHNwYW5zIGZvciBET00gdHJlZXMuCisgICAgICAg
IGlmIChuLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG4pLT5sb2NhbE5hbWUoKSA9PSBI
VE1MTmFtZXM6OmNUYWcubG9jYWxOYW1lKCkpCisgICAgICAgICAgICBjbG9uZWROb2RlID0gSFRN
TEVsZW1lbnQ6OmNyZWF0ZShzcGFuVGFnLCBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpOworICAgICAgICBlbHNlIGlmIChuLT5pc0VsZW1lbnROb2RlKCkg
JiYgdG9FbGVtZW50KG4pLT5sb2NhbE5hbWUoKSA9PSBIVE1MTmFtZXM6OnZUYWcubG9jYWxOYW1l
KCkpCisgICAgICAgICAgICBjbG9uZWROb2RlID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShxVGFnLCBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworCisgICAg
ICAgIGlmICghY2xvbmVkTm9kZSkKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSBuLT5jbG9uZU5v
ZGUoZmFsc2UpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRvRWxlbWVudChjbG9uZWRO
b2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdG9FbGVtZW50KG4pLT5nZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyKSk7CisgICAgICAgICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQo
KSktPnNldEF0dHJpYnV0ZSh0aXRsZUF0dHIsIHRvRWxlbWVudChuKS0+Z2V0QXR0cmlidXRlKHRp
dGxlQXR0cikpOwogICAgICAgICB9CisgICAgICAgIHJvb3QtPmFwcGVuZENoaWxkKGNsb25lZE5v
ZGUsIGVjKTsKKyAgICAgICAgY29weVdlYlZUVE5vZGVUb0RPTVRyZWUobiwgY2xvbmVkTm9kZSk7
CiAgICAgfQorfQorCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6
Z2V0Q3VlQXNIVE1MKCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQ7IAorICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsKIAorICAgIGNyZWF0ZVdlYlZUVE5vZGVU
cmVlKCk7CiAgICAgZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CiAKICAgICBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29weVdlYlZUVE5vZGVUb0RPTVRyZWUobV9kb2N1bWVu
dEZyYWdtZW50LCBjbG9uZWRGcmFnbWVudCk7CisKKyAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQu
cmVsZWFzZSgpOworfQorICAgIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBUZXh0VHJh
Y2tDdWU6OmdldEN1ZVJlbmRlcmluZ1RyZWUoKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudDsK
KyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVkRnJhZ21lbnQ7CisgICAgCisgICAg
Y3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsKKyAgICBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAKKyAgICBjbG9uZWRGcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgbV9kb2N1bWVudEZy
YWdtZW50LT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQuZ2V0KCkpOwogCiAgICAgcmV0
dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKQEAgLTY5OSw3ICs3MzIsNyBAQCB2b2lkIFRl
eHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQogICAgIG1fYWxs
RG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdHdv
IHNldHMgY29udGFpbmluZyBwYXN0IGFuZCBmdXR1cmUgV2ViVlRUIG9iamVjdHMuCi0gICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IHJlZmVyZW5jZVRyZWUgPSBnZXRDdWVBc0hUTUwoKTsKKyAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcmVmZXJlbmNlVHJlZSA9IGdldEN1ZVJlbmRlcmlu
Z1RyZWUoKTsKIAogICAgIG1fYWxsRG9jdW1lbnROb2Rlcy0+YXBwZW5kQ2hpbGQocmVmZXJlbmNl
VHJlZSk7CiAgICAgbWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhtX2FsbERvY3VtZW50Tm9kZXMuZ2V0
KCksIHN0YXJ0VGltZSgpLCBtb3ZpZVRpbWUpOwpAQCAtNzQxLDkgKzc3NCw2IEBAIFBhc3NSZWZQ
dHI8VGV4dFRyYWNrQ3VlQm94PiBUZXh0VHJhY2tDdWU6OmdldERpc3BsYXlUcmVlKCkKICAgICAv
LyBub3JtYWxseSB3b3VsZCBpbiBDU1MsIGl0IGlzIGluc3RlYWQgZm9yY2libHkgd3JhcHBlZCBh
dCB0aGUgYm94J3MgZWRnZS4pCiAgICAgbV9kaXNwbGF5VHJlZS0+YXBwbHlDU1NQcm9wZXJ0aWVz
KCk7CiAKLSAgICBpZiAobV9oYXNJbm5lclRpbWVzdGFtcHMpCi0gICAgICAgIHVwZGF0ZURpc3Bs
YXlUcmVlKHRyYWNrKCktPm1lZGlhRWxlbWVudCgpLT5jdXJyZW50VGltZSgpKTsKLQogICAgIG1f
ZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UgPSBmYWxzZTsKIAogICAgIC8vIDEwLjE1LiBMZXQgY3Vl
J3MgdGV4dCB0cmFjayBjdWUgZGlzcGxheSBzdGF0ZSBoYXZlIHRoZSBDU1MgYm94ZXMgaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDkzMDg1NTYuLjJiNTkw
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtMTI1LDYg
KzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVDdWVJbmRleCgpOwogCiAgICAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hUTUwoKTsKKyAgICBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1ZVJlbmRlcmluZ1RyZWUoKTsKIAogICAgIHVzaW5n
IEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVSUklERTsKQEAgLTIwNyw3ICsyMDgsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9wYXVzZU9uRXhpdDsKICAgICBib29sIG1fc25hcFRvTGluZXM7CiAK
LSAgICBib29sIG1faGFzSW5uZXJUaW1lc3RhbXBzOwogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVu
dD4gbV9hbGxEb2N1bWVudE5vZGVzOwogCiAgICAgYm9vbCBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hh
bmdlOwpAQCAtMjIxLDYgKzIyMSw5IEBAIHByaXZhdGU6CiAgICAgaW50IG1fZGlzcGxheVNpemU7
CiAKICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBtX2Rpc3BsYXlQb3NpdGlvbjsKKworICAg
IHZvaWQgY3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsKKyAgICB2b2lkIGNvcHlXZWJWVFROb2RlVG9E
T01UcmVlKFBhc3NSZWZQdHI8Tm9kZT4gV2ViVlRUTm9kZSwgUGFzc1JlZlB0cjxOb2RlPiByb290
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCAyOTdlNTk5Li4wYWIwMTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0zNTksMTQgKzM1OSwxNCBAQCB2
b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgICAgIGlmIChpc1JlY29nbml6ZWRUYWcodG9rZW5UYWdOYW1lKSkKICAgICAgICAg
ICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZSh0YWdOYW1lLCBkb2N1bWVudCk7CiAgICAg
ICAgIGVsc2UgaWYgKG1fdG9rZW4ubmFtZSgpLnNpemUoKSA9PSAxICYmIG1fdG9rZW4ubmFtZSgp
WzBdID09ICdjJykKLSAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShzcGFu
VGFnLCBkb2N1bWVudCk7CisgICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUo
Y1RhZywgZG9jdW1lbnQpOwogICAgICAgICBlbHNlIGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkg
PT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAndicpCi0gICAgICAgICAgICBjaGlsZCA9IEhU
TUxFbGVtZW50OjpjcmVhdGUocVRhZywgZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBI
VE1MRWxlbWVudDo6Y3JlYXRlKHZUYWcsIGRvY3VtZW50KTsKIAogICAgICAgICBpZiAoY2hpbGQp
IHsKICAgICAgICAgICAgIGlmIChtX3Rva2VuLmNsYXNzZXMoKS5zaXplKCkgPiAwKQogICAgICAg
ICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcobV90
b2tlbi5jbGFzc2VzKCkuZGF0YSgpLCBtX3Rva2VuLmNsYXNzZXMoKS5zaXplKCkpKTsKLSAgICAg
ICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShxVGFnKSkKKyAgICAgICAgICAgIGlmIChjaGls
ZC0+aGFzVGFnTmFtZSh2VGFnKSkKICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRl
KHRpdGxlQXR0ciwgQXRvbWljU3RyaW5nKG1fdG9rZW4uYW5ub3RhdGlvbigpLmRhdGEoKSwgbV90
b2tlbi5hbm5vdGF0aW9uKCkuc2l6ZSgpKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5w
YXJzZXJBcHBlbmRDaGlsZChjaGlsZCk7CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gY2hp
bGQ7Cg==
</data>
<flag name="review"
          id="199802"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="199803"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182482</attachid>
            <date>2013-01-13 04:17:25 -0800</date>
            <delta_ts>2013-01-13 04:39:11 -0800</delta_ts>
            <desc>Proposed fix 0.7</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21481</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNDM0NGY1Li4xNDM0N2RmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MTMgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC10YzAyNi12b2ljZS5odG1sOiB2b2ljZSBlbGVtZW50cyBzaG91bGQgYmUgc3BhbnMgYWNj
b3JkaW5nIHRvIHNwZWNzLgorCiAyMDEzLTAxLTEyICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBw
bGUuY29tPgogCiAgICAgICAgIFN0eWxpbmcgZGlzYXBwZWFycyBmcm9tIHRoZSBjdWUgdGhhdCdz
IGJlaW5nIHN0eWxlZCBieSA6OmN1ZSBwc2V1ZG8gZWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0CmluZGV4IDMyNzQ4Yzku
LmZmODk0Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdl
YnZ0dC9zdHlsaW5nLnZ0dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13
ZWJ2dHQvc3R5bGluZy52dHQKQEAgLTEsMTMgKzEsMTcgQEAKIFdFQlZUVAogCiAxCi0wMDowMC4w
MDAgLS0+IDAwOjAxLjAwMAorMDA6MDAuMDAwIC0tPiAwMDowMC4yMDAKIExvcnVtIGlwc3VtCiAK
IDIKLTAwOjAxLjAwMCAtLT4gMDA6MDIuMDAwCiswMDowMC4yMDAgLS0+IDAwOjAwLjQwMAogPGMu
cmVkPmRvbG9yIHNpdCA8L2M+PGMuZ3JlZW4+YW1ldCwgY29uc2VjdGV0dXIgPC9jPjxjLnJlZDI+
YWRpcGlzY2luZyBlbGl0PC9jPgogCiAzCi0wMDowMi4wMDAgLS0+IDAwOjA1LjAwMAotPDAwOjAy
LjAwMD48Yz5TdXNwZW5kaXNzZSBhY2N1bXNhbiwgPC9jPjwwMDowMy4wMDA+PGM+bWF1cmlzIHNl
ZCA8L2M+PDAwOjA0LjAwMD48Yz5ldWlzbW9kIHBoYXJldHJhPC9jPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKzAwOjAwLjQwMCAtLT4gMDA6MDEuMDAwCis8MDA6MDAuNDAwPjxjPlN1c3Bl
bmRpc3NlIGFjY3Vtc2FuLCA8L2M+PDAwOjAwLjYwMD48Yz5tYXVyaXMgc2VkIDwvYz48MDA6MDAu
ODAwPjxjPmV1aXNtb2QgcGhhcmV0cmE8L2M+CisKKzQKKzAwOjAxLjAwMCAtLT4gMDA6MDEuMjAw
Cis8Yz5BbGlxdWFtIHNvbGxpY2l0dWRpbjwvYz4gPHY+bWFzc2EgYWMgbWFnbmEgdnVscHV0YXRl
IGRpZ25pc3NpbTwvdj4gPGI+cG9zdWVyZSBldCBmZXJtZW50dW08L2I+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLWV4cGVjdGVkLnR4dApp
bmRleCA0MDg3YmRmLi5lM2Y4ZWY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQKQEAgLTUsMjUgKzUsMzQgQEAg
RVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDAs
IDApJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdy
Z2IoMCwgMTI4LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5j
b2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogCi1SVU4odmlkZW8uY3VycmVudFRpbWUgPSAy
LjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCiBFVkVOVChzZWVrZWQpCiAKIAogMi4g
VGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGhlICc6ZnV0dXJl
JyBwc2V1ZG8gY2xhc3MuCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xv
ciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAxMjgpJykgT0sKIEVYUEVDVEVEIChnZXRD
b21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAxMjgsIDEyOCknKSBPSwog
RVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDEy
OCwgMTI4KScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50VGltZSA9IDMuNSkKK1JVTih2aWRlby5j
dXJyZW50VGltZSA9IDAuNykKIEVWRU5UKHNlZWtlZCkKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0
eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSwotRVhQRUNURUQg
KGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScp
IE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEy
OCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xv
ciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAxMjgpJykgT0sKIAotUlVOKHZpZGVvLmN1
cnJlbnRUaW1lID0gNC41KQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC45KQogRVZFTlQoc2Vl
a2VkKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigy
NTUsIDI1NSwgMjU1KScpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5j
b2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0
eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSworRVhQRUNURUQg
KGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBP
SworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgs
IDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ig
PT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjEp
CitFVkVOVChzZWVrZWQpCisKKworMy4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGFnLgorRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29s
b3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMCknKSBPSworRVhQRUNURUQgKGdldENv
bXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigwLCAyNTUsIDApJykgT0sKIEVORCBP
RiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1t
YXRjaGluZy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5n
Lmh0bWwKaW5kZXggODE0NWIyYy4uMzI4NjM4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTgsMTAgKzgsMTIgQEAKICAgICAgICAg
PHNjcmlwdCBzcmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CiAKICAgICAgICAgPHN0
eWxlPgotCisgICAgICAgIHZpZGVvOjpjdWUoYykge2NvbG9yOiBwdXJwbGV9CisgICAgICAgIHZp
ZGVvOjpjdWUodikge2NvbG9yOiB5ZWxsb3d9CisgICAgICAgIHZpZGVvOjpjdWUoYikge2NvbG9y
OiBsaW1lfQogICAgICAgICB2aWRlbzo6Y3VlKC5yZWQsIC5yZWQyKSB7IGNvbG9yOnJlZCB9CiAg
ICAgICAgICN0ZXN0dmlkZW86OmN1ZSguZ3JlZW4pIHsgY29sb3I6Z3JlZW4gfQotCisgICAgICAg
IHZpZGVvOjpjdWUoOmZ1dHVyZSkge2NvbG9yOiBncmF5fQogICAgICAgICA8L3N0eWxlPgogCiAg
ICAgICAgIDxzY3JpcHQ+CkBAIC0xOSwxMCArMjEsMTIgQEAKICAgICAgICAgdmFyIGN1ZU5vZGU7
CiAgICAgICAgIHZhciBzZWVrZWRDb3VudCA9IDA7CiAgICAgICAgIHZhciBpbmZvID0gW1sicmdi
KDI1NSwgMCwgMCkiLCAicmdiKDAsIDEyOCwgMCkiLCAicmdiKDI1NSwgMCwgMCkiXSwKLSAgICAg
ICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDEyOCwgMTI4LCAxMjgp
IiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAotICAgICAgICAgICAgICAgICAgICBbInJnYigyNTUs
IDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAicmdiKDEyOCwgMTI4LCAxMjgpIl0s
Ci0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1LCAyNTUpIiwgInJnYigyNTUsIDI1
NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiXV07Ci0gICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMTI4LCAxMjgpIiwgInJnYigx
MjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAgICBbInJnYigxMjgsIDAsIDEyOCki
LCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgsIDEyOCkiXSwKKyAgICAgICAgICAg
ICAgICAgICAgWyJyZ2IoMTI4LCAwLCAxMjgpIiwgInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEy
OCwgMCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAi
cmdiKDI1NSwgMjU1LCAwKSIsICJyZ2IoMCwgMjU1LCAwKSJdXTsKKyAgICAgICAgdmFyIHNlZWtU
aW1lcyA9IFswLjMsIDAuNSwgMC43LCAwLjksIDEuMSwgMS4zXTsKKwogICAgICAgICBmdW5jdGlv
biBza2lwTm9uRWxlbWVudHMocm9vdCkKICAgICAgICAgewogICAgICAgICAgICAgbmV4dEVsZW1l
bnRTaWJsaW5nID0gcm9vdDsKQEAgLTQxLDYgKzQ1LDEwIEBACiAgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAgICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMi4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNo
ZWQgcHJvcGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8gY2xhc3MuIik7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKHNlZWtlZENvdW50ID09IDQpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIzLiBUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBw
cm9wZXJseSBieSB0YWcuIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGN1ZU5vZGUg
PSBza2lwTm9uRWxlbWVudHModGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdhbGwtbm9k
ZXMnKS5maXJzdENoaWxkKTsKQEAgLTU1LDcgKzYzLDcgQEAKICAgICAgICAgICAgICAgICBlbmRU
ZXN0KCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOwotICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAiICsgKHZpZGVv
LmN1cnJlbnRUaW1lICsgMSkpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRp
bWUgPSAiICsgc2Vla1RpbWVzW3NlZWtlZENvdW50XSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtNjYsNyArNzQsNyBAQAogICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgndmlkZW8nLCAnLi4vY29udGVudC90ZXN0Jyk7CiAgICAgICAgICAgICB2aWRlby5pZCA9
ICJ0ZXN0dmlkZW8iOwogICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdzZWVrZWQnLCBzZWVrZWQp
OwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uKCkg
eyB2aWRlby5jdXJyZW50VGltZSA9IDEuNTsgfSk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnQo
J2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7IHZpZGVvLmN1cnJlbnRUaW1lID0gc2Vla1Rp
bWVzWzBdOyB9KTsKICAgICAgICAgfQogCiAgICAgICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtdGMwMjYtdm9pY2UuaHRtbAppbmRl
eCA1MmUwNzFlMC4uZjZmMDIzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKQEAgLTI0LDMxICsyNCwzMSBAQAogICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1siICsgaSArICJdLmN1
ZXMubGVuZ3RoIiwgIjMiKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB2YXIg
ZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgICAg
ICAgICAgdmFyIHEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJxIik7Ci0gICAgICAgICAgICAg
ICAgcS5jbGFzc05hbWUgPSAiYmx1ZSI7Ci0gICAgICAgICAgICAgICAgcS50aXRsZSA9ICJTcGVh
a2VyIjsKLSAgICAgICAgICAgICAgICBxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJCZWFyIGlzIENvbWluZyEhISEhIikpOwotICAgICAgICAgICAgICAgIGZyYWdtZW50LmFw
cGVuZENoaWxkKHEpOworICAgICAgICAgICAgICAgIHZhciBjc3BhbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBjc3Bhbi5jbGFzc05hbWUgPSAiYmx1
ZSI7CisgICAgICAgICAgICAgICAgY3NwYW4udGl0bGUgPSAiU3BlYWtlciI7CisgICAgICAgICAg
ICAgICAgY3NwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMg
Q29taW5nISEhISEiKSk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoY3Nw
YW4pOwogICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJcblRleHQgc3BhbiB3aXRoIGEgY2xhc3MgYW5kIGFuIGFubm90YXRpb24uIikp
OwogIAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZChmcmFnbWVudC5pc0VxdWFsTm9kZSh2
aWRlby50ZXh0VHJhY2tzW2ldLmN1ZXNbMF0uZ2V0Q3VlQXNIVE1MKCkpLCB0cnVlKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgICAgICBxID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgicSIpOwotICAgICAgICAgICAgICAgIHEudGl0bGUgPSAiRG9lIEh1bnRlciI7Ci0gICAg
ICAgICAgICAgICAgcS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiSSBzYWlk
IEJlYXIgaXMgY29taW5nISEhISIpKTsKLSAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRD
aGlsZChxKTsKKyAgICAgICAgICAgICAgICBjc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgICAgICAgICBjc3Bhbi50aXRsZSA9ICJEb2UgSHVudGVyIjsKKyAg
ICAgICAgICAgICAgICBjc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
SSBzYWlkIEJlYXIgaXMgY29taW5nISEhISIpKTsKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5h
cHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKGZyYWdtZW50LmlzRXF1YWxOb2RlKHZpZGVvLnRleHRUcmFja3NbaV0uY3Vlc1sx
XS5nZXRDdWVBc0hUTUwoKSksIHRydWUpOwogCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAg
ICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
Ikkgc2FpZCAiKSk7Ci0gICAgICAgICAgICAgICAgcSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InEiKTsKLSAgICAgICAgICAgICAgICBxLmNsYXNzTmFtZSA9ICJibHVlIjsKLSAgICAgICAgICAg
ICAgICBxLnRpdGxlID0gIlNwZWFrZXIiOwotICAgICAgICAgICAgICAgIHEuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMgY29taW5nIG5vdyIpKTsKLSAgICAgICAg
ICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChxKTsKKyAgICAgICAgICAgICAgICBjc3BhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBjc3Bhbi5j
bGFzc05hbWUgPSAiYmx1ZSI7CisgICAgICAgICAgICAgICAgY3NwYW4udGl0bGUgPSAiU3BlYWtl
ciI7CisgICAgICAgICAgICAgICAgY3NwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIkJlYXIgaXMgY29taW5nIG5vdyIpKTsKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5h
cHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiEhISEiKSk7CiAgICAKICAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoZnJhZ21lbnQuaXNFcXVhbE5vZGUodmlkZW8udGV4dFRyYWNrc1tpXS5jdWVz
WzJdLmdldEN1ZUFzSFRNTCgpKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkwMDAyYS4uNWFlYjEx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAxLTEzICBEaW1hIEdvcmJpayAg
PGRnb3JiaWtAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBlbGVtZW50IHR5cGUgc2Vs
ZWN0b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NDgwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGFnIG1hdGNoaW5n
IGZvciB0aGUgV2ViVlRUIHNwZWNpZmljIHRhZ3MgImMiIGFuZCAidiIuIEFsbCBjb21tb24gaHRt
bCB0YWdzIGxpa2UgImIiIGFuZCAiaSIgYXJlIAorICAgICAgICBoYW5kbGVkIHdpdGhvdXQgYW55
IGNoYW5nZXMgdG8gdGhlIGNvZGUuIENyZWF0aW5nIGEgcmVuZGVyaW5nIHRyZWUgYW5kIERPTSB0
cmVlIG5vd3VzZSBkaWZmZXJlbnQgY29kZSBwYXRocy4gCisgICAgICAgIFRoZXkgYm90aCBhcmUg
bWFkZSBieSBjbG9uaW5nIGFuZCBtb2RpZnlpbmcgdGhlIHRyZWUgcHJvZHVjZWQgYnkgdGhlIHBh
cnNlci4gVm9pY2UgdGFncyBub3cgdXNlIHNwYW5zIGZvciBib3RoIAorICAgICAgICByZW5kZXJp
bmcgYW5kIERPTSB0cmVlcyB0byBjb25mb3JtIHRvIHNwZWNzLiBTaW5jZSB0aGlzIGNoYW5nZXMg
YSBsb3Qgb2YgY29kZSBsaXR0bGUgcmVmYWN0b3JpbmcgaGFzIGJlZW4KKyAgICAgICAgZG9uZS4g
UmVtb3ZlZCBtX2hhc0lubmVyVGltZXN0YW1wcyBzaW5jZSBpdCBpcyBubyBsb25nZXIgbmVlZGVk
LCBpdCBkb2Vzbid0IGFmZmVjdCBhbnl0aGluZy4gbV9kb2N1bWVudEZyYWdtZW50IAorICAgICAg
ICB3YXMgcmVuYW1lZCB0byBtX3dlYlZUVE5vZGVUcmVlLgorCisgICAgICAgIEV4aXN0aW5nIHRl
c3RzIHdlcmUgbW9kaWZpZWQgdG8gY292ZXIgdGhpcyBjYXNlLgorCisgICAgICAgICogaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpU
ZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRUZXh0KTog
cmVuYW1lIG1fZG9jdW1lbnRGcmFnbWVudCB0byBtX3dlYlZUVE5vZGVUcmVlCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNyZWF0ZVdlYlZUVE5vZGVUcmVlKTogcGFyc2UgdGhlIGN1
ZSBpZiBpdCBoYXNuJ3QgYmVlbiBwYXJzZWQgYmVmb3JlLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6IGNsb25lIGFuZCBwcmVwYXJlIGEg
bm9kZSBmb3IgdXNpbmcgaW4gdGhlIERPTSB0cmVlIGFjY29yZGluZyB0byBzcGVjcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKTogZ2V0IGEgRE9NIHRyZWUg
Zm9yIHRoZSBjdWUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNyZWF0ZUN1ZVJl
bmRlcmluZ1RyZWUpOiBjcmVhdGUgYSByZW5kZXJpbmcgdHJlZSAobWFpbiB0cmVlIGlzIGp1c3Qg
YmVpbmcgY2xvbmVkIGZvciBub3cpLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpt
YXJrRnV0dXJlQW5kUGFzdE5vZGVzKTogdGlnaHRlbmluZyB0aGUgYXJndW1lbnQgdHlwZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5VHJlZSk6IGNvZGUgY2xlYW51cCwg
cmVtb3ZlZCBtX2hhc0lubmVyVGltZVN0YW1wcy4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjp2b2ljZUVsZW1lbnRU
YWdOYW1lKToKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRhZ05hbWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6Y29uc3RydWN0
VHJlZUZyb21Ub2tlbik6IHR5cGUgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgZWxlbWVudHMgd2FzIGNo
YW5nZWQgdG8gRWxlbWVudCB0byBhdm9pZCBoaXR0aW5nIAorICAgICAgICBhbiBhc3NlcnRpb24g
d2hlbiBjbG9uaW5nIGJlY2F1c2UgYSBjbG9uZWQgZWxlbWVudCB3aWxsIG5vdCBoYXZlIEhUTUxF
bGVtZW50IHR5cGUgZm9yIGVsZW1lbnRzIHdpdGggInYiIGFuZCAiYyIgdGFnLgorCiAyMDEzLTAx
LTEyICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCiAgICAgICAgIFN0eWxpbmcg
ZGlzYXBwZWFycyBmcm9tIHRoZSBjdWUgdGhhdCdzIGJlaW5nIHN0eWxlZCBieSA6OmN1ZSBwc2V1
ZG8gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmlu
ZGV4IDYyOWRjYzUuLmZmYWJlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1
ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNp
bmNsdWRlICJSZW5kZXJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0yMDAs
MTMgKzIwMSwxMiBAQCBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZQogICAgICwgbV9jdWVJbmRleChp
bnZhbGlkQ3VlSW5kZXgpCiAgICAgLCBtX3dyaXRpbmdEaXJlY3Rpb24oSG9yaXpvbnRhbCkKICAg
ICAsIG1fY3VlQWxpZ25tZW50KE1pZGRsZSkKLSAgICAsIG1fZG9jdW1lbnRGcmFnbWVudCgwKQor
ICAgICwgbV93ZWJWVFROb2RlVHJlZSgwKQogICAgICwgbV90cmFjaygwKQogICAgICwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAg
ICwgbV9wYXVzZU9uRXhpdChmYWxzZSkKICAgICAsIG1fc25hcFRvTGluZXModHJ1ZSkKLSAgICAs
IG1faGFzSW5uZXJUaW1lc3RhbXBzKGZhbHNlKQogICAgICwgbV9hbGxEb2N1bWVudE5vZGVzKEhU
TUxEaXZFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkpCiAg
ICAgLCBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlKHRydWUpCiAgICAgLCBtX2Rpc3BsYXlUcmVl
KFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KSwgdGhpcykpCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBUZXh0VHJh
Y2tDdWU6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGN1ZVdpbGxDaGFuZ2UoKTsK
ICAgICAvLyBDbGVhciB0aGUgZG9jdW1lbnQgZnJhZ21lbnQgYnV0IGRvbid0IGJvdGhlciB0byBj
cmVhdGUgaXQgYWdhaW4ganVzdCB5ZXQgYXMgd2UgY2FuIGRvIHRoYXQKICAgICAvLyB3aGVuIGl0
IGlzIHJlcXVlc3RlZC4KLSAgICBtX2RvY3VtZW50RnJhZ21lbnQgPSAwOworICAgIG1fd2ViVlRU
Tm9kZVRyZWUgPSAwOwogICAgIG1fY29udGVudCA9IHRleHQ7CiAgICAgY3VlRGlkQ2hhbmdlKCk7
CiB9CkBAIC00ODEsMjkgKzQ4MSw0NiBAQCB2b2lkIFRleHRUcmFja0N1ZTo6aW52YWxpZGF0ZUN1
ZUluZGV4KCkKICAgICBtX2N1ZUluZGV4ID0gaW52YWxpZEN1ZUluZGV4OwogfQogCi1QYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKCkKK3ZvaWQg
VGV4dFRyYWNrQ3VlOjpjcmVhdGVXZWJWVFROb2RlVHJlZSgpCiB7Ci0gICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNsb25lZEZyYWdtZW50OwotICAgIERvY3VtZW50KiBkb2N1bWVudDsKLQot
ICAgIGlmICghbV9kb2N1bWVudEZyYWdtZW50KSB7Ci0gICAgICAgIG1faGFzSW5uZXJUaW1lc3Rh
bXBzID0gZmFsc2U7Ci0gICAgICAgIG1fZG9jdW1lbnRGcmFnbWVudCA9IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlKDAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmNyZWF0ZURvY3VtZW50RnJhZ21l
bnRGcm9tQ3VlVGV4dChtX2NvbnRlbnQpOwotCi0gICAgICAgIGlmICghbV9kb2N1bWVudEZyYWdt
ZW50KQotICAgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV93ZWJWVFROb2RlVHJlZSkKKyAg
ICAgICAgbV93ZWJWVFROb2RlVHJlZSA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRlKDAsIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChtX2Nv
bnRlbnQpOworfQogCi0gICAgICAgIGZvciAoTm9kZSAqY2hpbGQgPSBtX2RvY3VtZW50RnJhZ21l
bnQtPmZpcnN0Q2hpbGQoKTsgIW1faGFzSW5uZXJUaW1lc3RhbXBzICYmIGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVOYW1l
KCkgPT0gInRpbWVzdGFtcCIpCi0gICAgICAgICAgICAgICAgbV9oYXNJbm5lclRpbWVzdGFtcHMg
PSB0cnVlOwotICAgICAgICB9Cit2b2lkIFRleHRUcmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RP
TVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9kZSwgQ29udGFpbmVyTm9kZSogcGFyZW50KQor
eworICAgIGZvciAoTm9kZSogbm9kZSA9IHdlYlZUVE5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgUmVmUHRyPE5vZGU+IGNsb25l
ZE5vZGU7CisgICAgICAgIC8vIFNwZWNzIHJlcXVpcmUgdm9pY2UgZWxlbWVudHMgdG8gYmUgcVRh
Z3MgYW5kIGNsYXNzIGVsZW1lbnRzIHNwYW5zIGZvciBET00gdHJlZXMuCisgICAgICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKHZvaWNlRWxlbWVudFRhZ05hbWUoKSkgfHwgbm9kZS0+aGFzVGFnTmFt
ZShjbGFzc0VsZW1lbnRUYWdOYW1lKCkpKSB7CisgICAgICAgICAgICBjbG9uZWROb2RlID0gSFRN
TFNwYW5FbGVtZW50OjpjcmVhdGUoc3BhblRhZywgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKKyAgICAgICAgICAgIHRvRWxlbWVudChjbG9uZWROb2Rl
LmdldCgpKS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdG9FbGVtZW50KG5vZGUpLT5nZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyKSk7CisgICAgICAgICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQo
KSktPnNldEF0dHJpYnV0ZSh0aXRsZUF0dHIsIHRvRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRl
KHRpdGxlQXR0cikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSBu
b2RlLT5jbG9uZU5vZGUoZmFsc2UpOworCisgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoY2xv
bmVkTm9kZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIGlmIChub2RlLT5pc0NvbnRh
aW5lck5vZGUoKSkKKyAgICAgICAgICAgIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKHRvQ29udGFp
bmVyTm9kZShub2RlKSwgdG9Db250YWluZXJOb2RlKGNsb25lZE5vZGUuZ2V0KCkpKTsKICAgICB9
Cit9CiAKLSAgICBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3Vl
OjpnZXRDdWVBc0hUTUwoKQoreworICAgIGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudCA9
IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29weVdlYlZUVE5vZGVU
b0RPTVRyZWUobV93ZWJWVFROb2RlVHJlZS5nZXQoKSwgY2xvbmVkRnJhZ21lbnQuZ2V0KCkpOwor
ICAgIHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxlYXNlKCk7Cit9CiAKK1Bhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKCkKK3sK
KyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVkRnJhZ21lbnQ7CisgICAgY3JlYXRl
V2ViVlRUTm9kZVRyZWUoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgY2xvbmVkRnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1fZG9jdW1lbnRGcmFn
bWVudC0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZyYWdtZW50LmdldCgpKTsKLQorICAgIG1fd2Vi
VlRUTm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7CiAgICAg
cmV0dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKIH0KIApAQCAtNjU4LDcgKzY3NSw3IEBA
IHZvaWQgVGV4dFRyYWNrQ3VlOjpjYWxjdWxhdGVEaXNwbGF5UGFyYW1ldGVycygpCiAgICAgbV9j
b21wdXRlZExpbmVQb3NpdGlvbiA9IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCk7CiB9
CiAgICAgCi12b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhOb2RlKiBy
b290LCBkb3VibGUgcHJldmlvdXNUaW1lc3RhbXAsIGRvdWJsZSBtb3ZpZVRpbWUpCit2b2lkIFRl
eHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBk
b3VibGUgcHJldmlvdXNUaW1lc3RhbXAsIGRvdWJsZSBtb3ZpZVRpbWUpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFTQ0lJTGl0ZXJhbCgi
dGltZXN0YW1wIikpKTsKICAgICAKQEAgLTY5Nyw5ICs3MTQsOCBAQCB2b2lkIFRleHRUcmFja0N1
ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQogCiAgICAgLy8gQ2xlYXIgdGhl
IGNvbnRlbnRzIG9mIHRoZSBzZXQuCiAgICAgbV9hbGxEb2N1bWVudE5vZGVzLT5yZW1vdmVDaGls
ZHJlbigpOwotCiAgICAgLy8gVXBkYXRlIHRoZSB0d28gc2V0cyBjb250YWluaW5nIHBhc3QgYW5k
IGZ1dHVyZSBXZWJWVFQgb2JqZWN0cy4KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcmVm
ZXJlbmNlVHJlZSA9IGdldEN1ZUFzSFRNTCgpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiByZWZlcmVuY2VUcmVlID0gY3JlYXRlQ3VlUmVuZGVyaW5nVHJlZSgpOwogICAgIG1hcmtGdXR1
cmVBbmRQYXN0Tm9kZXMocmVmZXJlbmNlVHJlZS5nZXQoKSwgc3RhcnRUaW1lKCksIG1vdmllVGlt
ZSk7CiAgICAgbV9hbGxEb2N1bWVudE5vZGVzLT5hcHBlbmRDaGlsZChyZWZlcmVuY2VUcmVlKTsK
IH0KQEAgLTc0MCwxMSArNzU2LDcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFRleHRU
cmFja0N1ZTo6Z2V0RGlzcGxheVRyZWUoKQogICAgIC8vIG5vcm1hbGx5IHdvdWxkIGluIENTUywg
aXQgaXMgaW5zdGVhZCBmb3JjaWJseSB3cmFwcGVkIGF0IHRoZSBib3gncyBlZGdlLikKICAgICBt
X2Rpc3BsYXlUcmVlLT5hcHBseUNTU1Byb3BlcnRpZXMoKTsKIAotICAgIGlmIChtX2hhc0lubmVy
VGltZXN0YW1wcykKLSAgICAgICAgdXBkYXRlRGlzcGxheVRyZWUodHJhY2soKS0+bWVkaWFFbGVt
ZW50KCktPmN1cnJlbnRUaW1lKCkpOwotCiAgICAgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSA9
IGZhbHNlOwotCiAgICAgLy8gMTAuMTUuIExldCBjdWUncyB0ZXh0IHRyYWNrIGN1ZSBkaXNwbGF5
IHN0YXRlIGhhdmUgdGhlIENTUyBib3hlcyBpbgogICAgIC8vIGJveGVzLgogICAgIHJldHVybiBt
X2Rpc3BsYXlUcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5k
ZXggNDdjNGVlMS4uNGJlZGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oCkBAIC03OCw2ICs3OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVGV4dFRyYWNrQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VFbGVtZW50VGFnTmFtZSgp
CisgICAgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZUYWcs
IChudWxsQXRvbSwgInYiLCBudWxsQXRvbSkpOworICAgICAgICByZXR1cm4gdlRhZzsKKyAgICB9
CisKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY2xhc3NFbGVtZW50VGFnTmFtZSgp
CisgICAgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGNUYWcs
IChudWxsQXRvbSwgImMiLCBudWxsQXRvbSkpOworICAgICAgICByZXR1cm4gY1RhZzsKKyAgICB9
CisKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDdWUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGFsbE5vZGVzU2hhZG93UHNldWRvSWQoKTsKQEAgLTEyNSw2ICsxMzcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ3VlSW5kZXgoKTsKIAogICAgIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKCk7CiAKICAgICB1c2luZyBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50PikgT1ZFUlJJREU7CkBAIC0xMzUsNyArMTQ4LDcgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZSgpOwogICAgIHZvaWQg
dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQpOwogICAgIHZvaWQgcmVtb3ZlRGlzcGxheVRyZWUoKTsK
LSAgICB2b2lkIG1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoTm9kZSosIGRvdWJsZSwgZG91YmxlKTsK
KyAgICB2b2lkIG1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFpbmVyTm9kZSosIGRvdWJsZSwg
ZG91YmxlKTsKIAogICAgIGludCBjYWxjdWxhdGVDb21wdXRlZExpbmVQb3NpdGlvbigpOwogCkBA
IC0xOTcsNyArMjEwLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIEFsaWdubWVudCB7IFN0YXJ0LCBN
aWRkbGUsIEVuZCB9OwogICAgIEFsaWdubWVudCBtX2N1ZUFsaWdubWVudDsKIAotICAgIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBtX2RvY3VtZW50RnJhZ21lbnQ7CisgICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IG1fd2ViVlRUTm9kZVRyZWU7CiAgICAgVGV4dFRyYWNrKiBtX3RyYWNrOwog
CiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpAQCAtMjA3LDcgKzIyMCw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhdXNlT25FeGl0OwogICAgIGJvb2wgbV9zbmFwVG9M
aW5lczsKIAotICAgIGJvb2wgbV9oYXNJbm5lclRpbWVzdGFtcHM7CiAgICAgUmVmUHRyPEhUTUxE
aXZFbGVtZW50PiBtX2FsbERvY3VtZW50Tm9kZXM7CiAKICAgICBib29sIG1fZGlzcGxheVRyZWVT
aG91bGRDaGFuZ2U7CkBAIC0yMjEsNiArMjMzLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kaXNw
bGF5U2l6ZTsKIAogICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IG1fZGlzcGxheVBvc2l0aW9u
OworCisgICAgdm9pZCBjcmVhdGVXZWJWVFROb2RlVHJlZSgpOworICAgIHZvaWQgY29weVdlYlZU
VE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogV2ViVlRUTm9kZSwgQ29udGFpbmVyTm9kZSog
cm9vdCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMjk3ZTU5OS4uNTI4YTIzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMzQ2LDcgKzM0Niw2IEBA
IHZvaWQgV2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBRdWFsaWZpZWROYW1lIHRhZ05hbWUobnVsbEF0b20sIHRva2VuVGFnTmFtZSwg
eGh0bWxOYW1lc3BhY2VVUkkpOwogCiAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvd2Vi
dnR0LyN3ZWJ2dHQtY3VlLXRleHQtZG9tLWNvbnN0cnVjdGlvbi1ydWxlcwotICAgIAogICAgIHN3
aXRjaCAobV90b2tlbi50eXBlKCkpIHsKICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OkNoYXJh
Y3RlcjogewogICAgICAgICBTdHJpbmcgY29udGVudChtX3Rva2VuLmNoYXJhY3RlcnMoKS5kYXRh
KCksIG1fdG9rZW4uY2hhcmFjdGVycygpLnNpemUoKSk7CkBAIC0zNTUsMTggKzM1NCwxOCBAQCB2
b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OlN0
YXJ0VGFnOiB7Ci0gICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gY2hpbGQ7CisgICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBjaGlsZDsKICAgICAgICAgaWYgKGlzUmVjb2duaXplZFRhZyh0b2tlblRh
Z05hbWUpKQogICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHRhZ05hbWUs
IGRvY3VtZW50KTsKICAgICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEg
JiYgbV90b2tlbi5uYW1lKClbMF0gPT0gJ2MnKQotICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxl
bWVudDo6Y3JlYXRlKHNwYW5UYWcsIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNoaWxkID0gRWxl
bWVudDo6Y3JlYXRlKFRleHRUcmFja0N1ZTo6Y2xhc3NFbGVtZW50VGFnTmFtZSgpLCBkb2N1bWVu
dCk7CiAgICAgICAgIGVsc2UgaWYgKG1fdG9rZW4ubmFtZSgpLnNpemUoKSA9PSAxICYmIG1fdG9r
ZW4ubmFtZSgpWzBdID09ICd2JykKLSAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNy
ZWF0ZShxVGFnLCBkb2N1bWVudCk7CisgICAgICAgICAgICBjaGlsZCA9IEVsZW1lbnQ6OmNyZWF0
ZShUZXh0VHJhY2tDdWU6OnZvaWNlRWxlbWVudFRhZ05hbWUoKSwgZG9jdW1lbnQpOwogCiAgICAg
ICAgIGlmIChjaGlsZCkgewogICAgICAgICAgICAgaWYgKG1fdG9rZW4uY2xhc3NlcygpLnNpemUo
KSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0
b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKS5kYXRhKCksIG1fdG9rZW4uY2xhc3NlcygpLnNp
emUoKSkpOwotICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHFUYWcpKQorICAgICAg
ICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKFRleHRUcmFja0N1ZTo6dm9pY2VFbGVtZW50VGFn
TmFtZSgpKSkKICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKHRpdGxlQXR0ciwg
QXRvbWljU3RyaW5nKG1fdG9rZW4uYW5ub3RhdGlvbigpLmRhdGEoKSwgbV90b2tlbi5hbm5vdGF0
aW9uKCkuc2l6ZSgpKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRD
aGlsZChjaGlsZCk7CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gY2hpbGQ7Cg==
</data>
<flag name="review"
          id="200506"
          type_id="1"
          status="-"
          setter="dgorbik"
    />
    <flag name="commit-queue"
          id="200507"
          type_id="3"
          status="-"
          setter="dgorbik"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182483</attachid>
            <date>2013-01-13 04:39:11 -0800</date>
            <delta_ts>2013-01-13 04:48:35 -0800</delta_ts>
            <desc>Proposed fix 0.8</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21503</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZDViN2Q3Li40ZDQ5ZmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MTMgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC10YzAyNi12b2ljZS5odG1sOiB2b2ljZSBlbGVtZW50cyBzaG91bGQgYmUgc3BhbnMgYWNj
b3JkaW5nIHRvIHNwZWNzLgorCiAyMDEzLTAxLTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0
eWxpbmcudnR0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxp
bmcudnR0CmluZGV4IDMyNzQ4YzkuLmZmODk0Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKQEAgLTEsMTMgKzEsMTcgQEAK
IFdFQlZUVAogCiAxCi0wMDowMC4wMDAgLS0+IDAwOjAxLjAwMAorMDA6MDAuMDAwIC0tPiAwMDow
MC4yMDAKIExvcnVtIGlwc3VtCiAKIDIKLTAwOjAxLjAwMCAtLT4gMDA6MDIuMDAwCiswMDowMC4y
MDAgLS0+IDAwOjAwLjQwMAogPGMucmVkPmRvbG9yIHNpdCA8L2M+PGMuZ3JlZW4+YW1ldCwgY29u
c2VjdGV0dXIgPC9jPjxjLnJlZDI+YWRpcGlzY2luZyBlbGl0PC9jPgogCiAzCi0wMDowMi4wMDAg
LS0+IDAwOjA1LjAwMAotPDAwOjAyLjAwMD48Yz5TdXNwZW5kaXNzZSBhY2N1bXNhbiwgPC9jPjww
MDowMy4wMDA+PGM+bWF1cmlzIHNlZCA8L2M+PDAwOjA0LjAwMD48Yz5ldWlzbW9kIHBoYXJldHJh
PC9jPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzAwOjAwLjQwMCAtLT4gMDA6MDEuMDAw
Cis8MDA6MDAuNDAwPjxjPlN1c3BlbmRpc3NlIGFjY3Vtc2FuLCA8L2M+PDAwOjAwLjYwMD48Yz5t
YXVyaXMgc2VkIDwvYz48MDA6MDAuODAwPjxjPmV1aXNtb2QgcGhhcmV0cmE8L2M+CisKKzQKKzAw
OjAxLjAwMCAtLT4gMDA6MDEuMjAwCis8Yz5BbGlxdWFtIHNvbGxpY2l0dWRpbjwvYz4gPHY+bWFz
c2EgYWMgbWFnbmEgdnVscHV0YXRlIGRpZ25pc3NpbTwvdj4gPGI+cG9zdWVyZSBldCBmZXJtZW50
dW08L2I+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0
Y2hpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1h
dGNoaW5nLWV4cGVjdGVkLnR4dAppbmRleCA0MDg3YmRmLi5lM2Y4ZWY4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50
eHQKQEAgLTUsMjUgKzUsMzQgQEAgRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSku
Y29sb3IgPT0gJ3JnYigyNTUsIDAsIDApJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMCwgMTI4LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogCi1SVU4o
dmlkZW8uY3VycmVudFRpbWUgPSAyLjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCiBF
VkVOVChzZWVrZWQpCiAKIAogMi4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJv
cGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8gY2xhc3MuCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VYUEVD
VEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAxMjgp
JykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2Io
MTI4LCAxMjgsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSku
Y29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50VGlt
ZSA9IDMuNSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNykKIEVWRU5UKHNlZWtlZCkKLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVO
b2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCiBFWFBFQ1RF
RCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAxMjgp
JykgT0sKIAotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gNC41KQorUlVOKHZpZGVvLmN1cnJlbnRU
aW1lID0gMC45KQogRVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3Vl
Tm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9k
ZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVk
U3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworCitSVU4odmlk
ZW8uY3VycmVudFRpbWUgPSAxLjEpCitFVkVOVChzZWVrZWQpCisKKworMy4gVGVzdCB0aGF0IGN1
ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGFnLgorRVhQRUNURUQgKGdldENvbXB1
dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNU
RUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMCkn
KSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigw
LCAyNTUsIDApJykgT0sKIEVORCBPRiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKaW5kZXggODE0NWIyYy4uMzI4NjM4ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTgs
MTAgKzgsMTIgQEAKICAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9z
Y3JpcHQ+CiAKICAgICAgICAgPHN0eWxlPgotCisgICAgICAgIHZpZGVvOjpjdWUoYykge2NvbG9y
OiBwdXJwbGV9CisgICAgICAgIHZpZGVvOjpjdWUodikge2NvbG9yOiB5ZWxsb3d9CisgICAgICAg
IHZpZGVvOjpjdWUoYikge2NvbG9yOiBsaW1lfQogICAgICAgICB2aWRlbzo6Y3VlKC5yZWQsIC5y
ZWQyKSB7IGNvbG9yOnJlZCB9CiAgICAgICAgICN0ZXN0dmlkZW86OmN1ZSguZ3JlZW4pIHsgY29s
b3I6Z3JlZW4gfQotCisgICAgICAgIHZpZGVvOjpjdWUoOmZ1dHVyZSkge2NvbG9yOiBncmF5fQog
ICAgICAgICA8L3N0eWxlPgogCiAgICAgICAgIDxzY3JpcHQ+CkBAIC0xOSwxMCArMjEsMTIgQEAK
ICAgICAgICAgdmFyIGN1ZU5vZGU7CiAgICAgICAgIHZhciBzZWVrZWRDb3VudCA9IDA7CiAgICAg
ICAgIHZhciBpbmZvID0gW1sicmdiKDI1NSwgMCwgMCkiLCAicmdiKDAsIDEyOCwgMCkiLCAicmdi
KDI1NSwgMCwgMCkiXSwKLSAgICAgICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSki
LCAicmdiKDEyOCwgMTI4LCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAotICAgICAgICAg
ICAgICAgICAgICBbInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAi
cmdiKDEyOCwgMTI4LCAxMjgpIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1
LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiXV07Ci0g
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEy
OCwgMTI4LCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAg
ICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgs
IDEyOCkiXSwKKyAgICAgICAgICAgICAgICAgICAgWyJyZ2IoMTI4LCAwLCAxMjgpIiwgInJnYigx
MjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAgICBb
InJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDI1NSwgMjU1LCAwKSIsICJyZ2IoMCwgMjU1LCAwKSJd
XTsKKyAgICAgICAgdmFyIHNlZWtUaW1lcyA9IFswLjMsIDAuNSwgMC43LCAwLjksIDEuMSwgMS4z
XTsKKwogICAgICAgICBmdW5jdGlvbiBza2lwTm9uRWxlbWVudHMocm9vdCkKICAgICAgICAgewog
ICAgICAgICAgICAgbmV4dEVsZW1lbnRTaWJsaW5nID0gcm9vdDsKQEAgLTQxLDYgKzQ1LDEwIEBA
CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIiIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMi4gVGVzdCB0aGF0
IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8g
Y2xhc3MuIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZWtlZENvdW50ID09IDQpIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIzLiBUZXN0IHRoYXQgY3Vl
cyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9wZXJseSBieSB0YWcuIik7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGN1ZU5vZGUgPSBza2lwTm9uRWxlbWVudHModGV4dFRyYWNrRGlzcGxheUVs
ZW1lbnQodmlkZW8sICdhbGwtbm9kZXMnKS5maXJzdENoaWxkKTsKQEAgLTU1LDcgKzYzLDcgQEAK
ICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3Vy
cmVudFRpbWUgPSAiICsgKHZpZGVvLmN1cnJlbnRUaW1lICsgMSkpOworICAgICAgICAgICAgICAg
IHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAiICsgc2Vla1RpbWVzW3NlZWtlZENvdW50XSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjYsNyArNzQsNyBAQAogICAgICAgICAgICAg
dmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vY29udGVudC90ZXN0Jyk7CiAg
ICAgICAgICAgICB2aWRlby5pZCA9ICJ0ZXN0dmlkZW8iOwogICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdzZWVrZWQnLCBzZWVrZWQpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5
dGhyb3VnaCcsIGZ1bmN0aW9uKCkgeyB2aWRlby5jdXJyZW50VGltZSA9IDEuNTsgfSk7CisgICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7IHZpZGVv
LmN1cnJlbnRUaW1lID0gc2Vla1RpbWVzWzBdOyB9KTsKICAgICAgICAgfQogCiAgICAgICAgIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0
LXRjMDI2LXZvaWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
dGMwMjYtdm9pY2UuaHRtbAppbmRleCA1MmUwNzFlMC4uZjZmMDIzOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKQEAg
LTI0LDMxICsyNCwzMSBAQAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4
dFRyYWNrc1siICsgaSArICJdLmN1ZXMubGVuZ3RoIiwgIjMiKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7Ci0gICAgICAgICAgICAgICAgdmFyIHEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJxIik7Ci0gICAgICAgICAgICAgICAgcS5jbGFzc05hbWUgPSAiYmx1ZSI7Ci0gICAgICAgICAg
ICAgICAgcS50aXRsZSA9ICJTcGVha2VyIjsKLSAgICAgICAgICAgICAgICBxLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJCZWFyIGlzIENvbWluZyEhISEhIikpOwotICAgICAg
ICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHEpOworICAgICAgICAgICAgICAgIHZhciBj
c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBj
c3Bhbi5jbGFzc05hbWUgPSAiYmx1ZSI7CisgICAgICAgICAgICAgICAgY3NwYW4udGl0bGUgPSAi
U3BlYWtlciI7CisgICAgICAgICAgICAgICAgY3NwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoIkJlYXIgaXMgQ29taW5nISEhISEiKSk7CisgICAgICAgICAgICAgICAgZnJh
Z21lbnQuYXBwZW5kQ2hpbGQoY3NwYW4pOwogICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcblRleHQgc3BhbiB3aXRoIGEgY2xhc3Mg
YW5kIGFuIGFubm90YXRpb24uIikpOwogIAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZChm
cmFnbWVudC5pc0VxdWFsTm9kZSh2aWRlby50ZXh0VHJhY2tzW2ldLmN1ZXNbMF0uZ2V0Q3VlQXNI
VE1MKCkpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmcmFnbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgICAgICBx
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicSIpOwotICAgICAgICAgICAgICAgIHEudGl0bGUg
PSAiRG9lIEh1bnRlciI7Ci0gICAgICAgICAgICAgICAgcS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiSSBzYWlkIEJlYXIgaXMgY29taW5nISEhISIpKTsKLSAgICAgICAgICAg
ICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChxKTsKKyAgICAgICAgICAgICAgICBjc3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBjc3Bhbi50aXRs
ZSA9ICJEb2UgSHVudGVyIjsKKyAgICAgICAgICAgICAgICBjc3Bhbi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiSSBzYWlkIEJlYXIgaXMgY29taW5nISEhISIpKTsKKyAgICAg
ICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKGZyYWdtZW50LmlzRXF1YWxOb2RlKHZpZGVv
LnRleHRUcmFja3NbaV0uY3Vlc1sxXS5nZXRDdWVBc0hUTUwoKSksIHRydWUpOwogCiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CiAgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIkkgc2FpZCAiKSk7Ci0gICAgICAgICAgICAgICAgcSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInEiKTsKLSAgICAgICAgICAgICAgICBxLmNsYXNzTmFtZSA9
ICJibHVlIjsKLSAgICAgICAgICAgICAgICBxLnRpdGxlID0gIlNwZWFrZXIiOwotICAgICAgICAg
ICAgICAgIHEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMgY29t
aW5nIG5vdyIpKTsKLSAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChxKTsKKyAg
ICAgICAgICAgICAgICBjc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAg
ICAgICAgICAgICAgICBjc3Bhbi5jbGFzc05hbWUgPSAiYmx1ZSI7CisgICAgICAgICAgICAgICAg
Y3NwYW4udGl0bGUgPSAiU3BlYWtlciI7CisgICAgICAgICAgICAgICAgY3NwYW4uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMgY29taW5nIG5vdyIpKTsKKyAgICAg
ICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAg
ZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiEhISEiKSk7CiAg
ICAKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoZnJhZ21lbnQuaXNFcXVhbE5vZGUodmlk
ZW8udGV4dFRyYWNrc1tpXS5jdWVzWzJdLmdldEN1ZUFzSFRNTCgpKSwgdHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNTdhMjY1ZS4uOGYzYTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEz
LTAxLTEzICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxl
bWVudCBlbGVtZW50IHR5cGUgc2VsZWN0b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
NDgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50ZWQgdGFnIG1hdGNoaW5nIGZvciB0aGUgV2ViVlRUIHNwZWNpZmljIHRhZ3MgImMiIGFu
ZCAidiIuIEFsbCBjb21tb24gaHRtbCB0YWdzIGxpa2UgImIiIGFuZCAiaSIgYXJlIAorICAgICAg
ICBoYW5kbGVkIHdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhlIGNvZGUuIENyZWF0aW5nIGEgcmVu
ZGVyaW5nIHRyZWUgYW5kIERPTSB0cmVlIG5vd3VzZSBkaWZmZXJlbnQgY29kZSBwYXRocy4gCisg
ICAgICAgIFRoZXkgYm90aCBhcmUgbWFkZSBieSBjbG9uaW5nIGFuZCBtb2RpZnlpbmcgdGhlIHRy
ZWUgcHJvZHVjZWQgYnkgdGhlIHBhcnNlci4gVm9pY2UgdGFncyBub3cgdXNlIHNwYW5zIGZvciBi
b3RoIAorICAgICAgICByZW5kZXJpbmcgYW5kIERPTSB0cmVlcyB0byBjb25mb3JtIHRvIHNwZWNz
LiBTaW5jZSB0aGlzIGNoYW5nZXMgYSBsb3Qgb2YgY29kZSBsaXR0bGUgcmVmYWN0b3JpbmcgaGFz
IGJlZW4KKyAgICAgICAgZG9uZS4gUmVtb3ZlZCBtX2hhc0lubmVyVGltZXN0YW1wcyBzaW5jZSBp
dCBpcyBubyBsb25nZXIgbmVlZGVkLCBpdCBkb2Vzbid0IGFmZmVjdCBhbnl0aGluZy4gbV9kb2N1
bWVudEZyYWdtZW50IAorICAgICAgICB3YXMgcmVuYW1lZCB0byBtX3dlYlZUVE5vZGVUcmVlLgor
CisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHdlcmUgbW9kaWZpZWQgdG8gY292ZXIgdGhpcyBjYXNl
LgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpzZXRUZXh0KTogcmVuYW1lIG1fZG9jdW1lbnRGcmFnbWVudCB0byBtX3dlYlZU
VE5vZGVUcmVlCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNyZWF0ZVdlYlZUVE5v
ZGVUcmVlKTogcGFyc2UgdGhlIGN1ZSBpZiBpdCBoYXNuJ3QgYmVlbiBwYXJzZWQgYmVmb3JlLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6
IGNsb25lIGFuZCBwcmVwYXJlIGEgbm9kZSBmb3IgdXNpbmcgaW4gdGhlIERPTSB0cmVlIGFjY29y
ZGluZyB0byBzcGVjcy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNI
VE1MKTogZ2V0IGEgRE9NIHRyZWUgZm9yIHRoZSBjdWUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OmNyZWF0ZUN1ZVJlbmRlcmluZ1RyZWUpOiBjcmVhdGUgYSByZW5kZXJpbmcgdHJl
ZSAobWFpbiB0cmVlIGlzIGp1c3QgYmVpbmcgY2xvbmVkIGZvciBub3cpLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKTogdGlnaHRlbmluZyB0
aGUgYXJndW1lbnQgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRl
RGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5
VHJlZSk6IGNvZGUgY2xlYW51cCwgcmVtb3ZlZCBtX2hhc0lubmVyVGltZVN0YW1wcy4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRhZ05hbWUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6IHR5cGUgb2YgdGhlIG5ld2x5IGNy
ZWF0ZWQgZWxlbWVudHMgd2FzIGNoYW5nZWQgdG8gRWxlbWVudCB0byBhdm9pZCBoaXR0aW5nIAor
ICAgICAgICBhbiBhc3NlcnRpb24gd2hlbiBjbG9uaW5nIGJlY2F1c2UgYSBjbG9uZWQgZWxlbWVu
dCB3aWxsIG5vdCBoYXZlIEhUTUxFbGVtZW50IHR5cGUgZm9yIGVsZW1lbnRzIHdpdGggInYiIGFu
ZCAiYyIgdGFnLgorCisyMDEzLTAxLTEzICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29t
PgorCiAgICAgICAgIFN0eWxpbmcgZGlzYXBwZWFycyBmcm9tIHRoZSBjdWUgdGhhdCdzIGJlaW5n
IHN0eWxlZCBieSA6OmN1ZSBwc2V1ZG8gZWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzIzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA2MjlkY2M1Li5mZmFiZWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dFRyYWNrQ3VlLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgpAQCAtMjAwLDEzICsyMDEsMTIgQEAgVGV4dFRyYWNrQ3VlOjpUZXh0VHJh
Y2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgZG91YmxlIHN0YXJ0LCBkb3Vi
bGUKICAgICAsIG1fY3VlSW5kZXgoaW52YWxpZEN1ZUluZGV4KQogICAgICwgbV93cml0aW5nRGly
ZWN0aW9uKEhvcml6b250YWwpCiAgICAgLCBtX2N1ZUFsaWdubWVudChNaWRkbGUpCi0gICAgLCBt
X2RvY3VtZW50RnJhZ21lbnQoMCkKKyAgICAsIG1fd2ViVlRUTm9kZVRyZWUoMCkKICAgICAsIG1f
dHJhY2soMCkKICAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQogICAgICwg
bV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcGF1c2VPbkV4aXQoZmFsc2UpCiAgICAgLCBtX3Nu
YXBUb0xpbmVzKHRydWUpCi0gICAgLCBtX2hhc0lubmVyVGltZXN0YW1wcyhmYWxzZSkKICAgICAs
IG1fYWxsRG9jdW1lbnROb2RlcyhIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oY29udGV4dCkpKQogICAgICwgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSh0cnVl
KQogICAgICwgbV9kaXNwbGF5VHJlZShUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIHRoaXMpKQpAQCAtNDYzLDcg
KzQ2Myw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICBjdWVXaWxsQ2hhbmdlKCk7CiAgICAgLy8gQ2xlYXIgdGhlIGRvY3VtZW50IGZyYWdtZW50
IGJ1dCBkb24ndCBib3RoZXIgdG8gY3JlYXRlIGl0IGFnYWluIGp1c3QgeWV0IGFzIHdlIGNhbiBk
byB0aGF0CiAgICAgLy8gd2hlbiBpdCBpcyByZXF1ZXN0ZWQuCi0gICAgbV9kb2N1bWVudEZyYWdt
ZW50ID0gMDsKKyAgICBtX3dlYlZUVE5vZGVUcmVlID0gMDsKICAgICBtX2NvbnRlbnQgPSB0ZXh0
OwogICAgIGN1ZURpZENoYW5nZSgpOwogfQpAQCAtNDgxLDI5ICs0ODEsNDYgQEAgdm9pZCBUZXh0
VHJhY2tDdWU6OmludmFsaWRhdGVDdWVJbmRleCgpCiAgICAgbV9jdWVJbmRleCA9IGludmFsaWRD
dWVJbmRleDsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6
OmdldEN1ZUFzSFRNTCgpCit2b2lkIFRleHRUcmFja0N1ZTo6Y3JlYXRlV2ViVlRUTm9kZVRyZWUo
KQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQ7Ci0KLSAgICBpZiAoIW1fZG9jdW1lbnRGcmFnbWVudCkgewotICAg
ICAgICBtX2hhc0lubmVyVGltZXN0YW1wcyA9IGZhbHNlOwotICAgICAgICBtX2RvY3VtZW50RnJh
Z21lbnQgPSBXZWJWVFRQYXJzZXI6OmNyZWF0ZSgwLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQobV9jb250ZW50KTsKLQotICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRGcmFnbWVudCkKLSAgICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
IW1fd2ViVlRUTm9kZVRyZWUpCisgICAgICAgIG1fd2ViVlRUTm9kZVRyZWUgPSBXZWJWVFRQYXJz
ZXI6OmNyZWF0ZSgwLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5jcmVhdGVEb2N1bWVudEZy
YWdtZW50RnJvbUN1ZVRleHQobV9jb250ZW50KTsKK30KIAotICAgICAgICBmb3IgKE5vZGUgKmNo
aWxkID0gbV9kb2N1bWVudEZyYWdtZW50LT5maXJzdENoaWxkKCk7ICFtX2hhc0lubmVyVGltZXN0
YW1wcyAmJiBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAg
ICAgaWYgKGNoaWxkLT5ub2RlTmFtZSgpID09ICJ0aW1lc3RhbXAiKQotICAgICAgICAgICAgICAg
IG1faGFzSW5uZXJUaW1lc3RhbXBzID0gdHJ1ZTsKLSAgICAgICAgfQordm9pZCBUZXh0VHJhY2tD
dWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5vZGUqIHdlYlZUVE5vZGUsIENv
bnRhaW5lck5vZGUqIHBhcmVudCkKK3sKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSB3ZWJWVFROb2Rl
LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIFJlZlB0cjxOb2RlPiBjbG9uZWROb2RlOworICAgICAgICAvLyBTcGVjcyByZXF1aXJlIHZv
aWNlIGVsZW1lbnRzIHRvIGJlIHFUYWdzIGFuZCBjbGFzcyBlbGVtZW50cyBzcGFucyBmb3IgRE9N
IHRyZWVzLgorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh2b2ljZUVsZW1lbnRUYWdOYW1l
KCkpIHx8IG5vZGUtPmhhc1RhZ05hbWUoY2xhc3NFbGVtZW50VGFnTmFtZSgpKSkgeworICAgICAg
ICAgICAgY2xvbmVkTm9kZSA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKHNwYW5UYWcsIHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgICAgICAg
ICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIHRv
RWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOworICAgICAgICAgICAgdG9F
bGVtZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRyaWJ1dGUodGl0bGVBdHRyLCB0b0VsZW1l
bnQobm9kZSktPmdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBjbG9uZWROb2RlID0gbm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKKworICAgICAgICBw
YXJlbnQtPmFwcGVuZENoaWxkKGNsb25lZE5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAg
ICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCisgICAgICAgICAgICBjb3B5V2ViVlRU
Tm9kZVRvRE9NVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSksIHRvQ29udGFpbmVyTm9kZShjbG9u
ZWROb2RlLmdldCgpKSk7CiAgICAgfQorfQogCi0gICAgZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CitQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKCkKK3sKKyAgICBjcmVhdGVXZWJW
VFROb2RlVHJlZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY2xvbmVkRnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKG1fd2ViVlRUTm9kZVRyZWUuZ2V0KCksIGNs
b25lZEZyYWdtZW50LmdldCgpKTsKKyAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQucmVsZWFzZSgp
OworfQogCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Y3JlYXRl
Q3VlUmVuZGVyaW5nVHJlZSgpCit7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25l
ZEZyYWdtZW50OworICAgIGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7CisgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwogICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKLSAgICBtX2RvY3VtZW50RnJhZ21lbnQtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVu
dC5nZXQoKSk7Ci0KKyAgICBtX3dlYlZUVE5vZGVUcmVlLT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVk
RnJhZ21lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxlYXNlKCk7CiB9
CiAKQEAgLTY1OCw3ICs2NzUsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6Y2FsY3VsYXRlRGlzcGxh
eVBhcmFtZXRlcnMoKQogICAgIG1fY29tcHV0ZWRMaW5lUG9zaXRpb24gPSBjYWxjdWxhdGVDb21w
dXRlZExpbmVQb3NpdGlvbigpOwogfQogICAgIAotdm9pZCBUZXh0VHJhY2tDdWU6Om1hcmtGdXR1
cmVBbmRQYXN0Tm9kZXMoTm9kZSogcm9vdCwgZG91YmxlIHByZXZpb3VzVGltZXN0YW1wLCBkb3Vi
bGUgbW92aWVUaW1lKQordm9pZCBUZXh0VHJhY2tDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMo
Q29udGFpbmVyTm9kZSogcm9vdCwgZG91YmxlIHByZXZpb3VzVGltZXN0YW1wLCBkb3VibGUgbW92
aWVUaW1lKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB0aW1lc3Rh
bXBUYWcsIChBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpKSk7CiAgICAgCkBAIC02OTcsOSArNzE0
LDggQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGZsb2F0IG1vdmllVGlt
ZSkKIAogICAgIC8vIENsZWFyIHRoZSBjb250ZW50cyBvZiB0aGUgc2V0LgogICAgIG1fYWxsRG9j
dW1lbnROb2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKLQogICAgIC8vIFVwZGF0ZSB0aGUgdHdvIHNl
dHMgY29udGFpbmluZyBwYXN0IGFuZCBmdXR1cmUgV2ViVlRUIG9iamVjdHMuCi0gICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IHJlZmVyZW5jZVRyZWUgPSBnZXRDdWVBc0hUTUwoKTsKKyAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcmVmZXJlbmNlVHJlZSA9IGNyZWF0ZUN1ZVJlbmRlcmlu
Z1RyZWUoKTsKICAgICBtYXJrRnV0dXJlQW5kUGFzdE5vZGVzKHJlZmVyZW5jZVRyZWUuZ2V0KCks
IHN0YXJ0VGltZSgpLCBtb3ZpZVRpbWUpOwogICAgIG1fYWxsRG9jdW1lbnROb2Rlcy0+YXBwZW5k
Q2hpbGQocmVmZXJlbmNlVHJlZSk7CiB9CkBAIC03NDAsMTEgKzc1Niw3IEBAIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlQm94PiBUZXh0VHJhY2tDdWU6OmdldERpc3BsYXlUcmVlKCkKICAgICAvLyBu
b3JtYWxseSB3b3VsZCBpbiBDU1MsIGl0IGlzIGluc3RlYWQgZm9yY2libHkgd3JhcHBlZCBhdCB0
aGUgYm94J3MgZWRnZS4pCiAgICAgbV9kaXNwbGF5VHJlZS0+YXBwbHlDU1NQcm9wZXJ0aWVzKCk7
CiAKLSAgICBpZiAobV9oYXNJbm5lclRpbWVzdGFtcHMpCi0gICAgICAgIHVwZGF0ZURpc3BsYXlU
cmVlKHRyYWNrKCktPm1lZGlhRWxlbWVudCgpLT5jdXJyZW50VGltZSgpKTsKLQogICAgIG1fZGlz
cGxheVRyZWVTaG91bGRDaGFuZ2UgPSBmYWxzZTsKLQogICAgIC8vIDEwLjE1LiBMZXQgY3VlJ3Mg
dGV4dCB0cmFjayBjdWUgZGlzcGxheSBzdGF0ZSBoYXZlIHRoZSBDU1MgYm94ZXMgaW4KICAgICAv
LyBib3hlcy4KICAgICByZXR1cm4gbV9kaXNwbGF5VHJlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDQ3YzRlZTEuLjRiZWRiZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtNzgsNiArNzgsMTggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0N1ZShjb250ZXh0LCBzdGFydCwg
ZW5kLCBjb250ZW50KSk7CiAgICAgfQogCisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHZvaWNlRWxlbWVudFRhZ05hbWUoKQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChRdWFsaWZpZWROYW1lLCB2VGFnLCAobnVsbEF0b20sICJ2IiwgbnVsbEF0b20pKTsKKyAgICAg
ICAgcmV0dXJuIHZUYWc7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGNsYXNzRWxlbWVudFRhZ05hbWUoKQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChRdWFsaWZpZWROYW1lLCBjVGFnLCAobnVsbEF0b20sICJjIiwgbnVsbEF0b20pKTsKKyAgICAg
ICAgcmV0dXJuIGNUYWc7CisgICAgfQorCiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ3VlKCk7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbGxOb2Rlc1NoYWRvd1BzZXVkb0lkKCk7
CkBAIC0xMjUsNiArMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUN1ZUluZGV4
KCk7CiAKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1ZUFzSFRNTCgpOwor
ICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ3VlUmVuZGVyaW5nVHJlZSgp
OwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgdmlydHVhbCBi
b29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pIE9WRVJSSURFOwpAQCAtMTM1LDcg
KzE0OCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUJveD4gZ2V0RGlz
cGxheVRyZWUoKTsKICAgICB2b2lkIHVwZGF0ZURpc3BsYXlUcmVlKGZsb2F0KTsKICAgICB2b2lk
IHJlbW92ZURpc3BsYXlUcmVlKCk7Ci0gICAgdm9pZCBtYXJrRnV0dXJlQW5kUGFzdE5vZGVzKE5v
ZGUqLCBkb3VibGUsIGRvdWJsZSk7CisgICAgdm9pZCBtYXJrRnV0dXJlQW5kUGFzdE5vZGVzKENv
bnRhaW5lck5vZGUqLCBkb3VibGUsIGRvdWJsZSk7CiAKICAgICBpbnQgY2FsY3VsYXRlQ29tcHV0
ZWRMaW5lUG9zaXRpb24oKTsKIApAQCAtMTk3LDcgKzIxMCw3IEBAIHByaXZhdGU6CiAgICAgZW51
bSBBbGlnbm1lbnQgeyBTdGFydCwgTWlkZGxlLCBFbmQgfTsKICAgICBBbGlnbm1lbnQgbV9jdWVB
bGlnbm1lbnQ7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbV9kb2N1bWVudEZyYWdt
ZW50OworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX3dlYlZUVE5vZGVUcmVlOwogICAg
IFRleHRUcmFjayogbV90cmFjazsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0
RGF0YTsKQEAgLTIwNyw3ICsyMjAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYXVzZU9uRXhp
dDsKICAgICBib29sIG1fc25hcFRvTGluZXM7CiAKLSAgICBib29sIG1faGFzSW5uZXJUaW1lc3Rh
bXBzOwogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gbV9hbGxEb2N1bWVudE5vZGVzOwogCiAg
ICAgYm9vbCBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlOwpAQCAtMjIxLDYgKzIzMyw5IEBAIHBy
aXZhdGU6CiAgICAgaW50IG1fZGlzcGxheVNpemU7CiAKICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZs
b2F0PiBtX2Rpc3BsYXlQb3NpdGlvbjsKKworICAgIHZvaWQgY3JlYXRlV2ViVlRUTm9kZVRyZWUo
KTsKKyAgICB2b2lkIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5vZGUqIFdlYlZU
VE5vZGUsIENvbnRhaW5lck5vZGUqIHJvb3QpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDI5N2U1
OTkuLjUyOGEyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHAKQEAgLTM0Niw3ICszNDYsNiBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZy
b21Ub2tlbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgUXVhbGlmaWVkTmFtZSB0YWdOYW1lKG51
bGxBdG9tLCB0b2tlblRhZ05hbWUsIHhodG1sTmFtZXNwYWNlVVJJKTsKIAogICAgIC8vIGh0dHA6
Ly9kZXYudzMub3JnL2h0bWw1L3dlYnZ0dC8jd2VidnR0LWN1ZS10ZXh0LWRvbS1jb25zdHJ1Y3Rp
b24tcnVsZXMKLSAgICAKICAgICBzd2l0Y2ggKG1fdG9rZW4udHlwZSgpKSB7CiAgICAgY2FzZSBX
ZWJWVFRUb2tlblR5cGVzOjpDaGFyYWN0ZXI6IHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnQobV90
b2tlbi5jaGFyYWN0ZXJzKCkuZGF0YSgpLCBtX3Rva2VuLmNoYXJhY3RlcnMoKS5zaXplKCkpOwpA
QCAtMzU1LDE4ICszNTQsMTggQEAgdm9pZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9t
VG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBXZWJWVFRUb2tlblR5cGVzOjpTdGFydFRhZzogewotICAgICAgICBSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNoaWxkOworICAgICAgICBSZWZQdHI8RWxlbWVudD4gY2hpbGQ7CiAgICAgICAgIGlmIChp
c1JlY29nbml6ZWRUYWcodG9rZW5UYWdOYW1lKSkKICAgICAgICAgICAgIGNoaWxkID0gSFRNTEVs
ZW1lbnQ6OmNyZWF0ZSh0YWdOYW1lLCBkb2N1bWVudCk7CiAgICAgICAgIGVsc2UgaWYgKG1fdG9r
ZW4ubmFtZSgpLnNpemUoKSA9PSAxICYmIG1fdG9rZW4ubmFtZSgpWzBdID09ICdjJykKLSAgICAg
ICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShzcGFuVGFnLCBkb2N1bWVudCk7Cisg
ICAgICAgICAgICBjaGlsZCA9IEVsZW1lbnQ6OmNyZWF0ZShUZXh0VHJhY2tDdWU6OmNsYXNzRWxl
bWVudFRhZ05hbWUoKSwgZG9jdW1lbnQpOwogICAgICAgICBlbHNlIGlmIChtX3Rva2VuLm5hbWUo
KS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAndicpCi0gICAgICAgICAgICBj
aGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUocVRhZywgZG9jdW1lbnQpOworICAgICAgICAgICAg
Y2hpbGQgPSBFbGVtZW50OjpjcmVhdGUoVGV4dFRyYWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1l
KCksIGRvY3VtZW50KTsKIAogICAgICAgICBpZiAoY2hpbGQpIHsKICAgICAgICAgICAgIGlmICht
X3Rva2VuLmNsYXNzZXMoKS5zaXplKCkgPiAwKQogICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRB
dHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcobV90b2tlbi5jbGFzc2VzKCkuZGF0YSgp
LCBtX3Rva2VuLmNsYXNzZXMoKS5zaXplKCkpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aGFz
VGFnTmFtZShxVGFnKSkKKyAgICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShUZXh0VHJh
Y2tDdWU6OnZvaWNlRWxlbWVudFRhZ05hbWUoKSkpCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNl
dEF0dHJpYnV0ZSh0aXRsZUF0dHIsIEF0b21pY1N0cmluZyhtX3Rva2VuLmFubm90YXRpb24oKS5k
YXRhKCksIG1fdG9rZW4uYW5ub3RhdGlvbigpLnNpemUoKSkpOwogICAgICAgICAgICAgbV9jdXJy
ZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoY2hpbGQpOwogICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZSA9IGNoaWxkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182484</attachid>
            <date>2013-01-13 04:48:35 -0800</date>
            <delta_ts>2013-01-13 16:23:47 -0800</delta_ts>
            <desc>Proposed fix 0.9</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21413</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZDViN2Q3Li40ZDQ5ZmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MTMgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC10YzAyNi12b2ljZS5odG1sOiB2b2ljZSBlbGVtZW50cyBzaG91bGQgYmUgc3BhbnMgYWNj
b3JkaW5nIHRvIHNwZWNzLgorCiAyMDEzLTAxLTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0
eWxpbmcudnR0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxp
bmcudnR0CmluZGV4IDMyNzQ4YzkuLmZmODk0Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKQEAgLTEsMTMgKzEsMTcgQEAK
IFdFQlZUVAogCiAxCi0wMDowMC4wMDAgLS0+IDAwOjAxLjAwMAorMDA6MDAuMDAwIC0tPiAwMDow
MC4yMDAKIExvcnVtIGlwc3VtCiAKIDIKLTAwOjAxLjAwMCAtLT4gMDA6MDIuMDAwCiswMDowMC4y
MDAgLS0+IDAwOjAwLjQwMAogPGMucmVkPmRvbG9yIHNpdCA8L2M+PGMuZ3JlZW4+YW1ldCwgY29u
c2VjdGV0dXIgPC9jPjxjLnJlZDI+YWRpcGlzY2luZyBlbGl0PC9jPgogCiAzCi0wMDowMi4wMDAg
LS0+IDAwOjA1LjAwMAotPDAwOjAyLjAwMD48Yz5TdXNwZW5kaXNzZSBhY2N1bXNhbiwgPC9jPjww
MDowMy4wMDA+PGM+bWF1cmlzIHNlZCA8L2M+PDAwOjA0LjAwMD48Yz5ldWlzbW9kIHBoYXJldHJh
PC9jPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzAwOjAwLjQwMCAtLT4gMDA6MDEuMDAw
Cis8MDA6MDAuNDAwPjxjPlN1c3BlbmRpc3NlIGFjY3Vtc2FuLCA8L2M+PDAwOjAwLjYwMD48Yz5t
YXVyaXMgc2VkIDwvYz48MDA6MDAuODAwPjxjPmV1aXNtb2QgcGhhcmV0cmE8L2M+CisKKzQKKzAw
OjAxLjAwMCAtLT4gMDA6MDEuMjAwCis8Yz5BbGlxdWFtIHNvbGxpY2l0dWRpbjwvYz4gPHY+bWFz
c2EgYWMgbWFnbmEgdnVscHV0YXRlIGRpZ25pc3NpbTwvdj4gPGI+cG9zdWVyZSBldCBmZXJtZW50
dW08L2I+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0
Y2hpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1h
dGNoaW5nLWV4cGVjdGVkLnR4dAppbmRleCA0MDg3YmRmLi5lM2Y4ZWY4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50
eHQKQEAgLTUsMjUgKzUsMzQgQEAgRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSku
Y29sb3IgPT0gJ3JnYigyNTUsIDAsIDApJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMCwgMTI4LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogCi1SVU4o
dmlkZW8uY3VycmVudFRpbWUgPSAyLjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCiBF
VkVOVChzZWVrZWQpCiAKIAogMi4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJv
cGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8gY2xhc3MuCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VYUEVD
VEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAxMjgp
JykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2Io
MTI4LCAxMjgsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSku
Y29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50VGlt
ZSA9IDMuNSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNykKIEVWRU5UKHNlZWtlZCkKLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVO
b2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCiBFWFBFQ1RF
RCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAxMjgp
JykgT0sKIAotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gNC41KQorUlVOKHZpZGVvLmN1cnJlbnRU
aW1lID0gMC45KQogRVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3Vl
Tm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9k
ZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVk
U3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworCitSVU4odmlk
ZW8uY3VycmVudFRpbWUgPSAxLjEpCitFVkVOVChzZWVrZWQpCisKKworMy4gVGVzdCB0aGF0IGN1
ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGFnLgorRVhQRUNURUQgKGdldENvbXB1
dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNU
RUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMCkn
KSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigw
LCAyNTUsIDApJykgT0sKIEVORCBPRiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKaW5kZXggODE0NWIyYy4uMzI4NjM4ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTgs
MTAgKzgsMTIgQEAKICAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9z
Y3JpcHQ+CiAKICAgICAgICAgPHN0eWxlPgotCisgICAgICAgIHZpZGVvOjpjdWUoYykge2NvbG9y
OiBwdXJwbGV9CisgICAgICAgIHZpZGVvOjpjdWUodikge2NvbG9yOiB5ZWxsb3d9CisgICAgICAg
IHZpZGVvOjpjdWUoYikge2NvbG9yOiBsaW1lfQogICAgICAgICB2aWRlbzo6Y3VlKC5yZWQsIC5y
ZWQyKSB7IGNvbG9yOnJlZCB9CiAgICAgICAgICN0ZXN0dmlkZW86OmN1ZSguZ3JlZW4pIHsgY29s
b3I6Z3JlZW4gfQotCisgICAgICAgIHZpZGVvOjpjdWUoOmZ1dHVyZSkge2NvbG9yOiBncmF5fQog
ICAgICAgICA8L3N0eWxlPgogCiAgICAgICAgIDxzY3JpcHQ+CkBAIC0xOSwxMCArMjEsMTIgQEAK
ICAgICAgICAgdmFyIGN1ZU5vZGU7CiAgICAgICAgIHZhciBzZWVrZWRDb3VudCA9IDA7CiAgICAg
ICAgIHZhciBpbmZvID0gW1sicmdiKDI1NSwgMCwgMCkiLCAicmdiKDAsIDEyOCwgMCkiLCAicmdi
KDI1NSwgMCwgMCkiXSwKLSAgICAgICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSki
LCAicmdiKDEyOCwgMTI4LCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAotICAgICAgICAg
ICAgICAgICAgICBbInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAi
cmdiKDEyOCwgMTI4LCAxMjgpIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1
LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiXV07Ci0g
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEy
OCwgMTI4LCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAg
ICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgs
IDEyOCkiXSwKKyAgICAgICAgICAgICAgICAgICAgWyJyZ2IoMTI4LCAwLCAxMjgpIiwgInJnYigx
MjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAgICBb
InJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDI1NSwgMjU1LCAwKSIsICJyZ2IoMCwgMjU1LCAwKSJd
XTsKKyAgICAgICAgdmFyIHNlZWtUaW1lcyA9IFswLjMsIDAuNSwgMC43LCAwLjksIDEuMSwgMS4z
XTsKKwogICAgICAgICBmdW5jdGlvbiBza2lwTm9uRWxlbWVudHMocm9vdCkKICAgICAgICAgewog
ICAgICAgICAgICAgbmV4dEVsZW1lbnRTaWJsaW5nID0gcm9vdDsKQEAgLTQxLDYgKzQ1LDEwIEBA
CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIiIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMi4gVGVzdCB0aGF0
IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8g
Y2xhc3MuIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZWtlZENvdW50ID09IDQpIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIzLiBUZXN0IHRoYXQgY3Vl
cyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9wZXJseSBieSB0YWcuIik7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGN1ZU5vZGUgPSBza2lwTm9uRWxlbWVudHModGV4dFRyYWNrRGlzcGxheUVs
ZW1lbnQodmlkZW8sICdhbGwtbm9kZXMnKS5maXJzdENoaWxkKTsKQEAgLTU1LDcgKzYzLDcgQEAK
ICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3Vy
cmVudFRpbWUgPSAiICsgKHZpZGVvLmN1cnJlbnRUaW1lICsgMSkpOworICAgICAgICAgICAgICAg
IHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAiICsgc2Vla1RpbWVzW3NlZWtlZENvdW50XSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjYsNyArNzQsNyBAQAogICAgICAgICAgICAg
dmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vY29udGVudC90ZXN0Jyk7CiAg
ICAgICAgICAgICB2aWRlby5pZCA9ICJ0ZXN0dmlkZW8iOwogICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdzZWVrZWQnLCBzZWVrZWQpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5
dGhyb3VnaCcsIGZ1bmN0aW9uKCkgeyB2aWRlby5jdXJyZW50VGltZSA9IDEuNTsgfSk7CisgICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7IHZpZGVv
LmN1cnJlbnRUaW1lID0gc2Vla1RpbWVzWzBdOyB9KTsKICAgICAgICAgfQogCiAgICAgICAgIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0
LXRjMDI2LXZvaWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
dGMwMjYtdm9pY2UuaHRtbAppbmRleCA1MmUwNzFlMC4uZjZmMDIzOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKQEAg
LTI0LDMxICsyNCwzMSBAQAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4
dFRyYWNrc1siICsgaSArICJdLmN1ZXMubGVuZ3RoIiwgIjMiKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7Ci0gICAgICAgICAgICAgICAgdmFyIHEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJxIik7Ci0gICAgICAgICAgICAgICAgcS5jbGFzc05hbWUgPSAiYmx1ZSI7Ci0gICAgICAgICAg
ICAgICAgcS50aXRsZSA9ICJTcGVha2VyIjsKLSAgICAgICAgICAgICAgICBxLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJCZWFyIGlzIENvbWluZyEhISEhIikpOwotICAgICAg
ICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHEpOworICAgICAgICAgICAgICAgIHZhciBj
c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBj
c3Bhbi5jbGFzc05hbWUgPSAiYmx1ZSI7CisgICAgICAgICAgICAgICAgY3NwYW4udGl0bGUgPSAi
U3BlYWtlciI7CisgICAgICAgICAgICAgICAgY3NwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoIkJlYXIgaXMgQ29taW5nISEhISEiKSk7CisgICAgICAgICAgICAgICAgZnJh
Z21lbnQuYXBwZW5kQ2hpbGQoY3NwYW4pOwogICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcblRleHQgc3BhbiB3aXRoIGEgY2xhc3Mg
YW5kIGFuIGFubm90YXRpb24uIikpOwogIAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZChm
cmFnbWVudC5pc0VxdWFsTm9kZSh2aWRlby50ZXh0VHJhY2tzW2ldLmN1ZXNbMF0uZ2V0Q3VlQXNI
VE1MKCkpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmcmFnbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgICAgICBx
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicSIpOwotICAgICAgICAgICAgICAgIHEudGl0bGUg
PSAiRG9lIEh1bnRlciI7Ci0gICAgICAgICAgICAgICAgcS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiSSBzYWlkIEJlYXIgaXMgY29taW5nISEhISIpKTsKLSAgICAgICAgICAg
ICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChxKTsKKyAgICAgICAgICAgICAgICBjc3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBjc3Bhbi50aXRs
ZSA9ICJEb2UgSHVudGVyIjsKKyAgICAgICAgICAgICAgICBjc3Bhbi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiSSBzYWlkIEJlYXIgaXMgY29taW5nISEhISIpKTsKKyAgICAg
ICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKGZyYWdtZW50LmlzRXF1YWxOb2RlKHZpZGVv
LnRleHRUcmFja3NbaV0uY3Vlc1sxXS5nZXRDdWVBc0hUTUwoKSksIHRydWUpOwogCiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CiAgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIkkgc2FpZCAiKSk7Ci0gICAgICAgICAgICAgICAgcSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInEiKTsKLSAgICAgICAgICAgICAgICBxLmNsYXNzTmFtZSA9
ICJibHVlIjsKLSAgICAgICAgICAgICAgICBxLnRpdGxlID0gIlNwZWFrZXIiOwotICAgICAgICAg
ICAgICAgIHEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMgY29t
aW5nIG5vdyIpKTsKLSAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChxKTsKKyAg
ICAgICAgICAgICAgICBjc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAg
ICAgICAgICAgICAgICBjc3Bhbi5jbGFzc05hbWUgPSAiYmx1ZSI7CisgICAgICAgICAgICAgICAg
Y3NwYW4udGl0bGUgPSAiU3BlYWtlciI7CisgICAgICAgICAgICAgICAgY3NwYW4uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMgY29taW5nIG5vdyIpKTsKKyAgICAg
ICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAg
ZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiEhISEiKSk7CiAg
ICAKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoZnJhZ21lbnQuaXNFcXVhbE5vZGUodmlk
ZW8udGV4dFRyYWNrc1tpXS5jdWVzWzJdLmdldEN1ZUFzSFRNTCgpKSwgdHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNTdhMjY1ZS4uOGYzYTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEz
LTAxLTEzICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxl
bWVudCBlbGVtZW50IHR5cGUgc2VsZWN0b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
NDgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50ZWQgdGFnIG1hdGNoaW5nIGZvciB0aGUgV2ViVlRUIHNwZWNpZmljIHRhZ3MgImMiIGFu
ZCAidiIuIEFsbCBjb21tb24gaHRtbCB0YWdzIGxpa2UgImIiIGFuZCAiaSIgYXJlIAorICAgICAg
ICBoYW5kbGVkIHdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhlIGNvZGUuIENyZWF0aW5nIGEgcmVu
ZGVyaW5nIHRyZWUgYW5kIERPTSB0cmVlIG5vd3VzZSBkaWZmZXJlbnQgY29kZSBwYXRocy4gCisg
ICAgICAgIFRoZXkgYm90aCBhcmUgbWFkZSBieSBjbG9uaW5nIGFuZCBtb2RpZnlpbmcgdGhlIHRy
ZWUgcHJvZHVjZWQgYnkgdGhlIHBhcnNlci4gVm9pY2UgdGFncyBub3cgdXNlIHNwYW5zIGZvciBi
b3RoIAorICAgICAgICByZW5kZXJpbmcgYW5kIERPTSB0cmVlcyB0byBjb25mb3JtIHRvIHNwZWNz
LiBTaW5jZSB0aGlzIGNoYW5nZXMgYSBsb3Qgb2YgY29kZSBsaXR0bGUgcmVmYWN0b3JpbmcgaGFz
IGJlZW4KKyAgICAgICAgZG9uZS4gUmVtb3ZlZCBtX2hhc0lubmVyVGltZXN0YW1wcyBzaW5jZSBp
dCBpcyBubyBsb25nZXIgbmVlZGVkLCBpdCBkb2Vzbid0IGFmZmVjdCBhbnl0aGluZy4gbV9kb2N1
bWVudEZyYWdtZW50IAorICAgICAgICB3YXMgcmVuYW1lZCB0byBtX3dlYlZUVE5vZGVUcmVlLgor
CisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHdlcmUgbW9kaWZpZWQgdG8gY292ZXIgdGhpcyBjYXNl
LgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpzZXRUZXh0KTogcmVuYW1lIG1fZG9jdW1lbnRGcmFnbWVudCB0byBtX3dlYlZU
VE5vZGVUcmVlCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNyZWF0ZVdlYlZUVE5v
ZGVUcmVlKTogcGFyc2UgdGhlIGN1ZSBpZiBpdCBoYXNuJ3QgYmVlbiBwYXJzZWQgYmVmb3JlLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6
IGNsb25lIGFuZCBwcmVwYXJlIGEgbm9kZSBmb3IgdXNpbmcgaW4gdGhlIERPTSB0cmVlIGFjY29y
ZGluZyB0byBzcGVjcy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNI
VE1MKTogZ2V0IGEgRE9NIHRyZWUgZm9yIHRoZSBjdWUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OmNyZWF0ZUN1ZVJlbmRlcmluZ1RyZWUpOiBjcmVhdGUgYSByZW5kZXJpbmcgdHJl
ZSAobWFpbiB0cmVlIGlzIGp1c3QgYmVpbmcgY2xvbmVkIGZvciBub3cpLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKTogdGlnaHRlbmluZyB0
aGUgYXJndW1lbnQgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRl
RGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5
VHJlZSk6IGNvZGUgY2xlYW51cCwgcmVtb3ZlZCBtX2hhc0lubmVyVGltZVN0YW1wcy4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKToKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRhZ05hbWUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6IHR5cGUgb2YgdGhlIG5ld2x5IGNy
ZWF0ZWQgZWxlbWVudHMgd2FzIGNoYW5nZWQgdG8gRWxlbWVudCB0byBhdm9pZCBoaXR0aW5nIAor
ICAgICAgICBhbiBhc3NlcnRpb24gd2hlbiBjbG9uaW5nIGJlY2F1c2UgYSBjbG9uZWQgZWxlbWVu
dCB3aWxsIG5vdCBoYXZlIEhUTUxFbGVtZW50IHR5cGUgZm9yIGVsZW1lbnRzIHdpdGggInYiIGFu
ZCAiYyIgdGFnLgorCisyMDEzLTAxLTEzICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29t
PgorCiAgICAgICAgIFN0eWxpbmcgZGlzYXBwZWFycyBmcm9tIHRoZSBjdWUgdGhhdCdzIGJlaW5n
IHN0eWxlZCBieSA6OmN1ZSBwc2V1ZG8gZWxlbWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzIzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA2MjlkY2M1Li5iYmY1ZjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dFRyYWNrQ3VlLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgpAQCAtMjAwLDEzICsyMDEsMTIgQEAgVGV4dFRyYWNrQ3VlOjpUZXh0VHJh
Y2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgZG91YmxlIHN0YXJ0LCBkb3Vi
bGUKICAgICAsIG1fY3VlSW5kZXgoaW52YWxpZEN1ZUluZGV4KQogICAgICwgbV93cml0aW5nRGly
ZWN0aW9uKEhvcml6b250YWwpCiAgICAgLCBtX2N1ZUFsaWdubWVudChNaWRkbGUpCi0gICAgLCBt
X2RvY3VtZW50RnJhZ21lbnQoMCkKKyAgICAsIG1fd2ViVlRUTm9kZVRyZWUoMCkKICAgICAsIG1f
dHJhY2soMCkKICAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQogICAgICwg
bV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcGF1c2VPbkV4aXQoZmFsc2UpCiAgICAgLCBtX3Nu
YXBUb0xpbmVzKHRydWUpCi0gICAgLCBtX2hhc0lubmVyVGltZXN0YW1wcyhmYWxzZSkKICAgICAs
IG1fYWxsRG9jdW1lbnROb2RlcyhIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oY29udGV4dCkpKQogICAgICwgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSh0cnVl
KQogICAgICwgbV9kaXNwbGF5VHJlZShUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIHRoaXMpKQpAQCAtNDYzLDcg
KzQ2Myw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICBjdWVXaWxsQ2hhbmdlKCk7CiAgICAgLy8gQ2xlYXIgdGhlIGRvY3VtZW50IGZyYWdtZW50
IGJ1dCBkb24ndCBib3RoZXIgdG8gY3JlYXRlIGl0IGFnYWluIGp1c3QgeWV0IGFzIHdlIGNhbiBk
byB0aGF0CiAgICAgLy8gd2hlbiBpdCBpcyByZXF1ZXN0ZWQuCi0gICAgbV9kb2N1bWVudEZyYWdt
ZW50ID0gMDsKKyAgICBtX3dlYlZUVE5vZGVUcmVlID0gMDsKICAgICBtX2NvbnRlbnQgPSB0ZXh0
OwogICAgIGN1ZURpZENoYW5nZSgpOwogfQpAQCAtNDgxLDI5ICs0ODEsNDYgQEAgdm9pZCBUZXh0
VHJhY2tDdWU6OmludmFsaWRhdGVDdWVJbmRleCgpCiAgICAgbV9jdWVJbmRleCA9IGludmFsaWRD
dWVJbmRleDsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6
OmdldEN1ZUFzSFRNTCgpCit2b2lkIFRleHRUcmFja0N1ZTo6Y3JlYXRlV2ViVlRUTm9kZVRyZWUo
KQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQ7Ci0KLSAgICBpZiAoIW1fZG9jdW1lbnRGcmFnbWVudCkgewotICAg
ICAgICBtX2hhc0lubmVyVGltZXN0YW1wcyA9IGZhbHNlOwotICAgICAgICBtX2RvY3VtZW50RnJh
Z21lbnQgPSBXZWJWVFRQYXJzZXI6OmNyZWF0ZSgwLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQobV9jb250ZW50KTsKLQotICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRGcmFnbWVudCkKLSAgICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
IW1fd2ViVlRUTm9kZVRyZWUpCisgICAgICAgIG1fd2ViVlRUTm9kZVRyZWUgPSBXZWJWVFRQYXJz
ZXI6OmNyZWF0ZSgwLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5jcmVhdGVEb2N1bWVudEZy
YWdtZW50RnJvbUN1ZVRleHQobV9jb250ZW50KTsKK30KIAotICAgICAgICBmb3IgKE5vZGUgKmNo
aWxkID0gbV9kb2N1bWVudEZyYWdtZW50LT5maXJzdENoaWxkKCk7ICFtX2hhc0lubmVyVGltZXN0
YW1wcyAmJiBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAg
ICAgaWYgKGNoaWxkLT5ub2RlTmFtZSgpID09ICJ0aW1lc3RhbXAiKQotICAgICAgICAgICAgICAg
IG1faGFzSW5uZXJUaW1lc3RhbXBzID0gdHJ1ZTsKLSAgICAgICAgfQordm9pZCBUZXh0VHJhY2tD
dWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5vZGUqIHdlYlZUVE5vZGUsIENv
bnRhaW5lck5vZGUqIHBhcmVudCkKK3sKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSB3ZWJWVFROb2Rl
LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIFJlZlB0cjxOb2RlPiBjbG9uZWROb2RlOworICAgICAgICAvLyBTcGVjcyByZXF1aXJlIHZv
aWNlIGFuZCBjbGFzcyBXZWJWVFQgZWxlbWVudHMgdG8gYmUgc3BhbnMgZm9yIERPTSB0cmVlcy4K
KyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodm9pY2VFbGVtZW50VGFnTmFtZSgpKSB8fCBu
b2RlLT5oYXNUYWdOYW1lKGNsYXNzRWxlbWVudFRhZ05hbWUoKSkpIHsKKyAgICAgICAgICAgIGNs
b25lZE5vZGUgPSBIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShzcGFuVGFnLCBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgICAgICAgICAgdG9FbGVt
ZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCB0b0VsZW1lbnQo
bm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpKTsKKyAgICAgICAgICAgIHRvRWxlbWVudChj
bG9uZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKHRpdGxlQXR0ciwgdG9FbGVtZW50KG5vZGUp
LT5nZXRBdHRyaWJ1dGUodGl0bGVBdHRyKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
Y2xvbmVkTm9kZSA9IG5vZGUtPmNsb25lTm9kZShmYWxzZSk7CisKKyAgICAgICAgcGFyZW50LT5h
cHBlbmRDaGlsZChjbG9uZWROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgaWYg
KG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQorICAgICAgICAgICAgY29weVdlYlZUVE5vZGVUb0RP
TVRyZWUodG9Db250YWluZXJOb2RlKG5vZGUpLCB0b0NvbnRhaW5lck5vZGUoY2xvbmVkTm9kZS5n
ZXQoKSkpOwogICAgIH0KK30KIAotICAgIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCit7CisgICAgY3JlYXRlV2ViVlRUTm9kZVRy
ZWUoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNs
b25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBj
b3B5V2ViVlRUTm9kZVRvRE9NVHJlZShtX3dlYlZUVE5vZGVUcmVlLmdldCgpLCBjbG9uZWRGcmFn
bWVudC5nZXQoKSk7CisgICAgcmV0dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKK30KIAor
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6OmNyZWF0ZUN1ZVJlbmRl
cmluZ1RyZWUoKQoreworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVu
dDsKKyAgICBjcmVhdGVXZWJWVFROb2RlVHJlZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBj
bG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAg
bV9kb2N1bWVudEZyYWdtZW50LT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQuZ2V0KCkp
OwotCisgICAgbV93ZWJWVFROb2RlVHJlZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZyYWdtZW50
LmdldCgpKTsKICAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQucmVsZWFzZSgpOwogfQogCkBAIC02
NTgsNyArNjc1LDcgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmNhbGN1bGF0ZURpc3BsYXlQYXJhbWV0
ZXJzKCkKICAgICBtX2NvbXB1dGVkTGluZVBvc2l0aW9uID0gY2FsY3VsYXRlQ29tcHV0ZWRMaW5l
UG9zaXRpb24oKTsKIH0KICAgICAKLXZvaWQgVGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFz
dE5vZGVzKE5vZGUqIHJvb3QsIGRvdWJsZSBwcmV2aW91c1RpbWVzdGFtcCwgZG91YmxlIG1vdmll
VGltZSkKK3ZvaWQgVGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5l
ck5vZGUqIHJvb3QsIGRvdWJsZSBwcmV2aW91c1RpbWVzdGFtcCwgZG91YmxlIG1vdmllVGltZSkK
IHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdGltZXN0YW1wVGFnLCAo
QVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSkpOwogICAgIApAQCAtNjk5LDcgKzcxNiw3IEBAIHZv
aWQgVGV4dFRyYWNrQ3VlOjp1cGRhdGVEaXNwbGF5VHJlZShmbG9hdCBtb3ZpZVRpbWUpCiAgICAg
bV9hbGxEb2N1bWVudE5vZGVzLT5yZW1vdmVDaGlsZHJlbigpOwogCiAgICAgLy8gVXBkYXRlIHRo
ZSB0d28gc2V0cyBjb250YWluaW5nIHBhc3QgYW5kIGZ1dHVyZSBXZWJWVFQgb2JqZWN0cy4KLSAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcmVmZXJlbmNlVHJlZSA9IGdldEN1ZUFzSFRNTCgp
OworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiByZWZlcmVuY2VUcmVlID0gY3JlYXRlQ3Vl
UmVuZGVyaW5nVHJlZSgpOwogICAgIG1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMocmVmZXJlbmNlVHJl
ZS5nZXQoKSwgc3RhcnRUaW1lKCksIG1vdmllVGltZSk7CiAgICAgbV9hbGxEb2N1bWVudE5vZGVz
LT5hcHBlbmRDaGlsZChyZWZlcmVuY2VUcmVlKTsKIH0KQEAgLTc0MCw5ICs3NTcsNiBAQCBQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZUJveD4gVGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5VHJlZSgpCiAg
ICAgLy8gbm9ybWFsbHkgd291bGQgaW4gQ1NTLCBpdCBpcyBpbnN0ZWFkIGZvcmNpYmx5IHdyYXBw
ZWQgYXQgdGhlIGJveCdzIGVkZ2UuKQogICAgIG1fZGlzcGxheVRyZWUtPmFwcGx5Q1NTUHJvcGVy
dGllcygpOwogCi0gICAgaWYgKG1faGFzSW5uZXJUaW1lc3RhbXBzKQotICAgICAgICB1cGRhdGVE
aXNwbGF5VHJlZSh0cmFjaygpLT5tZWRpYUVsZW1lbnQoKS0+Y3VycmVudFRpbWUoKSk7Ci0KICAg
ICBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlID0gZmFsc2U7CiAKICAgICAvLyAxMC4xNS4gTGV0
IGN1ZSdzIHRleHQgdHJhY2sgY3VlIGRpc3BsYXkgc3RhdGUgaGF2ZSB0aGUgQ1NTIGJveGVzIGlu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA0N2M0ZWUxLi40
YmVkYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTc4
LDYgKzc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJh
Y2tDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgY29udGVudCkpOwogICAgIH0KIAorICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUVsZW1lbnRUYWdOYW1lKCkKKyAgICB7CisgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdlRhZywgKG51bGxBdG9tLCAi
diIsIG51bGxBdG9tKSk7CisgICAgICAgIHJldHVybiB2VGFnOworICAgIH0KKworICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBjbGFzc0VsZW1lbnRUYWdOYW1lKCkKKyAgICB7CisgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgY1RhZywgKG51bGxBdG9tLCAi
YyIsIG51bGxBdG9tKSk7CisgICAgICAgIHJldHVybiBjVGFnOworICAgIH0KKwogICAgIHZpcnR1
YWwgflRleHRUcmFja0N1ZSgpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWxs
Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpOwpAQCAtMTI1LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGludmFsaWRhdGVDdWVJbmRleCgpOwogCiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBnZXRDdWVBc0hUTUwoKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUN1ZVJlbmRlcmluZ1RyZWUoKTsKIAogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRj
aEV2ZW50OwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
KSBPVkVSUklERTsKQEAgLTEzNSw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWVCb3g+IGdldERpc3BsYXlUcmVlKCk7CiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5
VHJlZShmbG9hdCk7CiAgICAgdm9pZCByZW1vdmVEaXNwbGF5VHJlZSgpOwotICAgIHZvaWQgbWFy
a0Z1dHVyZUFuZFBhc3ROb2RlcyhOb2RlKiwgZG91YmxlLCBkb3VibGUpOworICAgIHZvaWQgbWFy
a0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiwgZG91YmxlLCBkb3VibGUpOwogCiAg
ICAgaW50IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCk7CiAKQEAgLTE5Nyw3ICsyMTAs
NyBAQCBwcml2YXRlOgogICAgIGVudW0gQWxpZ25tZW50IHsgU3RhcnQsIE1pZGRsZSwgRW5kIH07
CiAgICAgQWxpZ25tZW50IG1fY3VlQWxpZ25tZW50OwogCi0gICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudDsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
bV93ZWJWVFROb2RlVHJlZTsKICAgICBUZXh0VHJhY2sqIG1fdHJhY2s7CiAKICAgICBFdmVudFRh
cmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CkBAIC0yMDcsNyArMjIwLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fcGF1c2VPbkV4aXQ7CiAgICAgYm9vbCBtX3NuYXBUb0xpbmVzOwogCi0gICAg
Ym9vbCBtX2hhc0lubmVyVGltZXN0YW1wczsKICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IG1f
YWxsRG9jdW1lbnROb2RlczsKIAogICAgIGJvb2wgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZTsK
QEAgLTIyMSw2ICsyMzMsOSBAQCBwcml2YXRlOgogICAgIGludCBtX2Rpc3BsYXlTaXplOwogCiAg
ICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gbV9kaXNwbGF5UG9zaXRpb247CisKKyAgICB2b2lk
IGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7CisgICAgdm9pZCBjb3B5V2ViVlRUTm9kZVRvRE9NVHJl
ZShDb250YWluZXJOb2RlKiBXZWJWVFROb2RlLCBDb250YWluZXJOb2RlKiByb290KTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcAppbmRleCAyOTdlNTk5Li5iMmIwYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBXZWJWVFRQ
YXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIFF1
YWxpZmllZE5hbWUgdGFnTmFtZShudWxsQXRvbSwgdG9rZW5UYWdOYW1lLCB4aHRtbE5hbWVzcGFj
ZVVSSSk7CiAKICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS93ZWJ2dHQvI3dlYnZ0dC1j
dWUtdGV4dC1kb20tY29uc3RydWN0aW9uLXJ1bGVzCi0gICAgCisKICAgICBzd2l0Y2ggKG1fdG9r
ZW4udHlwZSgpKSB7CiAgICAgY2FzZSBXZWJWVFRUb2tlblR5cGVzOjpDaGFyYWN0ZXI6IHsKICAg
ICAgICAgU3RyaW5nIGNvbnRlbnQobV90b2tlbi5jaGFyYWN0ZXJzKCkuZGF0YSgpLCBtX3Rva2Vu
LmNoYXJhY3RlcnMoKS5zaXplKCkpOwpAQCAtMzU1LDE4ICszNTUsMTggQEAgdm9pZCBXZWJWVFRQ
YXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJWVFRUb2tlblR5cGVzOjpTdGFydFRhZzogewot
ICAgICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNoaWxkOworICAgICAgICBSZWZQdHI8RWxlbWVu
dD4gY2hpbGQ7CiAgICAgICAgIGlmIChpc1JlY29nbml6ZWRUYWcodG9rZW5UYWdOYW1lKSkKICAg
ICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZSh0YWdOYW1lLCBkb2N1bWVudCk7
CiAgICAgICAgIGVsc2UgaWYgKG1fdG9rZW4ubmFtZSgpLnNpemUoKSA9PSAxICYmIG1fdG9rZW4u
bmFtZSgpWzBdID09ICdjJykKLSAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0
ZShzcGFuVGFnLCBkb2N1bWVudCk7CisgICAgICAgICAgICBjaGlsZCA9IEVsZW1lbnQ6OmNyZWF0
ZShUZXh0VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRhZ05hbWUoKSwgZG9jdW1lbnQpOwogICAgICAg
ICBlbHNlIGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVsw
XSA9PSAndicpCi0gICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUocVRhZywg
ZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBFbGVtZW50OjpjcmVhdGUoVGV4dFRyYWNr
Q3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKIAogICAgICAgICBpZiAoY2hp
bGQpIHsKICAgICAgICAgICAgIGlmIChtX3Rva2VuLmNsYXNzZXMoKS5zaXplKCkgPiAwKQogICAg
ICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmco
bV90b2tlbi5jbGFzc2VzKCkuZGF0YSgpLCBtX3Rva2VuLmNsYXNzZXMoKS5zaXplKCkpKTsKLSAg
ICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShxVGFnKSkKKyAgICAgICAgICAgIGlmIChj
aGlsZC0+aGFzVGFnTmFtZShUZXh0VHJhY2tDdWU6OnZvaWNlRWxlbWVudFRhZ05hbWUoKSkpCiAg
ICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZSh0aXRsZUF0dHIsIEF0b21pY1N0cmlu
ZyhtX3Rva2VuLmFubm90YXRpb24oKS5kYXRhKCksIG1fdG9rZW4uYW5ub3RhdGlvbigpLnNpemUo
KSkpOwogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoY2hpbGQp
OwogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGNoaWxkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182494</attachid>
            <date>2013-01-13 16:23:47 -0800</date>
            <delta_ts>2013-01-14 17:18:42 -0800</delta_ts>
            <desc>Proposed fix 1.0</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21414</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZDViN2Q3Li40ZDQ5ZmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MTMgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGVsZW1lbnQgdHlwZSBzZWxlY3RvcnMgZm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dDoKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC10YzAyNi12b2ljZS5odG1sOiB2b2ljZSBlbGVtZW50cyBzaG91bGQgYmUgc3BhbnMgYWNj
b3JkaW5nIHRvIHNwZWNzLgorCiAyMDEzLTAxLTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0
eWxpbmcudnR0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxp
bmcudnR0CmluZGV4IDMyNzQ4YzkuLmZmODk0Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKQEAgLTEsMTMgKzEsMTcgQEAK
IFdFQlZUVAogCiAxCi0wMDowMC4wMDAgLS0+IDAwOjAxLjAwMAorMDA6MDAuMDAwIC0tPiAwMDow
MC4yMDAKIExvcnVtIGlwc3VtCiAKIDIKLTAwOjAxLjAwMCAtLT4gMDA6MDIuMDAwCiswMDowMC4y
MDAgLS0+IDAwOjAwLjQwMAogPGMucmVkPmRvbG9yIHNpdCA8L2M+PGMuZ3JlZW4+YW1ldCwgY29u
c2VjdGV0dXIgPC9jPjxjLnJlZDI+YWRpcGlzY2luZyBlbGl0PC9jPgogCiAzCi0wMDowMi4wMDAg
LS0+IDAwOjA1LjAwMAotPDAwOjAyLjAwMD48Yz5TdXNwZW5kaXNzZSBhY2N1bXNhbiwgPC9jPjww
MDowMy4wMDA+PGM+bWF1cmlzIHNlZCA8L2M+PDAwOjA0LjAwMD48Yz5ldWlzbW9kIHBoYXJldHJh
PC9jPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzAwOjAwLjQwMCAtLT4gMDA6MDEuMDAw
Cis8MDA6MDAuNDAwPjxjPlN1c3BlbmRpc3NlIGFjY3Vtc2FuLCA8L2M+PDAwOjAwLjYwMD48Yz5t
YXVyaXMgc2VkIDwvYz48MDA6MDAuODAwPjxjPmV1aXNtb2QgcGhhcmV0cmE8L2M+CisKKzQKKzAw
OjAxLjAwMCAtLT4gMDA6MDEuMjAwCis8Yz5BbGlxdWFtIHNvbGxpY2l0dWRpbjwvYz4gPHY+bWFz
c2EgYWMgbWFnbmEgdnVscHV0YXRlIGRpZ25pc3NpbTwvdj4gPGI+cG9zdWVyZSBldCBmZXJtZW50
dW08L2I+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0
Y2hpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1h
dGNoaW5nLWV4cGVjdGVkLnR4dAppbmRleCA0MDg3YmRmLi5lM2Y4ZWY4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50
eHQKQEAgLTUsMjUgKzUsMzQgQEAgRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSku
Y29sb3IgPT0gJ3JnYigyNTUsIDAsIDApJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMCwgMTI4LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSwogCi1SVU4o
dmlkZW8uY3VycmVudFRpbWUgPSAyLjUpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCiBF
VkVOVChzZWVrZWQpCiAKIAogMi4gVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJv
cGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8gY2xhc3MuCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VYUEVD
VEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAxMjgp
JykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2Io
MTI4LCAxMjgsIDEyOCknKSBPSwogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSku
Y29sb3IgPT0gJ3JnYigxMjgsIDEyOCwgMTI4KScpIE9LCiAKLVJVTih2aWRlby5jdXJyZW50VGlt
ZSA9IDMuNSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNykKIEVWRU5UKHNlZWtlZCkKLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVO
b2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCiBFWFBFQ1RF
RCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDEyOCwgMTI4LCAxMjgp
JykgT0sKIAotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gNC41KQorUlVOKHZpZGVvLmN1cnJlbnRU
aW1lID0gMC45KQogRVZFTlQoc2Vla2VkKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3Vl
Tm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUs
IDI1NSknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9k
ZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVk
U3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworCitSVU4odmlk
ZW8uY3VycmVudFRpbWUgPSAxLjEpCitFVkVOVChzZWVrZWQpCisKKworMy4gVGVzdCB0aGF0IGN1
ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGFnLgorRVhQRUNURUQgKGdldENvbXB1
dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCknKSBPSworRVhQRUNU
RUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMCkn
KSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigw
LCAyNTUsIDApJykgT0sKIEVORCBPRiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKaW5kZXggODE0NWIyYy4uMzI4NjM4ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTgs
MTAgKzgsMTIgQEAKICAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9z
Y3JpcHQ+CiAKICAgICAgICAgPHN0eWxlPgotCisgICAgICAgIHZpZGVvOjpjdWUoYykge2NvbG9y
OiBwdXJwbGV9CisgICAgICAgIHZpZGVvOjpjdWUodikge2NvbG9yOiB5ZWxsb3d9CisgICAgICAg
IHZpZGVvOjpjdWUoYikge2NvbG9yOiBsaW1lfQogICAgICAgICB2aWRlbzo6Y3VlKC5yZWQsIC5y
ZWQyKSB7IGNvbG9yOnJlZCB9CiAgICAgICAgICN0ZXN0dmlkZW86OmN1ZSguZ3JlZW4pIHsgY29s
b3I6Z3JlZW4gfQotCisgICAgICAgIHZpZGVvOjpjdWUoOmZ1dHVyZSkge2NvbG9yOiBncmF5fQog
ICAgICAgICA8L3N0eWxlPgogCiAgICAgICAgIDxzY3JpcHQ+CkBAIC0xOSwxMCArMjEsMTIgQEAK
ICAgICAgICAgdmFyIGN1ZU5vZGU7CiAgICAgICAgIHZhciBzZWVrZWRDb3VudCA9IDA7CiAgICAg
ICAgIHZhciBpbmZvID0gW1sicmdiKDI1NSwgMCwgMCkiLCAicmdiKDAsIDEyOCwgMCkiLCAicmdi
KDI1NSwgMCwgMCkiXSwKLSAgICAgICAgICAgICAgICAgICAgWyJyZ2IoMjU1LCAyNTUsIDI1NSki
LCAicmdiKDEyOCwgMTI4LCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAotICAgICAgICAg
ICAgICAgICAgICBbInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiLCAi
cmdiKDEyOCwgMTI4LCAxMjgpIl0sCi0gICAgICAgICAgICAgICAgICAgIFsicmdiKDI1NSwgMjU1
LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiXV07Ci0g
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEy
OCwgMTI4LCAxMjgpIiwgInJnYigxMjgsIDEyOCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAg
ICBbInJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSIsICJyZ2IoMTI4LCAxMjgs
IDEyOCkiXSwKKyAgICAgICAgICAgICAgICAgICAgWyJyZ2IoMTI4LCAwLCAxMjgpIiwgInJnYigx
MjgsIDAsIDEyOCkiLCAicmdiKDEyOCwgMCwgMTI4KSJdLAorICAgICAgICAgICAgICAgICAgICBb
InJnYigxMjgsIDAsIDEyOCkiLCAicmdiKDI1NSwgMjU1LCAwKSIsICJyZ2IoMCwgMjU1LCAwKSJd
XTsKKyAgICAgICAgdmFyIHNlZWtUaW1lcyA9IFswLjMsIDAuNSwgMC43LCAwLjksIDEuMSwgMS4z
XTsKKwogICAgICAgICBmdW5jdGlvbiBza2lwTm9uRWxlbWVudHMocm9vdCkKICAgICAgICAgewog
ICAgICAgICAgICAgbmV4dEVsZW1lbnRTaWJsaW5nID0gcm9vdDsKQEAgLTQxLDYgKzQ1LDEwIEBA
CiAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIiIpOwogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiMi4gVGVzdCB0aGF0
IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGhlICc6ZnV0dXJlJyBwc2V1ZG8g
Y2xhc3MuIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZWtlZENvdW50ID09IDQpIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIzLiBUZXN0IHRoYXQgY3Vl
cyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9wZXJseSBieSB0YWcuIik7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGN1ZU5vZGUgPSBza2lwTm9uRWxlbWVudHModGV4dFRyYWNrRGlzcGxheUVs
ZW1lbnQodmlkZW8sICdhbGwtbm9kZXMnKS5maXJzdENoaWxkKTsKQEAgLTU1LDcgKzYzLDcgQEAK
ICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3Vy
cmVudFRpbWUgPSAiICsgKHZpZGVvLmN1cnJlbnRUaW1lICsgMSkpOworICAgICAgICAgICAgICAg
IHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAiICsgc2Vla1RpbWVzW3NlZWtlZENvdW50XSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjYsNyArNzQsNyBAQAogICAgICAgICAgICAg
dmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vY29udGVudC90ZXN0Jyk7CiAg
ICAgICAgICAgICB2aWRlby5pZCA9ICJ0ZXN0dmlkZW8iOwogICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdzZWVrZWQnLCBzZWVrZWQpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5
dGhyb3VnaCcsIGZ1bmN0aW9uKCkgeyB2aWRlby5jdXJyZW50VGltZSA9IDEuNTsgfSk7CisgICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7IHZpZGVv
LmN1cnJlbnRUaW1lID0gc2Vla1RpbWVzWzBdOyB9KTsKICAgICAgICAgfQogCiAgICAgICAgIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0
LXRjMDI2LXZvaWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
dGMwMjYtdm9pY2UuaHRtbAppbmRleCA1MmUwNzFlMC4uZjZmMDIzOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI2LXZvaWNlLmh0bWwKQEAg
LTI0LDMxICsyNCwzMSBAQAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4
dFRyYWNrc1siICsgaSArICJdLmN1ZXMubGVuZ3RoIiwgIjMiKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7Ci0gICAgICAgICAgICAgICAgdmFyIHEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJxIik7Ci0gICAgICAgICAgICAgICAgcS5jbGFzc05hbWUgPSAiYmx1ZSI7Ci0gICAgICAgICAg
ICAgICAgcS50aXRsZSA9ICJTcGVha2VyIjsKLSAgICAgICAgICAgICAgICBxLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJCZWFyIGlzIENvbWluZyEhISEhIikpOwotICAgICAg
ICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHEpOworICAgICAgICAgICAgICAgIHZhciBj
c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBj
c3Bhbi5jbGFzc05hbWUgPSAiYmx1ZSI7CisgICAgICAgICAgICAgICAgY3NwYW4udGl0bGUgPSAi
U3BlYWtlciI7CisgICAgICAgICAgICAgICAgY3NwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoIkJlYXIgaXMgQ29taW5nISEhISEiKSk7CisgICAgICAgICAgICAgICAgZnJh
Z21lbnQuYXBwZW5kQ2hpbGQoY3NwYW4pOwogICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcblRleHQgc3BhbiB3aXRoIGEgY2xhc3Mg
YW5kIGFuIGFubm90YXRpb24uIikpOwogIAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZChm
cmFnbWVudC5pc0VxdWFsTm9kZSh2aWRlby50ZXh0VHJhY2tzW2ldLmN1ZXNbMF0uZ2V0Q3VlQXNI
VE1MKCkpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmcmFnbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgICAgICBx
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicSIpOwotICAgICAgICAgICAgICAgIHEudGl0bGUg
PSAiRG9lIEh1bnRlciI7Ci0gICAgICAgICAgICAgICAgcS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiSSBzYWlkIEJlYXIgaXMgY29taW5nISEhISIpKTsKLSAgICAgICAgICAg
ICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChxKTsKKyAgICAgICAgICAgICAgICBjc3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBjc3Bhbi50aXRs
ZSA9ICJEb2UgSHVudGVyIjsKKyAgICAgICAgICAgICAgICBjc3Bhbi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiSSBzYWlkIEJlYXIgaXMgY29taW5nISEhISIpKTsKKyAgICAg
ICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKGZyYWdtZW50LmlzRXF1YWxOb2RlKHZpZGVv
LnRleHRUcmFja3NbaV0uY3Vlc1sxXS5nZXRDdWVBc0hUTUwoKSksIHRydWUpOwogCiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CiAgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIkkgc2FpZCAiKSk7Ci0gICAgICAgICAgICAgICAgcSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInEiKTsKLSAgICAgICAgICAgICAgICBxLmNsYXNzTmFtZSA9
ICJibHVlIjsKLSAgICAgICAgICAgICAgICBxLnRpdGxlID0gIlNwZWFrZXIiOwotICAgICAgICAg
ICAgICAgIHEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMgY29t
aW5nIG5vdyIpKTsKLSAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChxKTsKKyAg
ICAgICAgICAgICAgICBjc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAg
ICAgICAgICAgICAgICBjc3Bhbi5jbGFzc05hbWUgPSAiYmx1ZSI7CisgICAgICAgICAgICAgICAg
Y3NwYW4udGl0bGUgPSAiU3BlYWtlciI7CisgICAgICAgICAgICAgICAgY3NwYW4uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkJlYXIgaXMgY29taW5nIG5vdyIpKTsKKyAgICAg
ICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjc3Bhbik7CiAgICAgICAgICAgICAgICAg
ZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiEhISEiKSk7CiAg
ICAKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoZnJhZ21lbnQuaXNFcXVhbE5vZGUodmlk
ZW8udGV4dFRyYWNrc1tpXS5jdWVzWzJdLmdldEN1ZUFzSFRNTCgpKSwgdHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNTdhMjY1ZS4uMjU3OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEz
LTAxLTEzICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxl
bWVudCBlbGVtZW50IHR5cGUgc2VsZWN0b3JzIGZvciB0aGUgV2ViVlRUIDo6Y3VlIHBzZXVkbyBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
NDgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50ZWQgdGFnIG1hdGNoaW5nIGZvciB0aGUgV2ViVlRUIHNwZWNpZmljIHRhZ3MgImMiIGFu
ZCAidiIuIEFsbCBjb21tb24gaHRtbCB0YWdzIGxpa2UgImIiIGFuZCAiaSIgYXJlIAorICAgICAg
ICBoYW5kbGVkIHdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhlIGNvZGUuIENyZWF0aW5nIGEgcmVu
ZGVyaW5nIHRyZWUgYW5kIERPTSB0cmVlIG5vdyB1c2UgZGlmZmVyZW50IGNvZGUgcGF0aHMuIAor
ICAgICAgICBUaGV5IGJvdGggYXJlIG1hZGUgYnkgY2xvbmluZyBhbmQgbW9kaWZ5aW5nIHRoZSB0
cmVlIHByb2R1Y2VkIGJ5IHRoZSBwYXJzZXIuIFZvaWNlIHRhZ3Mgbm93IHVzZSBzcGFucyBmb3Ig
Ym90aCAKKyAgICAgICAgcmVuZGVyaW5nIGFuZCBET00gdHJlZXMgdG8gY29uZm9ybSB0byBzcGVj
cy4gU2luY2UgdGhpcyBjaGFuZ2VzIGEgbG90IG9mIGNvZGUgbGl0dGxlIHJlZmFjdG9yaW5nIGhh
cyBiZWVuCisgICAgICAgIGRvbmUuIFJlbW92ZWQgbV9oYXNJbm5lclRpbWVzdGFtcHMgc2luY2Ug
aXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgaXQgZG9lc24ndCBhZmZlY3QgYW55dGhpbmcuIG1fZG9j
dW1lbnRGcmFnbWVudCAKKyAgICAgICAgd2FzIHJlbmFtZWQgdG8gbV93ZWJWVFROb2RlVHJlZS4K
KworICAgICAgICBFeGlzdGluZyB0ZXN0cyB3ZXJlIG1vZGlmaWVkIHRvIGNvdmVyIHRoaXMgY2Fz
ZS4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0N1ZTo6c2V0VGV4dCk6IHJlbmFtZSBtX2RvY3VtZW50RnJhZ21lbnQgdG8gbV93ZWJW
VFROb2RlVHJlZQorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGVXZWJWVFRO
b2RlVHJlZSk6IHBhcnNlIHRoZSBjdWUgaWYgaXQgaGFzbid0IGJlZW4gcGFyc2VkIGJlZm9yZS4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUp
OiBjbG9uZSBhbmQgcHJlcGFyZSBhIG5vZGUgZm9yIHVzaW5nIGluIHRoZSBET00gdHJlZSBhY2Nv
cmRpbmcgdG8gc3BlY3MuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFz
SFRNTCk6IGdldCBhIERPTSB0cmVlIGZvciB0aGUgY3VlLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKTogY3JlYXRlIGEgcmVuZGVyaW5nIHRy
ZWUgKG1haW4gdHJlZSBpcyBqdXN0IGJlaW5nIGNsb25lZCBmb3Igbm93KS4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2Rlcyk6IHRpZ2h0ZW5pbmcg
dGhlIGFyZ3VtZW50IHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnVwZGF0
ZURpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0RGlzcGxh
eVRyZWUpOiBjb2RlIGNsZWFudXAsIHJlbW92ZWQgbV9oYXNJbm5lclRpbWVTdGFtcHMuCisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZTo6dm9pY2VFbGVtZW50VGFnTmFtZSk6CisgICAgICAgIChUZXh0VHJhY2tDdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjbGFzc0VsZW1lbnRUYWdOYW1lKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOiB0eXBlIG9mIHRoZSBuZXdseSBj
cmVhdGVkIGVsZW1lbnRzIHdhcyBjaGFuZ2VkIHRvIEVsZW1lbnQgdG8gYXZvaWQgaGl0dGluZyAK
KyAgICAgICAgYW4gYXNzZXJ0aW9uIHdoZW4gY2xvbmluZyBiZWNhdXNlIGEgY2xvbmVkIGVsZW1l
bnQgd2lsbCBub3QgaGF2ZSBIVE1MRWxlbWVudCB0eXBlIGZvciBlbGVtZW50cyB3aXRoICJ2IiBh
bmQgImMiIHRhZy4KKworMjAxMy0wMS0xMyAgRGltYSBHb3JiaWsgIDxkZ29yYmlrQGFwcGxlLmNv
bT4KKwogICAgICAgICBTdHlsaW5nIGRpc2FwcGVhcnMgZnJvbSB0aGUgY3VlIHRoYXQncyBiZWlu
ZyBzdHlsZWQgYnkgOjpjdWUgcHNldWRvIGVsZW1lbnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjcyMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggNjI5ZGNjNS4uYmJmNWYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNwYW5FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRUcmFja0N1ZS5oIgogI2lu
Y2x1ZGUgIlRleHQuaCIKQEAgLTIwMCwxMyArMjAxLDEyIEBAIFRleHRUcmFja0N1ZTo6VGV4dFRy
YWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91
YmxlCiAgICAgLCBtX2N1ZUluZGV4KGludmFsaWRDdWVJbmRleCkKICAgICAsIG1fd3JpdGluZ0Rp
cmVjdGlvbihIb3Jpem9udGFsKQogICAgICwgbV9jdWVBbGlnbm1lbnQoTWlkZGxlKQotICAgICwg
bV9kb2N1bWVudEZyYWdtZW50KDApCisgICAgLCBtX3dlYlZUVE5vZGVUcmVlKDApCiAgICAgLCBt
X3RyYWNrKDApCiAgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAs
IG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX3BhdXNlT25FeGl0KGZhbHNlKQogICAgICwgbV9z
bmFwVG9MaW5lcyh0cnVlKQotICAgICwgbV9oYXNJbm5lclRpbWVzdGFtcHMoZmFsc2UpCiAgICAg
LCBtX2FsbERvY3VtZW50Tm9kZXMoSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KGNvbnRleHQpKSkKICAgICAsIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UodHJ1
ZSkKICAgICAsIG1fZGlzcGxheVRyZWUoVGV4dFRyYWNrQ3VlQm94OjpjcmVhdGUoc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCB0aGlzKSkKQEAgLTQ2Myw3
ICs0NjMsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQp
CiAgICAgY3VlV2lsbENoYW5nZSgpOwogICAgIC8vIENsZWFyIHRoZSBkb2N1bWVudCBmcmFnbWVu
dCBidXQgZG9uJ3QgYm90aGVyIHRvIGNyZWF0ZSBpdCBhZ2FpbiBqdXN0IHlldCBhcyB3ZSBjYW4g
ZG8gdGhhdAogICAgIC8vIHdoZW4gaXQgaXMgcmVxdWVzdGVkLgotICAgIG1fZG9jdW1lbnRGcmFn
bWVudCA9IDA7CisgICAgbV93ZWJWVFROb2RlVHJlZSA9IDA7CiAgICAgbV9jb250ZW50ID0gdGV4
dDsKICAgICBjdWVEaWRDaGFuZ2UoKTsKIH0KQEAgLTQ4MSwyOSArNDgxLDQ2IEBAIHZvaWQgVGV4
dFRyYWNrQ3VlOjppbnZhbGlkYXRlQ3VlSW5kZXgoKQogICAgIG1fY3VlSW5kZXggPSBpbnZhbGlk
Q3VlSW5kZXg7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3Vl
OjpnZXRDdWVBc0hUTUwoKQordm9pZCBUZXh0VHJhY2tDdWU6OmNyZWF0ZVdlYlZUVE5vZGVUcmVl
KCkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVkRnJhZ21lbnQ7Ci0gICAg
RG9jdW1lbnQqIGRvY3VtZW50OwotCi0gICAgaWYgKCFtX2RvY3VtZW50RnJhZ21lbnQpIHsKLSAg
ICAgICAgbV9oYXNJbm5lclRpbWVzdGFtcHMgPSBmYWxzZTsKLSAgICAgICAgbV9kb2N1bWVudEZy
YWdtZW50ID0gV2ViVlRUUGFyc2VyOjpjcmVhdGUoMCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KG1fY29udGVudCk7Ci0KLSAgICAg
ICAgaWYgKCFtX2RvY3VtZW50RnJhZ21lbnQpCi0gICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KCFtX3dlYlZUVE5vZGVUcmVlKQorICAgICAgICBtX3dlYlZUVE5vZGVUcmVlID0gV2ViVlRUUGFy
c2VyOjpjcmVhdGUoMCwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+Y3JlYXRlRG9jdW1lbnRG
cmFnbWVudEZyb21DdWVUZXh0KG1fY29udGVudCk7Cit9CiAKLSAgICAgICAgZm9yIChOb2RlICpj
aGlsZCA9IG1fZG9jdW1lbnRGcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyAhbV9oYXNJbm5lclRpbWVz
dGFtcHMgJiYgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
ICAgIGlmIChjaGlsZC0+bm9kZU5hbWUoKSA9PSAidGltZXN0YW1wIikKLSAgICAgICAgICAgICAg
ICBtX2hhc0lubmVyVGltZXN0YW1wcyA9IHRydWU7Ci0gICAgICAgIH0KK3ZvaWQgVGV4dFRyYWNr
Q3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250YWluZXJOb2RlKiB3ZWJWVFROb2RlLCBD
b250YWluZXJOb2RlKiBwYXJlbnQpCit7CisgICAgZm9yIChOb2RlKiBub2RlID0gd2ViVlRUTm9k
ZS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkTm9kZTsKKyAgICAgICAgLy8gU3BlY3MgcmVxdWlyZSB2
b2ljZSBhbmQgY2xhc3MgV2ViVlRUIGVsZW1lbnRzIHRvIGJlIHNwYW5zIGZvciBET00gdHJlZXMu
CisgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHZvaWNlRWxlbWVudFRhZ05hbWUoKSkgfHwg
bm9kZS0+aGFzVGFnTmFtZShjbGFzc0VsZW1lbnRUYWdOYW1lKCkpKSB7CisgICAgICAgICAgICBj
bG9uZWROb2RlID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoc3BhblRhZywgc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKKyAgICAgICAgICAgIHRvRWxl
bWVudChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdG9FbGVtZW50
KG5vZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSk7CisgICAgICAgICAgICB0b0VsZW1lbnQo
Y2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZSh0aXRsZUF0dHIsIHRvRWxlbWVudChub2Rl
KS0+Z2V0QXR0cmlidXRlKHRpdGxlQXR0cikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGNsb25lZE5vZGUgPSBub2RlLT5jbG9uZU5vZGUoZmFsc2UpOworCisgICAgICAgIHBhcmVudC0+
YXBwZW5kQ2hpbGQoY2xvbmVkTm9kZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIGlm
IChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgICAgIGNvcHlXZWJWVFROb2RlVG9E
T01UcmVlKHRvQ29udGFpbmVyTm9kZShub2RlKSwgdG9Db250YWluZXJOb2RlKGNsb25lZE5vZGUu
Z2V0KCkpKTsKICAgICB9Cit9CiAKLSAgICBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQoreworICAgIGNyZWF0ZVdlYlZUVE5vZGVU
cmVlKCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPiht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
bG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAg
Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUobV93ZWJWVFROb2RlVHJlZS5nZXQoKSwgY2xvbmVkRnJh
Z21lbnQuZ2V0KCkpOworICAgIHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxlYXNlKCk7Cit9CiAK
K1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpjcmVhdGVDdWVSZW5k
ZXJpbmdUcmVlKCkKK3sKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVkRnJhZ21l
bnQ7CisgICAgY3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAg
Y2xvbmVkRnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAg
IG1fZG9jdW1lbnRGcmFnbWVudC0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZyYWdtZW50LmdldCgp
KTsKLQorICAgIG1fd2ViVlRUTm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVu
dC5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKIH0KIApAQCAt
NjU4LDcgKzY3NSw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpjYWxjdWxhdGVEaXNwbGF5UGFyYW1l
dGVycygpCiAgICAgbV9jb21wdXRlZExpbmVQb3NpdGlvbiA9IGNhbGN1bGF0ZUNvbXB1dGVkTGlu
ZVBvc2l0aW9uKCk7CiB9CiAgICAgCi12b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBh
c3ROb2RlcyhOb2RlKiByb290LCBkb3VibGUgcHJldmlvdXNUaW1lc3RhbXAsIGRvdWJsZSBtb3Zp
ZVRpbWUpCit2b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWlu
ZXJOb2RlKiByb290LCBkb3VibGUgcHJldmlvdXNUaW1lc3RhbXAsIGRvdWJsZSBtb3ZpZVRpbWUp
CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywg
KEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIikpKTsKICAgICAKQEAgLTY5OSw3ICs3MTYsNyBAQCB2
b2lkIFRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQogICAg
IG1fYWxsRG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgIC8vIFVwZGF0ZSB0
aGUgdHdvIHNldHMgY29udGFpbmluZyBwYXN0IGFuZCBmdXR1cmUgV2ViVlRUIG9iamVjdHMuCi0g
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHJlZmVyZW5jZVRyZWUgPSBnZXRDdWVBc0hUTUwo
KTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcmVmZXJlbmNlVHJlZSA9IGNyZWF0ZUN1
ZVJlbmRlcmluZ1RyZWUoKTsKICAgICBtYXJrRnV0dXJlQW5kUGFzdE5vZGVzKHJlZmVyZW5jZVRy
ZWUuZ2V0KCksIHN0YXJ0VGltZSgpLCBtb3ZpZVRpbWUpOwogICAgIG1fYWxsRG9jdW1lbnROb2Rl
cy0+YXBwZW5kQ2hpbGQocmVmZXJlbmNlVHJlZSk7CiB9CkBAIC03NDAsOSArNzU3LDYgQEAgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFRleHRUcmFja0N1ZTo6Z2V0RGlzcGxheVRyZWUoKQog
ICAgIC8vIG5vcm1hbGx5IHdvdWxkIGluIENTUywgaXQgaXMgaW5zdGVhZCBmb3JjaWJseSB3cmFw
cGVkIGF0IHRoZSBib3gncyBlZGdlLikKICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBseUNTU1Byb3Bl
cnRpZXMoKTsKIAotICAgIGlmIChtX2hhc0lubmVyVGltZXN0YW1wcykKLSAgICAgICAgdXBkYXRl
RGlzcGxheVRyZWUodHJhY2soKS0+bWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkpOwotCiAg
ICAgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSA9IGZhbHNlOwogCiAgICAgLy8gMTAuMTUuIExl
dCBjdWUncyB0ZXh0IHRyYWNrIGN1ZSBkaXNwbGF5IHN0YXRlIGhhdmUgdGhlIENTUyBib3hlcyBp
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggNDdjNGVlMS4u
NGJlZGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC03
OCw2ICs3OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRy
YWNrQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGNvbnRlbnQpKTsKICAgICB9CiAKKyAgICBzdGF0
aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VFbGVtZW50VGFnTmFtZSgpCisgICAgeworICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZUYWcsIChudWxsQXRvbSwg
InYiLCBudWxsQXRvbSkpOworICAgICAgICByZXR1cm4gdlRhZzsKKyAgICB9CisKKyAgICBzdGF0
aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY2xhc3NFbGVtZW50VGFnTmFtZSgpCisgICAgeworICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGNUYWcsIChudWxsQXRvbSwg
ImMiLCBudWxsQXRvbSkpOworICAgICAgICByZXR1cm4gY1RhZzsKKyAgICB9CisKICAgICB2aXJ0
dWFsIH5UZXh0VHJhY2tDdWUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFs
bE5vZGVzU2hhZG93UHNldWRvSWQoKTsKQEAgLTEyNSw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbnZhbGlkYXRlQ3VlSW5kZXgoKTsKIAogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZ2V0Q3VlQXNIVE1MKCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVDdWVSZW5kZXJpbmdUcmVlKCk7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0
Y2hFdmVudDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PikgT1ZFUlJJREU7CkBAIC0xMzUsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZSgpOwogICAgIHZvaWQgdXBkYXRlRGlzcGxh
eVRyZWUoZmxvYXQpOwogICAgIHZvaWQgcmVtb3ZlRGlzcGxheVRyZWUoKTsKLSAgICB2b2lkIG1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMoTm9kZSosIGRvdWJsZSwgZG91YmxlKTsKKyAgICB2b2lkIG1h
cmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFpbmVyTm9kZSosIGRvdWJsZSwgZG91YmxlKTsKIAog
ICAgIGludCBjYWxjdWxhdGVDb21wdXRlZExpbmVQb3NpdGlvbigpOwogCkBAIC0xOTcsNyArMjEw
LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIEFsaWdubWVudCB7IFN0YXJ0LCBNaWRkbGUsIEVuZCB9
OwogICAgIEFsaWdubWVudCBtX2N1ZUFsaWdubWVudDsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBtX2RvY3VtZW50RnJhZ21lbnQ7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IG1fd2ViVlRUTm9kZVRyZWU7CiAgICAgVGV4dFRyYWNrKiBtX3RyYWNrOwogCiAgICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpAQCAtMjA3LDcgKzIyMCw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3BhdXNlT25FeGl0OwogICAgIGJvb2wgbV9zbmFwVG9MaW5lczsKIAotICAg
IGJvb2wgbV9oYXNJbm5lclRpbWVzdGFtcHM7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBt
X2FsbERvY3VtZW50Tm9kZXM7CiAKICAgICBib29sIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2U7
CkBAIC0yMjEsNiArMjMzLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kaXNwbGF5U2l6ZTsKIAog
ICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IG1fZGlzcGxheVBvc2l0aW9uOworCisgICAgdm9p
ZCBjcmVhdGVXZWJWVFROb2RlVHJlZSgpOworICAgIHZvaWQgY29weVdlYlZUVE5vZGVUb0RPTVRy
ZWUoQ29udGFpbmVyTm9kZSogV2ViVlRUTm9kZSwgQ29udGFpbmVyTm9kZSogcm9vdCk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5jcHAKaW5kZXggMjk3ZTU5OS4uYjJiMGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgV2ViVlRU
UGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBR
dWFsaWZpZWROYW1lIHRhZ05hbWUobnVsbEF0b20sIHRva2VuVGFnTmFtZSwgeGh0bWxOYW1lc3Bh
Y2VVUkkpOwogCiAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvd2VidnR0LyN3ZWJ2dHQt
Y3VlLXRleHQtZG9tLWNvbnN0cnVjdGlvbi1ydWxlcwotICAgIAorCiAgICAgc3dpdGNoIChtX3Rv
a2VuLnR5cGUoKSkgewogICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6Q2hhcmFjdGVyOiB7CiAg
ICAgICAgIFN0cmluZyBjb250ZW50KG1fdG9rZW4uY2hhcmFjdGVycygpLmRhdGEoKSwgbV90b2tl
bi5jaGFyYWN0ZXJzKCkuc2l6ZSgpKTsKQEAgLTM1NSwxOCArMzU1LDE4IEBAIHZvaWQgV2ViVlRU
UGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6U3RhcnRUYWc6IHsK
LSAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBjaGlsZDsKKyAgICAgICAgUmVmUHRyPEVsZW1l
bnQ+IGNoaWxkOwogICAgICAgICBpZiAoaXNSZWNvZ25pemVkVGFnKHRva2VuVGFnTmFtZSkpCiAg
ICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQp
OwogICAgICAgICBlbHNlIGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2Vu
Lm5hbWUoKVswXSA9PSAnYycpCi0gICAgICAgICAgICBjaGlsZCA9IEhUTUxFbGVtZW50OjpjcmVh
dGUoc3BhblRhZywgZG9jdW1lbnQpOworICAgICAgICAgICAgY2hpbGQgPSBFbGVtZW50OjpjcmVh
dGUoVGV4dFRyYWNrQ3VlOjpjbGFzc0VsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKICAgICAg
ICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1lKClb
MF0gPT0gJ3YnKQotICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHFUYWcs
IGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNoaWxkID0gRWxlbWVudDo6Y3JlYXRlKFRleHRUcmFj
a0N1ZTo6dm9pY2VFbGVtZW50VGFnTmFtZSgpLCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYgKGNo
aWxkKSB7CiAgICAgICAgICAgICBpZiAobV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpID4gMCkKICAg
ICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5n
KG1fdG9rZW4uY2xhc3NlcygpLmRhdGEoKSwgbV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpKSk7Ci0g
ICAgICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUocVRhZykpCisgICAgICAgICAgICBpZiAo
Y2hpbGQtPmhhc1RhZ05hbWUoVGV4dFRyYWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKCkpKQog
ICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUodGl0bGVBdHRyLCBBdG9taWNTdHJp
bmcobV90b2tlbi5hbm5vdGF0aW9uKCkuZGF0YSgpLCBtX3Rva2VuLmFubm90YXRpb24oKS5zaXpl
KCkpKTsKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKGNoaWxk
KTsKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBjaGlsZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>